package admin import ( "strconv" "time" "ulink-admin/frame" "ulink-admin/modules/system/models/model" "ulink-admin/modules/system/models/req" "ulink-admin/modules/system/service" "ulink-admin/pkg/jwt/admin" "ulink-admin/pkg/library/tree/tree_menu" ) type MenuApi struct { MenuService *service.MenuService `inject:""` } // List 查询菜单数据 // List 查询刚问分页数据 // @Summary 分页查询菜单数据接口 // @Description 分页查询菜单数据接口 // @Tags 菜单相关接口 // @Accept application/json // @Produce application/json // @Param Authorization header string false "Bearer 令牌" // @Param object query req.MenuQuery false "查询参数" // @Security ApiKeyAuth // @Success 200 {object} resp.Response{data=page.Page{list=model.SysMenu},msg=string} "分页获取菜单列表,返回包括列表,总数,页码,每页数量" // @Router /menu/List [get] func (a MenuApi) List(c *frame.Context) { //获取当前登录用户 info := admin.GetUserInfo(c) //获取参数 query := &req.MenuQuery{} c.ValidteError(c.ShouldBind(query), query) c.Ok(a.MenuService.GetMenuList(query, info)) } // GetInfo 根据id查询菜单详情 // @Summary 菜单详情查询接口 // @Description 菜单详情查询接口 // @Tags 菜单相关接口 // @Accept application/json // @Produce application/json // @Param Authorization header string false "Bearer 令牌" // @Param id path int true "id" id // @Security ApiKeyAuth // @Success 200 {object} resp.Response{data=model.SysMenu,msg=string} "返回菜单详情查询" // @Router /menu [get] func (a MenuApi) GetInfo(c *frame.Context) { param := c.Param("id") id, err := strconv.ParseInt(param, 10, 64) if err != nil { c.Error("参数绑定错误") return } c.Ok(a.MenuService.GetMenuByMenuId(id)) } // RoleMenuTreeSelect 加载对应角色菜单列表树 // @Summary 加载对应角色菜单列表树接口 // @Description 加载对应角色菜单列表树接口 // @Tags 菜单相关接口 // @Accept application/json // @Produce application/json // @Param Authorization header string false "Bearer 令牌" // @Param id path int true "id" id // @Security ApiKeyAuth // @Success 200 {object} resp.Response{data=map[string]interface{},msg=string} "返回菜单查询" // @Router /menu/roleMenuTreeselect [get] func (a MenuApi) RoleMenuTreeSelect(c *frame.Context) { m := make(map[string]interface{}) param := c.Param("id") id, _ := strconv.ParseInt(param, 10, 64) //获取当前登录用户 info := admin.GetUserInfo(c) menuList := a.MenuService.GetMenusTreeByUserId(info) var list tree_menu.SystemMenus = *menuList tree := list.GetTree() ids := a.MenuService.SelectMenuListByRoleId(id) m["checkedKeys"] = ids m["menus"] = tree c.Ok(m) } // TreeSelect 获取菜单下拉树列表 // @Summary 加载对应角色菜单列表树接口 // @Description 加载对应角色菜单列表树接口 // @Tags 菜单相关接口 // @Accept application/json // @Produce application/json // @Param Authorization header string false "Bearer 令牌" // @Param id path int true "id" id // @Security ApiKeyAuth // @Success 200 {object} resp.Response{data=map[INode]interface{},msg=string} "返回菜单查询" // @Router /menu/teeselect [get] func (a MenuApi) TreeSelect(c *frame.Context) { t := c.Query("type") switch t { case "m": query := &req.MenuQuery{} menus := a.MenuService.GetMenus(query) var list tree_menu.SystemMenus = menus c.Ok(list.GetTree()) return } c.Ok(frame.Permissions["admin"]) } // Add 添加菜单数据 // @Summary 新增菜单接口 // @Description 新增菜单接口 // @Tags 菜单相关接口 // @Accept application/json // @Produce application/json // @Param Authorization header string false "Bearer 令牌" // @Param data body model.SysMenu true "菜单实体对象" // @Success 200 {object} resp.Response{msg=string} "操作状态" // @Router /menu/add [post] func (a MenuApi) Add(c *frame.Context) { menu := &model.SysMenu{} c.ValidteError(c.ShouldBind(menu), menu) a.MenuService.InsertMenu(menu) } // Edit 修改菜单数据 // @Summary 修改菜单接口 // @Description 新增菜单接口 // @Tags 菜单相关接口 // @Accept application/json // @Produce application/json // @Param Authorization header string false "Bearer 令牌" // @Param data body model.SysMenu true "菜单实体对象" // @Success 200 {object} resp.Response{msg=string} "操作状态" // @Router /menu/edit [put] func (a MenuApi) Edit(c *frame.Context) { menu := &model.SysMenu{} c.ValidteError(c.ShouldBind(menu), menu) menu.UpdateBy = admin.GetUserInfo(c).UserName menu.UpdateTime = time.Now() a.MenuService.Update(menu) } // Delete 删除菜单 // @Summary 删除菜单接口 // @Description 删除菜单接口 // @Tags 菜单相关接口 // @Accept application/json // @Produce application/json // @Param Authorization header string false "Bearer 令牌" // @Param id path int true "id" id // @Success 200 {object} resp.Response{msg=string} "操作状态" // @Router /menu/remove [delete] func (a MenuApi) Delete(c *frame.Context) { param := c.Param("id") id, err := strconv.ParseInt(param, 10, 64) if err != nil { frame.Throw(frame.BUSINESS_CODE, "参数绑定错误") } a.MenuService.Delete(id) }