|
|
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<List<MenuDTO>> 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<List<LabelOptionDTO>>:返回所有可用的菜单选项列表
|
|
|
//LabelOptionDTO为选项类的数据传输对象(包含菜单ID和菜单名称,用于下拉选择等场景)
|
|
|
public ResultVO<List<LabelOptionDTO>> listMenuOptions() {
|
|
|
return ResultVO.ok(menuService.listMenuOptions());
|
|
|
}
|
|
|
|
|
|
@ApiOperation(value = "查看当前用户菜单")//用于系统侧边栏展示等场景
|
|
|
@GetMapping("/admin/user/menus")
|
|
|
public ResultVO<List<UserMenuDTO>> listUserMenus() {
|
|
|
//无需参数,系统会自动获取当前登录用户的信息
|
|
|
return ResultVO.ok(menuService.listUserMenus());
|
|
|
}
|
|
|
}
|