一、功能概述

项目管理模块基于auth_project表实现项目全生命周期管理,支持项目的新增、修改、删除、状态切换及菜单权限配置等操作。系统通过app_idapp_secret实现外部系统接入认证,通过auth_project_menu表管理项目间的菜单权限映射,同时结合缓存机制(ProjectCache)优化查询性能,确保项目数据的一致性和访问效率。

二、核心功能说明

(一)新增项目

  1. 操作路径:项目列表页面点击「新增」按钮,填写表单后提交
  2. 系统自动生成字段
    • project_id:自动生成36位UUID
    • app_id:通过KPAppUtil.getAppId()生成唯一应用ID
    • app_secret:通过KPAppUtil.getAppSecret(60)生成60位应用密钥
    • token_failure:默认token过期时间(从工具类获取)
    • token_gain_max_num:默认token最大获取次数(从工具类获取)
    • voucherapp_secret的BCrypt加密值
    • create_date/create_user_id:当前操作信息
    • delete_flag:默认0(未删除)
  3. 唯一性校验
    • 项目名称不可重复,重复时提示“项目名称已存在,请勿重复添加”
    • 项目编号不可重复,重复时提示“项目编号已存在,请勿重复添加”
  4. 缓存处理:新增成功后清除项目缓存(ProjectCache.clear()

(二)修改项目

  1. 操作路径:项目列表点击目标项目「修改」按钮,更新表单后保存
  2. 可修改字段:项目名称、项目编号、项目地址、管理状态、项目状态、备注
  3. 不可修改字段project_idapp_idapp_secretvoucher(认证相关字段不可修改)
  4. 唯一性校验:与新增规则相同,但排除当前项目自身记录
  5. 缓存处理:修改成功后清除项目缓存(ProjectCache.clear()

(三)删除项目

  1. 操作路径:项目列表点击「删除」按钮,支持批量选择删除
  2. 删除限制:必须选择至少一个项目,否则提示“请选择要删除的内容!”
  3. 删除逻辑
    • 执行物理删除(deleteBatchIds
    • 返回删除成功的项目数量(格式:“删除成功X条数据”)
  4. 缓存处理:删除成功后清除项目缓存(ProjectCache.clear()

(四)状态切换

  1. 操作路径:项目列表点击「启用」/「停用」按钮
  2. 状态转换规则
    • 正常状态(1)→ 点击后变为停用(0)
    • 停用状态(0)→ 点击后变为正常(1)
  3. 操作限制:项目不存在时提示“项目不存在”
  4. 缓存处理:状态变更后清除项目缓存(ProjectCache.clear()

(五)项目菜单权限配置 配置外部项目调用系统的权限

  1. 功能说明:配置当前项目可访问的其他项目(权限项目)的菜单权限
  2. 操作路径:项目详情页点击「菜单权限配置」,选择权限项目后勾选菜单
  3. 参数说明
    • project_id:当前项目ID
    • purview_project_id:权限项目ID(被访问的目标项目)
    • menu_ids:允许访问的菜单ID列表
  4. 配置逻辑
    • 先删除当前项目与权限项目的历史菜单关联(auth_project_menu表)
    • 批量插入新的菜单关联记录
    • 清除Redis中该项目的认证令牌缓存(RedisSecurityConstant.REDIS_AUTHENTICATION_TOKEN + 项目编码 + ":" + appId
  5. 权限校验
    • 验证当前项目和权限项目是否存在,不存在则提示“项目不存在”或“权限项目不存在”

三、数据校验规则

  1. 必填校验:项目ID、名称、编号、管理状态等关键参数不能为空,否则提示“请输入XXX”
  2. 唯一性校验
    • 新增/修改项目时,名称和编号不可与现有项目重复
    • 重复时分别提示“项目名称已存在,请勿重复添加”和“项目编号已存在,请勿重复添加”
  3. 存在性校验:操作前验证项目是否存在,不存在则提示“项目不存在”
  4. 权限校验:下拉框查询时根据用户角色过滤可见项目

四、外部系统接入说明

  1. 认证凭证:外部系统通过app_idapp_secret进行身份认证
  2. Token管理
    • 系统根据token_failure设置token有效期
    • 通过token_gain_max_num限制token获取次数
  3. 访问控制:通过auth_project_menu表配置外部系统可访问的菜单权限,实现精细化接口管控
  4. 缓存机制:项目信息变更时自动清除缓存,确保外部系统获取最新配置