- docs/: 源码分析报告、代码深度解析、项目说明书、独立服务化方案 - backend/: 账权模块提取说明(提取原则、文件清单、耦合度验证) - frontend/: 前端剥离方案、剥离历史与说明、框架修改详情
6.8 KiB
账权模块提取说明
提取日期:2026-08-09
源仓库:apes-Authdata (saas-service)
目标仓库:apes-Authon
一、提取原则
- 纯账权逻辑:只提取认证、授权、用户、角色、菜单、权限、多租户、套餐、配额、SSO、操作日志相关的代码
- 零业务代码:不包含溯源(Trace*)、称重(Weight*)、水肥(Fei*)、巡检(Inspection*)、维修(Repair*)、农大同步(Nongda*)、LLM Agent 等任何业务逻辑
- 保留包名:暂保留
cn.apes.cloud包名以最小化改动,后续 Phase 2 再统一重构为cn.apes.authon - 保留依赖:
apes-commons外部 JAR 作为核心依赖保留,提供 AuthContext / @Login / Res / DbEntity 等基础设施
二、提取文件清单
Controller(11 个)
| 文件 | 核心功能 |
|---|---|
| UserController | 密码登录、注册、改密、用户CRUD、企业认证、多企业切换 |
| PermissionController | 菜单树、权限码、角色CRUD、角色权限分配、成员角色管理 |
| AccessTokenController | 外部 API Token 的创建/查询/撤销/启用/重新生成 |
| CustomerController | 客户/企业CRUD、员工管理、应用关联、SSO配置 |
| CustomerPackageController | 客户套餐管理、配额管理、延期申请 |
| AppController | 应用CRUD、应用详情(含菜单+权限+关联客户) |
| SysOrganizationController | 组织架构CRUD、组织树 |
| SysPackagePlanController | 套餐方案CRUD、套餐权限分配 |
| SysQuotaController | 配额模板CRUD |
| SysOperationLogController | 操作日志查询 |
| UserPreferenceController | 用户偏好(UI尺寸)查询/更新 |
Entity(23 个)
UserInfo, SysRole, SysMenu, SysPermission, SysRolePermission, SysMemberRole, SysAccessToken, CustomerInfo, CustomerUser, CustomerApp, CustomerPackage, CustomerPackageQuota, CustomerPackageExtendApply, CustomerQuotaChangeLog, SsoConfig, SysOrganization, SysPackagePlan, SysPackagePlanPermission, SysPackagePlanQuota, SysQuota, UserPreference, SysOperationLog, AppInfo
Service 接口(6 个)
CustomerPackageService, SysAccessTokenService, SysOperationLogService, SysPackagePlanQuotaService, SysPackagePlanService, SysQuotaService
Service 实现(16 个)
PermissionServiceImpl, UserInfoServiceImpl, SysAccessTokenServiceImpl, SsoServiceImpl, Sso2ServiceImpl, CustomerUserServiceImpl, CustomerInfoServiceImpl, CustomerAppServiceImpl, SysOrganizationServiceImpl, SysPackagePlanServiceImpl, CustomerPackageServiceImpl, SysQuotaServiceImpl, SysPackagePlanQuotaServiceImpl, UserPreferenceServiceImpl, SysOperationLogServiceImpl, AppInfoServiceImpl
Mapper(23 个)
对应每个 Entity 各一个 Mapper。
Config(5 个)
| 文件 | 说明 |
|---|---|
| AccessTokenFilterConfig | 注册 AccessTokenFilter(order=1,拦截 /*) |
| DataSourceHeaderAspect | @TenantSource AOP 切面,多租户数据源切换 |
| TenantSource | @TenantSource 注解定义 |
| HbTokenContext | 伙伴云 Token 的 ThreadLocal 上下文 |
| SiteConfig | 站点配置(支付域名、Cookie域名) |
Filter(1 个)
AccessTokenFilter — 外部 API 鉴权(X-Access-Token / Bearer)
Util(2 个)
| 文件 | 说明 |
|---|---|
| OperationLogUtil | 操作日志工具(@PostConstruct 抓 bean + AuthContext 获取操作人) |
| RsaUtil | RSA 加解密(密码加密/解密) |
DTO/VO(15 个)
LoginDTO, RegisterDTO, PwdDTO, UserSearchDTO, RoleSearchDTO, SysRoleDTO, CustomerSearchDTO, EnterpriseCertifyDTO, SelectCustomerDTO, PageDTO, RelationDTO, AppSearchDTO, CustomerPackageVO, CustomerPackageExtendApplyVO, CustomerAppVO
Huoban DTO(11 个)
UpsertOne, DataCreate, DataUpdate, DataFilter, DataFilterCondition, DataUpsert, BulkDel, TableSub, TableColumn, TableInfo, CategoryConfig — 伙伴云 API 请求/响应模型,被 CustomerInfoServiceImpl 用于同步客户数据到伙伴云
三、未提取的文件(排除原因)
| 文件 | 排除原因 |
|---|---|
| CustomerUiConfigServiceImpl | 依赖 cn.apes.cloud.domain.weight.CustomerUiConfig(weight 业务包) |
| CommonController | 混合业务(文件上传等),非纯账权 |
| WeightController | 称重业务 |
| TrackingConfigController | 追踪配置业务 |
| 所有 Trace*/Weight*/Fei*/Llm*/Nongda* 文件 | 业务模块 |
| RedissonConfiguration | 通用配置,需按实际部署环境重新配置 |
| MybatisPlusConfig | 通用配置,需按实际部署环境重新配置 |
| OssConfiguration | OSS 配置,账权服务不需要 |
| WebSocketConfig | WebSocket 配置,账权服务不需要 |
| RestTemplateConfiguration | HTTP 客户端配置,按需添加 |
| SchedulingConfig | 定时任务配置,按需添加 |
| JacksonAutoConfiguration | Jackson 配置,Spring Boot 自动配置 |
四、外部依赖分析
apes-commons 0.0.7-SNAPSHOT
提供以下核心类(全部为接口级别依赖,无源码):
cn.apes.commons.Res → 统一 API 响应包装
cn.apes.commons.auth.AuthContext → ThreadLocal 认证上下文
cn.apes.commons.auth.Login → @Login 注解(方法级,AOP 自动注入)
cn.apes.commons.auth.LoginUser → 登录用户信息
cn.apes.commons.auth.LoginCustomer → 登录客户/企业信息
cn.apes.commons.auth.UserSession → 会话对象(user + customer)
cn.apes.commons.domain.DbEntity → 基础实体(id/createTime/updateTime/isDel)
第三方依赖
| 依赖 | 用途 |
|---|---|
| spring-boot-starter-web | REST API |
| spring-boot-starter-aop | @TenantSource 切面 / @Login AOP |
| spring-boot-starter-data-redis | Redis 会话管理 |
| mybatis-plus-boot-starter | ORM |
| dynamic-datasource-spring-boot-starter | 多租户数据源 |
| mysql-connector-java | MySQL 驱动 |
| lombok | 简化代码 |
| hutool-all | 通用工具(HMAC 签名、HTTP 调用等) |
| redisson | Redis 客户端 |
| fastjson | JSON 序列化 |
五、耦合度验证
提取过程中验证了以下耦合点:
- 业务 Service → 账权 Service 直接调用:0 个 ✅
- 业务 Controller → 账权 Controller 直接调用:0 个 ✅
- 账权 Service → 业务 Mapper 直接调用:0 个 ✅
- 唯一的业务包交叉引用:
CustomerInfoServiceImpl→cn.apes.cloud.domain.huoban.UpsertOne- 解决方案:将 huoban DTO 包一起提取(11 个纯 DTO 文件,无业务逻辑)
- 外部 JAR 依赖:
apes-commons提供 AuthContext 等核心类- 解决方案:保留为 Maven 依赖,后续 Phase 3 改造为 SDK
六、后续路线图
| 阶段 | 目标 | 状态 |
|---|---|---|
| Phase 1 | 验证编译通过 | 待执行 |
| Phase 2 | 包名重构 cn.apes.cloud → cn.apes.authon | 待启动 |
| Phase 3 | SDK 化(AuthContext → 远程调用) | 待设计 |
| Phase 4 | 网关集成(ThreadLocal → HTTP Header) | 待设计 |