czh-20260501-增加密级相关内容
This commit is contained in:
+12
@@ -531,4 +531,16 @@ public class TaskListController {
|
||||
return Result.OK(list);
|
||||
}
|
||||
|
||||
@AutoLog(value = "任务清单表-获取当前用户密级")
|
||||
@Operation(summary = "获取当前用户密级")
|
||||
@GetMapping(value = "/getCurrentUserSecurityLevel")
|
||||
public Result<Integer> getCurrentUserSecurityLevel() {
|
||||
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
Integer level = loginUser.getUserSecurityLevel();
|
||||
if (level == null) {
|
||||
level = 3;
|
||||
}
|
||||
return Result.OK("查询成功", level);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+10
@@ -71,6 +71,16 @@ public class TaskList implements Serializable {
|
||||
@Schema(description = "协作者名称")
|
||||
private java.lang.String collaboratorNames;
|
||||
|
||||
/**密级: 1=非密, 2=内部, 3=秘密, 4=机密*/
|
||||
@Excel(name = "密级", width = 15)
|
||||
@Schema(description = "密级:1=非密,2=内部,3=秘密,4=机密")
|
||||
private java.lang.Integer secretLevel;
|
||||
|
||||
/**密级文本*/
|
||||
@Excel(name = "密级文本", width = 15)
|
||||
@Schema(description = "密级文本")
|
||||
private java.lang.String secretText;
|
||||
|
||||
@TableField(exist = false)
|
||||
@Schema(description = "创建时间字符串")
|
||||
private java.lang.String createTimeStr;
|
||||
|
||||
+8
@@ -84,6 +84,14 @@ public class TaskListFavorite implements Serializable {
|
||||
@TableLogic
|
||||
private java.lang.String delFlag;
|
||||
|
||||
@TableField(exist = false)
|
||||
@Schema(description = "清单密级")
|
||||
private java.lang.Integer secretLevel;
|
||||
|
||||
@TableField(exist = false)
|
||||
@Schema(description = "清单密级文本")
|
||||
private java.lang.String secretText;
|
||||
|
||||
@TableField(exist = false)
|
||||
@Schema(description = "当前用户对该清单的权限")
|
||||
private java.lang.String permission;
|
||||
|
||||
+11
@@ -14,4 +14,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
*/
|
||||
public interface TaskListMapper extends BaseMapper<TaskList> {
|
||||
|
||||
/**
|
||||
* 查询当前用户可见的所有清单(包含部门、所有者、协作者、任务负责人/参与人维度)
|
||||
* @param userId 当前用户ID
|
||||
* @param userSecLevel 当前用户密级
|
||||
* @param orgCode 当前用户部门编码
|
||||
* @return 可见清单列表
|
||||
*/
|
||||
List<TaskList> selectVisibleLists(@Param("userId") String userId,
|
||||
@Param("userSecLevel") Integer userSecLevel,
|
||||
@Param("orgCode") String orgCode);
|
||||
|
||||
}
|
||||
|
||||
+50
@@ -2,4 +2,54 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.jeecg.modules.demo.tasklist.mapper.TaskListMapper">
|
||||
|
||||
<select id="selectVisibleLists" resultType="org.jeecg.modules.demo.tasklist.entity.TaskList">
|
||||
SELECT DISTINCT t.*
|
||||
FROM task_list t
|
||||
WHERE t.del_flag = '0'
|
||||
AND (
|
||||
-- 条件1:同一部门的人能看到互相创建的清单
|
||||
-- 注意:task_list.create_by 存的是 username,所以用 u.username 匹配
|
||||
<if test="orgCode != null and orgCode != ''">
|
||||
EXISTS (
|
||||
SELECT 1 FROM sys_user u
|
||||
WHERE u.username = t.create_by
|
||||
AND u.org_code = #{orgCode}
|
||||
)
|
||||
OR
|
||||
</if>
|
||||
-- 条件2:当前用户是所有者(permission=1)
|
||||
EXISTS (
|
||||
SELECT 1 FROM task_list_permission p
|
||||
WHERE p.main_id = t.id
|
||||
AND p.user_id = #{userId}
|
||||
AND p.permission = '1'
|
||||
AND p.del_flag = '0'
|
||||
)
|
||||
-- 条件3:当前用户是协作者(permission=2/3)
|
||||
OR EXISTS (
|
||||
SELECT 1 FROM task_list_permission p
|
||||
WHERE p.main_id = t.id
|
||||
AND p.user_id = #{userId}
|
||||
AND p.permission IN ('2', '3')
|
||||
AND p.del_flag = '0'
|
||||
)
|
||||
-- 条件4:清单中某任务的负责人/参与人是当前用户
|
||||
OR EXISTS (
|
||||
SELECT 1 FROM task_list_detial d
|
||||
WHERE d.main_id = t.id
|
||||
AND d.del_flag = '0'
|
||||
AND (
|
||||
d.assignee_id LIKE CONCAT('%', #{userId}, '%')
|
||||
OR d.participant_id LIKE CONCAT('%', #{userId}, '%')
|
||||
)
|
||||
)
|
||||
)
|
||||
-- 条件5:密级过滤(用户密级数值 > 清单密级数值才能看到)
|
||||
AND (
|
||||
t.secret_level IS NULL
|
||||
OR t.secret_level < #{userSecLevel}
|
||||
)
|
||||
ORDER BY t.create_time ASC
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
-1
@@ -97,5 +97,4 @@ public interface ITaskListService extends IService<TaskList> {
|
||||
List<TaskListDetial> myResponsibleTasks();
|
||||
|
||||
List<TaskListDetial> myFollowedTasks();
|
||||
|
||||
}
|
||||
|
||||
+69
@@ -1,8 +1,10 @@
|
||||
package org.jeecg.modules.demo.tasklist.service.impl;
|
||||
|
||||
import org.jeecg.modules.demo.tasklist.entity.TaskList;
|
||||
import org.jeecg.modules.demo.tasklist.entity.TaskListDetial;
|
||||
import org.jeecg.modules.demo.tasklist.entity.TaskListPermission;
|
||||
import org.jeecg.modules.demo.tasklist.mapper.TaskListDetialMapper;
|
||||
import org.jeecg.modules.demo.tasklist.mapper.TaskListMapper;
|
||||
import org.jeecg.modules.demo.tasklist.mapper.TaskListPermissionMapper;
|
||||
import org.jeecg.modules.demo.tasklist.service.ITaskListDetialService;
|
||||
import org.jeecg.modules.demo.tasklist.vo.CreateTaskReq;
|
||||
@@ -20,6 +22,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -29,6 +32,8 @@ public class TaskListDetialServiceImpl extends ServiceImpl<TaskListDetialMapper,
|
||||
@Autowired
|
||||
private TaskListDetialMapper taskListDetialMapper;
|
||||
@Autowired
|
||||
private TaskListMapper taskListMapper;
|
||||
@Autowired
|
||||
private TaskListPermissionMapper taskListPermissionMapper;
|
||||
@Autowired
|
||||
private ISysBaseAPI sysBaseAPI;
|
||||
@@ -132,6 +137,47 @@ public class TaskListDetialServiceImpl extends ServiceImpl<TaskListDetialMapper,
|
||||
task.setAssigneeName(existing.getAssigneeName());
|
||||
}
|
||||
|
||||
TaskList taskListEntity = taskListMapper.selectById(existing.getMainId());
|
||||
if (taskListEntity != null) {
|
||||
Integer listSecLevel = taskListEntity.getSecretLevel();
|
||||
if (listSecLevel == null) {
|
||||
listSecLevel = 1;
|
||||
}
|
||||
if (task.getAssigneeId() != null) {
|
||||
String filtered = filterUsersBySecLevel(task.getAssigneeId(), listSecLevel);
|
||||
if (!Objects.equals(filtered, task.getAssigneeId())) {
|
||||
log.warn(String.format("editTask 密级过滤: 清单[%s] 负责人 原始[%s] 过滤后[%s]",
|
||||
taskListEntity.getId(), task.getAssigneeId(), filtered));
|
||||
}
|
||||
task.setAssigneeId(filtered);
|
||||
if (oConvertUtils.isEmpty(filtered)) {
|
||||
task.setAssigneeName("");
|
||||
}
|
||||
}
|
||||
if (task.getParticipantId() != null) {
|
||||
String filtered = filterUsersBySecLevel(task.getParticipantId(), listSecLevel);
|
||||
if (!Objects.equals(filtered, task.getParticipantId())) {
|
||||
log.warn(String.format("editTask 密级过滤: 清单[%s] 参与人 原始[%s] 过滤后[%s]",
|
||||
taskListEntity.getId(), task.getParticipantId(), filtered));
|
||||
}
|
||||
task.setParticipantId(filtered);
|
||||
if (oConvertUtils.isEmpty(filtered)) {
|
||||
task.setParticipantName("");
|
||||
}
|
||||
}
|
||||
if (task.getFollowersId() != null) {
|
||||
String filtered = filterUsersBySecLevel(task.getFollowersId(), listSecLevel);
|
||||
if (!Objects.equals(filtered, task.getFollowersId())) {
|
||||
log.warn(String.format("editTask 密级过滤: 清单[%s] 关注人 原始[%s] 过滤后[%s]",
|
||||
taskListEntity.getId(), task.getFollowersId(), filtered));
|
||||
}
|
||||
task.setFollowersId(filtered);
|
||||
if (oConvertUtils.isEmpty(filtered)) {
|
||||
task.setFollowersName("");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (task.getAssigneeId() != null) {
|
||||
if (oConvertUtils.isNotEmpty(task.getAssigneeId()) && oConvertUtils.isEmpty(task.getAssigneeName())) {
|
||||
task.setAssigneeName(translateUserIdsToNames(task.getAssigneeId()));
|
||||
@@ -557,4 +603,27 @@ public class TaskListDetialServiceImpl extends ServiceImpl<TaskListDetialMapper,
|
||||
}
|
||||
return idSet.isEmpty() ? null : String.join(",", idSet);
|
||||
}
|
||||
|
||||
private String filterUsersBySecLevel(String userIds, Integer listSecLevel) {
|
||||
if (oConvertUtils.isEmpty(userIds)) return userIds;
|
||||
if (listSecLevel == null) {
|
||||
listSecLevel = 1;
|
||||
}
|
||||
String[] ids = userIds.split(",");
|
||||
java.util.List<String> validIds = new java.util.ArrayList<>();
|
||||
for (String id : ids) {
|
||||
LoginUser user = sysBaseAPI.getUserById(id.trim());
|
||||
if (user == null) {
|
||||
continue;
|
||||
}
|
||||
Integer userSecLevel = user.getUserSecurityLevel();
|
||||
if (userSecLevel == null) {
|
||||
userSecLevel = 3;
|
||||
}
|
||||
if (userSecLevel > listSecLevel) {
|
||||
validIds.add(id.trim());
|
||||
}
|
||||
}
|
||||
return String.join(",", validIds);
|
||||
}
|
||||
}
|
||||
|
||||
+141
-26
@@ -140,6 +140,14 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
|
||||
public String createTaskList(CreateTaskListReq req) {
|
||||
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String userId = loginUser.getId();
|
||||
Integer userSecLevel = loginUser.getUserSecurityLevel();
|
||||
if (userSecLevel == null) {
|
||||
userSecLevel = 3;
|
||||
}
|
||||
|
||||
if (req.getSecretLevel() != null && req.getSecretLevel() >= userSecLevel) {
|
||||
throw new RuntimeException("您无权创建该密级的清单");
|
||||
}
|
||||
|
||||
if (oConvertUtils.isNotEmpty(req.getPid())) {
|
||||
TaskListFavorite groupFav = taskListFavoriteMapper.selectById(req.getPid());
|
||||
@@ -150,6 +158,8 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
|
||||
|
||||
TaskList taskList = new TaskList();
|
||||
taskList.setTasklistName(req.getTasklistName());
|
||||
taskList.setSecretLevel(req.getSecretLevel());
|
||||
taskList.setSecretText(getSecretText(req.getSecretLevel()));
|
||||
taskListMapper.insert(taskList);
|
||||
|
||||
TaskListDetial defaultGroup = new TaskListDetial();
|
||||
@@ -259,20 +269,47 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
|
||||
public List<TaskListFavorite> getMyFavorites() {
|
||||
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String userId = loginUser.getId();
|
||||
Integer userSecLevel = loginUser.getUserSecurityLevel();
|
||||
if (userSecLevel == null) {
|
||||
userSecLevel = 3;
|
||||
}
|
||||
|
||||
QueryWrapper<TaskListFavorite> query = new QueryWrapper<>();
|
||||
query.eq("user_id", userId);
|
||||
query.eq("del_flag", "0");
|
||||
query.orderByAsc("type");
|
||||
query.orderByAsc("sort_order");
|
||||
List<TaskListFavorite> list = taskListFavoriteMapper.selectList(query);
|
||||
for (TaskListFavorite fav : list) {
|
||||
if ("1".equals(fav.getType()) && fav.getMainId() != null && fav.getTasklistName() == null) {
|
||||
TaskList tl = taskListMapper.selectById(fav.getMainId());
|
||||
if (tl != null) {
|
||||
fav.setTasklistName(tl.getTasklistName());
|
||||
}
|
||||
}
|
||||
List<TaskListFavorite> favorites = taskListFavoriteMapper.selectList(query);
|
||||
|
||||
List<String> mainIds = new java.util.ArrayList<>();
|
||||
for (TaskListFavorite fav : favorites) {
|
||||
if ("1".equals(fav.getType()) && fav.getMainId() != null) {
|
||||
mainIds.add(fav.getMainId());
|
||||
}
|
||||
}
|
||||
|
||||
java.util.Map<String, TaskList> listMap = new java.util.HashMap<>();
|
||||
if (!mainIds.isEmpty()) {
|
||||
List<TaskList> lists = taskListMapper.selectBatchIds(mainIds);
|
||||
for (TaskList tl : lists) {
|
||||
listMap.put(tl.getId(), tl);
|
||||
}
|
||||
}
|
||||
|
||||
List<TaskListFavorite> result = new java.util.ArrayList<>();
|
||||
for (TaskListFavorite fav : favorites) {
|
||||
if ("1".equals(fav.getType()) && fav.getMainId() != null) {
|
||||
TaskList tl = listMap.get(fav.getMainId());
|
||||
if (tl == null) continue;
|
||||
|
||||
Integer listSecLevel = tl.getSecretLevel() != null ? tl.getSecretLevel() : 1;
|
||||
if (userSecLevel <= listSecLevel) {
|
||||
continue;
|
||||
}
|
||||
fav.setTasklistName(tl.getTasklistName());
|
||||
fav.setSecretLevel(tl.getSecretLevel());
|
||||
fav.setSecretText(tl.getSecretText());
|
||||
|
||||
LambdaQueryWrapper<TaskListPermission> permQuery = new LambdaQueryWrapper<>();
|
||||
permQuery.eq(TaskListPermission::getMainId, fav.getMainId());
|
||||
permQuery.eq(TaskListPermission::getUserId, userId);
|
||||
@@ -280,9 +317,12 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
|
||||
if (perm != null) {
|
||||
fav.setPermission(perm.getPermission());
|
||||
}
|
||||
result.add(fav);
|
||||
} else {
|
||||
result.add(fav);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -440,6 +480,11 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
|
||||
public List<TaskList> getMyOwnLists() {
|
||||
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String userId = loginUser.getId();
|
||||
Integer userSecLevel = loginUser.getUserSecurityLevel();
|
||||
if (userSecLevel == null) {
|
||||
userSecLevel = 3;
|
||||
}
|
||||
final Integer finalUserSecLevel = userSecLevel;
|
||||
|
||||
LambdaQueryWrapper<TaskListPermission> permQuery = new LambdaQueryWrapper<>();
|
||||
permQuery.eq(TaskListPermission::getUserId, userId);
|
||||
@@ -453,6 +498,7 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
|
||||
|
||||
LambdaQueryWrapper<TaskList> query = new LambdaQueryWrapper<>();
|
||||
query.in(TaskList::getId, mainIds);
|
||||
query.and(w -> w.lt(TaskList::getSecretLevel, finalUserSecLevel).or().isNull(TaskList::getSecretLevel));
|
||||
query.orderByAsc(TaskList::getCreateTime);
|
||||
return enrichListSummaries(taskListMapper.selectList(query));
|
||||
}
|
||||
@@ -461,26 +507,25 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
|
||||
public List<TaskList> getAllLists() {
|
||||
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String userId = loginUser.getId();
|
||||
|
||||
LambdaQueryWrapper<TaskListPermission> permQuery = new LambdaQueryWrapper<>();
|
||||
permQuery.eq(TaskListPermission::getUserId, userId);
|
||||
List<TaskListPermission> perms = taskListPermissionMapper.selectList(permQuery);
|
||||
|
||||
List<String> mainIds = perms.stream().map(TaskListPermission::getMainId).distinct().collect(java.util.stream.Collectors.toList());
|
||||
if (mainIds.isEmpty()) {
|
||||
return java.util.Collections.emptyList();
|
||||
Integer userSecLevel = loginUser.getUserSecurityLevel();
|
||||
if (userSecLevel == null) {
|
||||
userSecLevel = 3;
|
||||
}
|
||||
String orgCode = loginUser.getOrgCode();
|
||||
|
||||
LambdaQueryWrapper<TaskList> query = new LambdaQueryWrapper<>();
|
||||
query.in(TaskList::getId, mainIds);
|
||||
query.orderByAsc(TaskList::getCreateTime);
|
||||
return enrichListSummaries(taskListMapper.selectList(query));
|
||||
List<TaskList> lists = taskListMapper.selectVisibleLists(userId, userSecLevel, orgCode);
|
||||
return enrichListSummaries(lists);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TaskList> getMyCollabLists() {
|
||||
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String userId = loginUser.getId();
|
||||
Integer userSecLevel = loginUser.getUserSecurityLevel();
|
||||
if (userSecLevel == null) {
|
||||
userSecLevel = 3;
|
||||
}
|
||||
final Integer finalUserSecLevel = userSecLevel;
|
||||
|
||||
LambdaQueryWrapper<TaskListPermission> permQuery = new LambdaQueryWrapper<>();
|
||||
permQuery.eq(TaskListPermission::getUserId, userId);
|
||||
@@ -494,6 +539,7 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
|
||||
|
||||
LambdaQueryWrapper<TaskList> query = new LambdaQueryWrapper<>();
|
||||
query.in(TaskList::getId, mainIds);
|
||||
query.and(w -> w.lt(TaskList::getSecretLevel, finalUserSecLevel).or().isNull(TaskList::getSecretLevel));
|
||||
query.orderByAsc(TaskList::getCreateTime);
|
||||
return enrichListSummaries(taskListMapper.selectList(query));
|
||||
}
|
||||
@@ -580,6 +626,29 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
|
||||
throw new RuntimeException("权限类型无效,仅支持可阅读(2)或可编辑(3)");
|
||||
}
|
||||
|
||||
TaskList taskList = taskListMapper.selectById(req.getTaskListId());
|
||||
if (taskList == null) {
|
||||
throw new RuntimeException("清单不存在");
|
||||
}
|
||||
|
||||
LoginUser targetUser = sysBaseAPI.getUserById(req.getUserId());
|
||||
if (targetUser == null) {
|
||||
throw new RuntimeException("用户不存在");
|
||||
}
|
||||
|
||||
Integer targetUserSecLevel = targetUser.getUserSecurityLevel();
|
||||
Integer listSecLevel = taskList.getSecretLevel();
|
||||
if (listSecLevel == null) {
|
||||
listSecLevel = 1;
|
||||
}
|
||||
if (targetUserSecLevel == null) {
|
||||
targetUserSecLevel = 3;
|
||||
}
|
||||
|
||||
if (targetUserSecLevel <= listSecLevel) {
|
||||
throw new RuntimeException("该用户密级不足,无法添加为协作人");
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<TaskListPermission> existCheck = new LambdaQueryWrapper<>();
|
||||
existCheck.eq(TaskListPermission::getMainId, req.getTaskListId());
|
||||
existCheck.eq(TaskListPermission::getUserId, req.getUserId());
|
||||
@@ -669,6 +738,23 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
|
||||
public void addToFavorites(String taskListId, String pid) {
|
||||
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String userId = loginUser.getId();
|
||||
Integer userSecLevel = loginUser.getUserSecurityLevel();
|
||||
if (userSecLevel == null) {
|
||||
userSecLevel = 3;
|
||||
}
|
||||
|
||||
TaskList taskList = taskListMapper.selectById(taskListId);
|
||||
if (taskList == null) {
|
||||
throw new RuntimeException("清单不存在");
|
||||
}
|
||||
|
||||
Integer listSecLevel = taskList.getSecretLevel();
|
||||
if (listSecLevel == null) {
|
||||
listSecLevel = 1;
|
||||
}
|
||||
if (userSecLevel <= listSecLevel) {
|
||||
throw new RuntimeException("您无权收藏该密级的清单");
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<TaskListFavorite> existCheck = new LambdaQueryWrapper<>();
|
||||
existCheck.eq(TaskListFavorite::getMainId, taskListId);
|
||||
@@ -700,11 +786,6 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
|
||||
return;
|
||||
}
|
||||
|
||||
TaskList taskList = taskListMapper.selectById(taskListId);
|
||||
if (taskList == null) {
|
||||
throw new RuntimeException("清单不存在");
|
||||
}
|
||||
|
||||
String normalizedPid = oConvertUtils.isNotEmpty(pid) ? pid : null;
|
||||
if (normalizedPid != null) {
|
||||
TaskListFavorite groupFav = taskListFavoriteMapper.selectById(normalizedPid);
|
||||
@@ -744,4 +825,38 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
|
||||
return taskListDetialMapper.selectByFollowersId(loginUser.getId(), loginUser.getId());
|
||||
}
|
||||
|
||||
private String getSecretText(Integer level) {
|
||||
if (level == null) return "非密";
|
||||
switch (level) {
|
||||
case 1: return "非密";
|
||||
case 2: return "内部";
|
||||
case 3: return "秘密";
|
||||
case 4: return "机密";
|
||||
default: return "非密";
|
||||
}
|
||||
}
|
||||
|
||||
private String filterUsersBySecLevel(String userIds, Integer listSecLevel) {
|
||||
if (oConvertUtils.isEmpty(userIds)) return userIds;
|
||||
if (listSecLevel == null) {
|
||||
listSecLevel = 1;
|
||||
}
|
||||
String[] ids = userIds.split(",");
|
||||
java.util.List<String> validIds = new java.util.ArrayList<>();
|
||||
for (String id : ids) {
|
||||
LoginUser user = sysBaseAPI.getUserById(id.trim());
|
||||
if (user == null) {
|
||||
continue;
|
||||
}
|
||||
Integer userSecLevel = user.getUserSecurityLevel();
|
||||
if (userSecLevel == null) {
|
||||
userSecLevel = 3;
|
||||
}
|
||||
if (userSecLevel > listSecLevel) {
|
||||
validIds.add(id.trim());
|
||||
}
|
||||
}
|
||||
return String.join(",", validIds);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+3
@@ -15,4 +15,7 @@ public class CreateTaskListReq {
|
||||
|
||||
@Schema(description = "目标排序位置(可选,不传则追加到末尾)")
|
||||
private Integer sortOrder;
|
||||
|
||||
@Schema(description = "密级:1=非密,2=内部,3=秘密,4=机密")
|
||||
private Integer secretLevel;
|
||||
}
|
||||
|
||||
+10
@@ -65,6 +65,16 @@ public class TaskListPage {
|
||||
@ExcelCollection(name="任务清单权限表")
|
||||
@Schema(description = "任务清单权限表")
|
||||
private List<TaskListPermission> taskListPermissionList;
|
||||
/**密级: 1=非密, 2=内部, 3=秘密, 4=机密*/
|
||||
@Excel(name = "密级", width = 15)
|
||||
@Schema(description = "密级:1=非密,2=内部,3=秘密,4=机密")
|
||||
private java.lang.Integer secretLevel;
|
||||
|
||||
/**密级文本*/
|
||||
@Excel(name = "密级文本", width = 15)
|
||||
@Schema(description = "密级文本")
|
||||
private java.lang.String secretText;
|
||||
|
||||
@ExcelCollection(name="任务清单收藏表")
|
||||
@Schema(description = "任务清单收藏表")
|
||||
private List<TaskListFavorite> taskListFavoriteList;
|
||||
|
||||
Reference in New Issue
Block a user