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)
}