173 lines
3.7 KiB
Go
173 lines
3.7 KiB
Go
package controller
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"hepa-calc-api/api/dao"
|
|
"hepa-calc-api/api/dto"
|
|
"hepa-calc-api/api/requests"
|
|
"hepa-calc-api/api/responses"
|
|
"hepa-calc-api/api/service"
|
|
"hepa-calc-api/extend/app"
|
|
"hepa-calc-api/global"
|
|
"hepa-calc-api/utils"
|
|
)
|
|
|
|
type User struct{}
|
|
|
|
// GetUser 获取用户数据-基本信息
|
|
func (r *User) GetUser(c *gin.Context) {
|
|
userId := c.GetInt64("UserId")
|
|
|
|
// 获取用户数据
|
|
userDao := dao.UserDao{}
|
|
user, err := userDao.GetUserById(userId)
|
|
if err != nil || user == nil {
|
|
responses.FailWithMessage("用户数据错误", c)
|
|
return
|
|
}
|
|
|
|
if user.UserStatus == 2 {
|
|
responses.FailWithMessage("用户已禁用", c)
|
|
return
|
|
}
|
|
|
|
// 获取用户详情
|
|
userInfoDao := dao.UserInfoDao{}
|
|
userInfo, err := userInfoDao.GetUserInfoByUserId(userId)
|
|
if err != nil || user == nil {
|
|
responses.FailWithMessage("用户数据错误", c)
|
|
return
|
|
}
|
|
|
|
// 检测用户信息是否补全
|
|
userService := service.UserService{}
|
|
IsCompleteInfo := userService.CheckUserInfo(userInfo)
|
|
|
|
g := dto.GetUserDto(user)
|
|
|
|
// 加载数据-生日
|
|
g.LoadBirthday(user.Birthday)
|
|
|
|
// 加载用户信息是否补全
|
|
g.IsCompleteInfo = IsCompleteInfo
|
|
|
|
responses.OkWithData(g, c)
|
|
}
|
|
|
|
// GetUserInfo 获取用户数据-详情信息
|
|
func (r *User) GetUserInfo(c *gin.Context) {
|
|
userId := c.GetInt64("UserId")
|
|
|
|
// 获取用户数据
|
|
userInfoDao := dao.UserInfoDao{}
|
|
userInfo, err := userInfoDao.GetUserInfoByUserId(userId)
|
|
if err != nil || userInfo == nil {
|
|
responses.FailWithMessage("用户数据错误", c)
|
|
return
|
|
}
|
|
|
|
g := dto.GetUserInfoDto(userInfo)
|
|
|
|
// 加载数据-民族
|
|
g.LoadNationId(userInfo.NationId)
|
|
|
|
// 加载数据-预产期
|
|
g.LoadExpectedDate(userInfo.ExpectedDate)
|
|
|
|
// 处理身高
|
|
h, err := utils.StrToFloat64(userInfo.Height)
|
|
g.Height = h
|
|
|
|
// 处理体重
|
|
w, err := utils.StrToFloat64(userInfo.Weight)
|
|
g.Weight = w
|
|
|
|
responses.OkWithData(g, c)
|
|
}
|
|
|
|
// PutUser 修改用户数据-基本信息
|
|
func (r *User) PutUser(c *gin.Context) {
|
|
userRequest := requests.UserRequest{}
|
|
req := userRequest.PutUser
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
// 参数验证
|
|
if err := global.Validate.Struct(req); err != nil {
|
|
responses.FailWithMessage(utils.Translate(err), c)
|
|
return
|
|
}
|
|
|
|
userId := c.GetInt64("UserId")
|
|
|
|
// 业务处理
|
|
userService := service.UserService{}
|
|
res, err := userService.PutUser(userId, req)
|
|
if err != nil || res != true {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
userId := c.GetInt64("UserId")
|
|
|
|
// 获取用户数据
|
|
userDao := dao.UserDao{}
|
|
user, err := userDao.GetUserById(userId)
|
|
if err != nil {
|
|
responses.FailWithMessage("用户数据错误", c)
|
|
return
|
|
}
|
|
|
|
if user.Mobile == "" {
|
|
responses.FailWithMessage("用户数据错误", c)
|
|
return
|
|
}
|
|
|
|
if req.Nickname == user.UserName {
|
|
responses.Ok(c)
|
|
return
|
|
}
|
|
|
|
// 获取app用户数据
|
|
appUserInfo, err := app.GetInfoByMobile(user.Mobile)
|
|
if err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
userData := make(map[string]interface{})
|
|
|
|
// 姓名
|
|
if appUserInfo.Data.Name != "" {
|
|
if user.UserName != "" {
|
|
if appUserInfo.Data.Name != user.UserName {
|
|
userData["user_name"] = appUserInfo.Data.Name
|
|
}
|
|
} else {
|
|
userData["user_name"] = appUserInfo.Data.Name
|
|
}
|
|
}
|
|
|
|
responses.Ok(c)
|
|
}
|