230 lines
5.2 KiB
Go
230 lines
5.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/menuResponse"
|
|
"hospital-admin-api/api/service"
|
|
"hospital-admin-api/global"
|
|
"hospital-admin-api/utils"
|
|
"strconv"
|
|
)
|
|
|
|
type Menu struct{}
|
|
|
|
// GetMenuList 获取全部菜单列表
|
|
func (r *Menu) GetMenuList(c *gin.Context) {
|
|
MenuService := service.MenuService{}
|
|
MenuList, err := MenuService.GetMenuList()
|
|
if err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
if MenuList == nil {
|
|
responses.FailWithMessage("请联系管理人员设置菜单", c)
|
|
return
|
|
}
|
|
|
|
responses.OkWithData(MenuList, c)
|
|
return
|
|
}
|
|
|
|
// AddMenu 新增菜单
|
|
func (r *Menu) AddMenu(c *gin.Context) {
|
|
MenuRequest := requests.MenuRequest{}
|
|
if err := c.ShouldBindJSON(&MenuRequest.AddMenu); err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
// 参数验证
|
|
if err := global.Validate.Struct(MenuRequest.AddMenu); err != nil {
|
|
responses.FailWithMessage(utils.Translate(err), c)
|
|
return
|
|
}
|
|
|
|
// 处理参数
|
|
if MenuRequest.AddMenu.MenuType == 1 || MenuRequest.AddMenu.MenuType == 2 {
|
|
// 模块-菜单
|
|
if MenuRequest.AddMenu.Path == "" {
|
|
responses.FailWithMessage("请填写页面地址", c)
|
|
return
|
|
}
|
|
|
|
if MenuRequest.AddMenu.Component == "" {
|
|
responses.FailWithMessage("请填写组件名称", c)
|
|
return
|
|
}
|
|
}
|
|
|
|
// 非模块无父级
|
|
if MenuRequest.AddMenu.ParentId == "0" && MenuRequest.AddMenu.MenuType != 1 {
|
|
responses.FailWithMessage("请选择父节点", c)
|
|
return
|
|
}
|
|
|
|
// 模块存在父级
|
|
if MenuRequest.AddMenu.ParentId != "0" && MenuRequest.AddMenu.MenuType == 1 {
|
|
responses.FailWithMessage("顶级菜单,无法添加上级菜单", c)
|
|
return
|
|
}
|
|
|
|
// 业务处理
|
|
MenuService := service.MenuService{}
|
|
_, err := MenuService.AddMenu(MenuRequest.AddMenu)
|
|
if err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
responses.Ok(c)
|
|
return
|
|
}
|
|
|
|
// PutMenu 修改菜单
|
|
func (r *Menu) PutMenu(c *gin.Context) {
|
|
MenuRequest := requests.MenuRequest{}
|
|
if err := c.ShouldBindJSON(&MenuRequest.PutMenu); err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
// 参数验证
|
|
if err := global.Validate.Struct(MenuRequest.PutMenu); err != nil {
|
|
responses.FailWithMessage(utils.Translate(err), c)
|
|
return
|
|
}
|
|
|
|
id := c.Param("menu_id")
|
|
if id == "" {
|
|
responses.FailWithMessage("缺少参数", c)
|
|
return
|
|
}
|
|
|
|
// 将 id 转换为 int64 类型
|
|
menuId, err := strconv.ParseInt(id, 10, 64)
|
|
if err != nil {
|
|
responses.Fail(c)
|
|
return
|
|
}
|
|
|
|
// 处理参数
|
|
if MenuRequest.PutMenu.MenuType == 1 || MenuRequest.PutMenu.MenuType == 2 {
|
|
// 模块-菜单
|
|
if MenuRequest.PutMenu.Path == "" {
|
|
responses.FailWithMessage("请填写页面地址", c)
|
|
return
|
|
}
|
|
|
|
if MenuRequest.PutMenu.Component == "" {
|
|
responses.FailWithMessage("请填写组件名称", c)
|
|
return
|
|
}
|
|
}
|
|
|
|
// 非模块无父级
|
|
if MenuRequest.PutMenu.ParentId == "0" && MenuRequest.PutMenu.MenuType != 1 {
|
|
responses.FailWithMessage("请选择父节点", c)
|
|
return
|
|
}
|
|
|
|
// 模块存在父级
|
|
if MenuRequest.PutMenu.ParentId != "0" && MenuRequest.PutMenu.MenuType == 1 {
|
|
responses.FailWithMessage("顶级菜单,无法添加上级菜单", c)
|
|
return
|
|
}
|
|
|
|
// 业务处理
|
|
MenuService := service.MenuService{}
|
|
_, err = MenuService.PutMenu(menuId, MenuRequest.PutMenu)
|
|
if err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
responses.Ok(c)
|
|
return
|
|
}
|
|
|
|
// DeleteMenu 删除菜单-批量
|
|
func (r *Menu) DeleteMenu(c *gin.Context) {
|
|
MenuRequest := requests.MenuRequest{}
|
|
if err := c.ShouldBindJSON(&MenuRequest.DeleteMenu); err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
// 参数验证
|
|
if err := global.Validate.Struct(MenuRequest.DeleteMenu); err != nil {
|
|
responses.FailWithMessage(utils.Translate(err), c)
|
|
return
|
|
}
|
|
|
|
// 业务处理
|
|
MenuService := service.MenuService{}
|
|
_, err := MenuService.DeleteMenu(c, MenuRequest.DeleteMenu)
|
|
if err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
responses.Ok(c)
|
|
}
|
|
|
|
// GetMenu 菜单详情
|
|
func (r *Menu) GetMenu(c *gin.Context) {
|
|
id := c.Param("menu_id")
|
|
if id == "" {
|
|
responses.FailWithMessage("缺少参数", c)
|
|
return
|
|
}
|
|
|
|
// 将 id 转换为 int64 类型
|
|
menuId, err := strconv.ParseInt(id, 10, 64)
|
|
if err != nil {
|
|
responses.Fail(c)
|
|
return
|
|
}
|
|
|
|
AdminMenuDao := dao.AdminMenuDao{}
|
|
|
|
adminMenu, _ := AdminMenuDao.GetAdminMenuById(menuId)
|
|
if adminMenu == nil {
|
|
responses.Fail(c)
|
|
return
|
|
}
|
|
|
|
// 转换int64为string
|
|
MenuId := strconv.FormatInt(adminMenu.MenuId, 10)
|
|
if err != nil {
|
|
responses.Fail(c)
|
|
return
|
|
}
|
|
|
|
ParentId := strconv.FormatInt(adminMenu.ParentId, 10)
|
|
if err != nil {
|
|
responses.Fail(c)
|
|
return
|
|
}
|
|
|
|
GetMenuResponse := &menuResponse.GetMenu{
|
|
MenuId: MenuId,
|
|
MenuName: adminMenu.MenuName,
|
|
MenuTitle: adminMenu.MenuTitle,
|
|
ParentId: ParentId,
|
|
MenuStatus: adminMenu.MenuStatus,
|
|
MenuType: adminMenu.MenuType,
|
|
Permission: adminMenu.Permission,
|
|
OrderNum: adminMenu.OrderNum,
|
|
Icon: adminMenu.Icon,
|
|
Path: adminMenu.Path,
|
|
Component: adminMenu.Component,
|
|
CreatedAt: adminMenu.CreatedAt,
|
|
UpdatedAt: adminMenu.UpdatedAt,
|
|
}
|
|
|
|
responses.OkWithData(GetMenuResponse, c)
|
|
}
|