新增返回值

This commit is contained in:
wucongxing 2023-06-28 17:55:40 +08:00
parent 6e6e3803e4
commit b4e18e23e3
9 changed files with 92 additions and 11 deletions

View File

@ -5,6 +5,7 @@ import (
"hospital-admin-api/api/dao" "hospital-admin-api/api/dao"
"hospital-admin-api/api/requests" "hospital-admin-api/api/requests"
"hospital-admin-api/api/responses" "hospital-admin-api/api/responses"
"hospital-admin-api/api/responses/roleResponse"
"hospital-admin-api/api/service" "hospital-admin-api/api/service"
"hospital-admin-api/global" "hospital-admin-api/global"
"hospital-admin-api/utils" "hospital-admin-api/utils"
@ -29,7 +30,7 @@ func (r *Role) GetRoleMenuList(c *gin.Context) {
return return
} }
if len(roleMenuList) == 0 { if len(roleMenuList) == 0 || roleMenuList == nil {
responses.FailWithMessage("请联系管理人员设置菜单", c) responses.FailWithMessage("请联系管理人员设置菜单", c)
return return
} }
@ -67,11 +68,31 @@ func (r *Role) GetRolePage(c *gin.Context) {
return return
} }
// 处理返回值
getRolePageResponses := make([]roleResponse.GetRolePage, len(adminRole))
if len(adminRole) > 0 {
for i, v := range adminRole {
// 将原始结构体转换为新结构体
getRolePageResponse := roleResponse.GetRolePage{
RoleId: strconv.Itoa(int(v.RoleId)),
RoleName: v.RoleName,
RoleStatus: v.RoleStatus,
IsAdmin: v.IsAdmin,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
// 将转换后的结构体添加到新切片中
getRolePageResponses[i] = getRolePageResponse
}
}
result := make(map[string]interface{}) result := make(map[string]interface{})
result["page"] = RoleRequest.GetRolePage.Page result["page"] = RoleRequest.GetRolePage.Page
result["page_size"] = RoleRequest.GetRolePage.PageSize result["page_size"] = RoleRequest.GetRolePage.PageSize
result["total"] = total result["total"] = total
result["data"] = adminRole result["data"] = getRolePageResponses
responses.OkWithData(result, c) responses.OkWithData(result, c)
} }

View File

@ -33,6 +33,8 @@ func (r *User) GetUserPage(c *gin.Context) {
UserRequest.GetUserPage.PageSize = 20 UserRequest.GetUserPage.PageSize = 20
} }
// 获取当前登陆用户数据
AdminUserDao := dao.AdminUserDao{} AdminUserDao := dao.AdminUserDao{}
adminUser, total, err := AdminUserDao.GetAdminUserPageSearch(UserRequest.GetUserPage, UserRequest.GetUserPage.Page, UserRequest.GetUserPage.PageSize) adminUser, total, err := AdminUserDao.GetAdminUserPageSearch(UserRequest.GetUserPage, UserRequest.GetUserPage.Page, UserRequest.GetUserPage.PageSize)
@ -48,3 +50,18 @@ func (r *User) GetUserPage(c *gin.Context) {
result["data"] = adminUser result["data"] = adminUser
responses.OkWithData(result, c) 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
}
}

View File

