ISSUE-002-article-publish.md 2.8 KB

ISSUE-002:文章创建后发布失败(ID解析错误)

状态: ✅ 已解决 严重度: 高 → 已解决 创建日期: 2026-06-29 解决日期: 2026-06-29 模块: 文章管理 测试用例: ADMIN-ARTICLE-CREATE → ADMIN-ARTICLE-PUBLISH

问题描述

文章创建成功后,AdminArticleController.create() 返回的 data 字段为字符串 "创建成功" 而非 {"id": <articleId>},导致后续发布时 Long.valueOf("创建成功") 抛出 NumberFormatException。

错误信息

[ADMIN-ARTICLE-CREATE] OK articleId=创建成功          // ← 应该是数字ID
[ADMIN-ARTICLE-PUBLISH] FAIL code=200 resp={'code': 400, 'message': 'For input string: "创建成功"', 'data': None}

复现步骤

  1. admin 登录 → POST /api/admin-auth/login
  2. 创建文章 → POST /api/admin/articles/create
  3. 发布文章 → POST /api/admin/articles/publish → 失败

根因分析

根据本地代码,AdminArticleController.create() 返回:

articleService.create(article, adminId);
Map<String, Object> result = new HashMap<>();
result.put("id", article.getId());
return Result.success(result);  // data 应为 {"id": x}

但实际响应:{"code":200,"message":"success","data":"创建成功"}

可能原因:

  1. 远程代码版本差异:AdminArticleController.java 最近有 49 行修改
  2. articleService.create() 抛出异常被全局异常处理器捕获,返回了错误字符串
  3. 响应被拦截器修改

修复建议

  1. 检查远程 AdminArticleController.create() 的实际返回代码
  2. 全局搜索是否有拦截器/过滤器修改 article create 响应
  3. 添加 try-catch 捕获 articleService.create() 异常并正确返回
  4. 在 @RequestAttribute("userId") 处打断点确认 adminId 是否正确传入

责任人

待定

修复日期

待定

回归测试

测试日期: 2026-06-29 测试结果: ✅ PASS

  • ADMIN-ARTICLE-CREATE: ✅ PASS — articleId=3
  • ADMIN-ARTICLE-PUBLISH: ✅ PASS — 发布成功

结论: 远程代码同步后(e24e1b3),文章创建和发布功能正常工作。AdminArticleController.create() 正确返回 {"id": <articleId>}。


原始问题描述(保留参考)

问题描述:文章创建成功后,AdminArticleController.create() 返回的 data 字段为字符串 "创建成功" 而非 {"id": <articleId>},导致后续发布时 Long.valueOf("创建成功") 抛出 NumberFormatException。

错误信息:

[ADMIN-ARTICLE-CREATE] OK articleId=创建成功          // ← 应该是数字ID
[ADMIN-ARTICLE-PUBLISH] FAIL code=200 resp={'code': 400, 'message': 'For input string: "创建成功"', 'data': None}

根因分析:远程代码版本与本地不一致。同步最新代码后问题消失。