package org.jeecg.modules.dnc.service.impl; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.collections4.ListUtils; import org.jeecg.modules.dnc.entity.PermissionStreamNew; import org.jeecg.modules.dnc.entity.ProductMix; import org.jeecg.modules.dnc.mapper.PermissionStreamNewMapper; import org.jeecg.modules.dnc.service.IPermissionStreamNewService; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service public class PermissionStreamNewServiceImpl extends ServiceImpl implements IPermissionStreamNewService { /** * 根据用户id获取结构树权限 * @param userId * @return */ @Override public List loadProductMix(String userId,List productIdList){ return baseMapper.loadProductMix(userId,productIdList); } /** * 管理员获取所有权限 * @return */ @Override public List loadProductMixAll(String userId){ return baseMapper.loadProductMixAll(userId); } /** * 通过业务id和业务类型获取权限 * @param businessId * @param businessType * @return */ @Override public List loadPermissionStreamNewByBusinessId(String businessId,String businessType,String type){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq(StrUtil.isNotEmpty(businessId),"business_id",businessId); queryWrapper.eq(StrUtil.isNotEmpty(businessType),"business_type",businessType); //用户权限,部门字段为空 if("0".equals(type)) { queryWrapper.isNotNull("user_id"); }else if("1".equals(type)){ queryWrapper.isNull("user_id"); } queryWrapper.eq("delete_flag",0); return baseMapper.selectList(queryWrapper); } /** * 通过业务id和用户id获取权限 * @param businessId * @param userId * @return */ @Override public PermissionStreamNew loadPermissionStreamNewByBusinessIdAndUserId(String businessId, String userId,String businessType){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq(StrUtil.isNotEmpty(businessId),"business_id",businessId); queryWrapper.eq(StrUtil.isNotEmpty(userId),"user_id",userId); queryWrapper.eq(StrUtil.isNotEmpty(businessType),"business_type",businessType); queryWrapper.eq("delete_flag",0); queryWrapper.isNull("depart_id"); return baseMapper.selectOne(queryWrapper); } /** * 通过业务id和业务类型和部门id获取部门权限 * @param businessId * @param businessType * @param departId * @return */ @Override public PermissionStreamNew loadPermissionStreamNewByBusinessIdAndDepartId(String businessId, String departId,String businessType){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq(StrUtil.isNotEmpty(businessId),"business_id",businessId); queryWrapper.eq(StrUtil.isNotEmpty(departId),"depart_id",departId); queryWrapper.eq(StrUtil.isNotEmpty(businessType),"business_type",businessType); queryWrapper.eq("delete_flag",0); queryWrapper.isNull("user_id"); return baseMapper.selectOne(queryWrapper); } /** * 通过businessId获取权限 * @param businessId * @return */ @Override public List loadProductMixByBusinessId(String businessId,String businessType){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq(StrUtil.isNotEmpty(businessId),"business_id",businessId); queryWrapper.eq(StrUtil.isNotEmpty(businessType),"business_type",businessType); queryWrapper.eq("delete_flag",0); return baseMapper.selectList(queryWrapper); } /** * 通过业务id与类型删除权限 * @param businessId * @param businessType * @param type 0:用户权限,1:部门权限 * @return */ @Override public boolean deletePermissionStreamNewByBusinessId(String businessId,String businessType,String type){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq(StrUtil.isNotEmpty(businessId),"business_id",businessId); queryWrapper.eq(StrUtil.isNotEmpty(businessType),"business_type",businessType); //用户权限,部门字段为空 if("0".equals(type)){ queryWrapper.isNotNull("user_id"); queryWrapper.isNull("depart_id"); }else if("1".equals(type)){ queryWrapper.isNull("user_id"); queryWrapper.isNotNull("depart_id"); } queryWrapper.eq("delete_flag",0); return baseMapper.delete(queryWrapper)>0; } /** * 通过List批量删除 * @param permissionStreamNewList * @return */ @Override public boolean deletePermissionStreamNewByList(List permissionStreamNewList){ if(permissionStreamNewList == null || permissionStreamNewList.isEmpty()) return false; if(permissionStreamNewList.size() == 1) { return super.removeById(permissionStreamNewList.get(0).getId()); } List ids = new ArrayList<>(); permissionStreamNewList.forEach(item -> { ids.add(item.getId()); }); if (ids.size()>1000) { List> partition = ListUtils.partition(ids, 1000); for (List partitionList : partition) { super.removeByIds(partitionList); } }else { super.removeByIds(ids); } return true; } /** * 通过一组业务id和用户id和类型查询 * @param businessIds * @param userIds * @param businessType * @return */ @Override public List loadPermissionStreamNewByBusinessIdsAndUserIds(List businessIds,List userIds,String businessType){ if(businessIds == null || businessIds.isEmpty() || userIds == null || userIds.isEmpty()) return null; List total = new ArrayList<>(); List> compListArr; List> userIdsArr; if(businessIds.size() > 1000){ compListArr = ListUtils.partition(businessIds, 100); }else { compListArr = ListUtils.partition(businessIds, 1000); } if(userIds.size() > 1000){ userIdsArr = ListUtils.partition(userIds, 100); }else { userIdsArr = ListUtils.partition(userIds, 1000); } for(List compList : compListArr) { for(List userIdList : userIdsArr){ LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.in(PermissionStreamNew::getBusinessId, compList); queryWrapper.in(PermissionStreamNew::getUserId, userIdList); queryWrapper.eq(PermissionStreamNew::getBusinessType, businessType); queryWrapper.isNull(PermissionStreamNew::getDepartId); queryWrapper.eq(PermissionStreamNew::getDeleteFlag,0); List list = super.list(queryWrapper); if(list != null && !list.isEmpty()){ total.addAll(list); } } } return total; } /** * 通过一组业务id和部门id和类型查询 * @param businessIds * @param departIds * @param businessType * @return */ @Override public List loadPermissionStreamNewByBusinessIdsAndDepartIds(List businessIds,List departIds,String businessType){ if(businessIds == null || businessIds.isEmpty() || departIds == null || departIds.isEmpty()) return null; List total = new ArrayList<>(); List> compListArr; List> departListArr; if(businessIds.size() > 1000){ compListArr = ListUtils.partition(businessIds, 100); }else { compListArr = ListUtils.partition(businessIds, 1000); } if(departIds.size() > 1000){ departListArr = ListUtils.partition(departIds, 100); }else { departListArr = ListUtils.partition(departIds, 1000); } for(List compList : compListArr) { for(List departList : departListArr){ LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.in(PermissionStreamNew::getBusinessId, compList); queryWrapper.in(PermissionStreamNew::getDepartId, departList); queryWrapper.eq(PermissionStreamNew::getBusinessType, businessType); queryWrapper.isNull(PermissionStreamNew::getUserId); queryWrapper.eq(PermissionStreamNew::getDeleteFlag,0); List list = super.list(queryWrapper); if(list != null && !list.isEmpty()){ total.addAll(list); } } } return total; } }