116 lines
3.8 KiB
Java
116 lines
3.8 KiB
Java
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);
|
||
}
|
||
|
||
}
|
||
|