From b1d70a9020fb1f49ea6deb7223c8a0e24702d5d6 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Mon, 22 Jun 2026 01:24:36 +0800 Subject: [PATCH] =?UTF-8?q?docs(changelog):=20order-v3=20=E6=AF=8F?= =?UTF-8?q?=E6=97=A5=E5=AE=A1=E6=9F=A5=E4=BF=AE=E6=AD=A3=20=E5=8F=91?= =?UTF-8?q?=E7=A5=A8=E9=87=91=E9=A2=9DString=E5=BA=8F=E5=88=97=E5=8C=96(ad?= =?UTF-8?q?min)+=E5=94=AE=E5=90=8Emp=E5=BD=92=E5=B1=9E=E6=A0=A1=E9=AA=8C(m?= =?UTF-8?q?p)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../22_售后工单mp端归属校验加固_小程序.md | 31 ++++++++++++ .../22_发票金额String序列化修正_管理后台.md | 50 +++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 changelogs-v2-mp/2026-06/22_售后工单mp端归属校验加固_小程序.md create mode 100644 changelogs-v2/2026-06/22_发票金额String序列化修正_管理后台.md diff --git a/changelogs-v2-mp/2026-06/22_售后工单mp端归属校验加固_小程序.md b/changelogs-v2-mp/2026-06/22_售后工单mp端归属校验加固_小程序.md new file mode 100644 index 0000000..b5a6249 --- /dev/null +++ b/changelogs-v2-mp/2026-06/22_售后工单mp端归属校验加固_小程序.md @@ -0,0 +1,31 @@ +# 【修正·小程序】售后工单 mp 端接口加归属校验(防横向越权) + +> 模块:order-v3 售后工单(aftersale)小程序端 +> 类型:安全加固(每日审查驱动,新模块上线前修正) +> 影响端点:`/v3/mp/aftersale/ticket/**`(我的工单列表 / 详情 / 撤回) +> 关联:售后工单中心 PR1-5(#4162/#4165/#4168/#4173/#4185)的每日审查修正 +> 测试服已部署验证(9443 实测端点 200) + +## ⚠️ 关键说明 + +售后工单 mp 端三个用户入口此前缺少归属校验,任意登录用户传他人 `ticketId`/`orderId` 即可读取或撤回他人工单(横向越权 IDOR)。本次加固:**经订单归属校验当前用户是否为下单人**,非本人操作返回错误码 **586014(TICKET_NOT_OWN)**。 + +正常业务流程下,小程序用户只操作自己订单的售后工单,**不会触发**该错误;前端无需改动,仅需对 586014 做兜底提示(如「无权访问该工单」)。 + +## 1. 受影响端点与行为 + +| 端点 | 修正 | +|------|------| +| `GET /v3/mp/aftersale/ticket/my`(我的工单列表) | 新增按当前用户校验 `orderId` 归属;端点入参不变,仅服务端加校验 | +| `GET /v3/mp/aftersale/ticket/{id}`(工单详情) | 校验工单所属订单归属当前用户,非本人抛 586014 | +| `POST /v3/mp/aftersale/ticket/{id}/withdraw`(撤回) | 同上归属校验,非本人不可撤回(且不再触发他人 OA 审批撤销) | + +## 2. 附带修正:撤回工单不再消失 + +撤回(WITHDRAWN)此前被误当软删处理,导致撤回后的工单在「我的工单」列表/详情中**永久不可见**。本次修正后,**撤回是可见终态**,撤回的工单仍可在列表与详情中查看(状态显示「已撤回」)。 + +## 3. 错误码 + +| code | 含义 | +|------|------| +| 586014 | 无权操作该售后工单(非本人订单)| diff --git a/changelogs-v2/2026-06/22_发票金额String序列化修正_管理后台.md b/changelogs-v2/2026-06/22_发票金额String序列化修正_管理后台.md new file mode 100644 index 0000000..850da13 --- /dev/null +++ b/changelogs-v2/2026-06/22_发票金额String序列化修正_管理后台.md @@ -0,0 +1,50 @@ +# 【修正·管理后台】发票管理接口金额字段改 String 序列化(对齐平台金额约定) + +> 模块:order-v3 发票(invoice)管理后台 +> 类型:契约修正(每日审查驱动,非新增端点) +> 影响端点:`/v3/admin/order/invoice/**`(发票申请/开票/重传/分页列表) +> 关联:发票补齐 PR1-4(#4171/#4172/#4173/#4174)的每日审查修正 +> 测试服已部署验证(9443 真 token 实测 200,金额字段确认为字符串) + +## ⚠️ 关键说明 + +发票管理后台部分响应 VO 的金额字段(`BigDecimal`)此前漏标 `@JsonSerialize(ToStringSerializer)`,会被全局 Jackson 序列化成 **JSON 数字**(如 `0`),与平台「所有金额一律 String」约定不一致。本次修正后统一返回**字符串**(如 `"0"`、`"1280.00"`)。 + +前端按平台惯例**以字符串解析金额**即可,无需改动;若此前已按数字解析这几个字段,请改回字符串。 + +## 1. 受影响字段 + +| VO | 字段 | 修正前 | 修正后 | +|----|------|--------|--------| +| InvoicePageStatsVO(分页统计) | requestedAmount / issuedAmount / pushedAmount / currentMonthIssuedAmount | 数字 `0` | 字符串 `"0"` | +| InvoicePageItemRespVO(分页行) | amount | 数字 | 字符串 | +| AdminInvoiceApplyRespVO(代客申请响应) | amount | 数字 | 字符串 | + +## 2. 实测样例 + +请求:`GET /v3/admin/order/invoice/page?pageNo=1&pageSize=5`(Bearer admin token) + +响应(节选,金额均为字符串): + +```json +{ + "code": 200, + "message": "成功", + "data": { + "records": [], + "total": 0, + "stats": { + "requestedCount": 0, + "requestedAmount": "0", + "issuedCount": 0, + "issuedAmount": "0", + "pushedCount": 0, + "pushedAmount": "0", + "currentMonthIssuedCount": 0, + "currentMonthIssuedAmount": "0" + } + } +} +``` + +count 类计数字段仍为数字(非金额,不受影响)。