package com.aurora.controller; import com.aurora.annotation.OptLog; import com.aurora.model.dto.LabelOptionDTO; import com.aurora.model.dto.MenuDTO; import com.aurora.model.dto.UserMenuDTO; import com.aurora.model.vo.ResultVO; import com.aurora.service.MenuService; import com.aurora.model.vo.ConditionVO; import com.aurora.model.vo.IsHiddenVO; import com.aurora.model.vo.MenuVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; import static com.aurora.constant.OptTypeConstant.*; @Api(tags = "菜单模块") @RestController public class MenuController { @Autowired private MenuService menuService;//调用Service层的菜单业务方法 @ApiOperation(value = "查看菜单列表") @GetMapping("/admin/menus") public ResultVO> listMenus(ConditionVO conditionVO) { //ConditionVO conditionVO:封装菜单的查询条件(比如菜单名称关键词、菜单类型等) return ResultVO.ok(menuService.listMenus(conditionVO)); } @OptLog(optType =SAVE_OR_UPDATE) @ApiOperation(value = "新增或修改菜单") @PostMapping("/admin/menus") public ResultVO saveOrUpdateMenu(@Valid @RequestBody MenuVO menuVO) { //MenuVO menuVO:封装菜单新增、修改的参数,包含菜单名称、路径、父菜单ID等新增、修改所需信息,且会被@Valid校验 //menuVO内涵菜单ID判断是新增还是修改 menuService.saveOrUpdateMenu(menuVO); return ResultVO.ok(); } @OptLog(optType = UPDATE) @ApiOperation(value = "修改目录是否隐藏") @PutMapping("/admin/menus/isHidden") public ResultVO updateMenuIsHidden(@RequestBody IsHiddenVO isHiddenVO) { //IsHiddenVO isHiddenVO:封装菜单隐藏状态修改的参数,包含菜单ID\目标隐藏状态等信息 menuService.updateMenuIsHidden(isHiddenVO); return ResultVO.ok(); } @OptLog(optType = DELETE) @ApiOperation(value = "删除菜单") @DeleteMapping("/admin/menus/{menuId}")//{menuId}为路径参数,前端调用时需填充具体的菜单ID //例如/admin/menus/3:表示删除ID为3的菜单 public ResultVO deleteMenu(@PathVariable("menuId") Integer menuId) { menuService.deleteMenu(menuId); return ResultVO.ok(); } @ApiOperation(value = "查看角色菜单选项")//获取用于角色分配菜单时的选项列表,比如给某个角色配置可访问的菜单时,展示可选的菜单 @GetMapping("/admin/role/menus") //返回值ResultVO>:返回所有可用的菜单选项列表 //LabelOptionDTO为选项类的数据传输对象(包含菜单ID和菜单名称,用于下拉选择等场景) public ResultVO> listMenuOptions() { return ResultVO.ok(menuService.listMenuOptions()); } @ApiOperation(value = "查看当前用户菜单")//用于系统侧边栏展示等场景 @GetMapping("/admin/user/menus") public ResultVO> listUserMenus() { //无需参数,系统会自动获取当前登录用户的信息 return ResultVO.ok(menuService.listUserMenus()); } }