黑名单管理功能
引用文件
本文引用的文件
- docs/blacklist/index.md
- docs/blacklist/app-blacklisted.md
- docs/blacklist/uninstall-detail.md
- docs/blacklist/mac-relation.md
- yudao-module-blacklist/yudao-module-blacklist-api/src/main/java/cn/iocoder/yudao/module/blacklist/enums/BlacklistedTypeEnum.java
- yudao-module-blacklist/yudao-module-blacklist-api/src/main/java/cn/iocoder/yudao/module/blacklist/enums/ErrorCodeConstants.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/controller/admin/blacklisted/AppBlacklistedController.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/AppBlacklistedServiceImpl.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/resources/mapper/blacklisted/AppBlacklistedMapper.xml
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/dal/dataobject/blacklisted/AppBlacklistedDO.java
目录
简介
本技术文档围绕黑名单管理功能展开,聚焦于APP卸载黑名单的配置与执行闭环,覆盖应用卸载配置、黑名单类型管理、黑白名单切换机制、增删改查操作、与设备/渠道/区域的关联关系、状态与版本管理、以及与规则引擎的协同。文档同时给出API接口设计要点、参数校验、业务逻辑处理流程、数据模型关系、以及最佳实践与排障建议。
项目结构
黑名单模块由API层与业务层组成,API层负责对外暴露REST接口与枚举常量,业务层负责审批流、规则引擎集成、子表关联(渠道、MAC、地区)、导出任务、Kafka回调处理等。
图表来源
- yudao-module-blacklist/yudao-module-blacklist-api/src/main/java/cn/iocoder/yudao/module/blacklist/enums/BlacklistedTypeEnum.java
- yudao-module-blacklist/yudao-module-blacklist-api/src/main/java/cn/iocoder/yudao/module/blacklist/enums/ErrorCodeConstants.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/controller/admin/blacklisted/AppBlacklistedController.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/AppBlacklistedServiceImpl.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/resources/mapper/blacklisted/AppBlacklistedMapper.xml
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/dal/dataobject/blacklisted/AppBlacklistedDO.java
章节来源
核心组件
- 控制器层:提供黑名单主表与子表(渠道、MAC、地区、卸载明细)的增删改查、审批流、导出、布隆过滤器刷新等接口。
- 服务层:封装业务逻辑,包括审批流状态管理、草稿数据处理、规则引擎集成、子表批量导入与变更、导出任务调度、Redis缓存穿透保护等。
- 数据模型:主表AppBlacklistedDO承载黑名单基本信息;子表包括渠道、MAC、地区、卸载明细等。
- 枚举与错误码:BlacklistedTypeEnum定义处理类型(卸载/杀死),ErrorCodeConstants定义模块内错误码。
- 规则引擎:通过RuleBusinessApi与RuleRunUtil实现基于设备画像的高精度匹配。
章节来源
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/controller/admin/blacklisted/AppBlacklistedController.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/AppBlacklistedServiceImpl.java
- yudao-module-blacklist/yudao-module-blacklist-api/src/main/java/cn/iocoder/yudao/module/blacklist/enums/BlacklistedTypeEnum.java
- yudao-module-blacklist/yudao-module-blacklist-api/src/main/java/cn/iocoder/yudao/module/blacklist/enums/ErrorCodeConstants.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/dal/dataobject/blacklisted/AppBlacklistedDO.java
架构总览
黑名单模块采用“控制器-服务-数据访问-规则引擎”的分层架构,支持规则引擎与传统模式双模匹配,兼容审批流与无审批模式,配合导出任务与Kafka异步回调完善数据闭环。
图表来源
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/controller/admin/blacklisted/AppBlacklistedController.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/AppBlacklistedServiceImpl.java
详细组件分析
1) 黑名单类型与状态管理
- 黑名单类型:卸载(DELETE)与杀死(KILL),通过枚举统一管理。
- 状态与版本:主表包含开启状态、处理类型、版本号、审批状态、生效标记等字段,支持草稿与审批流状态管理。
章节来源
- yudao-module-blacklist/yudao-module-blacklist-api/src/main/java/cn/iocoder/yudao/module/blacklist/enums/BlacklistedTypeEnum.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/dal/dataobject/blacklisted/AppBlacklistedDO.java
2) API 接口设计与参数校验
- 主表增删改查:创建、更新、删除、分页查询、详情查询。
- 子表管理:渠道、MAC、地区三类关联的分页查询、创建、更新、删除、导出、导入(MAC)。
- 审批流:创建审批、取消审批、取消未审批更新(含/不含子表)。
- 导出:支持同步与异步导出,MAC与卸载明细分别提供不同导出策略。
- 参数校验:版本号格式校验、系统保留包名校验、导出时间范围限制等。
章节来源
3) 业务逻辑处理流程
- 创建/更新/删除:校验可编辑性、生成草稿、更新审批状态、触发规则解绑/更新。
- 子表变更:渠道/MAC/地区均支持草稿态与生效态切换,未生效数据可直接删除,已生效数据走 删除草稿。
- 导入:MAC批量导入采用分批写入,避免大事务。
- 缓存:主表支持本地缓存与分布式锁保护,防止缓存穿透。
图表来源
章节来源
4) 与设备/渠道/区域的关联关系
- 多对多关系:黑名单主表与渠道、MAC、地区通过子表维护,支持批量导入与导出。
- 传统模式:按渠道、MAC、地区组合进行匹配,逻辑为“(渠道 ∪ MAC) ∩ 地区”。
- 规则引擎:支持更复杂的设备画像条件组合,实现高精度策略控制。
章节来源
5) 卸载/杀死明细与数据同步
- 数据来源:设备上报事件经Kafka异步落库,支持同步/异步导出。
- 回调处理:黑名单卸载回调与杀死回调分别写入不同表,并在入库后触发后续通知。
- 查询与统计:支持按MAC/CPU/时间范围查询,导出明细。
图表来源
章节来源
6) 黑名单状态管理与版本控制
- 启用/禁用:通过主表status字段控制是否生效。
- 生效时间控制:通过审批流与生效标记(valid)控制变更生效时机。
- 版本管理:version字段支持按版本号精准控制目标APP版本。
章节来源
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/dal/dataobject/blacklisted/AppBlacklistedDO.java
- docs/blacklist/app-blacklisted.md