|
|
@@ -0,0 +1,202 @@
|
|
|
+package system
|
|
|
+
|
|
|
+import (
|
|
|
+ "time"
|
|
|
+ "xps/constant"
|
|
|
+ "xps/datamodels"
|
|
|
+ "xps/datasource"
|
|
|
+ "xps/repositories/system"
|
|
|
+ "xps/viewmodels"
|
|
|
+)
|
|
|
+
|
|
|
+type UserService interface {
|
|
|
+ GetByPage(m map[string]interface{}) (*viewmodels.PageResult, error)
|
|
|
+ GetById(ocId, groupId, userId int64) (*viewmodels.UserInfo, error)
|
|
|
+ Create(ocTypeId int64, user *viewmodels.UserInfo) error
|
|
|
+ Update(user *viewmodels.UserInfo) error
|
|
|
+ Delete(m map[string]interface{}) error
|
|
|
+}
|
|
|
+
|
|
|
+type userService struct {
|
|
|
+ userRepo *system.UserRepo
|
|
|
+ accountRepo *system.AccountRepo
|
|
|
+ roleMemberRepo *system.RoleMemberRepo
|
|
|
+ groupRepo *system.GroupRepo
|
|
|
+ groupMemberRepo *system.GroupMemberRepo
|
|
|
+ groupMemberPositionRepo *system.GroupMemberPositionRepo
|
|
|
+}
|
|
|
+
|
|
|
+func NewUserService() UserService {
|
|
|
+ return &userService{
|
|
|
+ userRepo: system.NewUserRepo(datasource.InstanceMaster()),
|
|
|
+ accountRepo: system.NewAccountRepo(datasource.InstanceMaster()),
|
|
|
+ roleMemberRepo: system.NewRoleMemberRepo(datasource.InstanceMaster()),
|
|
|
+ groupRepo: system.NewGroupRepo(datasource.InstanceMaster()),
|
|
|
+ groupMemberRepo: system.NewGroupMemberRepo(datasource.InstanceMaster()),
|
|
|
+ groupMemberPositionRepo: system.NewGroupMemberPositionRepo(datasource.InstanceMaster()),
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (s *userService) GetByPage(m map[string]interface{}) (*viewmodels.PageResult, error) {
|
|
|
+ ocId := m["ocId"].(int64)
|
|
|
+ groupId := m["groupId"].(int64)
|
|
|
+ group, err := s.groupRepo.GetById(ocId, groupId)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ nodeLeft := group.NodeLeft
|
|
|
+ nodeRight := group.NodeRight
|
|
|
+ m["nodeLeft"] = nodeLeft
|
|
|
+ m["nodeRight"] = nodeRight
|
|
|
+ return s.userRepo.GetByPage(m)
|
|
|
+}
|
|
|
+
|
|
|
+func (s *userService) GetById(ocId, groupId, userId int64) (*viewmodels.UserInfo, error) {
|
|
|
+ return s.GetById(ocId, groupId, userId)
|
|
|
+}
|
|
|
+
|
|
|
+func (s *userService) Create(ocTypeId int64, user *viewmodels.UserInfo) error {
|
|
|
+ ocId := user.OcId
|
|
|
+ userId := ocId //管理员ID同公司ID,只有管理员可以作账号管理
|
|
|
+ newId := NewID()
|
|
|
+ accountId := newId
|
|
|
+
|
|
|
+ userRole := constant.ENT_USER_ROLE
|
|
|
+ if ocTypeId == constant.OCTYPE_ADMIN {
|
|
|
+ userRole = constant.OP_ROLE_USER
|
|
|
+ }else if ocTypeId == constant.OCTYPE_ORG{
|
|
|
+ userRole = constant.ORG_ROLE_USER
|
|
|
+ }else if ocTypeId == constant.OCTYPE_ENT{
|
|
|
+ userRole = constant.ENT_USER_ROLE
|
|
|
+ }else if ocTypeId == constant.OCTYPE_PARTNER{
|
|
|
+ userRole = constant.PARTNER_ROLE_USER
|
|
|
+ }
|
|
|
+
|
|
|
+ // 1.Account
|
|
|
+ account := &datamodels.Account{
|
|
|
+ OcId: ocId,
|
|
|
+ AccountId: accountId,
|
|
|
+ AccountName: user.AccountName,
|
|
|
+ Password: "21218cca77804d2ba1922c33e0151105",
|
|
|
+ AccountType: 0,
|
|
|
+ AccountRealName: user.AccountRealName,
|
|
|
+ AccountPhone: user.AccountPhone,
|
|
|
+ AccountLastIp: "",
|
|
|
+ AccountLoc: user.AccountLoc,
|
|
|
+ AccountIntro: user.AccountIntro,
|
|
|
+ AccountPhoto: user.AccountPhoto,
|
|
|
+ AccountAvatar: user.AccountAvatar,
|
|
|
+ AccountMail: user.AccountMail,
|
|
|
+ AccountStaffNo: user.AccountStaffNo,
|
|
|
+ Status: 1,
|
|
|
+ IsFixed: 0,
|
|
|
+ CreatedBy: userId,
|
|
|
+ CreatedAt: time.Time{},
|
|
|
+ }
|
|
|
+
|
|
|
+ err := s.accountRepo.Create(account)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2. Role member
|
|
|
+ roleMember := &datamodels.RoleMember{
|
|
|
+ RmId : newId,
|
|
|
+ OcId : ocId,
|
|
|
+ RoleId : int64(userRole),
|
|
|
+ AccountId: accountId,
|
|
|
+ }
|
|
|
+ err = s.roleMemberRepo.Create(roleMember)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. Group Member
|
|
|
+ groupId := user.GroupId
|
|
|
+ groupMember := &datamodels.GroupMember{
|
|
|
+ GmId : newId,
|
|
|
+ OcId : ocId,
|
|
|
+ GroupId : groupId,
|
|
|
+ AccountId: accountId,
|
|
|
+ }
|
|
|
+ err = s.groupMemberRepo.Create(groupMember)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ // 4. Group Member Position
|
|
|
+ positionId := user.PositionId
|
|
|
+ groupMemberPosition := &datamodels.GroupMemberPosition{
|
|
|
+ GmpId : newId,
|
|
|
+ OcId : ocId,
|
|
|
+ GroupId : groupId,
|
|
|
+ AccountId : accountId,
|
|
|
+ PositionId: positionId,
|
|
|
+ }
|
|
|
+ err = s.groupMemberPositionRepo.Create(groupMemberPosition)
|
|
|
+ return err
|
|
|
+}
|
|
|
+
|
|
|
+func (s *userService) Update(user *viewmodels.UserInfo) error {
|
|
|
+ ocId := user.OcId
|
|
|
+ accountId := user.AccountId
|
|
|
+ groupId := user.GroupId
|
|
|
+ positionId := user.PositionId
|
|
|
+ userId := ocId//管理员ID同公司ID,只有管理员可以作账号管理
|
|
|
+
|
|
|
+ // 1. update account
|
|
|
+ account := &datamodels.Account{
|
|
|
+ OcId: ocId,
|
|
|
+ AccountId: accountId,
|
|
|
+ AccountName: user.AccountName,
|
|
|
+ AccountType: 0,
|
|
|
+ AccountRealName: user.AccountRealName,
|
|
|
+ AccountPhone: user.AccountPhone,
|
|
|
+ AccountLastIp: "",
|
|
|
+ AccountLoc: user.AccountLoc,
|
|
|
+ AccountIntro: user.AccountIntro,
|
|
|
+ AccountPhoto: user.AccountPhoto,
|
|
|
+ AccountAvatar: user.AccountAvatar,
|
|
|
+ AccountMail: user.AccountMail,
|
|
|
+ AccountStaffNo: user.AccountStaffNo,
|
|
|
+ Status: user.Status,
|
|
|
+ UpdatedBy: userId,
|
|
|
+ UpdatedAt: time.Time{},
|
|
|
+ }
|
|
|
+ err := s.accountRepo.Update(ocId, accountId, account)
|
|
|
+ if err == nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2. update group member
|
|
|
+ gmId := user.GmId
|
|
|
+ groupMember := &datamodels.GroupMember{
|
|
|
+ GmId: gmId,
|
|
|
+ OcId: ocId,
|
|
|
+ GroupId: groupId,
|
|
|
+ AccountId: accountId,
|
|
|
+ }
|
|
|
+ err = s.groupMemberRepo.Update(ocId, gmId, groupMember)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. update the group member position
|
|
|
+ gmpId := user.GmpId
|
|
|
+ groupMemberPosition := &datamodels.GroupMemberPosition{
|
|
|
+ OcId: ocId,
|
|
|
+ GmpId: gmpId,
|
|
|
+ GroupId: groupId,
|
|
|
+ AccountId: accountId,
|
|
|
+ PositionId: positionId,
|
|
|
+ }
|
|
|
+ err = s.groupMemberPositionRepo.Update(ocId, gmpId, groupMemberPosition)
|
|
|
+ return err
|
|
|
+}
|
|
|
+
|
|
|
+func (s *userService) Delete(m map[string]interface{}) error {
|
|
|
+ err := s.accountRepo.Delete(m)
|
|
|
+ return err
|
|
|
+}
|
|
|
+
|