2023-06-29 11:08:13 +08:00

126 lines
3.2 KiB
Go

package controller
import (
"github.com/gin-gonic/gin"
"hospital-admin-api/api/dao"
"hospital-admin-api/api/requests"
"hospital-admin-api/api/responses"
"hospital-admin-api/api/responses/userResponse"
"hospital-admin-api/global"
"hospital-admin-api/utils"
"strconv"
)
type User struct{}
// GetUserPage 获取用户列表-分页
func (r *User) GetUserPage(c *gin.Context) {
UserRequest := requests.UserRequest{}
if err := c.ShouldBind(&UserRequest.GetUserPage); err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 参数验证
if err := global.Validate.Struct(UserRequest.GetUserPage); err != nil {
responses.FailWithMessage(utils.Translate(err), c)
return
}
if UserRequest.GetUserPage.Page == 0 {
UserRequest.GetUserPage.Page = 1
}
if UserRequest.GetUserPage.PageSize == 0 {
UserRequest.GetUserPage.PageSize = 20
}
// 获取当前登陆用户数据
AdminUserDao := dao.AdminUserDao{}
adminUser, total, err := AdminUserDao.GetAdminUserPageSearch(UserRequest.GetUserPage, UserRequest.GetUserPage.Page, UserRequest.GetUserPage.PageSize)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 处理返回值
getUserPageResponses := make([]userResponse.GetUserPage, len(adminUser))
if len(adminUser) > 0 {
for i, v := range adminUser {
var Role *userResponse.GetUserPageRole
if v.Role != nil {
Role = &userResponse.GetUserPageRole{
RoleId: strconv.FormatInt(v.Role.RoleId, 10),
RoleName: v.Role.RoleName,
}
}
var Dept *userResponse.GetUserPageDept
if v.Dept != nil {
Dept = &userResponse.GetUserPageDept{
DeptId: strconv.FormatInt(v.Dept.DeptId, 10),
DeptName: v.Dept.DeptName,
}
}
var Post *userResponse.GetUserPagePost
if v.Post != nil {
Post = &userResponse.GetUserPagePost{
PostId: strconv.FormatInt(v.Post.PostId, 10),
PostName: v.Post.PostName,
}
}
// 将原始结构体转换为新结构体
getUserPageResponse := userResponse.GetUserPage{
UserID: strconv.Itoa(int(v.UserID)),
Access: v.Access,
Status: v.Status,
IsDeleted: v.IsDeleted,
IsDisabled: v.IsDisabled,
NickName: v.NickName,
Phone: v.Phone,
Avatar: v.Avatar,
Sex: v.Sex,
Email: v.Email,
RoleID: strconv.Itoa(int(v.RoleID)),
DeptID: strconv.Itoa(int(v.DeptID)),
PostID: strconv.Itoa(int(v.PostID)),
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
Role: Role,
Dept: Dept,
Post: Post,
}
// 将转换后的结构体添加到新切片中
getUserPageResponses[i] = getUserPageResponse
}
}
result := make(map[string]interface{})
result["page"] = UserRequest.GetUserPage.Page
result["page_size"] = UserRequest.GetUserPage.PageSize
result["total"] = total
result["data"] = getUserPageResponses
responses.OkWithData(result, c)
}
// AddUser 新增用户
func (r *User) AddUser(c *gin.Context) {
UserRequest := requests.UserRequest{}
if err := c.ShouldBind(&UserRequest.GetUserPage); err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 参数验证
if err := global.Validate.Struct(UserRequest.GetUserPage); err != nil {
responses.FailWithMessage(utils.Translate(err), c)
return
}
}