docs(changelog): order-v3 每日审查修正 发票金额String序列化(admin)+售后mp归属校验(mp)

这个提交包含在:
API Changelog Bot 2026-06-22 01:24:36 +08:00
父节点 77a1c4a780
当前提交 b1d70a9020
共有 2 个文件被更改,包括 81 次插入0 次删除

查看文件

@ -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。本次加固**经订单归属校验当前用户是否为下单人**,非本人操作返回错误码 **586014TICKET_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 | 无权操作该售后工单(非本人订单)|

查看文件

@ -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 类计数字段仍为数字(非金额,不受影响)。