user_service.go 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. package system
  2. import (
  3. "time"
  4. "xps/constant"
  5. "xps/datamodels"
  6. "xps/datasource"
  7. "xps/repositories/system"
  8. "xps/viewmodels"
  9. )
  10. type UserService interface {
  11. GetPage(m map[string]interface{}) (*viewmodels.PageResult, error)
  12. GetById(ocId, groupId, userId int64) (*viewmodels.UserInfo, error)
  13. Create(ocTypeId int64, user *viewmodels.UserInfo) error
  14. Update(user *viewmodels.UserInfo) error
  15. Delete(m map[string]interface{}) error
  16. }
  17. type userService struct {
  18. userRepo *system.UserRepo
  19. accountRepo *system.AccountRepo
  20. roleMemberRepo *system.RoleMemberRepo
  21. groupRepo *system.GroupRepo
  22. groupMemberRepo *system.GroupMemberRepo
  23. groupMemberPositionRepo *system.GroupMemberPositionRepo
  24. }
  25. func NewUserService() UserService {
  26. return &userService{
  27. userRepo: system.NewUserRepo(datasource.InstanceMaster()),
  28. accountRepo: system.NewAccountRepo(datasource.InstanceMaster()),
  29. roleMemberRepo: system.NewRoleMemberRepo(datasource.InstanceMaster()),
  30. groupRepo: system.NewGroupRepo(datasource.InstanceMaster()),
  31. groupMemberRepo: system.NewGroupMemberRepo(datasource.InstanceMaster()),
  32. groupMemberPositionRepo: system.NewGroupMemberPositionRepo(datasource.InstanceMaster()),
  33. }
  34. }
  35. func (s *userService) GetPage(m map[string]interface{}) (*viewmodels.PageResult, error) {
  36. ocId := m["ocId"].(int64)
  37. groupId := m["groupId"].(int64)
  38. group, err := s.groupRepo.GetById(ocId, groupId)
  39. if err != nil {
  40. return nil, err
  41. }
  42. nodeLeft := group.NodeLeft
  43. nodeRight := group.NodeRight
  44. m["nodeLeft"] = nodeLeft
  45. m["nodeRight"] = nodeRight
  46. return s.userRepo.GetPage(m)
  47. }
  48. func (s *userService) GetById(ocId, groupId, userId int64) (*viewmodels.UserInfo, error) {
  49. return s.GetById(ocId, groupId, userId)
  50. }
  51. func (s *userService) Create(ocTypeId int64, user *viewmodels.UserInfo) error {
  52. ocId := user.OcId
  53. userId := ocId //管理员ID同公司ID,只有管理员可以作账号管理
  54. newId := NewID()
  55. accountId := newId
  56. userRole := constant.ENT_USER_ROLE
  57. if ocTypeId == constant.OCTYPE_ADMIN {
  58. userRole = constant.OP_ROLE_USER
  59. }else if ocTypeId == constant.OCTYPE_ORG{
  60. userRole = constant.ORG_ROLE_USER
  61. }else if ocTypeId == constant.OCTYPE_ENT{
  62. userRole = constant.ENT_USER_ROLE
  63. }else if ocTypeId == constant.OCTYPE_PARTNER{
  64. userRole = constant.PARTNER_ROLE_USER
  65. }
  66. // 1.Account
  67. account := &datamodels.Account{
  68. OcId: ocId,
  69. AccountId: accountId,
  70. AccountName: user.AccountName,
  71. Password: "21218cca77804d2ba1922c33e0151105",
  72. AccountType: 0,
  73. AccountRealName: user.AccountRealName,
  74. AccountPhone: user.AccountPhone,
  75. AccountLastIp: "",
  76. AccountLoc: user.AccountLoc,
  77. AccountIntro: user.AccountIntro,
  78. AccountPhoto: user.AccountPhoto,
  79. AccountAvatar: user.AccountAvatar,
  80. AccountMail: user.AccountMail,
  81. AccountStaffNo: user.AccountStaffNo,
  82. Status: 1,
  83. IsFixed: 0,
  84. CreatedBy: userId,
  85. CreatedAt: time.Time{},
  86. }
  87. err := s.accountRepo.Create(account)
  88. if err != nil {
  89. return err
  90. }
  91. // 2. Role member
  92. roleMember := &datamodels.RoleMember{
  93. RmId : newId,
  94. OcId : ocId,
  95. RoleId : int64(userRole),
  96. AccountId: accountId,
  97. }
  98. err = s.roleMemberRepo.Create(roleMember)
  99. if err != nil {
  100. return err
  101. }
  102. // 3. Group Member
  103. groupId := user.GroupId
  104. groupMember := &datamodels.GroupMember{
  105. GmId : newId,
  106. OcId : ocId,
  107. GroupId : groupId,
  108. AccountId: accountId,
  109. }
  110. err = s.groupMemberRepo.Create(groupMember)
  111. if err != nil {
  112. return err
  113. }
  114. // 4. Group Member Position
  115. positionId := user.PositionId
  116. groupMemberPosition := &datamodels.GroupMemberPosition{
  117. GmpId : newId,
  118. OcId : ocId,
  119. GroupId : groupId,
  120. AccountId : accountId,
  121. PositionId: positionId,
  122. }
  123. err = s.groupMemberPositionRepo.Create(groupMemberPosition)
  124. return err
  125. }
  126. func (s *userService) Update(user *viewmodels.UserInfo) error {
  127. ocId := user.OcId
  128. accountId := user.AccountId
  129. groupId := user.GroupId
  130. positionId := user.PositionId
  131. userId := ocId//管理员ID同公司ID,只有管理员可以作账号管理
  132. // 1. update account
  133. account := &datamodels.Account{
  134. OcId: ocId,
  135. AccountId: accountId,
  136. AccountName: user.AccountName,
  137. AccountType: 0,
  138. AccountRealName: user.AccountRealName,
  139. AccountPhone: user.AccountPhone,
  140. AccountLastIp: "",
  141. AccountLoc: user.AccountLoc,
  142. AccountIntro: user.AccountIntro,
  143. AccountPhoto: user.AccountPhoto,
  144. AccountAvatar: user.AccountAvatar,
  145. AccountMail: user.AccountMail,
  146. AccountStaffNo: user.AccountStaffNo,
  147. Status: user.Status,
  148. UpdatedBy: userId,
  149. UpdatedAt: time.Time{},
  150. }
  151. err := s.accountRepo.Update(ocId, accountId, account)
  152. if err == nil {
  153. return err
  154. }
  155. // 2. update group member
  156. gmId := user.GmId
  157. groupMember := &datamodels.GroupMember{
  158. GmId: gmId,
  159. OcId: ocId,
  160. GroupId: groupId,
  161. AccountId: accountId,
  162. }
  163. err = s.groupMemberRepo.Update(ocId, gmId, groupMember)
  164. if err != nil {
  165. return err
  166. }
  167. // 3. update the group member position
  168. gmpId := user.GmpId
  169. groupMemberPosition := &datamodels.GroupMemberPosition{
  170. OcId: ocId,
  171. GmpId: gmpId,
  172. GroupId: groupId,
  173. AccountId: accountId,
  174. PositionId: positionId,
  175. }
  176. err = s.groupMemberPositionRepo.Update(ocId, gmpId, groupMemberPosition)
  177. return err
  178. }
  179. func (s *userService) Delete(m map[string]interface{}) error {
  180. err := s.accountRepo.Delete(m)
  181. return err
  182. }