mirror of
https://github.com/go-admin-team/go-admin.git
synced 2026-09-21 02:04:09 +00:00
362 lines
9.0 KiB
Go
362 lines
9.0 KiB
Go
package sys_menu
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
|
|
|
|
"go-admin/app/admin/models/system"
|
|
"go-admin/app/admin/service"
|
|
"go-admin/app/admin/service/dto"
|
|
"go-admin/common/apis"
|
|
)
|
|
|
|
type SysMenu struct {
|
|
apis.Api
|
|
}
|
|
|
|
// @Summary Menu列表数据
|
|
// @Description 获取JSON
|
|
// @Tags 菜单
|
|
// @Param menuName query string false "menuName"
|
|
// @Success 200 {string} string "{"code": 200, "data": [...]}"
|
|
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
|
|
// @Router /api/v1/menulist [get]
|
|
// @Security Bearer
|
|
func (e *SysMenu) GetSysMenuList(c *gin.Context) {
|
|
log := e.GetLogger(c)
|
|
d := new(dto.SysMenuSearch)
|
|
db, err := e.GetOrm(c)
|
|
if err != nil {
|
|
log.Error(err)
|
|
return
|
|
}
|
|
|
|
//查询列表
|
|
err = d.Bind(c)
|
|
if err != nil {
|
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
|
return
|
|
}
|
|
|
|
var list *[]system.SysMenu
|
|
serviceSysMenu := service.SysMenu{}
|
|
serviceSysMenu.Log = log
|
|
serviceSysMenu.Orm = db
|
|
list, err = serviceSysMenu.GetSysMenuPage(d)
|
|
if err != nil {
|
|
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
|
|
return
|
|
}
|
|
|
|
e.OK(c, list, "查询成功")
|
|
}
|
|
|
|
// @Summary Menu详情数据
|
|
// @Description 获取JSON
|
|
// @Tags 菜单
|
|
// @Param menuName query string false "menuName"
|
|
// @Success 200 {string} string "{"code": 200, "data": [...]}"
|
|
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
|
|
// @Router /api/v1/menu/{id} [get]
|
|
// @Security Bearer
|
|
func (e *SysMenu) GetSysMenu(c *gin.Context) {
|
|
control := new(dto.SysMenuById)
|
|
|
|
log := e.GetLogger(c)
|
|
|
|
db, err := e.GetOrm(c)
|
|
if err != nil {
|
|
log.Error(err)
|
|
return
|
|
}
|
|
|
|
//查看详情
|
|
err = control.Bind(c)
|
|
if err != nil {
|
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
|
return
|
|
}
|
|
var object system.SysMenu
|
|
|
|
serviceSysMenu := service.SysMenu{}
|
|
serviceSysMenu.Log = log
|
|
serviceSysMenu.Orm = db
|
|
err = serviceSysMenu.GetSysMenu(control, &object)
|
|
if err != nil {
|
|
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
|
|
return
|
|
}
|
|
|
|
e.OK(c, object, "查看成功")
|
|
}
|
|
|
|
// @Summary 创建菜单
|
|
// @Description 获取JSON
|
|
// @Tags 菜单
|
|
// @Accept application/x-www-form-urlencoded
|
|
// @Product application/x-www-form-urlencoded
|
|
// @Param menuName formData string true "menuName"
|
|
// @Param Path formData string false "Path"
|
|
// @Param Action formData string true "Action"
|
|
// @Param Permission formData string true "Permission"
|
|
// @Param ParentId formData string true "ParentId"
|
|
// @Param IsDel formData string true "IsDel"
|
|
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
|
|
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
|
|
// @Router /api/v1/menu [post]
|
|
// @Security Bearer
|
|
func (e *SysMenu) InsertSysMenu(c *gin.Context) {
|
|
control := new(dto.SysMenuControl)
|
|
|
|
log := e.GetLogger(c)
|
|
|
|
db, err := e.GetOrm(c)
|
|
if err != nil {
|
|
log.Error(err)
|
|
return
|
|
}
|
|
|
|
//新增操作
|
|
err = control.Bind(c)
|
|
if err != nil {
|
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
|
return
|
|
}
|
|
object, err := control.Generate()
|
|
if err != nil {
|
|
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
|
|
return
|
|
}
|
|
// 设置创建人
|
|
object.SetCreateBy(user.GetUserId(c))
|
|
|
|
serviceSysMenu := service.SysMenu{}
|
|
serviceSysMenu.Orm = db
|
|
serviceSysMenu.Log = log
|
|
err = serviceSysMenu.InsertSysMenu(object)
|
|
if err != nil {
|
|
log.Error(err)
|
|
e.Error(c, http.StatusInternalServerError, err, "创建失败")
|
|
return
|
|
}
|
|
|
|
e.OK(c, object.GetId(), "创建成功")
|
|
}
|
|
|
|
// @Summary 修改菜单
|
|
// @Description 获取JSON
|
|
// @Tags 菜单
|
|
// @Accept application/x-www-form-urlencoded
|
|
// @Product application/x-www-form-urlencoded
|
|
// @Param id path int true "id"
|
|
// @Param data body dto.SysMenuControl true "body"
|
|
// @Success 200 {string} string "{"code": 200, "message": "修改成功"}"
|
|
// @Success 200 {string} string "{"code": -1, "message": "修改失败"}"
|
|
// @Router /api/v1/menu/{id} [put]
|
|
// @Security Bearer
|
|
func (e *SysMenu) UpdateSysMenu(c *gin.Context) {
|
|
control := new(dto.SysMenuControl)
|
|
|
|
log := e.GetLogger(c)
|
|
|
|
db, err := e.GetOrm(c)
|
|
if err != nil {
|
|
log.Error(err)
|
|
return
|
|
}
|
|
|
|
//更新操作
|
|
err = control.Bind(c)
|
|
if err != nil {
|
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
|
return
|
|
}
|
|
object, err := control.Generate()
|
|
if err != nil {
|
|
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
|
|
return
|
|
}
|
|
object.SetUpdateBy(user.GetUserId(c))
|
|
|
|
serviceSysMenu := service.SysMenu{}
|
|
serviceSysMenu.Orm = db
|
|
serviceSysMenu.Log = log
|
|
err = serviceSysMenu.UpdateSysMenu(object)
|
|
if err != nil {
|
|
log.Error(err)
|
|
return
|
|
}
|
|
e.OK(c, object.GetId(), "更新成功")
|
|
}
|
|
|
|
// @Summary 删除菜单
|
|
// @Description 删除数据
|
|
// @Tags 菜单
|
|
// @Param data body dto.SysMenuById true "body"
|
|
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
|
|
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
|
|
// @Router /api/v1/menu/ [delete]
|
|
func (e *SysMenu) DeleteSysMenu(c *gin.Context) {
|
|
control := new(dto.SysMenuById)
|
|
|
|
log := e.GetLogger(c)
|
|
|
|
db, err := e.GetOrm(c)
|
|
if err != nil {
|
|
log.Error(err)
|
|
return
|
|
}
|
|
|
|
//删除操作
|
|
err = control.Bind(c)
|
|
if err != nil {
|
|
log.Errorf("Bind error: %s", err)
|
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
|
return
|
|
}
|
|
|
|
serviceSysMenu := service.SysMenu{}
|
|
serviceSysMenu.Orm = db
|
|
serviceSysMenu.Log = log
|
|
err = serviceSysMenu.RemoveSysMenu(control)
|
|
if err != nil {
|
|
log.Errorf("RemoveSysMenu error, %s", err)
|
|
e.Error(c, http.StatusInternalServerError, err, "删除失败")
|
|
return
|
|
}
|
|
e.OK(c, control.GetId(), "删除成功")
|
|
}
|
|
|
|
// @Summary 根据角色名称获取菜单列表数据(左菜单使用)
|
|
// @Description 获取JSON
|
|
// @Tags 菜单
|
|
// @Param id path int true "id"
|
|
// @Success 200 {string} string "{"code": 200, "data": [...]}"
|
|
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
|
|
// @Router /api/v1/menurole [get]
|
|
// @Security Bearer
|
|
func (e *SysMenu) GetMenuRole(c *gin.Context) {
|
|
log := e.GetLogger(c)
|
|
db, err := e.GetOrm(c)
|
|
if err != nil {
|
|
log.Error(err)
|
|
return
|
|
}
|
|
|
|
serviceSysMenu := service.SysMenu{}
|
|
serviceSysMenu.Log = log
|
|
serviceSysMenu.Orm = db
|
|
result, err := serviceSysMenu.SetMenuRole(user.GetRoleName(c))
|
|
|
|
if err != nil {
|
|
e.Error(c, http.StatusInternalServerError, err, "查询失败")
|
|
return
|
|
}
|
|
|
|
e.OK(c, result, "")
|
|
}
|
|
|
|
// @Summary 获取角色对应的菜单id数组
|
|
// @Description 获取JSON
|
|
// @Tags 菜单
|
|
// @Param id path int true "id"
|
|
// @Success 200 {string} string "{"code": 200, "data": [...]}"
|
|
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
|
|
// @Router /api/v1/menuids/{id} [get]
|
|
// @Security Bearer
|
|
func (e *SysMenu) GetMenuIDS(c *gin.Context) {
|
|
log := e.GetLogger(c)
|
|
db, err := e.GetOrm(c)
|
|
if err != nil {
|
|
log.Error(err)
|
|
return
|
|
}
|
|
var data system.RoleMenu
|
|
data.RoleName = c.GetString("role")
|
|
data.UpdateBy = user.GetUserId(c)
|
|
result, err := data.GetIDS(db)
|
|
if err != nil {
|
|
log.Errorf("GetIDS error, %s", err.Error())
|
|
e.Error(c, http.StatusInternalServerError, err, "获取失败")
|
|
return
|
|
}
|
|
e.OK(c, result, "")
|
|
}
|
|
|
|
//// GetMenuTreeRoleselect 角色修改中的菜单列表
|
|
//func (e *SysMenu) GetMenuTreeRoleselect(c *gin.Context) {
|
|
// var Menu models.Menu
|
|
// var SysRole models.SysRole
|
|
//
|
|
// id, err := tools.StringToInt(c.Param("roleId"))
|
|
// SysRole.RoleId = id
|
|
// //var r *models.SysRole
|
|
// r, err := SysRole.Get()
|
|
//
|
|
// var result *[]models.MenuLable
|
|
// menuIds := make([]int, 0)
|
|
// if r.RoleKey != "admin" {
|
|
// result, err = Menu.SetMenuLabel()
|
|
// tools.HasError(err, "抱歉未找到相关信息", -1)
|
|
// if id != 0 {
|
|
// menuIds, err = SysRole.GetRoleMeunId()
|
|
// tools.HasError(err, "抱歉未找到相关信息", -1)
|
|
// }
|
|
// }
|
|
// app.Custum(c, gin.H{
|
|
// "code": 200,
|
|
// "menus": result,
|
|
// "checkedKeys": menuIds,
|
|
// })
|
|
//}
|
|
|
|
// @Summary 获取菜单树
|
|
// @Description 获取JSON
|
|
// @Tags 菜单
|
|
// @Accept application/x-www-form-urlencoded
|
|
// @Product application/x-www-form-urlencoded
|
|
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
|
|
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
|
|
// @Router /api/v1/menuTreeselect [get]
|
|
// @Security Bearer
|
|
func (e *SysMenu) GetMenuTreeSelect(c *gin.Context) {
|
|
log := e.GetLogger(c)
|
|
db, err := e.GetOrm(c)
|
|
if err != nil {
|
|
log.Error(err)
|
|
return
|
|
}
|
|
|
|
d := new(dto.SelectRole)
|
|
|
|
err = c.BindUri(d)
|
|
if err != nil {
|
|
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
|
return
|
|
}
|
|
|
|
serviceSysMenu := service.SysMenu{}
|
|
serviceSysMenu.Log = log
|
|
serviceSysMenu.Orm = db
|
|
result, err := serviceSysMenu.SetSysMenuLabel()
|
|
if err != nil {
|
|
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
|
|
return
|
|
}
|
|
s := service.SysRole{}
|
|
s.Log = log
|
|
s.Orm = db
|
|
menuIds, err := s.GetRoleMenuId(db, d.RoleId)
|
|
if err != nil {
|
|
log.Errorf("GetIDS error, %s", err.Error())
|
|
e.Error(c, http.StatusInternalServerError, err, "")
|
|
return
|
|
}
|
|
e.OK(c, gin.H{
|
|
"menus": result,
|
|
"checkedKeys": menuIds,
|
|
}, "获取成功")
|
|
}
|