Files
youlai-boot/src/main/java/com/youlai/boot/system/controller/MenuController.java

116 lines
3.8 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.youlai.boot.system.controller;
import com.youlai.boot.common.annotation.Log;
import com.youlai.boot.common.annotation.RepeatSubmit;
import com.youlai.boot.common.enums.LogModuleEnum;
import com.youlai.boot.common.model.Option;
import com.youlai.boot.core.web.Result;
import com.youlai.boot.system.model.form.MenuForm;
import com.youlai.boot.system.model.query.MenuQuery;
import com.youlai.boot.system.model.vo.MenuVo;
import com.youlai.boot.system.model.vo.RouteVo;
import com.youlai.boot.system.service.MenuService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 菜单控制层
*
* @author Ray.Hao
* @since 2020/11/06
*/
@Tag(name = "04.菜单接口")
@RestController
@RequestMapping("/api/v1/menus")
@RequiredArgsConstructor
@Slf4j
public class MenuController {
private final MenuService menuService;
@Operation(summary = "菜单列表")
@GetMapping
@Log(value = "菜单列表", module = LogModuleEnum.MENU)
public Result<List<MenuVo>> getMenus(MenuQuery queryParams) {
List<MenuVo> menuList = menuService.listMenus(queryParams);
return Result.success(menuList);
}
@Operation(summary = "菜单下拉列表")
@GetMapping("/options")
public Result<List<Option<Long>>> getMenuOptions(
@Parameter(description = "是否只查询父级菜单")
@RequestParam(required = false, defaultValue = "false") boolean onlyParent
) {
List<Option<Long>> menus = menuService.listMenuOptions(onlyParent);
return Result.success(menus);
}
@Operation(summary = "当前用户菜单路由列表")
@GetMapping("/routes")
public Result<List<RouteVo>> getCurrentUserRoutes() {
List<RouteVo> routeList = menuService.listCurrentUserRoutes();
return Result.success(routeList);
}
@Operation(summary = "菜单表单数据")
@GetMapping("/{id}/form")
@PreAuthorize("@ss.hasPerm('sys:menu:update')")
public Result<MenuForm> getMenuForm(
@Parameter(description = "菜单ID") @PathVariable Long id
) {
MenuForm menu = menuService.getMenuForm(id);
return Result.success(menu);
}
@Operation(summary = "新增菜单")
@PostMapping
@PreAuthorize("@ss.hasPerm('sys:menu:create')")
@RepeatSubmit
public Result<?> addMenu(@RequestBody MenuForm menuForm) {
boolean result = menuService.saveMenu(menuForm);
return Result.judge(result);
}
@Operation(summary = "修改菜单")
@PutMapping(value = "/{id}")
@PreAuthorize("@ss.hasPerm('sys:menu:update')")
public Result<?> updateMenu(
@RequestBody MenuForm menuForm
) {
boolean result = menuService.saveMenu(menuForm);
return Result.judge(result);
}
@Operation(summary = "删除菜单")
@DeleteMapping("/{id}")
@PreAuthorize("@ss.hasPerm('sys:menu:delete')")
public Result<?> deleteMenu(
@Parameter(description = "菜单ID多个以英文(,)分割") @PathVariable("id") Long id
) {
boolean result = menuService.deleteMenu(id);
return Result.judge(result);
}
@Operation(summary = "修改菜单显示状态")
@PatchMapping("/{menuId}")
@PreAuthorize("@ss.hasPerm('sys:menu:update')")
public Result<?> updateMenuVisible(
@Parameter(description = "菜单ID") @PathVariable Long menuId,
@Parameter(description = "显示状态(1:显示;0:隐藏)") Integer visible
) {
boolean result = menuService.updateMenuVisible(menuId, visible);
return Result.judge(result);
}
}