68 lines
1.4 KiB
Go
68 lines
1.4 KiB
Go
package service
|
|
|
|
import (
|
|
"crypto/md5"
|
|
"encoding/hex"
|
|
"errors"
|
|
"knowledge/api/dao"
|
|
"knowledge/api/dto"
|
|
"knowledge/api/requests"
|
|
"knowledge/utils"
|
|
"strconv"
|
|
)
|
|
|
|
// AdminUserService 后台用户
|
|
type AdminUserService struct {
|
|
}
|
|
|
|
func (r *AdminUserService) Login(req requests.Login) (res *dto.AdminUserDto, err error) {
|
|
// 获取用户信息
|
|
AdminUserDao := dao.AdminUserDao{}
|
|
adminUser, err := AdminUserDao.GetAdminUserFirstByAccess(req.Access)
|
|
if err != nil || adminUser == nil {
|
|
return nil, errors.New("用户名或密码错误")
|
|
}
|
|
|
|
// 检测用户密码
|
|
password := md5.Sum([]byte(req.Password + adminUser.Salt))
|
|
// 将哈希值转换为16进制字符串
|
|
passwordString := hex.EncodeToString(password[:])
|
|
|
|
if passwordString != adminUser.Password {
|
|
return nil, errors.New("用户名或密码错误")
|
|
}
|
|
|
|
// 检测用户状态
|
|
if adminUser.IsDeleted == 1 {
|
|
return nil, errors.New("非法用户")
|
|
}
|
|
|
|
if adminUser.IsDisabled == 1 {
|
|
return nil, errors.New("您的账号已被禁用,请联系管理员处理")
|
|
}
|
|
|
|
// 检测用户状态
|
|
if adminUser.Status != 1 {
|
|
return nil, errors.New("您的账号已被禁用,请联系管理员处理")
|
|
}
|
|
|
|
token := &utils.Token{
|
|
UserId: strconv.FormatInt(adminUser.UserId, 10),
|
|
Client: 2,
|
|
}
|
|
|
|
// 生成jwt
|
|
jwt, err := token.NewJWT(0)
|
|
if err != nil {
|
|
return nil, errors.New("登陆失败")
|
|
}
|
|
|
|
// 处理返回值
|
|
g := dto.LoginDto(adminUser)
|
|
|
|
// 加载token
|
|
g.LoadUserDoctor(jwt)
|
|
|
|
return g, nil
|
|
}
|