| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295 |
- package system
- import (
- "time"
- "xps/constant"
- "xps/datamodels"
- "xps/datasource"
- "xps/repositories/system"
- "xps/utils"
- "xps/viewmodels"
- )
- type UserService interface {
- GetList(m map[string]interface{}) ([]viewmodels.UserInfo, error)
- GetPage(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
- ResetPassword(ocId, userId int64) error
- ChangeStatus(ocId, userId, status int64) error
- Delete(m map[string]interface{}) error
- IsUserNameExist(ocId int64, accountName string) (bool, error)
- IsUserPhoneExist(ocId int64, accountPhone string)(bool, error)
- IsStaffNoExist(ocId int64, staffNo string)(bool, error)
- IsEmailExist(ocId int64, staffNo string)(bool, error)
- SelectUser(ocId int64)([]viewmodels.UserSelectVo, 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) GetList(m map[string]interface{}) ([]viewmodels.UserInfo, 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.GetList(m)
- }
- func (s *userService) GetPage(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.GetPage(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) ResetPassword(ocId, userId int64) error {
- pwd := utils.GetMD5String("888888")
- data := &datamodels.Account{
- Password: pwd,
- }
- return s.accountRepo.Update(ocId, userId, data)
- }
- func (s *userService) ChangeStatus(ocId, userId, status int64) error {
- data := &datamodels.Account{
- Status: status,
- }
- return s.accountRepo.Update(ocId, userId, data)
- }
- func (s *userService) Delete(m map[string]interface{}) error {
- err := s.accountRepo.Delete(m)
- return err
- }
- func (s *userService) IsUserNameExist(ocId int64, accountName string) (bool, error){
- return s.accountRepo.IsUserNameExist(ocId, accountName)
- }
- func (s *userService) IsUserPhoneExist(ocId int64, accountPhone string)(bool, error){
- return s.accountRepo.IsUserPhoneExist(ocId, accountPhone)
- }
- func (s *userService) IsStaffNoExist(ocId int64, staffNo string)(bool, error){
- return s.accountRepo.IsStaffNoExist(ocId, staffNo)
- }
- func (s *userService) IsEmailExist(ocId int64, email string)(bool, error){
- return s.accountRepo.IsEmailExist(ocId, email)
- }
- func (s *userService) SelectUser(ocId int64)([]viewmodels.UserSelectVo, error){
- m := make(map[string]interface{}, 0)
- m["ocId"] = ocId
- memberList, err := s.groupMemberPositionRepo.GetList(m)
- if err != nil {
- return nil, err
- }
-
- voList := make([]viewmodels.UserSelectVo, 0)
- itemList := make([]viewmodels.UserSelectItemVo, 0)
- positionId := int64(0)
- for _, member := range memberList {
- item := viewmodels.UserSelectItemVo{
- Name: member.AccountName,
- Value: member.AccountId,
- AccountId: member.AccountId,
- AccountName: member.AccountName,
- PositionId: member.PositionId,
- PositionName: member.PositionName,
- GroupId: member.GroupId,
- GroupName: member.GroupName,
- }
- itemList = append(itemList, item)
-
- if positionId != 0 && positionId != member.PositionId {
- vo := viewmodels.UserSelectVo{
- Name: member.PositionName,
- Children: itemList,
- }
- itemList = make([]viewmodels.UserSelectItemVo, 0)
- voList = append(voList, vo)
- }
- positionId = member.PositionId
- }
-
- return voList, nil
- }
|