package app import ( "fmt" "git.echol.cn/loser/lckt/global" "git.echol.cn/loser/lckt/model/app/vo" "git.echol.cn/loser/lckt/model/user" "git.echol.cn/loser/lckt/model/user/request" "github.com/ArtisanCloud/PowerSocialite/v3/src/providers" "go.uber.org/zap" "golang.org/x/crypto/bcrypt" ) type AppUserService struct{} // Login 用户登录 func (u *AppUserService) Login(req request.CodeLoginReq) (users user.User, err error) { // 1. 判断用户是否存在 var count int64 err = global.GVA_DB.Model(&user.User{}).Where("phone = ?", req.Phone).Count(&count).Error if err != nil { global.GVA_LOG.Error("查询用户失败", zap.Error(err)) return } // 2. 如果用户不存在,则创建用户 if count == 0 { user := user.User{ Phone: req.Phone, UserLabel: 1, } err = global.GVA_DB.Save(&user).Error if err != nil { global.GVA_LOG.Error("创建用户失败", zap.Error(err)) return } } else { err = global.GVA_DB.Where("phone = ?", req.Phone).First(&users).Error if err != nil { global.GVA_LOG.Error("查询用户失败", zap.Error(err)) return } } return } // WechatLogin 微信登录 func (u *AppUserService) WechatLogin(info *providers.User) (users user.User, err error) { openID := info.GetOpenID() var count int64 // 1. 判断用户是否存在 err = global.GVA_DB.Model(&users).Where("open_id = ?", openID).Count(&count).Error if err != nil { global.GVA_LOG.Error("查询用户失败", zap.Error(err)) return } if count == 0 { newUser := user.User{ OpenId: openID, NickName: info.GetNickname(), Avatar: info.GetAvatar(), } err = global.GVA_DB.Save(&newUser).Error if err != nil { global.GVA_LOG.Error("创建用户失败", zap.Error(err)) return } return newUser, nil } else { err = global.GVA_DB.Where("open_id = ?", openID).First(&users).Error if err != nil { global.GVA_LOG.Error("查询用户失败", zap.Error(err)) return } } return } // PwdLogin 用户密码登录 func (u *AppUserService) PwdLogin(req request.PwdLoginReq) (users user.User, err error) { // 1. 判断用户是否存在 var count int64 err = global.GVA_DB.Model(&user.User{}).Where("phone = ?", req.Phone).First(&users).Count(&count).Error if err != nil { global.GVA_LOG.Error("查询用户失败", zap.Error(err)) return } if count == 0 { global.GVA_LOG.Error("用户不存在") err = fmt.Errorf("用户不存在") return } // 2. 判断密码是否正确 err = bcrypt.CompareHashAndPassword([]byte(users.Password), []byte(req.Password)) if err != nil { global.GVA_LOG.Error("密码错误", zap.Error(err)) return } return } func (u *AppUserService) GetUserInfo(id uint) (info vo.UserInfo, err error) { err = global.GVA_DB.Model(&user.User{}).Where("id = ?", id).First(&info).Error if err != nil { global.GVA_LOG.Error("查询用户信息失败", zap.Error(err)) return } return }