MenuController.java 4.4 KB
Newer Older
1
package com.youlai.admin.controller;
H
hxrui 已提交
2 3 4

import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.youlai.admin.pojo.entity.SysMenu;
5 6
import com.youlai.admin.pojo.vo.MenuVO;
import com.youlai.admin.pojo.vo.RouteVO;
7
import com.youlai.admin.pojo.vo.SelectVO;
8
import com.youlai.admin.pojo.vo.TreeSelectVO;
H
hxrui 已提交
9
import com.youlai.admin.service.ISysMenuService;
10
import com.youlai.admin.service.ISysPermissionService;
H
hxrui 已提交
11 12 13 14
import com.youlai.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
15
import lombok.RequiredArgsConstructor;
有来技术 已提交
16
import lombok.extern.slf4j.Slf4j;
17
import org.springframework.cache.annotation.CacheEvict;
H
hxrui 已提交
18 19 20 21 22 23
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;
import java.util.List;

/**
24 25 26
 * 菜单控制器
 *
 * @author <a href="mailto:xianrui0365@163.com">xianrui</a>
H
hxrui 已提交
27 28 29 30
 * @date 2020-11-06
 */
@Api(tags = "菜单接口")
@RestController
H
haoxr 已提交
31
@RequestMapping("/api/v1/menus")
32
@RequiredArgsConstructor
有来技术 已提交
33
@Slf4j
H
hxrui 已提交
34 35
public class MenuController {

36
    private final ISysMenuService menuService;
37
    private final ISysPermissionService permissionService;
38 39 40 41

    @ApiOperation(value = "菜单表格(Table)层级列表")
    @ApiImplicitParam(name = "name", value = "菜单名称", paramType = "query", dataType = "String")
    @GetMapping("/table")
42
    public Result getTableList(String name) {
43 44 45
        List<MenuVO> menuList = menuService.listTable(name);
        return Result.success(menuList);
    }
H
hxrui 已提交
46 47


48 49
    @ApiOperation(value = "菜单下拉(Select)层级列表")
    @GetMapping("/select")
50
    public Result getSelectList() {
51
        List<SelectVO> menuList = menuService.listSelect();
52 53
        return Result.success(menuList);
    }
H
hxrui 已提交
54

55 56 57 58 59 60 61
    @ApiOperation(value = "菜单下拉(TreeSelect)层级列表")
    @GetMapping("/tree-select")
    public Result getTreeSelectList() {
        List<TreeSelectVO> menuList = menuService.listTreeSelect();
        return Result.success(menuList);
    }

62 63
    @ApiOperation(value = "菜单路由(Route)层级列表")
    @GetMapping("/route")
64 65 66
    public Result getRouteList() {
        List<RouteVO> routeList = menuService.listRoute();
        return Result.success(routeList);
H
hxrui 已提交
67 68
    }

69

H
haoxr 已提交
70
    @ApiOperation(value = "菜单详情")
H
hxrui 已提交
71 72 73
    @ApiImplicitParam(name = "id", value = "菜单id", required = true, paramType = "path", dataType = "Long")
    @GetMapping("/{id}")
    public Result detail(@PathVariable Integer id) {
74
        SysMenu menu = menuService.getById(id);
H
hxrui 已提交
75 76 77
        return Result.success(menu);
    }

H
haoxr 已提交
78
    @ApiOperation(value = "新增菜单")
H
hxrui 已提交
79
    @PostMapping
80
    @CacheEvict(cacheNames = "system",key = "'routeList'")
H
hxrui 已提交
81
    public Result add(@RequestBody SysMenu menu) {
82 83 84 85 86
        boolean result = menuService.save(menu);
        if(result){
            permissionService.refreshPermRolesRules();
        }
        return Result.judge(result);
H
hxrui 已提交
87 88
    }

H
haoxr 已提交
89
    @ApiOperation(value = "修改菜单")
H
hxrui 已提交
90
    @PutMapping(value = "/{id}")
91
    @CacheEvict(cacheNames = "system",key = "'routeList'")
H
hxrui 已提交
92
    public Result update(
93
            @PathVariable Long id,
H
hxrui 已提交
94
            @RequestBody SysMenu menu) {
95 96 97 98 99
        boolean result = menuService.updateById(menu);
        if(result){
            permissionService.refreshPermRolesRules();
        }
        return Result.judge(result);
H
hxrui 已提交
100 101
    }

H
haoxr 已提交
102
    @ApiOperation(value = "删除菜单")
H
haoxr 已提交
103
    @ApiImplicitParam(name = "ids", value = "id集合字符串,以,分割", required = true, paramType = "query", dataType = "String")
H
hxrui 已提交
104
    @DeleteMapping("/{ids}")
105
    @CacheEvict(cacheNames = "system",key = "'routeList'")
H
hxrui 已提交
106
    public Result delete(@PathVariable("ids") String ids) {
107 108 109 110 111
        boolean result = menuService.removeByIds(Arrays.asList(ids.split(",")));
        if(result){
            permissionService.refreshPermRolesRules();
        }
        return Result.judge(result);
H
hxrui 已提交
112 113
    }

114
    @ApiOperation(value = "选择性修改菜单")
H
hxrui 已提交
115
    @PatchMapping(value = "/{id}")
116
    @CacheEvict(cacheNames = "system",key = "'routeList'")
H
hxrui 已提交
117
    public Result patch(@PathVariable Integer id, @RequestBody SysMenu menu) {
H
haoxr 已提交
118 119
        LambdaUpdateWrapper<SysMenu> updateWrapper = new LambdaUpdateWrapper<SysMenu>().eq(SysMenu::getId, id);
        updateWrapper.set(menu.getVisible() != null, SysMenu::getVisible, menu.getVisible());
120
        boolean result = menuService.update(updateWrapper);
121 122 123
        if(result){
            permissionService.refreshPermRolesRules();
        }
H
haoxr 已提交
124
        return Result.judge(result);
H
hxrui 已提交
125 126
    }
}