customer.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379
  1. package platform
  2. import (
  3. "errors"
  4. "go-nc/configs/global"
  5. "go-nc/internal/utils"
  6. "go-nc/model"
  7. "go-nc/model/common"
  8. "strconv"
  9. "github.com/gin-gonic/gin"
  10. "github.com/jinzhu/copier"
  11. )
  12. // 获取客户列表
  13. func GetCustomerList(c *gin.Context) {
  14. type Param struct {
  15. Name string `json:"name"`
  16. common.Pagination
  17. }
  18. var param Param
  19. param.Pagination = common.NewPagination()
  20. if err := c.ShouldBindJSON(&param); err != nil {
  21. c.Error(errors.New("缺少参数:" + err.Error()))
  22. return
  23. }
  24. // 查询总记录数
  25. var total int64
  26. if err := global.App.DB.Where("name LIKE ? AND user_type = 2", "%"+param.Name+"%").Model(&model.Sys_user{}).Count(&total).Error; err != nil {
  27. c.Error(err)
  28. return
  29. }
  30. // 使用分页查询
  31. var dbList []model.Sys_user
  32. if err := global.App.DB.Where("name LIKE ? AND user_type = 2", "%"+param.Name+"%").
  33. Limit(param.PageSize).
  34. Offset((param.Current - 1) * param.PageSize).
  35. Find(&dbList).Error; err != nil {
  36. c.Error(err)
  37. return
  38. }
  39. // 序列化
  40. records := make([]interface{}, len(dbList))
  41. for i, user := range dbList {
  42. user.Password = ""
  43. records[i] = user
  44. }
  45. data := common.BuildPagination(records, param.Current, param.PageSize, total)
  46. c.Set("res_data", data)
  47. }
  48. // 添加客户
  49. func AddCustomer(c *gin.Context) {
  50. type Param struct {
  51. Username string `json:"username" validate:"required"` // 账号
  52. State string `json:"state" validate:"required"` // 状态
  53. Name string `json:"name" validate:"required"` // 姓名
  54. Password string `json:"password" validate:"required"` // 密码
  55. UserType string `json:"userType"`
  56. // 收获地址
  57. Phone string `json:"phone" validate:"required"` // 手机
  58. Email string `json:"email" validate:"required"` // 邮箱
  59. Addr string `json:"addr" validate:"required"` // 地址
  60. Zip string `json:"zip" validate:"required"` // 邮编
  61. Note string `json:"note" validate:"required"` // 备注
  62. // 短信通知
  63. Sms string `json:"sms" validate:"required"` // 短信
  64. SMSSignature string `json:"smsSignature" validate:"required"` // 短信签名
  65. LoginSms string `json:"loginSms" validate:"required"` // 登录短信模板
  66. WarnSms string `json:"warnSms" validate:"required"` // 警告模板
  67. Amount float64 `json:"amount" validate:"required"` // 余额
  68. // 发票信息
  69. InvoiceTitle string `json:"invoiceTitle" validate:"required"` // 发票抬头
  70. InvoiceType string `json:"invoiceType" validate:"required"` // 发票类型
  71. InvoiceAddr string `json:"invoiceAddr" validate:"required"` // 发票地址
  72. InvoiceZip string `json:"invoiceZip" validate:"required"` // 发票邮编
  73. InvoiceEmail string `json:"invoiceEmail" validate:"required"` // 发票邮箱
  74. // 银行信息
  75. BankName string `json:"bankName" validate:"required"` // 银行名称
  76. BankAccount string `json:"bankAccount" validate:"required"` // 银行账号
  77. BankBranch string `json:"bankBranch" validate:"required"` // 开户支行
  78. // 营业执照
  79. BusinessLicense string `json:"businessLicense" validate:"required"` // 营业执照
  80. // 税务登记复印件
  81. TaxRegistrationCertificate string `json:"taxRegistrationCertificate" validate:"required"` // 税务登记复印件
  82. // 一般纳税人认证资格复印件
  83. TaxpayerQualification string `json:"taxpayerQualification" validate:"required"` // 一般纳税人认证资格复印件
  84. AmountWarn int64 `json:"amountWarn" validate:"required"` // 余额预警
  85. ArriveWarn int64 `json:"arriveWarn" validate:"required"` // 达量预警
  86. ArriveStop int64 `json:"arriveStop" validate:"required"` // 达量停机
  87. ArriveNetwork int64 `json:"arriveNetwork" validate:"required"` // 达量网络
  88. ArriveStopOperation string `json:"arriveStopOperation" validate:"required"` // 达量停机操作
  89. ArriveNetworkOperation string `json:"arriveStopNetwork" validate:"required"` // 达量网络操作
  90. WarnPhone string `json:"warnPhone" validate:"required"` // 预警手机号
  91. WarnEmail string `json:"warnEmail" validate:"required"` // 预警邮箱
  92. }
  93. var param Param
  94. if err := c.ShouldBindJSON(&param); err != nil {
  95. c.Error(errors.New("缺少参数!" + err.Error()))
  96. return
  97. }
  98. err := utils.ValidateStruct(param)
  99. if err != nil {
  100. c.Error(err)
  101. return
  102. }
  103. param.UserType = "2"
  104. // 创建用户&密码加密
  105. pwd := utils.EncryptDES_ECB(param.Password, "limingYa")
  106. param.Password = pwd
  107. var user model.Sys_user
  108. copier.Copy(&user, &param)
  109. // 事务操作
  110. tx := global.App.DB.Begin()
  111. // 添加用户
  112. if err := tx.Create(&user).Error; err != nil {
  113. tx.Rollback()
  114. c.Error(err)
  115. return
  116. }
  117. // 添加用户角色关系
  118. var userRoleList model.Sys_user_role
  119. userRoleList.UserId = user.Id
  120. userRoleList.RoleId = 2
  121. if err := tx.Create(&userRoleList).Error; err != nil {
  122. tx.Rollback()
  123. c.Error(err)
  124. return
  125. }
  126. // 添加用户信息
  127. var userInfo model.U_customerAccountInfo
  128. userInfo.UserId = user.Id
  129. copier.Copy(&userInfo, &param)
  130. if err := tx.Create(&userInfo).Error; err != nil {
  131. tx.Rollback()
  132. c.Error(err)
  133. return
  134. }
  135. // 添加用户预计信息
  136. var warnUserInfo model.Alert_customer
  137. copier.Copy(&warnUserInfo, &param)
  138. warnUserInfo.UserId = userInfo.Id
  139. if err := tx.Create(&warnUserInfo).Error; err != nil {
  140. tx.Rollback()
  141. c.Error(err)
  142. return
  143. }
  144. // 提交
  145. if err := tx.Commit().Error; err != nil {
  146. c.Error(err)
  147. return
  148. }
  149. c.Set("res_data", "添加成功!")
  150. }
  151. // 修改客户
  152. func UpdateCustomer(c *gin.Context) {
  153. type Param struct {
  154. Username string `json:"username" validate:"required"` // 账号
  155. State string `json:"state" validate:"required"` // 状态
  156. Name string `json:"name" validate:"required"` // 姓名
  157. Password string `json:"password" validate:"required"` // 密码
  158. UserId int `json:"userId" validate:"required"`
  159. UserType string `json:"userType"`
  160. // 收获地址
  161. Phone string `json:"phone" validate:"required"` // 手机
  162. Email string `json:"email" validate:"required"` // 邮箱
  163. Addr string `json:"addr" validate:"required"` // 地址
  164. Zip string `json:"zip" validate:"required"` // 邮编
  165. Note string `json:"note" validate:"required"` // 备注
  166. // 短信通知
  167. Sms string `json:"sms" validate:"required"` // 短信
  168. SMSSignature string `json:"smsSignature" validate:"required"` // 短信签名
  169. LoginSms string `json:"loginSms" validate:"required"` // 登录短信模板
  170. WarnSms string `json:"warnSms" validate:"required"` // 警告模板
  171. Amount float64 `json:"amount" validate:"required"` // 余额
  172. // 发票信息
  173. InvoiceTitle string `json:"invoiceTitle" validate:"required"` // 发票抬头
  174. InvoiceType string `json:"invoiceType" validate:"required"` // 发票类型
  175. InvoiceAddr string `json:"invoiceAddr" validate:"required"` // 发票地址
  176. InvoiceZip string `json:"invoiceZip" validate:"required"` // 发票邮编
  177. InvoiceEmail string `json:"invoiceEmail" validate:"required"` // 发票邮箱
  178. // 银行信息
  179. BankName string `json:"bankName" validate:"required"` // 银行名称
  180. BankAccount string `json:"bankAccount" validate:"required"` // 银行账号
  181. BankBranch string `json:"bankBranch" validate:"required"` // 开户支行
  182. // 营业执照
  183. BusinessLicense string `json:"businessLicense" validate:"required"` // 营业执照
  184. // 税务登记复印件
  185. TaxRegistrationCertificate string `json:"taxRegistrationCertificate" validate:"required"` // 税务登记复印件
  186. // 一般纳税人认证资格复印件
  187. TaxpayerQualification string `json:"taxpayerQualification" validate:"required"` // 一般纳税人认证资格复印件
  188. AmountWarn int64 `json:"amountWarn" validate:"required"` // 余额预警
  189. ArriveWarn int64 `json:"arriveWarn" validate:"required"` // 达量预警
  190. ArriveStop int64 `json:"arriveStop" validate:"required"` // 达量停机
  191. ArriveNetwork int64 `json:"arriveNetwork" validate:"required"` // 达量网络
  192. ArriveStopOperation string `json:"arriveStopOperation" validate:"required"` // 达量停机操作
  193. ArriveNetworkOperation string `json:"arriveStopNetwork" validate:"required"` // 达量网络操作
  194. WarnPhone string `json:"warnPhone" validate:"required"` // 预警手机号
  195. WarnEmail string `json:"warnEmail" validate:"required"` // 预警邮箱
  196. }
  197. var param Param
  198. if err := c.ShouldBindJSON(&param); err != nil {
  199. c.Error(errors.New("缺少参数!"))
  200. return
  201. }
  202. err := utils.ValidateStruct(param)
  203. if err != nil {
  204. c.Error(err)
  205. return
  206. }
  207. // 创建用户&密码加密
  208. if param.Password != "" {
  209. pwd := utils.DecryptDES_ECB(param.Password, "")
  210. param.Password = utils.EncryptDES_ECB(pwd, "limingYa")
  211. }
  212. param.UserType = "2"
  213. var user model.Sys_user
  214. copier.Copy(&user, &param)
  215. // 事务操作
  216. tx := global.App.DB.Begin()
  217. copier.Copy(&user, &param)
  218. if err := tx.Model(&model.Sys_user{}).Where("id = ?", param.UserId).Updates(&user).Error; err != nil {
  219. tx.Rollback()
  220. c.Error(err)
  221. return
  222. }
  223. // 更新用户和角色关系
  224. // 删除用户角色关系
  225. // if err := tx.Where("user_id = ?", param.Id).Unscoped().Delete(&model.Sys_user_role{}).Error; err != nil {
  226. // tx.Rollback()
  227. // c.Error(err)
  228. // return
  229. // }
  230. // 更新用户信息
  231. var userInfo model.U_customerAccountInfo
  232. userInfo.UserId = uint(param.UserId)
  233. copier.Copy(&userInfo, &param)
  234. if err := tx.Where("user_id = ?", param.UserId).Updates(&userInfo).Error; err != nil {
  235. tx.Rollback()
  236. c.Error(err)
  237. return
  238. }
  239. // 修改预计信息
  240. var warnUserInfo model.Alert_customer
  241. warnUserInfo.UserId = userInfo.Id
  242. copier.Copy(&warnUserInfo, &param)
  243. if err := tx.Where("user_id = ?", param.UserId).Updates(&warnUserInfo).Error; err != nil {
  244. tx.Rollback()
  245. c.Error(err)
  246. return
  247. }
  248. // 提交
  249. if err := tx.Commit().Error; err != nil {
  250. tx.Rollback()
  251. c.Error(err)
  252. return
  253. }
  254. c.Set("res_data", "修改成功!")
  255. }
  256. // 删除客户
  257. func DeleteCustomer(c *gin.Context) {
  258. Id := c.Query("id")
  259. if Id == "" {
  260. c.Error(errors.New("缺少参数:id"))
  261. return
  262. }
  263. userId, err := strconv.Atoi(Id)
  264. if err != nil {
  265. c.Error(err)
  266. return
  267. }
  268. // 事务操作
  269. tx := global.App.DB.Begin()
  270. // 删除用户
  271. var user model.Sys_user
  272. user.Id = uint(userId)
  273. if err := tx.Where("id = ?", userId).Unscoped().Delete(&user).Error; err != nil {
  274. tx.Rollback()
  275. c.Error(err)
  276. return
  277. }
  278. // 删除用户角色关系
  279. var userRoleList model.Sys_user_role
  280. if err := tx.Where("user_id = ?", Id).Unscoped().Delete(&userRoleList).Error; err != nil {
  281. tx.Rollback()
  282. c.Error(err)
  283. return
  284. }
  285. // 删除用户信息
  286. var userInfo model.U_customerAccountInfo
  287. userInfo.UserId = uint(userId)
  288. if err := tx.Where("user_id = ?", userId).Unscoped().Delete(&userInfo).Error; err != nil {
  289. tx.Rollback()
  290. c.Error(err)
  291. return
  292. }
  293. // 删除预计信息
  294. var warnUserInfo model.Alert_customer
  295. warnUserInfo.UserId = uint(userId)
  296. if err := tx.Where("user_id = ?", userId).Unscoped().Delete(&warnUserInfo).Error; err != nil {
  297. tx.Rollback()
  298. c.Error(err)
  299. return
  300. }
  301. // 提交
  302. if err := tx.Commit().Error; err != nil {
  303. c.Error(err)
  304. return
  305. }
  306. }
  307. // 客户详情信息
  308. func GetCustomerInfo(c *gin.Context) {
  309. Id := c.Query("id")
  310. if Id == "" {
  311. c.Error(errors.New("缺少参数:id"))
  312. return
  313. }
  314. userId, err := strconv.Atoi(Id)
  315. if err != nil {
  316. c.Error(err)
  317. return
  318. }
  319. type userAllInfo struct {
  320. model.Sys_user
  321. Info model.U_customerAccountInfo `json:"info"`
  322. RoleName string `json:"roleName"`
  323. Alert model.Alert_customer `json:"alert"`
  324. }
  325. var user model.Sys_user
  326. if err := global.App.DB.Where("id = ?", userId).First(&user).Error; err != nil {
  327. c.Error(err)
  328. return
  329. }
  330. // 查询角色
  331. var role model.Sys_user_role
  332. if err := global.App.DB.Where("user_id = ?", userId).First(&role).Error; err != nil {
  333. c.Error(err)
  334. return
  335. }
  336. // 查询角色名称
  337. var roleInfo model.Sys_role
  338. if err := global.App.DB.Where("id = ?", role.RoleId).First(&roleInfo).Error; err != nil {
  339. c.Error(err)
  340. return
  341. }
  342. var userInfo model.U_customerAccountInfo
  343. if err := global.App.DB.Where("user_id = ?", userId).First(&userInfo).Error; err != nil {
  344. c.Error(err)
  345. return
  346. }
  347. // 查询预计信息
  348. var warnUserInfo model.Alert_customer
  349. global.App.DB.Where("user_id = ?", userId).First(&warnUserInfo)
  350. user.Password = ""
  351. resUser := userAllInfo{
  352. Sys_user: user,
  353. Info: userInfo,
  354. RoleName: roleInfo.Name,
  355. Alert: warnUserInfo,
  356. }
  357. c.Set("res_data", resUser)
  358. }