版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、内容回顾内容介绍Springcloud 组件 gateway 网关1、网关(1)在客户端请求到服务端之间,建立了一面墙,请求转发,负载均衡2、gateway 介绍gateway 是 Springcloud 的组件,用于网关操作网关基于filter 实现的,很多的过滤器,称为过滤链3、gateway 网关使用创建网关服务api_gateway在网关模块引入相关依赖com.atguigucommon_utils0.0.1-SNAPSHOT1、springcloud 组件 gateway 网关2、系统-权限管理权限管理需求开发权限管理接口3、整合 spring security 权限框架1、统计分析
2、-生成统计数据(1)定时器(cron 表达式)2、统计分析-图表显示3、数据同步工具 c创建启动类创建配置文件# 服务端口servort=8222# 服务名=service-gateway#指定中心地址t.service-url.defaultZone=#eureka 服务器上获取的是服务器的 ip 地址,否则是主机名.springframework.cloudspring-cloud-starter-netflix-eureka- cnt.springframework.cloudspring-cloud-starter-gatewaycom.c
3、ode.gsongson.springframework.cloudspring-cloud-starter-openfeignSpringBootApplicationpublic class ApiGateWayApplication public sic void main(String args) SpringApplication.run(ApiGateWayApplication.class, args);权限管理需求1、菜单(功能)、角色、用户2、菜单管理菜单列表:使用树形结构显示添加菜单修改菜单5、在网关里解决跨域问题6、在网关编写过滤器eureka.instance.pref
4、er-ip-address=true#使用服务发现路由 spring.cloud.gateway.discovery.locator.enabled=true #服务路由名小写#spring.cloud.gateway.discovery.locator.lower-case-service-id=true#设置路由 id spring.cloud.gateway.routes0.id=SERVICE-ACL #设置路由的 urispring.cloud.gateway.routes0.uri=lb:/SERVICE-ACL#设置路由断言,servicerId 为 auth-service 的
5、/auth/路径spring.cloud.gateway.routes0.predicates= Path=/*/acl/*#配置 service-edu 服务 spring.cloud.gateway.routes1.id=SERVICE-EDU spring.cloud.gateway.routes1.uri=lb:/SERVICE-EDUspring.cloud.gateway.routes1.predicates= Path=/eduservice/*#配置 service-ucenter 服务 spring.cloud.gateway.routes2.id=SERVICE-UCENT
6、ER spring.cloud.gateway.routes2.uri=lb:/SERVICE-UCENTERspring.cloud.gateway.routes2.predicates= Path=/ucenterservice/*开发菜单管理接口1、准备工作在 service 下创建模块service_acl依赖,编写配置文件,生成代码。引入依赖2、权限管理相关表com.alibabafastjsonjunitjunit4.12(4)删除菜单3、角色管理角色列表:带条件分页查询添加角色修改角色删除角色批量删除角色给角色分配菜单4、用户管理用户列表添加用户修改用户删除用户批量删除用户给用户
7、分配角色菜单管理-查询所有菜单接口1、controllerApiOperation(value = 1、获取所有菜单) GetMappublic R queryAllPermis()List list = permisService.queryAll();return R.ok().data(children,list);2 service(1)改造菜单实体Property(value = 层级)ApiMTableField(exist = false)privateeger level;Property(value = 下级)ApiMTableField(exist = false)priv
8、aist children;Property(value = 是否选中)ApiMTableField(exist =false)ect;privatei(2)实现功能/1 获取所有菜单Overridepublic List queryAll() /1 把菜单表所有数据查询出来QueryWrappermis wrapper = new QueryWrapper();wrapper.orderByDesc(id);List permisList = baseMapper.selectList(wrapper);/2 封装成需要的结构List result = bulid(permisList);r
9、eturn result;/封装成需要的结构privaist bulid(List permisList) /创建一个 list 集合用于最终返回数据List trees = new ArrayList();/遍历所有菜单集合for (Permispermis: permisList)/得到每个菜单,判断是不是第一层的目录if(0.equals(permis/设置 permis.get()的 level 为 1permis.setLevel(1);/把值放到最终 List 集合trees.add(findChild(permis,permisList);return trees;private
10、 PermisfindChild(Permispermis, ListpermisList) /初始化值permis.setChildren(new ArrayList();菜单管理-递归删除菜单接口1、controllerApiOperation(value = 4 递归删除菜单) DeleteMap(remove/id)public R remove(PathVariable String id)permisService.removePermisChild(id);return R.ok();2、service/4 递归删除菜单Overridepublic void removePerm
11、isChild(String id) /当前菜单 id/当前菜单的子菜单 id/把所有要删除的菜单 id 获取到,放到 list 集合List idList = new ArrayList();thiectIdList(id,idList);/把当前菜单 id 放到 list 集合里面idList.add(id);baseMapper.deleteBatchIds(idList);private void selectIdList(String id, List idList) /根据当前菜单 id 查询菜单下面的子菜单QueryWrappermis wrapper = new QueryWr
12、apper(); wrapper.eq(,id);List childList = baseMapper.selectList(wrapper);/permisList 遍历for (Permisit : permisList) /判断上层 id 和下层是否相同if(permis.getId().equals(it.get()/把层级+1newLevel = permis.getLevel()+1; it.setLevel(newLevel);if(permis.getChildren()=null)permis.setChildren(new ArrayList();permis.getCh
13、ildren().add(findChild(it,permisList);return permis;菜单管理-根据角色 id 获取菜单1、 controllerApiOperation(value = 根据角色 id 获取菜单) GetMap(toAssign/roleId)public R toAssign(P ListPermispermisreturn R.ok().data(children,list);2、 service/根据角色 id 获取菜单Overridepublic List selectByRoleId(String roleId) /1 根据角色 id 查询角色菜单
14、关系表,查询角色关联所有菜单 id QueryWrapper wrapper = new QueryWrapper(); wrapper.eq(role_id,roleId);List rolePermisList =rolePermisService.list(wrapper);/2 查询所有菜单List allPermis= baseMapper.selectList(newQueryWrappermis().orderByDesc(id);/3 遍历所有菜单for (i = 0; i allPermis.size() ; i+) /得到每个菜单Permispermis= allPermi
15、s.get(i);/遍历角色菜单 List 集合for (RolePermisrp : rolePermisList) /比较 idif(rp.getPermisId().equals(permis.getId()/让菜单 select 是 truepermis.setSelect(true);/递归查询List result = bulid(allPermis);/获取菜单 id 放到 list,再进行下一级的查询childList.stream().forEach(item- idList.add(item.getId();/递归thiectIdList(item.getId(),idLi
16、st););菜单管理-给角色分配菜单角色管理接口1、带条件分页查询ApiOperation(value = 1 角色带条件的分页查询) tMap(page/limit)public R index(PathVariable Long page,PathVariable Long limit, RequestBody(required = false) Role role)Page pageRole = nege(page,limit);1、 controllerApiOperation(value = 6 给角色分配权限) tMap(doAssign)public R doAssign(Str
17、ispermisId);return R.ok();2、 service/6 给角色分配权限Overridepublic void doRoleAssignPermis(String roleId, String permisIds) /1 根据角色 id 清除所有关联关系rolePermisService.remove(newQueryWrapper().eq(role_id,roleId);/2 保存角色与菜单关系/2.1 创建批量数据的集合List rpList = new ArrayList();for (String perId : permisIds) /2.2 创建对象RoleP
18、ermisrolePermis= new RolePermis(); rolePermis.setRoleId(roleId);rolePermis.setPermisId(perId); rpList.add(rolePermis);rolePermisServiaveBatch(rpList);return result;QueryWrapper wrapper = new QueryWrapper();if(!StringUtils.isEmpty(role.getRoleName() wrapper.like(role_name,role.getRoleName();roleServi
19、ce.page(pageRole,wrapper); returnR.ok().data(total,pageRole.getTotal().data(rows,pageRole.getRecord s();2、其他的接口实现ApiOperation(value = 2 添加角色) tMap(save)public R save(RequestBody Role role)roleServiave(role);return R.ok();ApiOperation(value = 3 根据角色数据查询) GetMap(getRole/id)public R getRole(PathVariabl
20、e String id) Role role = roleService.getById(id); return R.ok().data(role,role);ApiOperation(value = 4 修改角色) tMap(update)public R update(RequestBody Role role)roleService.updateById(role); return R.ok();ApiOperation(value = 5 删除角色) DeleteMap(remove/id)public R remove (PathVariable String id)roleServ
21、ice.removeById(id); return R.ok();ApiOperation(value = 批量删除角色) DeleteMap(batchRemove)public R batchRemove(RequestBody List idList) roleService.removeByIds(idList); return R.ok();用户管理(crud 接口)ApiOperation(value = 获取管理用户分页列表) GetMap(page/limit)public R index(ApiParam(name = page, value = 当前页码, require
22、d = true) PathVariable Long page,ApiParam(name = limit, value = 每页数, required = true) PathVariable Long limit,ApiParam(name = courseQuery, value = 查询对象, required =false)User userQueryVo) Page pageParam = nege(page, limit); QueryWrapper wrapper = new QueryWrapper(); if(!StringUtils.isEmpty(userQueryV
23、o.getUsername() wrapper.like(username,userQueryVo.getUsername();IPage pageM= userService.page(pageParam, wrapper);return R.ok().data(items, page).data(total, pageMApiOperation(value = 新增管理用户) tMap(save)public R save( user.setPassword(MD5.encrypt(user.getPassword(); userServireturn R.ok();ApiOperatio
24、n(value = 修改管理用户) PutMap(update)public R updateById(RequestBody User user) userService.updateById(user); return R.ok();ApiOperation(value = 删除管理用户) DeleteMap(remove/id)public R remove(PathVariable String id) userService.removeById(id); return R.ok();ApiOperation(value = 根据 id 列表删除管理用户) DeleteMap(bat
25、chRemove)public R batchRemove(RequestBody List idList) userService.removeByIds(idList); return R.ok();用户管理-根据用户 id 获取角色数据1、controllerApiOperation(value = 根据用户 id 获取角色数据) GetMap(toAssign/uid)public R toAssign(PathVariable String uid)Map map = userService.getRoleAssignUserId(uid); return R.ok().data(m
26、ap);2、service/根据用户 id 获取角色数据Overridepublic Map getRoleAssignUserId(String uid) /1 查询所有角色List roleList = roleService.list(newQueryWrapper().orderByDesc(id);/2 根据用户 id 查询用户关联的角色 id QueryWrapper wrapper = new QueryWrapper(); wrapper.eq(user_id,uid);wrapper.select(role_id);List userRoleList = userRoleService.list(wrapper);/3 userRoleList 集合里 role_id 获取出来放到另一个 listList existRoleList = userRoleList.stream().map(c-c.getRoleId().collect(Collector
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮服务承揽合同三篇
- 管道行业安全管理工作心得
- 2025年全球及中国丙二醛行业头部企业市场占有率及排名调研报告
- 2025年全球及中国头发护理用神经酰胺行业头部企业市场占有率及排名调研报告
- 2025年全球及中国DHA微囊粉行业头部企业市场占有率及排名调研报告
- 2025年全球及中国三维足底扫描系统行业头部企业市场占有率及排名调研报告
- 2025-2030全球电动跨式堆垛机行业调研及趋势分析报告
- 2025年全球及中国介孔二氧化硅微球行业头部企业市场占有率及排名调研报告
- 2025年全球及中国多相真空萃取机行业头部企业市场占有率及排名调研报告
- 2025-2030全球豆荚酒店行业调研及趋势分析报告
- 《社区康复》课件-第一章 总论
- 上海中考英语考纲词汇
- 【工商管理专业毕业综合训练报告2600字(论文)】
- 《幼儿园健康》课件精1
- 22S803 圆形钢筋混凝土蓄水池
- 2023年开心英语四年级上册全册练习
- Hadoop大数据开发实例教程高职PPT完整全套教学课件
- 企业中层管理人员测评问题
- 人教版高中地理必修一全册测试题(16份含答案)
- 《民航服务沟通技巧》教案第11课孕妇旅客服务沟通
- 新东方四级词汇-正序版
评论
0/150
提交评论