🎨 优化微信登录流程&新增手机和微信绑定接口

This commit is contained in:
2025-07-23 02:33:39 +08:00
parent f0a67822ef
commit 7a729211d1
9 changed files with 218 additions and 32 deletions

View File

@@ -175,3 +175,49 @@ func (u *AppUserService) GetTeacherApplyStatus(id uint) (teacherApply app.Teache
return
}
// BindWechat 手机登录用户绑定微信
func (u *AppUserService) BindWechat(p request.BindWechatReq) (*user.User, error) {
var userInfo user.User
err := global.GVA_DB.Model(&user.User{}).Where("id = ?", p.Id).First(&userInfo).Error
if err != nil {
global.GVA_LOG.Error("查询用户失败", zap.Error(err))
return nil, err
}
if userInfo.OpenId != "" {
global.GVA_LOG.Error("用户已绑定微信")
return nil, fmt.Errorf("用户已绑定微信")
}
userInfo.OpenId = p.Openid
err = global.GVA_DB.Save(&userInfo).Error
if err != nil {
global.GVA_LOG.Error("绑定微信失败", zap.Error(err))
return nil, err
}
return &userInfo, nil
}
// BindPhone 微信登录用户绑定手机号
func (u *AppUserService) BindPhone(p request.BindPhoneReq) (*user.User, error) {
var userInfo user.User
err := global.GVA_DB.Model(&user.User{}).Where("id = ?", p.Id).First(&userInfo).Error
if err != nil {
global.GVA_LOG.Error("查询用户失败", zap.Error(err))
return nil, err
}
userInfo.Phone = p.Phone
pwd, _ := bcrypt.GenerateFromPassword([]byte(p.PassWord), bcrypt.DefaultCost)
userInfo.Password = string(pwd)
err = global.GVA_DB.Save(&userInfo).Error
if err != nil {
global.GVA_LOG.Error("绑定微信失败", zap.Error(err))
return nil, err
}
return &userInfo, nil
}

View File

@@ -9,6 +9,7 @@ import (
common "git.echol.cn/loser/lckt/model/common/request"
"git.echol.cn/loser/lckt/model/user"
"git.echol.cn/loser/lckt/model/user/request"
"git.echol.cn/loser/lckt/utils/sms"
"go.uber.org/zap"
"golang.org/x/crypto/bcrypt"
"math/rand"
@@ -43,11 +44,11 @@ func (u *UserService) SendCode(req request.SendCodeReq) (err error) {
rand.New(rand.NewSource(time.Now().UnixNano()))
verifyCode := fmt.Sprintf("%06v", rand.Int31n(1000000))
//if ok := sms.SendSMS(req.Phone, verifyCode); !ok {
// global.GVA_LOG.Error("发送验证码失败")
// return
//}
//
if ok := sms.DxbSendSMS(req.Phone, verifyCode); !ok {
global.GVA_LOG.Error("发送验证码失败")
return
}
if err = rdb.Set(context.Background(), key, verifyCode, 5*time.Minute).Err(); err != nil {
global.GVA_LOG.Error("设置验证码缓存失败", zap.Error(err))
return
@@ -202,3 +203,28 @@ func (u *UserService) GetTeacherApplyList(p request.GetTeacherApplyListReq) (lis
}
return
}
func (u *UserService) UpdateTeacherApplyStatus(p app.TeacherApply) (err error) {
err = global.GVA_DB.Save(&p).Error
if err != nil {
global.GVA_LOG.Error("更新教师申请状态失败", zap.Error(err))
return
}
// 如果申请通过,更新用户类型为教师
if p.Status == 1 {
var user user.User
err = global.GVA_DB.Model(&user).Where("id = ?", p.UserId).First(&user).Error
if err != nil {
global.GVA_LOG.Error("查询用户信息失败", zap.Error(err))
return
}
user.UserType = 2 // 设置为教师
err = global.GVA_DB.Save(&user).Error
if err != nil {
global.GVA_LOG.Error("更新用户类型失败", zap.Error(err))
return
}
}
return
}