一、功能概述
项目管理模块基于auth_project
表实现项目全生命周期管理,支持项目的新增、修改、删除、状态切换及菜单权限配置等操作。系统通过app_id
和app_secret
实现外部系统接入认证,通过auth_project_menu
表管理项目间的菜单权限映射,同时结合缓存机制(ProjectCache
)优化查询性能,确保项目数据的一致性和访问效率。
二、核心功能说明
(一)新增项目
- 操作路径:项目列表页面点击「新增」按钮,填写表单后提交
- 系统自动生成字段:
project_id
:自动生成36位UUIDapp_id
:通过KPAppUtil.getAppId()
生成唯一应用IDapp_secret
:通过KPAppUtil.getAppSecret(60)
生成60位应用密钥token_failure
:默认token过期时间(从工具类获取)token_gain_max_num
:默认token最大获取次数(从工具类获取)voucher
:app_secret
的BCrypt加密值create_date
/create_user_id
:当前操作信息delete_flag
:默认0(未删除)
- 唯一性校验:
- 项目名称不可重复,重复时提示“项目名称已存在,请勿重复添加”
- 项目编号不可重复,重复时提示“项目编号已存在,请勿重复添加”
- 缓存处理:新增成功后清除项目缓存(
ProjectCache.clear()
)
(二)修改项目
- 操作路径:项目列表点击目标项目「修改」按钮,更新表单后保存
- 可修改字段:项目名称、项目编号、项目地址、管理状态、项目状态、备注
- 不可修改字段:
project_id
、app_id
、app_secret
、voucher
(认证相关字段不可修改) - 唯一性校验:与新增规则相同,但排除当前项目自身记录
- 缓存处理:修改成功后清除项目缓存(
ProjectCache.clear()
)
(三)删除项目
- 操作路径:项目列表点击「删除」按钮,支持批量选择删除
- 删除限制:必须选择至少一个项目,否则提示“请选择要删除的内容!”
- 删除逻辑:
- 执行物理删除(
deleteBatchIds
) - 返回删除成功的项目数量(格式:“删除成功X条数据”)
- 执行物理删除(
- 缓存处理:删除成功后清除项目缓存(
ProjectCache.clear()
)
(四)状态切换
- 操作路径:项目列表点击「启用」/「停用」按钮
- 状态转换规则:
- 正常状态(1)→ 点击后变为停用(0)
- 停用状态(0)→ 点击后变为正常(1)
- 操作限制:项目不存在时提示“项目不存在”
- 缓存处理:状态变更后清除项目缓存(
ProjectCache.clear()
)
(五)项目菜单权限配置 配置外部项目调用系统的权限
- 功能说明:配置当前项目可访问的其他项目(权限项目)的菜单权限
- 操作路径:项目详情页点击「菜单权限配置」,选择权限项目后勾选菜单
- 参数说明:
project_id
:当前项目IDpurview_project_id
:权限项目ID(被访问的目标项目)menu_ids
:允许访问的菜单ID列表
- 配置逻辑:
- 先删除当前项目与权限项目的历史菜单关联(
auth_project_menu
表) - 批量插入新的菜单关联记录
- 清除Redis中该项目的认证令牌缓存(
RedisSecurityConstant.REDIS_AUTHENTICATION_TOKEN + 项目编码 + ":" + appId
)
- 先删除当前项目与权限项目的历史菜单关联(
- 权限校验:
- 验证当前项目和权限项目是否存在,不存在则提示“项目不存在”或“权限项目不存在”
三、数据校验规则
- 必填校验:项目ID、名称、编号、管理状态等关键参数不能为空,否则提示“请输入XXX”
- 唯一性校验:
- 新增/修改项目时,名称和编号不可与现有项目重复
- 重复时分别提示“项目名称已存在,请勿重复添加”和“项目编号已存在,请勿重复添加”
- 存在性校验:操作前验证项目是否存在,不存在则提示“项目不存在”
- 权限校验:下拉框查询时根据用户角色过滤可见项目
四、外部系统接入说明
- 认证凭证:外部系统通过
app_id
和app_secret
进行身份认证 - Token管理:
- 系统根据
token_failure
设置token有效期 - 通过
token_gain_max_num
限制token获取次数
- 系统根据
- 访问控制:通过
auth_project_menu
表配置外部系统可访问的菜单权限,实现精细化接口管控 - 缓存机制:项目信息变更时自动清除缓存,确保外部系统获取最新配置