@ -2,11 +2,11 @@ package model
// AdminRole 后台-角色表 // AdminRole 后台-角色表
type AdminRole struct { type AdminRole struct {
Model
RoleId int64 `gorm:"column:role_id;type:bigint(19);primary_key;comment:主键id" json:"role_id"` RoleId int64 `gorm:"column:role_id;type:bigint(19);primary_key;comment:主键id" json:"role_id"`
RoleName string `gorm:"column:role_name;type:varchar(100);comment:角色名称" json:"role_name"` RoleName string `gorm:"column:role_name;type:varchar(100);comment:角色名称" json:"role_name"`
RoleStatus int `gorm:"column:role_status;type:tinyint(1);default:1;comment:角色状态1:正常 2:禁用)" json:"role_status"` RoleStatus int `gorm:"column:role_status;type:tinyint(1);default:1;comment:角色状态1:正常 2:禁用)" json:"role_status"`
IsAdmin int `gorm:"column:is_admin;type:tinyint(1);default:0;comment:是否管理员0:否 1:是)" json:"is_admin"` IsAdmin int `gorm:"column:is_admin;type:tinyint(1);default:0;comment:是否管理员0:否 1:是)" json:"is_admin"`
Model
} }
func (m *AdminRole) TableName() string { func (m *AdminRole) TableName() string {

View File

@ -16,3 +16,22 @@ type GetUserPage struct {
Page int `json:"page" form:"page" label:"页码"` Page int `json:"page" form:"page" label:"页码"`
PageSize int `json:"page_size" form:"page_size" label:"每页个数"` PageSize int `json:"page_size" form:"page_size" label:"每页个数"`
} }
// AddUser 新增用户
type AddUser struct {
Access string `json:"access" form:"access" label:"账号"`
Password string `json:"password" form:"password" label:"密码"`
Status string `json:"status" form:"status" label:"状态"` // 1:正常 2:审核中 3:审核失败)
//
// Status int `gorm:"column:status;type:tinyint(1);default:2;comment:'状态1:正常 2:审核中 3:审核失败)'" json:"status"`
// IsDeleted int `gorm:"column:is_deleted;type:tinyint(1);default:0;comment:'是否被删除0:否 1:是)'" json:"is_deleted"`
// IsDisabled int `gorm:"column:is_disabled;type:tinyint(1);default:0;comment:'是否被禁用0:否 1:是)'" json:"is_disabled"`
// NickName string `gorm:"column:nick_name;type:varchar(255);comment:'昵称'" json:"nick_name"`
// Phone string `gorm:"column:phone;type:varchar(11);comment:'手机号'" json:"phone"`
// Avatar string `gorm:"column:avatar;type:varchar(255);comment:'头像'" json:"avatar"`
// Sex int `gorm:"column:sex;type:tinyint(1);comment:'性别1:男 2:女)'" json:"sex"`
// Email string `gorm:"column:email;type:varchar(100);comment:'邮箱'" json:"email"`
// RoleID int64 `gorm:"column:role_id;type:bigint(19);comment:'角色id'" json:"role_id"`
// DeptID int64 `gorm:"column:dept_id;type:bigint(19);comment:'部门id'" json:"dept_id"`
// PostID int64 `gorm:"column:post_id;type:bigint(19);comment:'岗位id'" json:"post_id"`
}

View File

@ -1,11 +1,13 @@
package roleResponse package roleResponse
import "hospital-admin-api/api/model"
// GetRoleMenuList 角色菜单列表 // GetRoleMenuList 角色菜单列表
type GetRoleMenuList struct { type GetRoleMenuList struct {
MenuId int64 `json:"menu_id"` // 主键id MenuId string `json:"menu_id"` // 主键id
MenuName string `json:"menu_name"` // 菜单名称 MenuName string `json:"menu_name"` // 菜单名称
MenuTitle string `json:"menu_title"` // 菜单名称 MenuTitle string `json:"menu_title"` // 菜单名称
ParentId int64 `json:"parent_id"` // 父菜单ID0表示一级 ParentId string `json:"parent_id"` // 父菜单ID0表示一级
MenuStatus int `json:"menu_status"` // 菜单状态0:隐藏 1:正常)此优先级最高 MenuStatus int `json:"menu_status"` // 菜单状态0:隐藏 1:正常)此优先级最高
MenuType int `json:"menu_type"` // 菜单类型1:模块 2:菜单 3:按钮) MenuType int `json:"menu_type"` // 菜单类型1:模块 2:菜单 3:按钮)
Permission string `json:"permission"` // 标识 Permission string `json:"permission"` // 标识
@ -24,3 +26,13 @@ type GetRole struct {
RoleStatus int `json:"role_status"` // 角色状态1:正常 2:禁用) RoleStatus int `json:"role_status"` // 角色状态1:正常 2:禁用)
IsAdmin int `json:"is_admin"` // 是否管理员0:否 1:是) IsAdmin int `json:"is_admin"` // 是否管理员0:否 1:是)
} }
// GetRolePage 获取角色列表-分页
type GetRolePage struct {
RoleId string `json:"role_id"` // 角色id
RoleName string `json:"role_name"` // 角色名称
RoleStatus int `json:"role_status"` // 角色状态1:正常 2:禁用)
IsAdmin int `json:"is_admin"` // 是否管理员0:否 1:是)
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
}

View File

@ -120,7 +120,7 @@ func privateRouter(r *gin.Engine, api controller.Api) {
userGroup.GET("", api.User.GetUserPage) userGroup.GET("", api.User.GetUserPage)
// 新增用户 // 新增用户
userGroup.POST("", api.User.GetUserPage) userGroup.POST("", api.User.AddUser)
// 修改用户 // 修改用户
userGroup.PUT("/:menu_id", api.User.GetUserPage) userGroup.PUT("/:menu_id", api.User.GetUserPage)

View File

@ -8,6 +8,7 @@ import (
"hospital-admin-api/api/requests" "hospital-admin-api/api/requests"
"hospital-admin-api/api/responses/roleResponse" "hospital-admin-api/api/responses/roleResponse"
"hospital-admin-api/global" "hospital-admin-api/global"
"strconv"
) )
type RoleService struct{} type RoleService struct{}
@ -36,8 +37,13 @@ func (r *RoleService) GetRoleMenuList(roleId int64) ([]*roleResponse.GetRoleMenu
menuIDs = append(menuIDs, roleMenu.MenuID) menuIDs = append(menuIDs, roleMenu.MenuID)
} }
// 构建菜单树 if len(menuIDs) > 0 {
menuTree = buildMenuTree(menuIDs, adminMenu) // 构建菜单树
menuTree = buildMenuTree(menuIDs, adminMenu)
if menuTree == nil {
return nil, nil
}
}
} }
return menuTree, nil return menuTree, nil
@ -53,10 +59,10 @@ func buildMenuTree(menuIds []int64, menuData []*model.AdminMenu) []*roleResponse
for _, v := range menuIds { for _, v := range menuIds {
if v == menu.MenuId { if v == menu.MenuId {
node := &roleResponse.GetRoleMenuList{ node := &roleResponse.GetRoleMenuList{
MenuId: menu.MenuId, MenuId: strconv.FormatInt(menu.MenuId, 10),
MenuName: menu.MenuName, MenuName: menu.MenuName,
MenuTitle: menu.MenuTitle, MenuTitle: menu.MenuTitle,
ParentId: menu.ParentId, ParentId: strconv.FormatInt(menu.ParentId, 10),
MenuStatus: menu.MenuStatus, MenuStatus: menu.MenuStatus,
MenuType: menu.MenuType, MenuType: menu.MenuType,
Permission: menu.Permission, Permission: menu.Permission,
@ -75,8 +81,11 @@ func buildMenuTree(menuIds []int64, menuData []*model.AdminMenu) []*roleResponse
// 构建菜单树 // 构建菜单树
for _, menu := range menuData { for _, menu := range menuData {
if menu.ParentId == 0 { if menu.ParentId == 0 {
if menuMap[menu.MenuId] == nil {
continue
}
rootNodes = append(rootNodes, menuMap[menu.MenuId]) rootNodes = append(rootNodes, menuMap[menu.MenuId])
} else if parent, ok := menuMap[menu.ParentId]; ok { } else if parent, ok := menuMap[menu.ParentId]; ok && parent != nil {
parent.Children = append(parent.Children, menuMap[menu.MenuId]) parent.Children = append(parent.Children, menuMap[menu.MenuId])
} }
} }

1
go.mod
View File

@ -37,6 +37,7 @@ require (
github.com/go-sql-driver/mysql v1.7.1 // indirect github.com/go-sql-driver/mysql v1.7.1 // indirect
github.com/goccy/go-json v0.10.2 // indirect github.com/goccy/go-json v0.10.2 // indirect
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect github.com/jinzhu/now v1.1.5 // indirect

2
go.sum
View File

@ -170,6 +170,8 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=