123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- package org.jeecg.modules.system.service.impl;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Set;
- import javax.annotation.Resource;
- import org.jeecg.common.constant.CommonConstant;
- import org.jeecg.common.system.query.QueryGenerator;
- import org.jeecg.common.util.oConvertUtils;
- import org.jeecg.modules.system.entity.SysPermission;
- import org.jeecg.modules.system.entity.SysPermissionDataRule;
- import org.jeecg.modules.system.mapper.SysPermissionDataRuleMapper;
- import org.jeecg.modules.system.mapper.SysPermissionMapper;
- import org.jeecg.modules.system.service.ISysPermissionDataRuleService;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- /**
- * <p>
- * 菜单权限规则 服务实现类
- * </p>
- *
- * @Author huangzhilin
- * @since 2019-04-01
- */
- @Service
- public class SysPermissionDataRuleImpl extends ServiceImpl<SysPermissionDataRuleMapper, SysPermissionDataRule>
- implements ISysPermissionDataRuleService {
- @Resource
- private SysPermissionMapper sysPermissionMapper;
- /**
- * 根据菜单id查询其对应的权限数据
- */
- @Override
- public List<SysPermissionDataRule> getPermRuleListByPermId(String permissionId) {
- LambdaQueryWrapper<SysPermissionDataRule> query = new LambdaQueryWrapper<SysPermissionDataRule>();
- query.eq(SysPermissionDataRule::getPermissionId, permissionId);
- query.orderByDesc(SysPermissionDataRule::getCreateTime);
- List<SysPermissionDataRule> permRuleList = this.list(query);
- return permRuleList;
- }
- /**
- * 根据前端传递的权限名称和权限值参数来查询权限数据
- */
- @Override
- public List<SysPermissionDataRule> queryPermissionRule(SysPermissionDataRule permRule) {
- QueryWrapper<SysPermissionDataRule> queryWrapper = QueryGenerator.initQueryWrapper(permRule, null);
- return this.list(queryWrapper);
- }
- @Override
- public List<SysPermissionDataRule> queryPermissionDataRules(String username,String permissionId) {
- List<String> idsList = this.baseMapper.queryDataRuleIds(username, permissionId);
- //update-begin--Author:scott Date:20191119 for:数据权限失效问题处理--------------------
- if(idsList==null || idsList.size()==0) {
- return null;
- }
- //update-end--Author:scott Date:20191119 for:数据权限失效问题处理--------------------
- Set<String> set = new HashSet<String>();
- for (String ids : idsList) {
- if(oConvertUtils.isEmpty(ids)) {
- continue;
- }
- String[] arr = ids.split(",");
- for (String id : arr) {
- if(oConvertUtils.isNotEmpty(id) && !set.contains(id)) {
- set.add(id);
- }
- }
- }
- if(set.size()==0) {
- return null;
- }
- return this.baseMapper.selectList(new QueryWrapper<SysPermissionDataRule>().in("id", set).eq("status",CommonConstant.STATUS_1));
- }
- @Override
- @Transactional
- public void savePermissionDataRule(SysPermissionDataRule sysPermissionDataRule) {
- this.save(sysPermissionDataRule);
- SysPermission permission = sysPermissionMapper.selectById(sysPermissionDataRule.getPermissionId());
- if(permission!=null && (permission.getRuleFlag()==null || permission.getRuleFlag().equals(CommonConstant.RULE_FLAG_0))) {
- permission.setRuleFlag(CommonConstant.RULE_FLAG_1);
- sysPermissionMapper.updateById(permission);
- }
- }
- @Override
- @Transactional
- public void deletePermissionDataRule(String dataRuleId) {
- SysPermissionDataRule dataRule = this.baseMapper.selectById(dataRuleId);
- if(dataRule!=null) {
- this.removeById(dataRuleId);
- Integer count = this.baseMapper.selectCount(new LambdaQueryWrapper<SysPermissionDataRule>().eq(SysPermissionDataRule::getPermissionId, dataRule.getPermissionId()));
- //注:同一个事务中删除后再查询是会认为数据已被删除的 若事务回滚上述删除无效
- if(count==null || count==0) {
- SysPermission permission = sysPermissionMapper.selectById(dataRule.getPermissionId());
- if(permission!=null && permission.getRuleFlag().equals(CommonConstant.RULE_FLAG_1)) {
- permission.setRuleFlag(CommonConstant.RULE_FLAG_0);
- sysPermissionMapper.updateById(permission);
- }
- }
- }
-
- }
- }
|