修改了微信授权登录

This commit is contained in:
2024-08-16 15:39:09 +08:00
parent 3fcc745e83
commit 9aded38adc
4 changed files with 124 additions and 49 deletions
+67 -41
View File
@@ -10,7 +10,6 @@ import (
"hepa-calc-api/api/responses"
"hepa-calc-api/api/service"
"hepa-calc-api/config"
"hepa-calc-api/extend/weChat"
"hepa-calc-api/global"
"hepa-calc-api/utils"
"time"
@@ -66,9 +65,6 @@ func (r *Login) LoginPhone(c *gin.Context) {
user, _ := userDao.GetUser(maps)
// 新用户处理方式
if user == nil {
// 头像
avatar := "www.baidu.com"
// 登录ip
publicService := service.PublicService{}
loginIp := publicService.GetUserIP(c.Request)
@@ -83,7 +79,7 @@ func (r *Login) LoginPhone(c *gin.Context) {
UnionId: "",
Age: nil,
Sex: nil,
Avatar: avatar,
Avatar: "",
IsMember: 0,
MemberExpireDate: nil,
LoginIp: loginIp,
@@ -187,65 +183,53 @@ func (r *Login) LoginWx(c *gin.Context) {
return
}
// 获取微信网页授权access_token
webAccessToken, err := weChat.GetWebAccessToken(req.Code)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 开始事务
tx := global.Db.Begin()
defer func() {
if r := recover(); r != nil {
fmt.Println(r)
tx.Rollback()
}
}()
// 网页授权拉取用户信息
userInfo, err := weChat.GetUserInfo(webAccessToken.AccessToken, webAccessToken.OpenId)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
fmt.Println(userInfo)
var userInfo *model.UserInfo
var err error
// 检测用户信息
userDao := dao.UserDao{}
maps := make(map[string]interface{})
maps["open_id"] = webAccessToken.OpenId
maps["mobile"] = req.Mobile
user, _ := userDao.GetUser(maps)
// 新用户处理方式
if user == nil {
// 开始事务
tx := global.Db.Begin()
defer func() {
if r := recover(); r != nil {
fmt.Println(r)
tx.Rollback()
}
}()
// 登录ip
publicService := service.PublicService{}
loginIp := publicService.GetUserIP(c.Request)
// 处理用户头像
userService := service.UserService{}
avatar, err := userService.HandleUserAvatar(userInfo.HeadImgUrl)
avatarOssPath, err := userService.HandleUserImage(req.HeadImgUrl)
if err != nil {
tx.Rollback()
responses.FailWithMessage(err.Error(), c)
return
}
// 登录ip
publicService := service.PublicService{}
loginIp := publicService.GetUserIP(c.Request)
// 新增用户
user = &model.User{
UserName: userInfo.Nickname,
Mobile: "",
RegisterSource: req.Source,
OpenId: userInfo.OpenId,
UnionId: userInfo.UnionId,
UserName: "",
AppIden: "",
Mobile: req.Mobile,
RegisterSource: 2,
OpenId: req.OpenId,
UnionId: req.UnionId,
Age: nil,
Sex: &userInfo.Sex,
Avatar: avatar,
Sex: nil,
Avatar: avatarOssPath,
IsMember: 0,
MemberExpireDate: nil,
LoginIp: loginIp,
}
loginAt := model.LocalTime(time.Now())
user.LoginAt = &loginAt
@@ -255,9 +239,51 @@ func (r *Login) LoginWx(c *gin.Context) {
responses.FailWithMessage(err.Error(), c)
return
}
tx.Commit()
// 新增用户详情
userInfo = &model.UserInfo{
UserId: user.UserId,
Height: "",
Weight: "",
NationId: nil,
IsFamilyHistory: nil,
IsPregnant: nil,
ExpectedDate: nil,
ProvinceId: nil,
Province: "",
CityId: nil,
City: "",
CountyId: nil,
County: "",
}
userInfoDao := dao.UserInfoDao{}
userInfo, err = userInfoDao.AddUserInfo(tx, userInfo)
if err != nil {
tx.Rollback()
responses.FailWithMessage(err.Error(), c)
return
}
}
// 处理app用户数据
userService := service.UserService{}
err = userService.HandleAppUserInfo(tx, user, userInfo)
if err != nil {
tx.Rollback()
responses.FailWithMessage(err.Error(), c)
return
}
// 处理app用户病例数据
err = userService.HandleAppUserCase(tx, user)
if err != nil {
tx.Rollback()
responses.FailWithMessage(err.Error(), c)
return
}
tx.Commit()
// 下发token
token := &utils.Token{
UserId: fmt.Sprintf("%d", user.UserId),