150 lines
3.0 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/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
}
g := dto.GetUserDto(user)
// 加载数据-生日
g.LoadBirthday(user.Birthday)
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.LoadExpectedDate(userInfo.ExpectedDate)
responses.OkWithData(g, c)
}
// PutUser 修改用户数据-基本信息
func (r *User) PutUser(c *gin.Context) {
userRequest := requests.UserRequest{}
req := userRequest.PutUser
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")
// 业务处理
userService := service.UserService{}
res, err := userService.PutUser(userId, req)
if err != nil || res != true {
responses.FailWithMessage(err.Error(), c)
return
}
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)
}