提交 e9c7c468 作者: 洪东保

权限校验

父级 8572e4a0
......@@ -28,11 +28,8 @@ public interface ModulePermissionService extends IService<ModulePermission> {
/**
* 校验权限
* @param deptIds
* @param userId
* @param purpose
* @return 权限集合
*/
List<ModulePermission> checkPermission(List<String> deptIds, String userId);
List<Long> checkPermission(List<String> deptIds, String userId, Integer purpose);
Boolean checkPermission(List<String> deptIds, String userId, Integer purpose, String targetId);
Boolean checkPermission(List<String> deptIds, String userId, Integer purpose, Long targetId);
}
......@@ -2,6 +2,7 @@ package com.cmeeting.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cmeeting.ad.entity.RobotSecurityUser;
......@@ -11,6 +12,7 @@ import com.cmeeting.constant.PermissionPruposeType;
import com.cmeeting.constant.RecordTemplateConstant;
import com.cmeeting.constant.UserTypeConstant;
import com.cmeeting.dto.PermissionCheckedDTO;
import com.cmeeting.exception.RobotBaseException;
import com.cmeeting.pojo.ModulePermission;
import com.cmeeting.service.IShareUserService;
import com.cmeeting.service.ModulePermissionService;
......@@ -28,13 +30,13 @@ import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @author Administrator
* @description 针对表【module_permission(权限表)】的数据库操作Service实现
* @createDate 2025-07-17 10:55:32
*/
* @author Administrator
* @description 针对表【module_permission(权限表)】的数据库操作Service实现
* @createDate 2025-07-17 10:55:32
*/
@Service
public class ModulePermissionServiceImpl extends ServiceImpl<ModulePermissionMapper, ModulePermission>
implements ModulePermissionService{
implements ModulePermissionService {
@Resource
private SysUserSyncService iSysUserSyncService;
......@@ -200,24 +202,39 @@ public class ModulePermissionServiceImpl extends ServiceImpl<ModulePermissionMap
}
@Override
public List<ModulePermission> checkPermission(List<String> deptIds, String userId) {
return this.list(new LambdaQueryWrapper<ModulePermission>()
.and(e -> e.eq(ModulePermission::getType, RecordTemplateConstant.REL_TYPE_DEPT).in(ModulePermission::getRelId, deptIds)
.or().eq(ModulePermission::getType, RecordTemplateConstant.REL_TYPE_USER).eq(ModulePermission::getRelId, userId))
.select(ModulePermission::getTargetId)
);
}
@Override
public List<Long> checkPermission(List<String> deptIds, String userId, Integer purpose) {
List<ModulePermission> list = this.list(new LambdaQueryWrapper<ModulePermission>()
.eq(ModulePermission::getPurpose, purpose)
.and(e->e.eq(ModulePermission::getType, RecordTemplateConstant.REL_TYPE_DEPT).in(ModulePermission::getRelId, deptIds)
.or().eq(ModulePermission::getType, RecordTemplateConstant.REL_TYPE_USER).eq(ModulePermission::getRelId, userId))
.select(ModulePermission::getTargetId)
.and(e -> e.eq(ModulePermission::getType, RecordTemplateConstant.REL_TYPE_DEPT).in(ModulePermission::getRelId, deptIds)
.or().eq(ModulePermission::getType, RecordTemplateConstant.REL_TYPE_USER).eq(ModulePermission::getRelId, userId)
.or().eq(ModulePermission::getType, RecordTemplateConstant.REL_TYPE_USER).eq(ModulePermission::getRelId, CategoryConstant.ALL_EN)
).select(ModulePermission::getTargetId)
);
return list.stream().map(ModulePermission::getTargetId).collect(Collectors.toList());
}
@Override
public Boolean checkPermission(List<String> deptIds, String userId, Integer purpose, String targetId) {
public Boolean checkPermission(List<String> deptIds, String userId, Integer purpose, Long targetId) {
boolean flag = purpose.equals(PermissionPruposeType.TEMPLATE_TYPE_PERMISSION) || purpose.equals(PermissionPruposeType.TEMPLATE_PERMISSION);
if (flag && targetId != null) {
throw new RobotBaseException("param error!");
}
return baseMapper.selectCount(new LambdaQueryWrapper<ModulePermission>()
.eq(ModulePermission::getPurpose, purpose)
.eq(ModulePermission::getTargetId, targetId)
.and(e->e.eq(ModulePermission::getType, RecordTemplateConstant.REL_TYPE_DEPT).in(ModulePermission::getRelId, deptIds)
.or().eq(ModulePermission::getType, RecordTemplateConstant.REL_TYPE_USER).eq(ModulePermission::getRelId, userId))
.select(ModulePermission::getTargetId)) > 0;
.eq(targetId != null, ModulePermission::getTargetId, targetId)
.and(e -> e.eq(ModulePermission::getType, RecordTemplateConstant.REL_TYPE_DEPT).in(ModulePermission::getRelId, deptIds)
.or().eq(ModulePermission::getType, RecordTemplateConstant.REL_TYPE_USER).eq(ModulePermission::getRelId, userId)
.or().eq(ModulePermission::getType, RecordTemplateConstant.REL_TYPE_USER).eq(ModulePermission::getRelId, CategoryConstant.ALL_EN)
).select(ModulePermission::getTargetId)) > 0;
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论