sub_account.go 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. package service
  2. import (
  3. "context"
  4. "fmt"
  5. log "github.com/sirupsen/logrus"
  6. "time"
  7. "youngee_b_api/db"
  8. "youngee_b_api/model/gorm_model"
  9. "youngee_b_api/model/http_model"
  10. )
  11. var SubAccount *subaccount
  12. type subaccount struct {
  13. }
  14. // CreateSubAccount 新增子账号
  15. func (*subaccount) CreateSubAccount(ctx context.Context, request *http_model.AddNewSubAccountRequest) (*gorm_model.YounggeeSubAccount, error) {
  16. user := gorm_model.YounggeeUser{
  17. Phone: request.PhoneNumber,
  18. User: "1002",
  19. Username: request.PhoneNumber,
  20. Password: "1002",
  21. RealName: "",
  22. Role: "7",
  23. Email: "",
  24. LastLoginTime: time.Now().UTC().Local(),
  25. }
  26. userId, err := db.CreateUser(ctx, user)
  27. if err != nil {
  28. log.Infof("[CreateEnterpriseSubUser] fail,err:%+v", err)
  29. return nil, err
  30. }
  31. fmt.Println("userId: ", userId)
  32. var curr = int(*userId)
  33. var newSubAccount = gorm_model.YounggeeSubAccount{
  34. PhoneNumber: request.PhoneNumber,
  35. SubAccountName: request.SubAccountName,
  36. JobId: request.JobId,
  37. SupplierId: request.SupplierId,
  38. AccountStatus: 1,
  39. UserId: curr,
  40. SubAccountType: 3,
  41. }
  42. err1 := db.CreateSubAccount(ctx, newSubAccount)
  43. if err1 != nil {
  44. return nil, err1
  45. }
  46. return &newSubAccount, nil
  47. }
  48. // UpdateSubAccount 修改子账号
  49. func (l *loginAuth) UpdateSubAccount(ctx context.Context, req http_model.UpdateSubAccountRequest) (int, *http_model.UpdateSubAccountInfo, error) {
  50. // 1. 若修改绑定手机号
  51. if req.Phone != "" {
  52. vCode, codeErr := l.getSessionCode(ctx, req.Phone)
  53. if codeErr != nil {
  54. return 0, nil, codeErr
  55. }
  56. // fmt.Printf("缓存的验证码 vCode: %v,实际填入的 code:%v", vCode, code)
  57. if vCode != req.Code {
  58. // 验证码错误
  59. // logrus.Debugf("[AuthCode] auth fail,phone:%+v", phone)
  60. return 1, nil, nil
  61. }
  62. // 是否其他子账号注册
  63. subAccountInfo, subAccountErr := db.FindSubAccountByPhone(ctx, req.Phone)
  64. if subAccountErr != nil {
  65. return 0, nil, subAccountErr
  66. }
  67. if subAccountInfo != nil {
  68. // 已被其他子账号注册
  69. return 3, nil, nil
  70. } else {
  71. // 未被其他子账号注册
  72. // 判断是否被主账号注册
  73. supplierUserInfo, supplierUserErr := db.GetUserByPhone(ctx, req.Phone)
  74. if supplierUserErr != nil {
  75. return 0, nil, supplierUserErr
  76. }
  77. if supplierUserInfo != nil {
  78. if supplierUserInfo.AuthStatus != 1 {
  79. // 被未认证主账号注册
  80. subAccountUserInfo, subAccountUserErr := db.GetUserByPhone(ctx, req.Phone)
  81. if subAccountUserErr != nil {
  82. return 0, nil, subAccountUserErr
  83. }
  84. var subAccountUser *gorm_model.YounggeeUser
  85. subAccountUser = &gorm_model.YounggeeUser{}
  86. subAccountUser.Phone = req.Phone
  87. subAccountUser.ID = subAccountUserInfo.ID
  88. updateUserErr := db.UpdateUserById(ctx, subAccountUser)
  89. if updateUserErr != nil {
  90. return 0, nil, updateUserErr
  91. }
  92. // 更新subAccount信息
  93. getSubAccount, getSubAccountErr := db.FindSubAccountById(ctx, req.SubAccountId)
  94. if getSubAccountErr != nil {
  95. return 0, nil, getSubAccountErr
  96. }
  97. if getSubAccount != nil {
  98. var subAccount *gorm_model.YounggeeSubAccount
  99. subAccount = &gorm_model.YounggeeSubAccount{}
  100. subAccount.SubAccountId = getSubAccount.SubAccountId
  101. subAccount.SubAccountName = getSubAccount.SubAccountName
  102. subAccount.JobId = getSubAccount.JobId
  103. subAccount.PhoneNumber = getSubAccount.PhoneNumber
  104. updateSubAccountErr := db.UpdateSubAccount(ctx, subAccount)
  105. if updateSubAccountErr != nil {
  106. return 0, nil, updateSubAccountErr
  107. }
  108. }
  109. return 0, nil, nil
  110. }
  111. // 被认证主账号注册
  112. return 2, nil, nil
  113. } else {
  114. // 更新User信息
  115. subAccountUserInfo, subAccountUserErr := db.GetSubUserByPhone(ctx, req.Phone)
  116. if subAccountUserErr != nil {
  117. return 0, nil, subAccountUserErr
  118. }
  119. var subAccountUser *gorm_model.YounggeeUser
  120. subAccountUser = &gorm_model.YounggeeUser{}
  121. subAccountUser.Phone = req.Phone
  122. subAccountUser.ID = subAccountUserInfo.ID
  123. updateUserErr := db.UpdateUserById(ctx, subAccountUser)
  124. if updateUserErr != nil {
  125. return 0, nil, updateUserErr
  126. }
  127. // 更新subAccount信息
  128. getSubAccount, getSubAccountErr := db.FindSubAccountById(ctx, req.SubAccountId)
  129. if getSubAccountErr != nil {
  130. return 0, nil, getSubAccountErr
  131. }
  132. if getSubAccount != nil {
  133. var subAccount *gorm_model.YounggeeSubAccount
  134. subAccount = &gorm_model.YounggeeSubAccount{}
  135. subAccount.SubAccountId = getSubAccount.SubAccountId
  136. subAccount.SubAccountName = getSubAccount.SubAccountName
  137. subAccount.JobId = getSubAccount.JobId
  138. subAccount.PhoneNumber = getSubAccount.PhoneNumber
  139. updateSubAccountErr := db.UpdateSubAccount(ctx, subAccount)
  140. if updateSubAccountErr != nil {
  141. return 0, nil, updateSubAccountErr
  142. }
  143. }
  144. return 0, nil, nil
  145. }
  146. }
  147. }
  148. return 0, nil, nil
  149. }
  150. // DeleteSubAccount 删除子账号
  151. func (*subaccount) DeleteSubAccount(ctx context.Context, request http_model.DeleteSubAccountRequest) error {
  152. var newSubAccount = gorm_model.YounggeeSubAccount{
  153. SubAccountId: request.SubAccountId,
  154. }
  155. err := db.DeleteSubAccount(ctx, newSubAccount)
  156. if err != nil {
  157. return err
  158. }
  159. return nil
  160. }
  161. // FindSubAccountBySupplierId 根据服务商ID查找包含的所有子账号信息
  162. func (*subaccount) FindSubAccountBySupplierId(ctx context.Context, request http_model.FindAllSubAccountRequest) (*http_model.FindAllSubAccountData, error) {
  163. var subAccountResp *http_model.FindAllSubAccountData
  164. subAccountResp = &http_model.FindAllSubAccountData{}
  165. // 1. 取出子账号基本信息
  166. newSubAccount, total, subAccountErr := db.FindSubAccountBySupplierId(ctx, request.PageNum, request.PageSize, request.SupplierId, request.JobId, request.AccountStatus, request.Condition)
  167. if subAccountErr != nil {
  168. return nil, subAccountErr
  169. }
  170. if newSubAccount != nil {
  171. for _, s := range newSubAccount {
  172. var subAccountInfo *http_model.FindAllSubAccountInfo
  173. subAccountInfo = &http_model.FindAllSubAccountInfo{}
  174. // fmt.Println("s:", s.SubAccountId)
  175. subAccountInfo.SubAccountId = s.SubAccountId
  176. subAccountInfo.SubAccountName = s.SubAccountName
  177. subAccountInfo.JobId = s.JobId
  178. subAccountInfo.UserId = s.UserId
  179. subAccountInfo.PhoneNumber = s.PhoneNumber
  180. subAccountInfo.SupplierId = s.SupplierId
  181. subAccountInfo.AccountStatus = s.AccountStatus
  182. // 2. 岗位信息
  183. jobInfo, jobErr := db.FindJobByJobId(ctx, s.JobId)
  184. if jobErr != nil {
  185. return nil, jobErr
  186. }
  187. if jobInfo != nil {
  188. subAccountInfo.JobName = jobInfo.JobName
  189. }
  190. // 3. 服务商信息
  191. supplierInfo, supplierErr := db.GetSupplierById(ctx, s.SupplierId)
  192. if supplierErr != nil {
  193. return nil, supplierErr
  194. }
  195. if supplierInfo != nil {
  196. subAccountInfo.SupplierName = supplierInfo.SupplierName
  197. }
  198. subAccountResp.SubAccountInfo = append(subAccountResp.SubAccountInfo, subAccountInfo)
  199. }
  200. }
  201. subAccountResp.Total = total
  202. return subAccountResp, nil
  203. }
  204. // ShutDownSubAccount 停用子账号
  205. func (*subaccount) ShutDownSubAccount(ctx context.Context, request http_model.ShutDownSubAccountRequest) error {
  206. var newSubAccount *gorm_model.YounggeeSubAccount
  207. newSubAccount = &gorm_model.YounggeeSubAccount{}
  208. newSubAccount.SubAccountId = request.SubAccountId
  209. newSubAccount.AccountStatus = 2
  210. err := db.UpdateSubAccount(ctx, newSubAccount)
  211. if err != nil {
  212. return err
  213. }
  214. return nil
  215. }