You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.4 KiB
81 lines
2.4 KiB
package service
|
|
|
|
import (
|
|
"errors"
|
|
"service-api/global"
|
|
"service-api/model"
|
|
"service-api/model/request"
|
|
"service-api/utils"
|
|
"time"
|
|
|
|
uuid "github.com/satori/go.uuid"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func FindUserByUuid(uuid string) (err error, user *model.User) {
|
|
var u model.User
|
|
if err = global.MG_DB.Where("`uuid` = ?", uuid).First(&u).Error; err != nil {
|
|
return errors.New("user not exist"), &u
|
|
}
|
|
return nil, &u
|
|
}
|
|
|
|
func FindUserByEmail(email string) (err error, user *model.User) {
|
|
var u model.User
|
|
if err = global.MG_DB.Where("`email` = ?", email).First(&u).Error; err != nil {
|
|
return errors.New("user not exist"), &u
|
|
}
|
|
return nil, &u
|
|
}
|
|
|
|
func CheckUserByEmailExist(email string) (err error, res bool) {
|
|
var u model.User
|
|
if err = global.MG_DB.Where("`email` = ?", email).First(&u).Error; err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
|
|
return errors.New("find user error"), true
|
|
}
|
|
return nil, false
|
|
}
|
|
|
|
//@function: ForgetPassword
|
|
//@description: 修改用户密码
|
|
//@param: u *model.SysUser, newPassword string
|
|
//@return: err error, userInter *model.SysUser
|
|
|
|
func ForgetPassword(u request.ForgetPasswordStruct) (err error, userInter *model.User) {
|
|
var user model.User
|
|
auth := RedisGet("forget:email" + u.Email)
|
|
if auth != u.Auth {
|
|
return errors.New("认证码不正确"), &user
|
|
}
|
|
err = global.MG_DB.Where("email = ?", u.Email).First(&user).Update("password", utils.MD5V([]byte(u.NewPassword))).Error
|
|
return err, &user
|
|
}
|
|
|
|
func Login(u *model.User) (err error, userInter *model.User) {
|
|
var user model.User
|
|
u.Password = utils.MD5V([]byte(u.Password))
|
|
err = global.MG_DB.Where("email = ? AND password = ?", u.Email, u.Password).First(&user).Error
|
|
return err, &user
|
|
}
|
|
|
|
func Register(u model.User) (err error, userInter model.User) {
|
|
var user model.User
|
|
if !errors.Is(global.MG_DB.Where("email = ?", u.Username).First(&user).Error, gorm.ErrRecordNotFound) { // 判断邮箱是否注册
|
|
return errors.New("email is exist"), userInter
|
|
}
|
|
// 否则 附加uuid 密码md5简单加密 注册
|
|
u.Password = utils.MD5V([]byte(u.Password))
|
|
u.UUID = uuid.NewV4().String()
|
|
now := time.Now()
|
|
u.RegTime = &now
|
|
u.Username = "user_" + utils.GetInvitation()
|
|
err = global.MG_DB.Create(&u).Error
|
|
if err != nil {
|
|
err = errors.New("register failed")
|
|
}
|
|
return err, u
|
|
}
|
|
|
|
func UpdateUserDetail(p *request.UpdateUserDetailParams, userID string) error {
|
|
return global.MG_DB.Model(&model.User{}).Where("uuid=?", userID).Updates(&p.UserDesc).Error
|
|
}
|
|
|