package service
|
|
import (
|
"aps_crm/constvar"
|
"aps_crm/model"
|
"aps_crm/pkg/ecode"
|
"aps_crm/pkg/encrypt"
|
"errors"
|
"gorm.io/gorm"
|
)
|
|
type UserService struct{}
|
|
func (userService *UserService) Login(u *model.User) (userInter *model.User, errCode int) {
|
userInter, err := model.NewUserSearch(nil).SetUserName(u.Username).First()
|
if err != nil {
|
return nil, ecode.UserNotExist
|
}
|
|
if ok := encrypt.BcryptCheck(u.Password, userInter.Password); !ok {
|
return nil, ecode.PasswordErr
|
}
|
|
return userInter, ecode.OK
|
}
|
|
func (userService *UserService) Register(u *model.User) (userInter *model.User, errCode int) {
|
_, err := model.NewUserSearch(nil).SetUserName(u.Username).First()
|
if err != gorm.ErrRecordNotFound {
|
return userInter, ecode.UserNameExistErr
|
}
|
|
err = model.NewUserSearch(nil).Create(u)
|
return u, ecode.OK
|
}
|
|
func (userService *UserService) ChangePassword(u *model.User, newPassword string) (userInter *model.User, errCode int) {
|
user, err := model.NewUserSearch(nil).SetId(u.UUID).First()
|
if err != nil {
|
return nil, ecode.UserNotExist
|
}
|
|
if ok := encrypt.BcryptCheck(u.Password, user.Password); !ok {
|
return nil, ecode.PasswordErr
|
}
|
|
user.Password = encrypt.BcryptHash(newPassword)
|
err = model.NewUserSearch(nil).SetId(u.UUID).UpdateByMap(map[string]interface{}{
|
"password": user.Password})
|
|
return user, ecode.OK
|
|
}
|
|
func (userService *UserService) DeleteUser(id string) (err error) {
|
user, err := model.NewUserSearch(nil).SetId(id).First()
|
if err != nil {
|
return err
|
}
|
|
if user.UserType != constvar.UserTypeSub {
|
return errors.New("该用户非子账户,无法删除")
|
}
|
|
err = model.NewUserSearch(nil).SetId(id).Delete()
|
if err != nil {
|
return err
|
}
|
|
return model.NewUserMenuSearch(nil).SetUserId(id).Delete()
|
}
|
|
func (userService *UserService) SetUserInfo(req model.User) error {
|
return model.NewUserSearch(nil).SetId(req.UUID).UpdateByMap(map[string]interface{}{
|
"nick_name": req.NickName,
|
"header_img": req.HeaderImg,
|
"phone": req.Phone,
|
"email": req.Email,
|
"pos": req.Pos,
|
})
|
}
|
|
func (userService *UserService) GetUserInfo(id string) (user *model.User, err error) {
|
return model.NewUserSearch(nil).SetId(id).First()
|
}
|
|
func (userService *UserService) ResetPassword(id string) (err error) {
|
return model.NewUserSearch(nil).SetId(id).UpdateByMap(map[string]interface{}{
|
"password": encrypt.BcryptHash("123456"),
|
})
|
}
|
|
func (userService *UserService) GetUserList(userIds []int) (userList []*model.User, err error) {
|
return model.NewUserSearch(nil).SetUserIds(userIds).FindAll()
|
}
|
|
func (userService *UserService) UUID2CrmUserId(uuids []string) (crmUserIds []int, m map[string]int, err error) {
|
idPairs, err := model.NewUserSearch(nil).UUID2CrmUserId(uuids)
|
if err != nil {
|
return
|
}
|
crmUserIds = make([]int, 0, len(idPairs))
|
m = make(map[string]int, len(idPairs))
|
for _, idPair := range idPairs {
|
crmUserIds = append(crmUserIds, idPair.ID)
|
m[idPair.UUID] = idPair.ID
|
}
|
return
|
}
|