goupan
2024-04-03 5506e9a45e717ffcb67ec313b5a4e8206d9b3a39
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
package cn.stylefeng.roses.kernel.system.modular.menu.controller;
 
import cn.stylefeng.roses.kernel.rule.annotation.BusinessLog;
import cn.stylefeng.roses.kernel.rule.enums.ResBizTypeEnum;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
import cn.stylefeng.roses.kernel.rule.tree.ztree.ZTreeNode;
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
import cn.stylefeng.roses.kernel.system.api.MenuServiceApi;
import cn.stylefeng.roses.kernel.system.api.pojo.menu.MenuAndButtonTreeResponse;
import cn.stylefeng.roses.kernel.system.api.pojo.menu.SysMenuRequest;
import cn.stylefeng.roses.kernel.system.api.pojo.menu.antd.AntdMenuSelectTreeNode;
import cn.stylefeng.roses.kernel.system.api.pojo.menu.antd.AntdSysMenuDTO;
import cn.stylefeng.roses.kernel.system.api.pojo.menu.layui.LayuiMenuAndButtonTreeResponse;
import cn.stylefeng.roses.kernel.system.api.pojo.role.request.SysRoleRequest;
import cn.stylefeng.roses.kernel.system.modular.menu.entity.SysMenu;
import cn.stylefeng.roses.kernel.system.modular.menu.service.SysMenuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
 
import javax.annotation.Resource;
import java.util.List;
 
/**
 * 系统菜单控制器
 *
 * @author fengshuonan
 * @date 2020/3/20 18:54
 */
//@Api(tags = "菜单管理")
@RestController
@ApiResource(name = "菜单管理", resBizType = ResBizTypeEnum.SYSTEM)
public class SysMenuController {
 
    @Resource
    private SysMenuService sysMenuService;
 
    @Resource
    private MenuServiceApi menuServiceApi;
 
    /**
     * 添加系统菜单
     *
     * @author fengshuonan
     * @date 2020/3/27 8:57
     */
    //@ApiOperation(value = "添加系统菜单")
    @PostResource(name = "添加系统菜单", path = "/sysMenu/add")
    @BusinessLog
    public ResponseData<?> add(@RequestBody @Validated(SysMenuRequest.add.class) SysMenuRequest sysMenuRequest) {
        sysMenuService.add(sysMenuRequest);
        return new SuccessResponseData<>();
    }
 
    /**
     * 删除系统菜单
     *
     * @author fengshuonan
     * @date 2020/3/27 8:58
     */
    //@ApiOperation(value = "删除系统菜单")
    @PostResource(name = "删除系统菜单", path = "/sysMenu/delete")
    @BusinessLog
    public ResponseData<?> delete(@RequestBody @Validated(SysMenuRequest.delete.class) SysMenuRequest sysMenuRequest) {
        sysMenuService.del(sysMenuRequest);
        return new SuccessResponseData<>();
    }
 
    /**
     * 编辑系统菜单
     *
     * @author fengshuonan
     * @date 2020/3/27 8:59
     */
    //@ApiOperation(value = "编辑系统菜单")
    @PostResource(name = "编辑系统菜单", path = "/sysMenu/edit")
    @BusinessLog
    public ResponseData<?> edit(@RequestBody @Validated(SysMenuRequest.edit.class) SysMenuRequest sysMenuRequest) {
        sysMenuService.edit(sysMenuRequest);
        return new SuccessResponseData<>();
    }
 
    /**
     * 查看系统菜单
     *
     * @author fengshuonan
     * @date 2020/3/27 9:01
     */
    //@ApiOperation(value = "查看系统菜单")
    @GetResource(name = "查看系统菜单", path = "/sysMenu/detail")
    public ResponseData<SysMenu> detail(@Validated(SysMenuRequest.detail.class) SysMenuRequest sysMenuRequest) {
        return new SuccessResponseData<>(sysMenuService.detail(sysMenuRequest));
    }
 
    /**
     * Layui版本--菜单列表,不带树形结构(菜单管理界面的列表用)
     *
     * @author fengshuonan
     * @date 2021/1/6 17:09
     */
    //@ApiOperation(value = "获取菜单列表(layui版本)", notes = "Layui版本--菜单列表,不带树形结构(菜单管理界面的列表用)")
    @GetResource(name = "获取菜单列表(layui版本)", path = "/sysMenu/layuiList")
    public ResponseData<List<SysMenu>> layuiList(SysMenuRequest sysMenuRequest) {
        return new SuccessResponseData<>(sysMenuService.findList(sysMenuRequest));
    }
 
    /**
     * Layui版本--获取系统菜单和按钮的树,用于角色分配菜单按钮
     *
     * @author majianguo
     * @date 2021/1/9 17:10
     */
    //@ApiOperation(value = "获取系统菜单和按钮的树", notes = "获取系统菜单和按钮的树,用于角色分配菜单按钮(layui版本使用)")
    @GetResource(name = "获取系统菜单和按钮的树,用于角色分配菜单按钮(layui版本使用)", path = "/sysMenu/menuAndButtonTree")
    public List<LayuiMenuAndButtonTreeResponse> menuAndButtonTree(SysRoleRequest sysRoleRequest) {
        return sysMenuService.getMenuAndButtonTree(sysRoleRequest, true);
    }
 
