2023-06-27 13:38:52 +08:00

149 lines
3.3 KiB
Go

package controller
import (
"github.com/gin-gonic/gin"
"hospital-admin-api/api/requests"
"hospital-admin-api/api/responses"
"hospital-admin-api/api/service"
"hospital-admin-api/global"
"hospital-admin-api/utils"
"strconv"
)
type Menu struct{}
var MenuRequest requests.MenuRequest
// 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) {
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) {
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
}