| 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 */@Servicepublic 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);				}			}		}			}}
 |