| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- 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
- }
|