czh-20260501-增加密级相关内容

This commit is contained in:
zhihao
2026-05-01 02:35:48 +08:00
parent 78314bdaab
commit d5b30e2f08
10 changed files with 315 additions and 28 deletions
@@ -531,4 +531,16 @@ public class TaskListController {
return Result.OK(list); 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);
}
} }
@@ -71,6 +71,16 @@ public class TaskList implements Serializable {
@Schema(description = "协作者名称") @Schema(description = "协作者名称")
private java.lang.String collaboratorNames; 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) @TableField(exist = false)
@Schema(description = "创建时间字符串") @Schema(description = "创建时间字符串")
private java.lang.String createTimeStr; private java.lang.String createTimeStr;
@@ -84,6 +84,14 @@ public class TaskListFavorite implements Serializable {
@TableLogic @TableLogic
private java.lang.String delFlag; 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) @TableField(exist = false)
@Schema(description = "当前用户对该清单的权限") @Schema(description = "当前用户对该清单的权限")
private java.lang.String permission; private java.lang.String permission;
@@ -14,4 +14,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/ */
public interface TaskListMapper extends BaseMapper<TaskList> { 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);
} }
@@ -2,4 +2,54 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!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"> <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 &lt; #{userSecLevel}
)
ORDER BY t.create_time ASC
</select>
</mapper> </mapper>
@@ -97,5 +97,4 @@ public interface ITaskListService extends IService<TaskList> {
List<TaskListDetial> myResponsibleTasks(); List<TaskListDetial> myResponsibleTasks();
List<TaskListDetial> myFollowedTasks(); List<TaskListDetial> myFollowedTasks();
} }
@@ -1,8 +1,10 @@
package org.jeecg.modules.demo.tasklist.service.impl; 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.TaskListDetial;
import org.jeecg.modules.demo.tasklist.entity.TaskListPermission; import org.jeecg.modules.demo.tasklist.entity.TaskListPermission;
import org.jeecg.modules.demo.tasklist.mapper.TaskListDetialMapper; 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.mapper.TaskListPermissionMapper;
import org.jeecg.modules.demo.tasklist.service.ITaskListDetialService; import org.jeecg.modules.demo.tasklist.service.ITaskListDetialService;
import org.jeecg.modules.demo.tasklist.vo.CreateTaskReq; 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.Date;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Objects;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.Set; import java.util.Set;
@@ -29,6 +32,8 @@ public class TaskListDetialServiceImpl extends ServiceImpl<TaskListDetialMapper,
@Autowired @Autowired
private TaskListDetialMapper taskListDetialMapper; private TaskListDetialMapper taskListDetialMapper;
@Autowired @Autowired
private TaskListMapper taskListMapper;
@Autowired
private TaskListPermissionMapper taskListPermissionMapper; private TaskListPermissionMapper taskListPermissionMapper;
@Autowired @Autowired
private ISysBaseAPI sysBaseAPI; private ISysBaseAPI sysBaseAPI;
@@ -132,6 +137,47 @@ public class TaskListDetialServiceImpl extends ServiceImpl<TaskListDetialMapper,
task.setAssigneeName(existing.getAssigneeName()); 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 (task.getAssigneeId() != null) {
if (oConvertUtils.isNotEmpty(task.getAssigneeId()) && oConvertUtils.isEmpty(task.getAssigneeName())) { if (oConvertUtils.isNotEmpty(task.getAssigneeId()) && oConvertUtils.isEmpty(task.getAssigneeName())) {
task.setAssigneeName(translateUserIdsToNames(task.getAssigneeId())); task.setAssigneeName(translateUserIdsToNames(task.getAssigneeId()));
@@ -557,4 +603,27 @@ public class TaskListDetialServiceImpl extends ServiceImpl<TaskListDetialMapper,
} }
return idSet.isEmpty() ? null : String.join(",", idSet); 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);
}
} }
@@ -140,6 +140,14 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
public String createTaskList(CreateTaskListReq req) { public String createTaskList(CreateTaskListReq req) {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String userId = loginUser.getId(); 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())) { if (oConvertUtils.isNotEmpty(req.getPid())) {
TaskListFavorite groupFav = taskListFavoriteMapper.selectById(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 taskList = new TaskList();
taskList.setTasklistName(req.getTasklistName()); taskList.setTasklistName(req.getTasklistName());
taskList.setSecretLevel(req.getSecretLevel());
taskList.setSecretText(getSecretText(req.getSecretLevel()));
taskListMapper.insert(taskList); taskListMapper.insert(taskList);
TaskListDetial defaultGroup = new TaskListDetial(); TaskListDetial defaultGroup = new TaskListDetial();
@@ -259,20 +269,47 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
public List<TaskListFavorite> getMyFavorites() { public List<TaskListFavorite> getMyFavorites() {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String userId = loginUser.getId(); String userId = loginUser.getId();
Integer userSecLevel = loginUser.getUserSecurityLevel();
if (userSecLevel == null) {
userSecLevel = 3;
}
QueryWrapper<TaskListFavorite> query = new QueryWrapper<>(); QueryWrapper<TaskListFavorite> query = new QueryWrapper<>();
query.eq("user_id", userId); query.eq("user_id", userId);
query.eq("del_flag", "0"); query.eq("del_flag", "0");
query.orderByAsc("type"); query.orderByAsc("type");
query.orderByAsc("sort_order"); query.orderByAsc("sort_order");
List<TaskListFavorite> list = taskListFavoriteMapper.selectList(query); List<TaskListFavorite> favorites = taskListFavoriteMapper.selectList(query);
for (TaskListFavorite fav : list) {
if ("1".equals(fav.getType()) && fav.getMainId() != null && fav.getTasklistName() == null) { List<String> mainIds = new java.util.ArrayList<>();
TaskList tl = taskListMapper.selectById(fav.getMainId()); for (TaskListFavorite fav : favorites) {
if (tl != null) {
fav.setTasklistName(tl.getTasklistName());
}
}
if ("1".equals(fav.getType()) && fav.getMainId() != null) { 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<>(); LambdaQueryWrapper<TaskListPermission> permQuery = new LambdaQueryWrapper<>();
permQuery.eq(TaskListPermission::getMainId, fav.getMainId()); permQuery.eq(TaskListPermission::getMainId, fav.getMainId());
permQuery.eq(TaskListPermission::getUserId, userId); permQuery.eq(TaskListPermission::getUserId, userId);
@@ -280,9 +317,12 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
if (perm != null) { if (perm != null) {
fav.setPermission(perm.getPermission()); fav.setPermission(perm.getPermission());
} }
result.add(fav);
} else {
result.add(fav);
} }
} }
return list; return result;
} }
@Override @Override
@@ -440,6 +480,11 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
public List<TaskList> getMyOwnLists() { public List<TaskList> getMyOwnLists() {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String userId = loginUser.getId(); String userId = loginUser.getId();
Integer userSecLevel = loginUser.getUserSecurityLevel();
if (userSecLevel == null) {
userSecLevel = 3;
}
final Integer finalUserSecLevel = userSecLevel;
LambdaQueryWrapper<TaskListPermission> permQuery = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TaskListPermission> permQuery = new LambdaQueryWrapper<>();
permQuery.eq(TaskListPermission::getUserId, userId); permQuery.eq(TaskListPermission::getUserId, userId);
@@ -453,6 +498,7 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
LambdaQueryWrapper<TaskList> query = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TaskList> query = new LambdaQueryWrapper<>();
query.in(TaskList::getId, mainIds); query.in(TaskList::getId, mainIds);
query.and(w -> w.lt(TaskList::getSecretLevel, finalUserSecLevel).or().isNull(TaskList::getSecretLevel));
query.orderByAsc(TaskList::getCreateTime); query.orderByAsc(TaskList::getCreateTime);
return enrichListSummaries(taskListMapper.selectList(query)); return enrichListSummaries(taskListMapper.selectList(query));
} }
@@ -461,26 +507,25 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
public List<TaskList> getAllLists() { public List<TaskList> getAllLists() {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String userId = loginUser.getId(); String userId = loginUser.getId();
Integer userSecLevel = loginUser.getUserSecurityLevel();
LambdaQueryWrapper<TaskListPermission> permQuery = new LambdaQueryWrapper<>(); if (userSecLevel == null) {
permQuery.eq(TaskListPermission::getUserId, userId); userSecLevel = 3;
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();
} }
String orgCode = loginUser.getOrgCode();
LambdaQueryWrapper<TaskList> query = new LambdaQueryWrapper<>(); List<TaskList> lists = taskListMapper.selectVisibleLists(userId, userSecLevel, orgCode);
query.in(TaskList::getId, mainIds); return enrichListSummaries(lists);
query.orderByAsc(TaskList::getCreateTime);
return enrichListSummaries(taskListMapper.selectList(query));
} }
@Override @Override
public List<TaskList> getMyCollabLists() { public List<TaskList> getMyCollabLists() {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String userId = loginUser.getId(); String userId = loginUser.getId();
Integer userSecLevel = loginUser.getUserSecurityLevel();
if (userSecLevel == null) {
userSecLevel = 3;
}
final Integer finalUserSecLevel = userSecLevel;
LambdaQueryWrapper<TaskListPermission> permQuery = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TaskListPermission> permQuery = new LambdaQueryWrapper<>();
permQuery.eq(TaskListPermission::getUserId, userId); permQuery.eq(TaskListPermission::getUserId, userId);
@@ -494,6 +539,7 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
LambdaQueryWrapper<TaskList> query = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TaskList> query = new LambdaQueryWrapper<>();
query.in(TaskList::getId, mainIds); query.in(TaskList::getId, mainIds);
query.and(w -> w.lt(TaskList::getSecretLevel, finalUserSecLevel).or().isNull(TaskList::getSecretLevel));
query.orderByAsc(TaskList::getCreateTime); query.orderByAsc(TaskList::getCreateTime);
return enrichListSummaries(taskListMapper.selectList(query)); return enrichListSummaries(taskListMapper.selectList(query));
} }
@@ -580,6 +626,29 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
throw new RuntimeException("权限类型无效,仅支持可阅读(2)或可编辑(3)"); 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<>(); LambdaQueryWrapper<TaskListPermission> existCheck = new LambdaQueryWrapper<>();
existCheck.eq(TaskListPermission::getMainId, req.getTaskListId()); existCheck.eq(TaskListPermission::getMainId, req.getTaskListId());
existCheck.eq(TaskListPermission::getUserId, req.getUserId()); 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) { public void addToFavorites(String taskListId, String pid) {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String userId = loginUser.getId(); 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<>(); LambdaQueryWrapper<TaskListFavorite> existCheck = new LambdaQueryWrapper<>();
existCheck.eq(TaskListFavorite::getMainId, taskListId); existCheck.eq(TaskListFavorite::getMainId, taskListId);
@@ -700,11 +786,6 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
return; return;
} }
TaskList taskList = taskListMapper.selectById(taskListId);
if (taskList == null) {
throw new RuntimeException("清单不存在");
}
String normalizedPid = oConvertUtils.isNotEmpty(pid) ? pid : null; String normalizedPid = oConvertUtils.isNotEmpty(pid) ? pid : null;
if (normalizedPid != null) { if (normalizedPid != null) {
TaskListFavorite groupFav = taskListFavoriteMapper.selectById(normalizedPid); TaskListFavorite groupFav = taskListFavoriteMapper.selectById(normalizedPid);
@@ -744,4 +825,38 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
return taskListDetialMapper.selectByFollowersId(loginUser.getId(), loginUser.getId()); 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);
}
} }
@@ -15,4 +15,7 @@ public class CreateTaskListReq {
@Schema(description = "目标排序位置(可选,不传则追加到末尾)") @Schema(description = "目标排序位置(可选,不传则追加到末尾)")
private Integer sortOrder; private Integer sortOrder;
@Schema(description = "密级:1=非密,2=内部,3=秘密,4=机密")
private Integer secretLevel;
} }
@@ -65,6 +65,16 @@ public class TaskListPage {
@ExcelCollection(name="任务清单权限表") @ExcelCollection(name="任务清单权限表")
@Schema(description = "任务清单权限表") @Schema(description = "任务清单权限表")
private List<TaskListPermission> taskListPermissionList; 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="任务清单收藏表") @ExcelCollection(name="任务清单收藏表")
@Schema(description = "任务清单收藏表") @Schema(description = "任务清单收藏表")
private List<TaskListFavorite> taskListFavoriteList; private List<TaskListFavorite> taskListFavoriteList;