提交 e9c7c468 作者: 洪东保

权限校验

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