user.go 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. package gn
  2. import (
  3. "eta_gn/eta_bridge/controller/resp"
  4. gnLogic "eta_gn/eta_bridge/logic/gn"
  5. "eta_gn/eta_bridge/models/gn"
  6. gnRequest "eta_gn/eta_bridge/models/request/gn"
  7. "eta_gn/eta_bridge/utils"
  8. "github.com/gin-gonic/gin"
  9. "strings"
  10. "sync"
  11. )
  12. // 同步用户锁,防止重复同步,不管是全量还是增量,都是同一时间只能一个同步
  13. var lockSyncUser sync.Mutex
  14. // SyncUser
  15. // @Description: 全量同步用户
  16. // @author: Roc
  17. // @receiver xc
  18. // @datetime 2024-01-22 15:51:25
  19. // @param c *gin.Context
  20. func (gc *GuoNengController) SyncUser(c *gin.Context) {
  21. lockSyncUser.Lock()
  22. defer func() {
  23. lockSyncUser.Unlock()
  24. }()
  25. err := gnLogic.SyncUser()
  26. if err != nil {
  27. resp.FailData("同步失败", err.Error(), c)
  28. return
  29. }
  30. resp.Ok("同步成功", c)
  31. }
  32. // AddAccount 创建新账号
  33. func (gc *GuoNengController) AddAccount(c *gin.Context) {
  34. var req gnRequest.AddAccountReq
  35. if e := c.Bind(&req); e != nil {
  36. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "参数解析失败", c)
  37. return
  38. }
  39. if req.UserId == nil || (req.UserId != nil && *req.UserId == "") {
  40. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "登录账号标识不可为空", c)
  41. return
  42. }
  43. if req.FirstName == nil || (req.FirstName != nil && *req.FirstName == "") {
  44. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "姓名不可为空", c)
  45. return
  46. }
  47. if req.LastName == nil || (req.LastName != nil && *req.LastName == "") {
  48. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "姓名不可为空", c)
  49. return
  50. }
  51. if req.UserStatus == nil || (req.UserStatus != nil && *req.UserStatus == "") {
  52. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "账号状态不可为空", c)
  53. return
  54. }
  55. if req.Password == nil || (req.Password != nil && *req.Password == "") {
  56. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "密码不可为空", c)
  57. return
  58. }
  59. if req.UserStatus != nil {
  60. statsMap := map[string]int{gn.UserStatusActive: 1, gn.UserStatusDisable: 0}
  61. if _, ok := statsMap[*req.UserStatus]; !ok {
  62. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "枚举值异常: UserStatus", c)
  63. return
  64. }
  65. }
  66. // 新增账号
  67. errCode, errMsg, e := gnLogic.AddAccount(req.UserEntity)
  68. if e != nil {
  69. resp.Gn4AResultData(false, errCode, errMsg, c)
  70. return
  71. }
  72. resp.Gn4AResultData(true, utils.Gn4AErrCodeSuccess, "操作成功", c)
  73. }
  74. // ModifyAccount 修改账号信息
  75. func (gc *GuoNengController) ModifyAccount(c *gin.Context) {
  76. var req gnRequest.ModifyAccountReq
  77. if e := c.Bind(&req); e != nil {
  78. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "参数解析失败", c)
  79. return
  80. }
  81. if req.UserId == nil || (req.UserId != nil && *req.UserId == "") {
  82. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "登录账号标识不可为空", c)
  83. return
  84. }
  85. if req.FirstName == nil || (req.FirstName != nil && *req.FirstName == "") {
  86. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "姓名不可为空", c)
  87. return
  88. }
  89. if req.LastName == nil || (req.LastName != nil && *req.LastName == "") {
  90. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "姓名不可为空", c)
  91. return
  92. }
  93. if req.UserStatus == nil || (req.UserStatus != nil && *req.UserStatus == "") {
  94. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "账号状态不可为空", c)
  95. return
  96. }
  97. if req.Password == nil || (req.Password != nil && *req.Password == "") {
  98. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "密码不可为空", c)
  99. return
  100. }
  101. if req.UserStatus != nil {
  102. statsMap := map[string]int{gn.UserStatusActive: 1, gn.UserStatusDisable: 0}
  103. if _, ok := statsMap[*req.UserStatus]; !ok {
  104. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "枚举值异常: UserStatus", c)
  105. return
  106. }
  107. }
  108. // 新增账号
  109. errCode, errMsg, e := gnLogic.ModifyAccount(req.UserEntity)
  110. if e != nil {
  111. resp.Gn4AResultData(false, errCode, errMsg, c)
  112. return
  113. }
  114. resp.Gn4AResultData(true, utils.Gn4AErrCodeSuccess, "操作成功", c)
  115. }
  116. // DeleteAccount 删除账号
  117. func (gc *GuoNengController) DeleteAccount(c *gin.Context) {
  118. var req gnRequest.DeleteAccountReq
  119. if e := c.Bind(&req); e != nil {
  120. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "参数解析失败", c)
  121. return
  122. }
  123. if req.UserId == "" {
  124. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "登录账号标识不可为空", c)
  125. return
  126. }
  127. errCode, errMsg, e := gnLogic.DeleteAccount(req.UserId)
  128. if e != nil {
  129. resp.Gn4AResultData(false, errCode, errMsg, c)
  130. return
  131. }
  132. resp.Gn4AResultData(true, utils.Gn4AErrCodeSuccess, "操作成功", c)
  133. }
  134. // SuspendAccount 禁用账号
  135. func (gc *GuoNengController) SuspendAccount(c *gin.Context) {
  136. var req gnRequest.SuspendAccountReq
  137. if e := c.Bind(&req); e != nil {
  138. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "参数解析失败", c)
  139. return
  140. }
  141. if req.UserId == "" {
  142. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "登录账号标识不可为空", c)
  143. return
  144. }
  145. errCode, errMsg, e := gnLogic.SuspendAccount(req.UserId)
  146. if e != nil {
  147. resp.Gn4AResultData(false, errCode, errMsg, c)
  148. return
  149. }
  150. resp.Gn4AResultData(true, utils.Gn4AErrCodeSuccess, "操作成功", c)
  151. }
  152. // RestoreAccount 禁用账号
  153. func (gc *GuoNengController) RestoreAccount(c *gin.Context) {
  154. var req gnRequest.RestoreAccountReq
  155. if e := c.Bind(&req); e != nil {
  156. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "参数解析失败", c)
  157. return
  158. }
  159. if req.UserId == "" {
  160. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "登录账号标识不可为空", c)
  161. return
  162. }
  163. errCode, errMsg, e := gnLogic.RestoreAccount(req.UserId)
  164. if e != nil {
  165. resp.Gn4AResultData(false, errCode, errMsg, c)
  166. return
  167. }
  168. resp.Gn4AResultData(true, utils.Gn4AErrCodeSuccess, "操作成功", c)
  169. }
  170. // ChangePassword 修改密码
  171. func (gc *GuoNengController) ChangePassword(c *gin.Context) {
  172. var req gnRequest.ChangePasswordReq
  173. if e := c.Bind(&req); e != nil {
  174. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "参数解析失败", c)
  175. return
  176. }
  177. if req.UserId == "" {
  178. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "登录账号标识不可为空", c)
  179. return
  180. }
  181. req.NewPassword = strings.TrimSpace(req.NewPassword)
  182. if req.NewPassword == "" {
  183. resp.Gn4AResultData(false, utils.Gn4AErrCode08, "新密码不可为空", c)
  184. return
  185. }
  186. errCode, errMsg, e := gnLogic.ChangePassword(req.UserId, req.NewPassword)
  187. if e != nil {
  188. resp.Gn4AResultData(false, errCode, errMsg, c)
  189. return
  190. }
  191. resp.Gn4AResultData(true, utils.Gn4AErrCodeSuccess, "操作成功", c)
  192. }