    /**
     * Layui版本--获取系统菜单树,用于新增,编辑时选择上级节点(用在新增和编辑菜单选择上级菜单)
     *
     * @author fengshuonan
     * @date 2021/1/6 17:09
     */
    //@ApiOperation(value = "获取菜单的树形列表(用于选择上级菜单)(layui版本)", notes = "Layui版本--获取系统菜单树,用于新增,编辑时选择上级节点(用在新增和编辑菜单选择上级菜单)")
    @GetResource(name = "获取菜单的树形列表(用于选择上级菜单)(layui版本)", path = "/sysMenu/layuiSelectParentMenuTreeList")
    public List<ZTreeNode> layuiSelectParentMenuTreeList() {
        return sysMenuService.layuiSelectParentMenuTreeList();
    }
 
    /**
     * AntdVue版本--获取系统左侧菜单(适用于登录后获取左侧菜单)
     *
     * @author majianguo
     * @date 2021/1/7 15:17
     */
    //@ApiOperation(value = "获取系统所有菜单", notes = "AntdVue版本--获取系统左侧菜单(适用于登录后获取左侧菜单)")
    @GetResource(name = "获取系统所有菜单(适用于登录后获取左侧菜单)(适配antd vue版本)", path = "/sysMenu/getLeftMenusAntdv", requiredPermission = false)
    public ResponseData<List<AntdSysMenuDTO>> getLeftMenusAntdv(SysMenuRequest sysMenuRequest) {
        List<AntdSysMenuDTO> sysMenuResponses = sysMenuService.getLeftMenusAntdv(sysMenuRequest);
        return new SuccessResponseData<>(sysMenuResponses);
    }
 
    /**
     * AntdVue版本--菜单列表,带树形结构(菜单管理界面的列表用)
     *
     * @author fengshuonan
     * @date 2020/3/20 21:23
     */
    //@ApiOperation(value = "系统菜单列表(树)", notes = "AntdVue版本--菜单列表,带树形结构(菜单管理界面的列表用)")
    @GetResource(name = "系统菜单列表(树)", path = "/sysMenu/list")
    public ResponseData<List<SysMenu>> list(SysMenuRequest sysMenuRequest) {
        return new SuccessResponseData<>(sysMenuService.findListWithTreeStructure(sysMenuRequest));
    }
 
    /**
     * AntdVue版本--获取系统菜单树,用于新增,编辑时选择上级节点(用在新增和编辑菜单选择上级菜单)
     *
     * @author fengshuonan
     * @date 2020/3/27 15:55
     */
    //@ApiOperation(value = "获取系统菜单树", notes = "AntdVue版本--获取系统菜单树,用于新增,编辑时选择上级节点(用在新增和编辑菜单选择上级菜单)")
    @GetResource(name = "获取系统菜单树,用于新增,编辑时选择上级节点", path = "/sysMenu/tree")
    public ResponseData<List<AntdMenuSelectTreeNode>> tree(SysMenuRequest sysMenuRequest) {
        return new SuccessResponseData<>(sysMenuService.tree(sysMenuRequest));
    }
 
    /**
     * AntdVue版本--获取系统菜单和按钮的树,用于角色分配菜单按钮
     *
     * @author majianguo
     * @date 2021/1/9 17:10
     */
    //@ApiOperation(value = "获取系统菜单和按钮的树", notes = "AntdVue版本--获取系统菜单和按钮的树,用于角色分配菜单按钮")
    @GetResource(name = "获取系统菜单和按钮的树,用于角色分配菜单按钮(antd vue版本使用)", path = "/sysMenu/menuAndButtonTreeChildren")
    public ResponseData<List<LayuiMenuAndButtonTreeResponse>> menuAndButtonTreeChildren(SysRoleRequest sysRoleRequest) {
        List<LayuiMenuAndButtonTreeResponse> treeResponseList = sysMenuService.getMenuAndButtonTree(sysRoleRequest, false);
        return new SuccessResponseData<>(treeResponseList);
    }
 
    /**
     * 新版角色分配菜单和按钮界面使用的接口
     *
     * @author fengshuonan
     * @date 2021/8/10 22:21
     */
    //@ApiOperation(value = "新版角色分配菜单和按钮界面使用的接口")
    @GetResource(name = "新版角色分配菜单和按钮界面使用的接口(v2)", path = "/sysMenu/menuAndButtonTreeChildrenV2")
    public ResponseData<List<MenuAndButtonTreeResponse>> menuAndButtonTreeChildrenV2(SysRoleRequest sysRoleRequest) {
        List<MenuAndButtonTreeResponse> treeResponseList = menuServiceApi.getRoleMenuAndButtons(sysRoleRequest);
        return new SuccessResponseData<>(treeResponseList);
    }
 
}