修正了登录
This commit is contained in:
+32
-160
@@ -17,10 +17,10 @@ import (
|
||||
|
||||
type Login struct{}
|
||||
|
||||
// LoginPhone 手机号登录
|
||||
func (r *Login) LoginPhone(c *gin.Context) {
|
||||
// Login 登录
|
||||
func (r *Login) Login(c *gin.Context) {
|
||||
loginRequest := requests.LoginRequest{}
|
||||
req := loginRequest.LoginPhone
|
||||
req := loginRequest.Login
|
||||
if err := c.ShouldBind(&req); err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
@@ -32,20 +32,6 @@ func (r *Login) LoginPhone(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
// 检测验证码
|
||||
if config.C.Env != "dev" {
|
||||
code, _ := global.Redis.Get(c, "login_code_count_"+req.Mobile).Result()
|
||||
if code == "" {
|
||||
responses.FailWithMessage("验证码失效", c)
|
||||
return
|
||||
}
|
||||
|
||||
if req.Code != code {
|
||||
responses.FailWithMessage("验证码错误", c)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// 开始事务
|
||||
tx := global.Db.Begin()
|
||||
defer func() {
|
||||
@@ -65,21 +51,44 @@ func (r *Login) LoginPhone(c *gin.Context) {
|
||||
user, _ := userDao.GetUser(maps)
|
||||
// 新用户处理方式
|
||||
if user == nil {
|
||||
// 检测验证码
|
||||
if config.C.Env != "dev" {
|
||||
code, _ := global.Redis.Get(c, "login_code_count_"+req.Mobile).Result()
|
||||
if code == "" {
|
||||
responses.FailWithMessage("验证码失效", c)
|
||||
return
|
||||
}
|
||||
|
||||
if req.Code != code {
|
||||
responses.FailWithMessage("验证码错误", c)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// 登录ip
|
||||
publicService := service.PublicService{}
|
||||
loginIp := publicService.GetUserIP(c.Request)
|
||||
|
||||
// 处理用户头像
|
||||
userService := service.UserService{}
|
||||
avatarOssPath, err := userService.HandleUserImage(req.HeadImgUrl)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
// 新增用户
|
||||
user = &model.User{
|
||||
UserName: "",
|
||||
UserName: req.Nickname,
|
||||
AppIden: "",
|
||||
Mobile: req.Mobile,
|
||||
RegisterSource: req.Source,
|
||||
OpenId: "",
|
||||
UnionId: "",
|
||||
OpenId: req.OpenId,
|
||||
UnionId: req.UnionId,
|
||||
Age: nil,
|
||||
Sex: nil,
|
||||
Avatar: "",
|
||||
Avatar: avatarOssPath,
|
||||
IsMember: 0,
|
||||
MemberExpireDate: nil,
|
||||
LoginIp: loginIp,
|
||||
@@ -130,7 +139,7 @@ func (r *Login) LoginPhone(c *gin.Context) {
|
||||
|
||||
// 处理app用户数据
|
||||
userService := service.UserService{}
|
||||
err = userService.HandleAppUserInfo(tx, user, userInfo)
|
||||
err = userService.GetAppUserInfo(tx, user, userInfo)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
@@ -138,7 +147,7 @@ func (r *Login) LoginPhone(c *gin.Context) {
|
||||
}
|
||||
|
||||
// 处理app用户病例数据
|
||||
err = userService.HandleAppUserCase(tx, user)
|
||||
err = userService.GetAppUserCase(tx, user)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
@@ -167,140 +176,3 @@ func (r *Login) LoginPhone(c *gin.Context) {
|
||||
|
||||
responses.OkWithData(g, c)
|
||||
}
|
||||
|
||||
// LoginWx 微信授权登录
|
||||
func (r *Login) LoginWx(c *gin.Context) {
|
||||
loginRequest := requests.LoginRequest{}
|
||||
req := loginRequest.LoginWx
|
||||
if err := c.ShouldBind(&req); err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
// 参数验证
|
||||
if err := global.Validate.Struct(req); err != nil {
|
||||
responses.FailWithMessage(utils.Translate(err), c)
|
||||
return
|
||||
}
|
||||
|
||||
// 开始事务
|
||||
tx := global.Db.Begin()
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
fmt.Println(r)
|
||||
tx.Rollback()
|
||||
}
|
||||
}()
|
||||
|
||||
var userInfo *model.UserInfo
|
||||
var err error
|
||||
|
||||
// 检测用户信息
|
||||
userDao := dao.UserDao{}
|
||||
maps := make(map[string]interface{})
|
||||
maps["mobile"] = req.Mobile
|
||||
user, _ := userDao.GetUser(maps)
|
||||
// 新用户处理方式
|
||||
if user == nil {
|
||||
// 登录ip
|
||||
publicService := service.PublicService{}
|
||||
loginIp := publicService.GetUserIP(c.Request)
|
||||
|
||||
// 处理用户头像
|
||||
userService := service.UserService{}
|
||||
avatarOssPath, err := userService.HandleUserImage(req.HeadImgUrl)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
// 新增用户
|
||||
user = &model.User{
|
||||
UserName: "",
|
||||
AppIden: "",
|
||||
Mobile: req.Mobile,
|
||||
RegisterSource: 2,
|
||||
OpenId: req.OpenId,
|
||||
UnionId: req.UnionId,
|
||||
Age: nil,
|
||||
Sex: nil,
|
||||
Avatar: avatarOssPath,
|
||||
IsMember: 0,
|
||||
MemberExpireDate: nil,
|
||||
LoginIp: loginIp,
|
||||
}
|
||||
loginAt := model.LocalTime(time.Now())
|
||||
user.LoginAt = &loginAt
|
||||
|
||||
user, err = userDao.AddUser(tx, user)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
// 新增用户详情
|
||||
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),
|
||||
}
|
||||
|
||||
// 生成jwt
|
||||
jwt, err := token.NewJWT()
|
||||
if err != nil || jwt == "" {
|
||||
responses.FailWithMessage("登陆失败", c)
|
||||
return
|
||||
}
|
||||
|
||||
// 处理返回值
|
||||
g := dto.LoginWxDto(user)
|
||||
|
||||
// 加载token
|
||||
g.LoadToken(jwt)
|
||||
|
||||
responses.OkWithData(g, c)
|
||||
}
|
||||
|
||||
@@ -85,3 +85,122 @@ func (r *User) PutUser(c *gin.Context) {
|
||||
|
||||
responses.Ok(c)
|
||||
}
|
||||
|
||||
// PutBindUserName 绑定用户数据-昵称
|
||||
func (r *User) PutBindUserName(c *gin.Context) {
|
||||
userRequest := requests.UserRequest{}
|
||||
req := userRequest.PutBindUserName
|
||||
if err := c.ShouldBind(&req); err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
// 参数验证
|
||||
if err := global.Validate.Struct(req); err != nil {
|
||||
responses.FailWithMessage(utils.Translate(err), c)
|
||||
return
|
||||
}
|
||||
|
||||
if req.Nickname == "" {
|
||||
responses.FailWithMessage("参数错误", c)
|
||||
return
|
||||
}
|
||||
|
||||
userId := c.GetInt64("UserId")
|
||||
|
||||
// 获取用户数据
|
||||
userDao := dao.UserDao{}
|
||||
user, err := userDao.GetUserById(userId)
|
||||
if err != nil {
|
||||
responses.FailWithMessage("用户数据错误", c)
|
||||
return
|
||||
}
|
||||
|
||||
if user.UserName != "" {
|
||||
responses.Ok(c)
|
||||
return
|
||||
}
|
||||
|
||||
userData := make(map[string]interface{})
|
||||
userData["user_name"] = req.Nickname
|
||||
|
||||
// 开始事务
|
||||
tx := global.Db.Begin()
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
tx.Rollback()
|
||||
}
|
||||
}()
|
||||
|
||||
err = userDao.EditUserById(tx, user.UserId, userData)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
tx.Commit()
|
||||
responses.Ok(c)
|
||||
}
|
||||
|
||||
// GetUserCheck 检测用户数据绑定状态
|
||||
func (r *User) GetUserCheck(c *gin.Context) {
|
||||
userRequest := requests.UserRequest{}
|
||||
req := userRequest.GetUserCheck
|
||||
if err := c.ShouldBind(&req); err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
// 参数验证
|
||||
if err := global.Validate.Struct(req); err != nil {
|
||||
responses.FailWithMessage(utils.Translate(err), c)
|
||||
return
|
||||
}
|
||||
|
||||
if req.Mobile == "" && req.OpenId == "" {
|
||||
responses.FailWithMessage("缺少参数", c)
|
||||
return
|
||||
}
|
||||
|
||||
g := &dto.UserCheckDto{}
|
||||
|
||||
// 获取用户数据
|
||||
maps := make(map[string]interface{})
|
||||
if req.OpenId != "" {
|
||||
maps["open_id"] = req.OpenId
|
||||
}
|
||||
|
||||
if req.Mobile != "" {
|
||||
maps["mobile"] = req.Mobile
|
||||
}
|
||||
|
||||
userDao := dao.UserDao{}
|
||||
user, err := userDao.GetUser(maps)
|
||||
if err != nil || user == nil {
|
||||
g.WxStatus = 0
|
||||
g.MobileStatus = 0
|
||||
g.NameStatus = 0
|
||||
responses.OkWithData(g, c)
|
||||
return
|
||||
}
|
||||
|
||||
if user.UserStatus == 2 {
|
||||
responses.FailWithMessage("用户已禁用", c)
|
||||
return
|
||||
}
|
||||
|
||||
if user.UserName != "" {
|
||||
g.NameStatus = 1
|
||||
}
|
||||
|
||||
if user.Mobile != "" {
|
||||
g.MobileStatus = 1
|
||||
}
|
||||
|
||||
if user.OpenId != "" {
|
||||
g.WxStatus = 1
|
||||
}
|
||||
|
||||
responses.OkWithData(g, c)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user