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() (userList []*model.User, err error) { return model.NewUserSearch(nil).FindAll() }