Files
GoFilm/server/logic/UserLogic.go
2023-12-23 22:32:52 +08:00

67 lines
1.9 KiB
Go

package logic
import (
"errors"
"server/model/system"
"server/plugin/common/util"
)
type UserLogic struct {
}
var UL *UserLogic
// UserLogin 用户登录
func (ul *UserLogic) UserLogin(account, password string) (token string, err error) {
// 根据 username 或 email 查询用户信息
var u *system.User = system.GetUserByNameOrEmail(account)
// 用户信息不存在则返回提示信息
if u == nil {
return "", errors.New(" 用户信息不存在!!!")
}
// 校验用户信息, 执行账号密码校验逻辑
if util.PasswordEncrypt(password, u.Salt) != u.Password {
return "", errors.New("用户名或密码错误")
}
// 密码校验成功后下发token
token, err = system.GenToken(u.ID, u.UserName)
err = system.SaveUserToken(token, u.ID)
return
}
// UserLogout 用户退出登录 注销
func (ul *UserLogic) UserLogout() {
// 通过用户ID清除Redis中的token信息
}
// ChangePassword 修改密码
func (ul *UserLogic) ChangePassword(account, password, newPassword string) error {
// 根据 username 或 email 查询用户信息
var u *system.User = system.GetUserByNameOrEmail(account)
// 用户信息不存在则返回提示信息
if u == nil {
return errors.New(" 用户信息不存在!!!")
}
// 首先校验用户的旧密码是否正确
if util.PasswordEncrypt(password, u.Salt) != u.Password {
return errors.New("原密码校验失败")
}
// 密码校验正确则生成新的用户信息
newUser := system.User{}
newUser.ID = u.ID
// 将新密码进行加密
newUser.Password = util.PasswordEncrypt(newPassword, u.Salt)
// 更新用户信息
system.UpdateUserInfo(newUser)
return nil
}
func (ul *UserLogic) GetUserInfo(id uint) system.UserInfoVo {
// 通过用户ID查询对应的用户信息
u := system.GetUserById(id)
// 去除user信息中的不必要信息
var vo = system.UserInfoVo{Id: u.ID, UserName: u.UserName, Email: u.Email, Gender: u.Gender, NickName: u.NickName, Avatar: u.Avatar, Status: u.Status}
return vo
}