package com.paic.generator.service.impl;
import com.github.pagehelper.PageHelper;
import com.paic.generator.dto.authority.*;
import com.paic.generator.dto.login.User;
import com.paic.generator.mapper.*;
import com.paic.generator.service.AuthService;
import com.paic.generator.service.FileService;
import com.paic.generator.utils.BusinessException;
import com.paic.generator.utils.FileUtils;
import com.paic.generator.utils.LoginUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
import static com.paic.generator.service.FileService.JSON_PATH;
@Service
@Slf4j
public class AuthServiceImpl implements AuthService {
@Autowired
private RoleMapper roleMapper;
@Autowired
private MenuMapper menuMapper;
@Autowired
private RoleMenuMapper roleMenuMapper;
@Autowired
private ComponentMapper componentMapper;
@Autowired
private AuthService authService;
@Autowired
FileService fileService;
@Autowired
UserRoleMapper userRoleMapper;
@Autowired
RoleComponentMapper roleComponentMapper;
@Override
public List<RoleDTO> queryRole(RoleMenuDTO queryInfo) {
List<RoleDTO> roleList;
//菜单id不为空,查询菜单角色表,根据菜单id筛选角色,再根据角色id获取角色信息
if (null != queryInfo && null != queryInfo.getMenuId()) {
List<RoleMenuDTO> roleMenuList = roleMenuMapper.query(queryInfo);
if (CollectionUtils.isEmpty(roleMenuList)) {
return null;
}
Set<Integer> roleIds = roleMenuList.stream().map(RoleMenuDTO::getRoleId).collect(Collectors.toSet());
roleList = roleMapper.queryByIds(roleIds);
}else {
//菜单id为空,查询角色表,获取全量角色
roleList = roleMapper.query(null);
}
return roleList;
}
@Override
public List<MenuDTO> queryMenu(MenuDTO menu) {
List<MenuDTO> rootMenuList;
if (null == menu) {
rootMenuList = menuMapper.queryRoot();
}else {
MenuDTO menuDTO = new MenuDTO();
menuDTO.setParentId(menu.getMenuId());
rootMenuList = menuMapper.query(menuDTO);
}
for (MenuDTO menuDTO : rootMenuList) {
List<MenuDTO> childMenuList = authService.queryMenu(menuDTO);
menuDTO.setChildren(childMenuList);
}
return rootMenuList;
}
@Override
public List<MenuDTO> queryChildMenuById(Integer menuId) {
return menuMapper.queryByParentId(menuId);
}
@Override
public List<RoleDTO> getRoleInfoList(RoleDTO roleDTO) {
Integer pageNum = roleDTO.getPageNum();
Integer pageSize = roleDTO.getPageSize();
if(pageNum == null){
pageNum = 1;
}
if(pageSize == null){
pageSize = 10;
}
PageHelper.startPage(pageNum,pageSize);
List<RoleDTO> roleDTOList = roleMapper.queryByParams(roleDTO);
for (RoleDTO item : roleDTOList) {
//查询角色拥有的菜单权限
Integer roleId = item.getRoleId();
RoleMenuDTO roleMenuDTO = new RoleMenuDTO();
roleMenuDTO.setRoleId(roleId);
List<RoleMenuDTO> roleMenuDTOList = roleMenuMapper.query(roleMenuDTO);
if(CollectionUtils.isNotEmpty(roleMenuDTOList)){
List<Integer> ids = roleMenuDTOList.stream().map(RoleMenuDTO::getMenuId).collect(Collectors.toList());
List<MenuDTO> menuList = menuMapper.queryByIds(ids);
item.setMenuList(menuList);
//将菜单列表转换为菜单名的字符串格式
item.setMenuNameListStr(getMenuNameListStr(menuList));
}
}
return roleDTOList;
}
/**
* 将菜单列表转换为菜单名的字符串格式
* @param menuList
* @return
*/
private String getMenuNameListStr(List<MenuDTO> menuList) {
if(CollectionUtils.isEmpty(menuList)){
return null;
}
return menuList.stream().map(MenuDTO::getMenuName).map(String::valueOf).collect(Collectors.joining("、"));
}
@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void deleteRole(Integer roleId) {
if(roleId == null){
throw new BusinessException("角色Id不能为空");
}
if(roleId.equals(1)){
throw new BusinessException("无法删除超级管理员");
}
//删除角色表数据
List<Integer> roleIds = new ArrayList();
roleIds.add(roleId);
roleMapper.delete(roleIds);
//删除该角色拥有的菜单权限数据
RoleMenuDTO roleMenuDTO = new RoleMenuDTO();
roleMenuDTO.setRoleId(roleId);
deleteRoleMenu(roleMenuDTO);
//删除该角色拥有的菜单元素权限数据
RoleComponentDTO roleComponentDTO = new RoleComponentDTO();
roleComponentDTO.setRoleId(roleId);
deleteRoleComponent(roleComponentDTO);
}
/**
* 删除菜单元素权限
* @param componentDTO
*/
private void deleteComponent(ComponentDTO componentDTO) {
//查询
List<ComponentDTO> componentDTOList = componentMapper.query(componentDTO);
if(CollectionUtils.isNotEmpty(componentDTOList)){
//通过主键Id删除
List<Integer> ids = componentDTOList.stream().map(it -> it.getId()).collect(Collectors.toList());
componentMapper.delete(ids);
}
}
/**
* 删除菜单权限
* @param roleMenuDTO
*/
private void deleteRoleMenu(RoleMenuDTO roleMenuDTO) {
//查询
List<RoleMenuDTO> roleMenuDTOList = roleMenuMapper.query(roleMenuDTO);
if(CollectionUtils.isNotEmpty(roleMenuDTOList)){
//通过主键Id删除
List<Integer> ids = roleMenuDTOList.stream().map(it -> it.getId()).collect(Collectors.toList());
roleMenuMapper.delete(ids);
}
}
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@Override
public void updateRoleData(RoleDTO roleDTO) {
Integer roleId = roleDTO.getRoleId();
if(roleId.equals(1)){
throw new BusinessException("无法修改超级管理员的角色信息");
}
//更新前校验
checkUpdateRole(roleDTO);
roleDTO.setUpdateBy(LoginUtil.getUserCode());
//修改角色信息
roleMapper.updateRole(roleDTO);
//修改其他角色相关信息
updateOtherRoleInfo(roleDTO);
}
/**
* 修改其他角色相关信息:包括角色的菜单权限、元素权限等
* @param roleDTO
*/
private void updateOtherRoleInfo(RoleDTO roleDTO) {
Integer roleId = roleDTO.getRoleId();
//先查询角色现有的的菜单权限
RoleMenuDTO query = new RoleMenuDTO();
query.setRoleId(roleId);
List<RoleMenuDTO> oldRoleMenuList = roleMenuMapper.query(query);
List<MenuDTO> newMenuList = roleDTO.getMenuList();
List<Integer> oldMenuIdList = null;
//删除角色现有的菜单权限
if(CollectionUti
没有合适的资源?快使用搜索试试~ 我知道了~
上传资源test.zip
共2003个文件
java:192个
xml:149个
json:128个
需积分: 0 0 下载量 185 浏览量
2023-08-17
14:45:47
上传
评论
收藏 130.6MB ZIP 举报
温馨提示
上传资源test.zip
资源推荐
资源详情
资源评论
收起资源包目录
上传资源test.zip (2003个子文件)
generator-image-1.0.0 41B
generator-image-1.1.0 41B
generator-image-1.0.0 41B
generator-image-1.1.0 41B
005ce0f168e9236c820630b8c0da87a9050fea 50B
006ac2db6352531155021dc30972018ce97288 340B
00a63b0fdba4fa8f6ef2ce234673ea6a612c0c 50B
00aabf8727b5a72e706700f4412326fe60dc5b 477B
00ac7d33d7b1cabf13d76ccdfcd61c21e5a4bf 160B
00b2a5e5de044fa6c20c993a033742a3fbe5e7 218B
00cb34b77778e9f475ecaad070c3edcd085615 427B
011ee410346bf9211865537f5ca237bd4de871 50B
013a61c2e412cbe93c8b761789f4e674334ff5 49B
0141c11e7235867cbba1a26aa60c5af6e24482 86B
01679cc4b2e461b6da357efe2d03580a92f6fa 383B
0251626d5f2e95b5b1001e1ece682ec30a15b3 254B
0264ffb9ac352bf9e5e01d0efb3210d433e0f8 171B
028bd96367fc39a1002883a11d2097050be018 49B
02f3e6ecf667167b9575497e2ed6c34af17fd6 49B
0338c3c9516275c9134b05ae89f11ad44adfc1 86B
0347b5a0862be3e9d4fb460fce8100b66a92df 160B
035ee6f487684d4cd863a93c551a5935dd3cdf 457B
03a2cf58871bcf9f46209012560f89a2fd33cb 87B
03c4665d37b6055c8ba1bc7da6a0e4a0a4f641 383B
03d9f6ba025524c1dca1d1d6a85a0680549edd 386B
041eb44c97f29b732ae3e21d388fcbb45487f2 49B
04b4d026b68415f0b4e3bedf32882037ed186e 49B
04c1814e382aef7ea96851a2a659b0f9fa2078 288B
0536d174ce3161dded5d2f0ad63444d81d17b3 49B
0544e0d89c1a9720508639c9bda551731b1029 55B
059939619fec0ea9158f22c72d6dabd72f2669 383B
059c44598a8745d11adc67f1fc5490024f8911 86B
05e6eeb81b829acb01ca9ed0dd4771fb8f363d 160B
05f81edd03cc1adfec80c91e8c8d98cc0ae073 273B
05fd4b5d88596bb318a492b0503b3e3f8d1318 1017B
0637d2a85be13683907ae5e64df2a64d6bfacd 1KB
065362e051f74b30109eb33553358f97f1704f 3KB
0670b75e31334de9436623b7ee3a17d767573f 208B
06bfe801bc3699e29694e51adfa8fbb6c16504 240B
06f08ffe5cf408652974f96622735c3e057890 10KB
06fcde916345c0534544e5a1874b842f777587 173B
071913405b1f73a1ade4f00b7284cedd8af6af 50B
07399fccedfd1136147a55fe53e4b00962ccce 55B
07dcd0c9baf5c8f25791b5eeb5bf2f26b5455b 86B
07ec14c96905ecc260504cd412f45564eb2f5c 86B
08042b63d451afc24d9c0831dee91048e2bf46 288B
087431f13c92b5f7c3d692dc989193f71f58c5 50B
08a32d846d219b11f839c13580e8980136f4ca 240B
08ac5c9c74306507873e9aa81c2269ad2e0ca1 240B
08b0033335a20ad9a4e491c2211a16a91e00fc 976B
08b122523b2d24e8c513bbb5e2afc13233b987 1KB
08d755670d7146bb68a5ecdb9319a8d9deb91b 4.68MB
08ffab18666f8041e89ab49d2ccaeda6972a65 287B
09dc7a9268f3d690f56fa2ffd7b2bccd890383 240B
0a1e05de5fb41f29c49b96363dce247b12de94 2.33MB
0a58bfb369521264c1b4ea00c93a5fd9eea056 367B
0a5f8a701f4a6b1cc556f2e08d7c29ecc36b6b 427B
0a804dd060c4f284c1948261798e3f88b28da1 939B
0a9688ff5530175d958abba09d045c8bb3a346 50B
0b142bf2599765b47f03e5d96eb29e7f992da2 50B
0b28d6190f53df0e7aa624e509f83d6e767e48 65B
0b636bb6c6fbe5de06a801323273166086076e 49B
0b6954bf25bbc9e635dd641bef28b938229ea7 477B
0bdb141689d8f79536bb07579c16bc51274a75 11KB
0be8544d2d9778e1f4a44acb8ee5eb3b8564b0 288B
0c7888a8c87821cddd5d14e365a3153e4d2bea 335B
0cd7c02f6018dfdf124f15097e8a991a147408 531B
0cd7d1bb30236ccb9a8a17b8281ba52d684a00 2KB
0d4561d518891c172a2b54a629fd23bb496b49 287B
0d6eda6f4adbb432d30eb2a0e72a6fe2a7b0d5 50B
0d74e418eb96f8f0dad23331d88a2f6a23c147 291B
0d83f22798242262b52996bf7c3db78968d96c 377B
0d91883713321c9d442ce96454456abb5e3cbc 49B
0e1c7bd75aeb87187dfc07138bc76a6d9de8f4 8KB
0e5e2ff901bab02a986d1f8dd1d0dd8162d1f0 457B
0e958617fff364585985a0bf979ad2a76dc07f 319B
0efd6a5d4ef7645f973fc89bda6641f3b4283b 49B
0f2a4d76d908968ca945d94fb9ff126171372b 2KB
0f5fe1c010721cd945f94d3158fe8e0789da61 342B
0fa0164ebfeb1157e5ead238c0e4dbc84b9daa 55B
generator-image-1.0.1 41B
generator-image-1.0.1 41B
1086246a7dabdf11b807af584e2dd78ac448c8 335B
1090679bc6cc8fec4ddec1b7e1f52a53949ab8 335B
10a89c143f9b42effba1528cb3005ca3276848 191B
1135465f951b79d5b784ae7e05f7e5855f1441 580B
119991674efe7ecee8dd18b93b097c85c0f00a 330B
11ac06a34e66a38b9befcce6192e4e9d0878cb 2.41MB
11c779dd98f0ddd8703940ba51a080b2789125 368B
11e68cd02fa9fc51660db803dd01979b87e0b1 86B
11ee0d5be60522b4afaa9f19e28ec995010b2d 27KB
11ee41e39be87157d19a7de7e3fe8b9e4f9d74 342B
12000ac3f3f774ecbda6013e36e6ad5b28f97b 531B
121e4956df55561a29c6c96da3e421d76c81c5 3KB
122226777e0194ea06227a9e582e333722bfb8 12KB
123cde05973ce388880f1c8a750d0a3c158344 2KB
127e95d05e673168ee4f065b5753279fccebca 50B
1293af98e0a5ab567275e7a36be60f12dcd861 189B
12bcec8e53275a3f9e6bb6d3560fa47296e307 50B
1369099e6124621d4ed1a6702b805b62bea196 160B
共 2003 条
- 1
- 2
- 3
- 4
- 5
- 6
- 21
资源评论
m0_69221245
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功