You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
3.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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());
}
}