feat(message): 消息通知列表权限白名单加入notice_role + 兜底本人创建可见

This commit is contained in:
wanghao
2026-08-10 16:03:30 +08:00
parent 245cffecb0
commit b6058c5f80
2 changed files with 8 additions and 6 deletions
@@ -48,7 +48,8 @@ public enum RoleEnum {
MANAGER("manager"),
MEDICALUSER("medicaluser"),
MEDICALADMIN("medicaladmin"),
HOS_DOCTOR("hos_doctor");
HOS_DOCTOR("hos_doctor"),
NOTICE_ROLE("notice_role");
/**
* 角色名
@@ -188,13 +188,14 @@ public class SysMessageNoticeServiceImpl extends ServiceImpl<SysMessageNoticeMap
private void applyAdminPermissionFilter(LambdaQueryWrapper<SysMessageNotice> wrapper) {
LoginUser loginUser = GlobalUtils.getLoginUser();
/*
* 1.后台接口的消息列表需要做一定数据权限控制需考虑的角色有admin,system,second_manager,third_manager
* 2.admin,system可查看所有的活动
* 1.后台接口的消息列表需要做一定数据权限控制需考虑的角色有admin,system,second_manager,third_manager,notice_role
* 2.admin,system,notice_role可查看所有的消息通知
* 3.second_manager,third_manager可查看管理单位下的消息列表
* 4.未命中上述白名单的角色,兜底只可查看本人创建的消息通知
*/
boolean permissions = false;
List<String> roleCodes = Arrays.asList(Objects.toString(loginUser.getRoleCodes(), "").split(","));
if (roleCodes.contains(RoleEnum.ADMIN_MANAGER.roleName) || roleCodes.contains(RoleEnum.SYSTEM.roleName) || roleCodes.contains(RoleEnum.WEIGHT_PLAN_ADMIN.roleName)) {
if (roleCodes.contains(RoleEnum.ADMIN_MANAGER.roleName) || roleCodes.contains(RoleEnum.SYSTEM.roleName) || roleCodes.contains(RoleEnum.WEIGHT_PLAN_ADMIN.roleName) || roleCodes.contains(RoleEnum.NOTICE_ROLE.roleName)) {
permissions = true;
} else if (roleCodes.contains(RoleEnum.SECOND_MANAGER.roleName)) {
if (StrUtil.isNotEmpty(loginUser.getDepartCodes())) {
@@ -203,8 +204,8 @@ public class SysMessageNoticeServiceImpl extends ServiceImpl<SysMessageNoticeMap
permissions = true;
}
}
// 没有权限,返回空结果
wrapper.eq(!permissions, SysMessageNotice::getId, "-1");
// 未命中权限白名单,兜底只查看本人创建的消息
wrapper.eq(!permissions, SysMessageNotice::getCreateBy, loginUser.getId());
}
/**