4390288c5c13ed6066556e9b0ed6862d333556a7.svn-base 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package org.jeecg.modules.system.service.impl;
  2. import java.util.HashSet;
  3. import java.util.List;
  4. import java.util.Set;
  5. import javax.annotation.Resource;
  6. import org.jeecg.common.constant.CommonConstant;
  7. import org.jeecg.common.system.query.QueryGenerator;
  8. import org.jeecg.common.util.oConvertUtils;
  9. import org.jeecg.modules.system.entity.SysPermission;
  10. import org.jeecg.modules.system.entity.SysPermissionDataRule;
  11. import org.jeecg.modules.system.mapper.SysPermissionDataRuleMapper;
  12. import org.jeecg.modules.system.mapper.SysPermissionMapper;
  13. import org.jeecg.modules.system.service.ISysPermissionDataRuleService;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.transaction.annotation.Transactional;
  16. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  17. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  18. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  19. /**
  20. * <p>
  21. * 菜单权限规则 服务实现类
  22. * </p>
  23. *
  24. * @Author huangzhilin
  25. * @since 2019-04-01
  26. */
  27. @Service
  28. public class SysPermissionDataRuleImpl extends ServiceImpl<SysPermissionDataRuleMapper, SysPermissionDataRule>
  29. implements ISysPermissionDataRuleService {
  30. @Resource
  31. private SysPermissionMapper sysPermissionMapper;
  32. /**
  33. * 根据菜单id查询其对应的权限数据
  34. */
  35. @Override
  36. public List<SysPermissionDataRule> getPermRuleListByPermId(String permissionId) {
  37. LambdaQueryWrapper<SysPermissionDataRule> query = new LambdaQueryWrapper<SysPermissionDataRule>();
  38. query.eq(SysPermissionDataRule::getPermissionId, permissionId);
  39. query.orderByDesc(SysPermissionDataRule::getCreateTime);
  40. List<SysPermissionDataRule> permRuleList = this.list(query);
  41. return permRuleList;
  42. }
  43. /**
  44. * 根据前端传递的权限名称和权限值参数来查询权限数据
  45. */
  46. @Override
  47. public List<SysPermissionDataRule> queryPermissionRule(SysPermissionDataRule permRule) {
  48. QueryWrapper<SysPermissionDataRule> queryWrapper = QueryGenerator.initQueryWrapper(permRule, null);
  49. return this.list(queryWrapper);
  50. }
  51. @Override
  52. public List<SysPermissionDataRule> queryPermissionDataRules(String username,String permissionId) {
  53. List<String> idsList = this.baseMapper.queryDataRuleIds(username, permissionId);
  54. //update-begin--Author:scott Date:20191119 for:数据权限失效问题处理--------------------
  55. if(idsList==null || idsList.size()==0) {
  56. return null;
  57. }
  58. //update-end--Author:scott Date:20191119 for:数据权限失效问题处理--------------------
  59. Set<String> set = new HashSet<String>();
  60. for (String ids : idsList) {
  61. if(oConvertUtils.isEmpty(ids)) {
  62. continue;
  63. }
  64. String[] arr = ids.split(",");
  65. for (String id : arr) {
  66. if(oConvertUtils.isNotEmpty(id) && !set.contains(id)) {
  67. set.add(id);
  68. }
  69. }
  70. }
  71. if(set.size()==0) {
  72. return null;
  73. }
  74. return this.baseMapper.selectList(new QueryWrapper<SysPermissionDataRule>().in("id", set).eq("status",CommonConstant.STATUS_1));
  75. }
  76. @Override
  77. @Transactional
  78. public void savePermissionDataRule(SysPermissionDataRule sysPermissionDataRule) {
  79. this.save(sysPermissionDataRule);
  80. SysPermission permission = sysPermissionMapper.selectById(sysPermissionDataRule.getPermissionId());
  81. if(permission!=null && (permission.getRuleFlag()==null || permission.getRuleFlag().equals(CommonConstant.RULE_FLAG_0))) {
  82. permission.setRuleFlag(CommonConstant.RULE_FLAG_1);
  83. sysPermissionMapper.updateById(permission);
  84. }
  85. }
  86. @Override
  87. @Transactional
  88. public void deletePermissionDataRule(String dataRuleId) {
  89. SysPermissionDataRule dataRule = this.baseMapper.selectById(dataRuleId);
  90. if(dataRule!=null) {
  91. this.removeById(dataRuleId);
  92. Integer count = this.baseMapper.selectCount(new LambdaQueryWrapper<SysPermissionDataRule>().eq(SysPermissionDataRule::getPermissionId, dataRule.getPermissionId()));
  93. //注:同一个事务中删除后再查询是会认为数据已被删除的 若事务回滚上述删除无效
  94. if(count==null || count==0) {
  95. SysPermission permission = sysPermissionMapper.selectById(dataRule.getPermissionId());
  96. if(permission!=null && permission.getRuleFlag().equals(CommonConstant.RULE_FLAG_1)) {
  97. permission.setRuleFlag(CommonConstant.RULE_FLAG_0);
  98. sysPermissionMapper.updateById(permission);
  99. }
  100. }
  101. }
  102. }
  103. }