package com.caogen.view;
import com.alibaba.fastjson.JSON;
import com.caogen.core.exception.AppException;
import com.caogen.core.web.BaseController;
import com.caogen.core.web.MsgOut;
import com.caogen.domain.Resource;
import com.caogen.service.ResourceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.RequestContextHolder;
import javax.annotation.security.RolesAllowed;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* 菜单相关
*/
@RestController
public class MenuController extends BaseController {
@Autowired private ResourceService resourceService;
/**
*
* @api {get} /menus 获取菜单列表
* @apiSampleRequest /menus
* @apiExample {curl} Example usage:
* curl -i http://localhost:8080/menus
* @apiPermission admin
*
* @apiName list
* @apiGroup Menu
* @apiVersion 0.1.0
* @apiDescription 当前登录用户拥有的菜单
*
* @apiParam {int} page 页码
* @apiParam {int} rows 页大小
*
* @apiSuccess {String} code 结果码
* @apiSuccess {String} msg 消息说明
* @apiSuccess {String} type 结果类型
* @apiSuccess {String} title 提示标题
* @apiSuccess {Object} data 分页数据
* @apiSuccess {int} total 总记录数
*
* @apiSuccessExample Success-Response:
* HTTP/1.1 200 OK
* {
* code: '200',
* msg: 'success',
* total: 1,
* data: {},
* type: 'SUCCESS',
* title: '成功'
* }
*
* @apiError Menu 对应<code>ID</code>的菜单没有数据
* @apiErrorExample Error-Response:
* HTTP/1.1 404 Not Found
* {
* code: '404',
* msg: 'User Not Found',
* type: 'ERROR',
* title: '错误'
* }
*/
@RequestMapping(value = "/menus", method = RequestMethod.GET)
@RolesAllowed({"ROLE_menus:view", "ROLE_root"})
public String list() {
LOGGER.error("sessionId = {}", JSON.toJSON(RequestContextHolder.getRequestAttributes().getSessionId()));
List<Resource> list;
Collection<GrantedAuthority> grantedAuthorities
= (Collection<GrantedAuthority>) SecurityContextHolder.getContext()
.getAuthentication().getAuthorities();
List<String> grant = new ArrayList<>();
grantedAuthorities.forEach(grantedAuthority -> {
grant.add(grantedAuthority.getAuthority().replace("ROLE_",""));
});
list = resourceService.selectByResourceLink(grant.toArray(new String[0]));
MsgOut o = MsgOut.success(list);
o.setError(SecurityContextHolder.getContext().getAuthentication().getName());
return this.renderJson(o);
}
/**
*
* @api {post} /menus 创建新菜单
* @apiName create
* @apiHeader {String} access-key Users unique access-key.
* @apiHeaderExample {json} Header-Example:
* {
* "Accept-Encoding": "Accept-Encoding: gzip, deflate"
* }
* @apiGroup Menu
* @apiVersion 0.1.0
* @apiDescription 创建一个新菜单
*
* @apiParam {String} name 名称
* @apiParam {String} link 菜单url
* @apiParam {Long} pid 父级菜单ID
*
* @apiSuccess {String} code 结果码
* @apiSuccess {String} msg 消息说明
* @apiSuccess {String} type 结果类型
* @apiSuccess {String} title 提示标题
* @apiSuccess {Object} data 分页数据
* @apiSuccess {int} total 总记录数
*
* @apiSuccessExample Success-Response:
* HTTP/1.1 200 OK
* {
* code: '200',
* msg: 'success',
* total: 1,
* data: {},
* type: 'SUCCESS',
* title: '成功'
* }
*
* @apiError Menu 对应<code>ID</code>的菜单没有数据
* @apiErrorExample Error-Response:
* HTTP/1.1 404 Not Found
* {
* code: '404',
* msg: 'User Not Found',
* type: 'ERROR',
* title: '错误'
*
* }
*/
@RequestMapping(value = "/menus", method = RequestMethod.POST)
@RolesAllowed({"ROLE_menus:create", "ROLE_root"})
public String create(Resource resource) {
MsgOut o;
List<Resource> list = new ArrayList<>();
LOGGER.debug(renderJson(resource));
resourceService.insert(resource);
list.add(resource);
o = MsgOut.success(list);
return this.renderJson(o);
}
@RequestMapping(value = "/menus", method = RequestMethod.PUT)
@RolesAllowed({"ROLE_menus:update", "ROLE_root"})
public String update(@Valid Resource resource) {
MsgOut o;
List<Resource> list = new ArrayList<>();
resourceService.update(resource);
list.add(resource);
o = MsgOut.success(list);
return this.renderJson(o);
}
@RolesAllowed({"ROLE_menus:delete", "ROLE_root"})
@RequestMapping(value = "/menus/{id}", method = RequestMethod.DELETE)
public String delete(@PathVariable("id") Long id) {
MsgOut o;
resourceService.delete(id);
o = MsgOut.success();
return this.renderJson(o);
}
@RequestMapping(value = "/menus/{roleId}", method = RequestMethod.GET)
@RolesAllowed({"ROLE_menus:view", "ROLE_root"})
public String getMenuByRoleId(@PathVariable("roleId") Long id) {
List<Resource> list;
MsgOut o;
list = resourceService.selectByRoleId(id);
o = MsgOut.success(list);
return this.renderJson(o);
}
@RequestMapping(value = "/menus/grant")
@RolesAllowed({"ROLE_menus:grant", "ROLE_root"})
public String grant(Long id, String mids) {
MsgOut o;
resourceService.grant(id, mids);
o = MsgOut.success();
return this.renderJson(o);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
caogen:基于Spring-Boot,MyBatis和easyUI实现通用后台管理系统
共736个文件
css:269个
png:210个
gif:114个
需积分: 16 7 下载量 122 浏览量
2021-03-11
16:56:21
上传
评论
收藏 1.5MB ZIP 举报
温馨提示
致病菌 基于Spring-Boot,MyBatis和easyUI实现通用后台管理系统 Java Config风格,去xml化 Spring-Boot微服务 Spring Security(RBAC实现) MyBatis DAO层通用设计 EasyUI前端展示 Apidocjs文档注释风格
资源详情
资源评论
资源推荐
收起资源包目录
caogen:基于Spring-Boot,MyBatis和easyUI实现通用后台管理系统 (736个子文件)
easyui.css 57KB
easyui.css 57KB
easyui.css 57KB
easyui.css 57KB
easyui.css 55KB
easyui.css 54KB
easyui.css 27KB
layout.css 27KB
easyui.css 27KB
prettyPhoto.css 21KB
jquery.dataTables.css 15KB
dataTables.jqueryui.min.css 14KB
dataTables.jqueryui.css 13KB
jquery.dataTables.min.css 13KB
shCore.css 10KB
demo_table.css 10KB
tabs.css 9KB
tabs.css 9KB
tabs.css 9KB
tabs.css 9KB
demo_table_jui.css 9KB
awesome.css 8KB
tabs.css 7KB
tabs.css 7KB
mobile.css 7KB
demo.css 7KB
grid.css 7KB
metroStyle.css 6KB
color.css 6KB
960.css 6KB
zTreeStyle.css 6KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
datagrid.css 5KB
dataTables.bootstrap4.min.css 5KB
datagrid.css 5KB
nav.css 5KB
qunit.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
linkbutton.css 4KB
dataTables.bootstrap.min.css 4KB
datepicker.css 4KB
calendar.css 4KB
calendar.css 4KB
calendar.css 4KB
calendar.css 4KB
calendar.css 4KB
calendar.css 4KB
datepicker.css 4KB
tabs.css 4KB
linkbutton.css 3KB
tabs.css 3KB
tree.css 3KB
tree.css 3KB
tree.css 3KB
tree.css 3KB
tree.css 3KB
tree.css 3KB
dataTables.uikit.min.css 3KB
jquery.jqplot.min.css 3KB
calendar.css 3KB
calendar.css 3KB
panel.css 3KB
panel.css 3KB
panel.css 3KB
panel.css 3KB
gallery.css 3KB
layout.css 3KB
layout.css 3KB
layout.css 3KB
layout.css 3KB
layout.css 3KB
layout.css 3KB
dataTables.foundation.min.css 3KB
icon.css 2KB
panel.css 2KB
panel.css 2KB
tree.css 2KB
tree.css 2KB
window.css 2KB
window.css 2KB
window.css 2KB
window.css 2KB
default.css 2KB
menu.css 2KB
menu.css 2KB
menu.css 2KB
menu.css 2KB
menu.css 2KB
menu.css 2KB
tabs.css 2KB
demo.css 2KB
textbox.css 2KB
共 736 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8
Dr熊吉
- 粉丝: 30
- 资源: 4603
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0