# 2026-08-31 工作日志 ## 服务端代码符合性评估(对照《Java 服务端开发标准》v1.4) 对 `tcm-training-admin-backend` 全量静态扫描(665 Java 文件 + 40 SQL + 27 XML + 30 测试),产出评估报告 `服务端开发标准符合性评估.md`。 **结论:整体不达标(23 条中 5 符合 / 11 部分 / 7 不符合)** 核心问题: - P0:主键自增 222 处(IdType.AUTO,违反雪花ID要求);后台无权限注解(无 @SaCheckPermission/RBAC 细粒度);APP 端游客放行 + 资源归属校验仅 6 处(水平越权风险);无 is_deleted 逻辑删除 - P1:0 个枚举类 + 23 处魔法值;实体类零注释;方法零 Javadoc(635 文件仅 5 个含 @param)+ 0 处 STEP 注释;无 BusinessException + 无错误码分段;返回体用 ApiResponse(非 Result)+ 字段 msg/page 非标准 - P2:78/80 Service 无接口+impl 分离;无部署文档;无 jacoco;创建类接口无幂等 key **合规亮点**:MVC 分层清晰(Controller 零越层调 Mapper)、防注入好(${} 仅 2 处别名、XSS 拦截器齐全)、线程池规范(ThreadPoolTaskExecutor 命名+有界队列)、SELECT * 0 处、utf8mb4/COMMENT/无外键/无存储过程达标。 评估方法:grep 正则 + 抽样读文件,未编译运行,运行期行为结论为代码模式推断。 ## 增量分析:8月17日后改动的代码符合性 - 用 git 界定范围(e35351a..HEAD),mtime 因 8-31 构建被统一改写为 16:09 不可信。 - 后端 88 文件(80 Java + 4 XML + 3 SQL + 1 yml)。核心新功能:养生科普、项目介绍、直播密码房、省代理、应用版本更新、微赞直播入口。 - 结论:不达标。P0 鉴权(全局仅 checkLogin,无 RBAC;APP 游客放行);P1 主键自增(8实体 IdType.AUTO)、0枚举14魔法值、28处@Transactional无rollbackFor、8实体零注释。 - 亮点:DTO校验完善、SQL无外键/utf8mb4/COMMENT齐全、Mapper XML无注入/SELECT*、无System.out/new Thread。 - 产出:服务端开发标准符合性评估(8月17日后改动).md ## 详细整改报告(8月17日后改动) - 深化分析,产出可落地整改方案。确认关键根因:未实现 StpInterface(Sa-Token 权限数据源),RbacService.getPermissionKeysByUserId 已存在但未接入 → @SaCheckPermission 无法生效。 - 确认 P0 越权漏洞:AppLiveRoomSettingController.createEntry(request.getUserId()),userId 来自请求体而非会话,可伪造他人直播间入口(泄露 tuid/手机号/头像)。 - 权限点命名规范:模块:实体:操作(system:account:view),新增模块需在 DataInitializer.ensureDefaultMenus 补菜单+权限点。 - 产出:服务端代码整改报告(8月17日后改动).md ## 重新扫描(最新代码 + v1.5 标准,9-01) - 标准升级 v1.4→v1.5(2026-08-24 生效),唯一实质新增:第十条 SQL 禁项增加「循环内查库 N+1、JOIN≤5、大表全表查询」。 - 代码新增 fix0901 系列提交(hejianhao,9-01),范围 e35351a..540ef65 共 133 提交、后端 92 文件。 - 已修复:@SaCheckPermission 37 处 + StpInterfaceImpl + SaInterceptor 注解鉴权打通(RBAC 生效);新增 3 枚举(EnabledStatus/UserStatus/UserType)。 - 仍未修复:P0 越权(AppLiveRoomSettingController.createEntry 仍取 request.getUserId(),appAuthSessionService 已注入但注释掉,团队明示"APP 发版后改");P1 主键自增 52 实体+222 建表、事务 109 处无 rollbackFor、实体注释 7/8 缺类注释、枚举不合模板(无 Enum 后缀/desc/getByCode)、魔法值 76 处。 - v1.5 新增违规:ProvincialAgentAppService.saveRegions 双重 N+1(外层 for 调 resolveRegion + 内层 while 逐层 selectById 查父级 + 循环内 insert)。 - 产出:服务端代码符合性评估(最新代码+v1.5标准).md ## 最新代码分析(09-01 二轮,5个fix0901修复提交后) - 范围 540ef65..06f69c0 新增5提交,后端18文件。范围总基线仍 e35351a..HEAD(138提交/93文件)。 - 已真修复:N+1(insertBatch批量+regionCache内存缓存,不再循环selectById);枚举重命名EnabledStatusEnum/UserStatusEnum/UserTypeEnum(Enum后缀+code/desc/getByCode,旧引用清零);改动文件内@Transactional补rollbackFor;方法Javadoc与STEP开始补;5/8实体补类注释。 - 仍未修复:P0越权(AppLiveRoomSettingController:37 createEntry(request.getUserId()),AppVzanLiveEntryService:53-54 appAuthSessionService已注入但注释,团队标"APP发版后改");P1主键自增52实体IdType.AUTO、0雪花。 - 残余:全局@Transactional 101处无rollbackFor、魔法值全局50处(改动文件内基本清理)、HealthPopularization/LiveCourse/ProjectIntroduction 3实体无类注释。 - 符合性:✅8/⚠️8/❌4(上轮✅6)。产出:服务端代码符合性评估(09-01最新代码).md