黑名单状态控制
引用文件
本文引用的文件
- docs/blacklist/index.md
- docs/blacklist/app-blacklisted.md
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/IAppBlackListedBpmService.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/AppBlackListedBpmServiceImpl.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/dal/dataobject/blacklisted/AppBlacklistedDO.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/util/BlacklistUtil.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/listener/RuleBlacklistStatusListener.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/controller/admin/blacklisted/vo/BlacklistedScopeVO.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/framework/config/BlacklistConfig.java
- yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/business/BpmBusinessValid.java
- yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/GlobalBpmBusinessValid.java
目录
简介
本文件围绕黑名单状态控制进行全面技术与实践说明,涵盖黑名单生命周期管理(状态定义、状态转换、状态同步)、启用/禁用操作(权限控制、业务验证、数据更新)、生效时间控制(定时/立即/延迟策略)、版本管理(版本号生成、版本比较、回滚)、以及配置选项与使用指南。目标是帮助管理员与开发者高效、安全地管理黑名单状态。
项目结构
黑名单状态控制主要位于黑名 单模块的业务实现层,配合 BPM 流程、规则引擎、Redis 缓存与字典数据,形成“配置-审批-同步-生效”的闭环。
图表来源
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/AppBlackListedBpmServiceImpl.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/dal/dataobject/blacklisted/AppBlacklistedDO.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/util/BlacklistUtil.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/listener/RuleBlacklistStatusListener.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/controller/admin/blacklisted/vo/BlacklistedScopeVO.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/framework/config/BlacklistConfig.java
章节来源
核心组件
- 主数据对象:AppBlacklistedDO,承载黑名单的基础信息、草稿、流程状态、生效状态等字段。
- 审批流服务:IAppBlackListedBpmService 与 AppBlackListedBpmServiceImpl,负责创建/取消审批流、处理审批结果、同步业务与关联表、更新 Redis。
- 工具类:BlacklistUtil,提供可编辑性校验、草稿状态更新等辅助方法。
- 规则监听:RuleBlacklistStatusListener,响应规则变更事件,将黑名单流程状态置为“未开始”。
- 配置开关:BlacklistConfig,控制是否启用规则引擎模式。
- 枚举:BpmBusinessValid、GlobalBpmBusinessValid,统一业务生效状态语义。
章节来源
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/dal/dataobject/blacklisted/AppBlacklistedDO.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/IAppBlackListedBpmService.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/AppBlackListedBpmServiceImpl.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/util/BlacklistUtil.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/listener/RuleBlacklistStatusListener.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/framework/config/BlacklistConfig.java
- yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/business/BpmBusinessValid.java
- yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/GlobalBpmBusinessValid.java
架构总览
黑名单状态控制贯穿“配置-审批-同步-生效”全流程,关键节点包括:
- 配置变更:管理员或普通用户发起变更,系统根据权限与配置决定是否进入审批流。
- 审批流:创建流程实例,传递业务变量;监听流程状态变化,执行业务数据与关联表的同步。
- 生效 同步:审批通过后,更新主表与关联表的生效状态,同步至 Redis,供设备侧查询使用。
- 规则联动:规则引擎变更时,触发黑名单流程状态调整,避免脏数据。
图表来源
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/AppBlackListedBpmServiceImpl.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/AppBlackListedBpmServiceImpl.java
详细组件分析
状态定义与生命周期
- 主表字段
- status:开启状态(启用/禁用)
- type:删除状态(如卸载/杀死)
- version:版本号(可空,空表示对所有版本生效)
- draft:未审批通过的草稿数据
- bpmStatus:流程状态(未开始/审批中/审批通过/审批不通过/已取消)
- valid:生效状态(未生效/已生效/已生效且做移除标记/已生效且做修改标记)
- 生命周期阶段
- 草稿阶段:bpmStatus=-1,valid=未生效
- 审批中:bpmStatus=审批中,valid=未生效
- 已生效:bpmStatus=审批通过,valid=已生效
- 已取消/未通过:bpmStatus=已取消/审批不通过,valid=未生效
图表来源
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/dal/dataobject/blacklisted/AppBlacklistedDO.java
- yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/business/BpmBusinessValid.java
章节来源
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/dal/dataobject/blacklisted/AppBlacklistedDO.java
- yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/business/BpmBusinessValid.java
状态转换与同步机制
- 创建审批流
- 校验是否存在运行中的流程实例,若存在则取消后提示“系统正在处理”
- 构建业务变量,包含基础信息与关联范围变更摘要
- 调用流程实例 API 创建流程,写入 processInstanceId 与 bpmStatus=审批中
- 处理审批结果
- 仅当流程状态为“审批通过”时,更新 valid=已生效,清理草稿
- 同步主表与关联表(渠道/区域/MAC)的生效状态
- 更新 Redis 中设备维度的范围缓存(新增/删除范围分别处理)
图表来源
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/AppBlackListedBpmServiceImpl.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/AppBlackListedBpmServiceImpl.java
章节来源
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/AppBlackListedBpmServiceImpl.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/AppBlackListedBpmServiceImpl.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/AppBlackListedBpmServiceImpl.java
启用/禁用操作与权限控制
- 权限与生效策略
- 非管理员修改:进入审批流,审批通过后生效
- 管理员修改:直接生效,不触发审批流
- 业务验证
- 校验是否存在运行中的流程实例,避免并发覆盖
- 校验草稿内容是否为空,避免无意义提交
- 校验主表是否已完全审批通过,避免重复提交
- 数据更新
- 审批通过后,更新主表与关联表的生效状态
- 更新 Redis,确保设备侧查询即时生效
章节来源
- docs/blacklist/index.md
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/AppBlackListedBpmServiceImpl.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/util/BlacklistUtil.java
生效时间控制策略
- 立即生效
- 管理员直接修改时,系统直接更新主表与关联表生效状态,并同步 Redis
- 审批生效
- 非管理员修改时,通过审批流控制生效时机;审批通过后统一同步
- 延迟生效
- 代码中未见显式的“延迟生效”策略实现;可通过流程变量扩展实现(如在流程变量中携带生效时间戳,服务端在指定时间点再执行生效动作)
章节来源