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