From a3d9a5fe1a041cbb2b482487dfbfbc60eae0d099 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Thu, 4 Jun 2026 12:33:04 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=AE=A1=E8=AE=A1batch):=20wx=E8=BF=915?= =?UTF-8?q?=E5=A4=A9=E4=BB=A3=E7=A0=81=E5=AE=A1=E8=AE=A1=20batch=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=89=8D=E7=AB=AF=E5=8F=AF=E8=A7=81=E5=8F=98?= =?UTF-8?q?=E5=8C=96(PR=20#3442)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 校验收紧(gender/status/pageSize→400) + SERVICE退费说明进快照 + 小蒙马最早可售日修正。 --- ...tch修复-校验收紧+行为修正-管理后台+小程序.md | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 changelogs-v2/2026-06/04_3440_审计batch修复-校验收紧+行为修正-管理后台+小程序.md diff --git a/changelogs-v2/2026-06/04_3440_审计batch修复-校验收紧+行为修正-管理后台+小程序.md b/changelogs-v2/2026-06/04_3440_审计batch修复-校验收紧+行为修正-管理后台+小程序.md new file mode 100644 index 0000000..cbcf620 --- /dev/null +++ b/changelogs-v2/2026-06/04_3440_审计batch修复-校验收紧+行为修正-管理后台+小程序.md @@ -0,0 +1,96 @@ +# 【批量修复·管理后台 + 小程序】wx 近5天代码审计 batch 修复(前端可见的校验收紧 + 行为修正) + +> **PR**: #3442 | **关联工单**: #3440 +> **服务**: hl-product-service-v2 / hl-resource-service / hl-fleet-service / hl-user-service / hl-order-service-v2 | **更新时间**: 2026-06-04 +> +> **存放目录**: `changelogs-v2/2026-06/` +> **影响范围**: 多处后端 bug 修复,本篇仅列**前端可观察到的变化**(校验收紧 / 展示行为修正);纯内部修复不在此列 + +--- + +## ⚠️ 关键说明 + +本批修复源自一次代码审计,多为后端内部纠错(无前端影响)。下面**只列前端需要知道的 4 处**: + +1. **几处入参新增字典校验**(传非法值会从"静默落库"变成 **400 报错**)——前端表单须传字典值。 +2. **内部员工站内信列表 `pageSize` 上限 100**(超过返 400)。 +3. **服务类(SERVICE)资源的退费说明现在会进产品行程聚合 / 订单快照**——前端行程/订单详情可能多展示出 SERVICE 节点的退费说明。 +4. **小程序小蒙马"最早可售日"修正**——已售罄(满团)但出发日在未来的班期不再被当作"最早可售日"。 + +--- + +## 1. 入参校验收紧(传非法值 → 400) + +| # | 接口 | 字段 | 新校验 | 说明 | +|---|------|------|--------|------| +| 1 | 司机档案新增/编辑(admin) | `gender` | 仅 `1`=男 / `2`=女(可空) | 原仅长度校验,可存"男/0/AB"脏值;现非字典值返 400 | +| 2 | 出行人保存(mp/admin TravelerRequest) | `gender` | 仅 `0`=未知 / `1`=男 / `2`=女 | 原无范围校验,可存 '3'/'99';现非字典值返 400 | +| 3 | 车型价格日历 设置/改状态(admin) | `status` | 仅 `AVAILABLE` / `CLOSED` | 原无字典校验;现非字典值返 400 | + +> 前端动作:上述表单提交前确保 `gender`/`status` 传字典值(与全系统性别字典 1=男/2=女/0=未知、价格日历两态一致)。若此前已按字典传值,则**无影响**。 + +**示例(gender 非法)**: +``` +POST /admin/fleet/driver body 含 "gender":"男" +→ { "code": 400, "message": "性别只能 1=男/2=女" } +``` + +--- + +## 2. 内部员工站内信列表 pageSize 上限 100 + +**GET** `/admin/message/list` + +补了入参校验,`pageSize` 超过 100 返 400(原校验未生效可超量查)。 + +**测试服实测**: +``` +GET /admin/message/list?page=1&pageSize=10 → code 200(正常) +GET /admin/message/list?page=1&pageSize=100000 → code 400「每页条数不能超过100」 +``` + +> 另:内部员工站内信目前**仅 SYSTEM 一类**(#3427 已固定),`categoryCode` 传 HOUSE/ORDER 过滤结果恒空、`markCategoryRead` 传 HOUSE/ORDER 恒更新 0 行;建议列表 `categoryCode` 留空查全部。Swagger 文档已同步标注。 + +--- + +## 3. SERVICE(服务类)资源退费说明进入行程聚合 / 订单快照 + +服务类资源(service_item)此前已支持配置退费说明(#3407),但**产品行程节点聚合接口漏填了 SERVICE 的退费说明**,导致:admin 服务详情能看到退费说明,但它进不了产品行程聚合 → 冻不进订单快照 → 司机行程单/订单详情看不到。 + +本次已补齐:**SERVICE 资源的退费说明现在与 SCENIC/ACTIVITY 一样,会随产品行程聚合下发,并在下单时冻进订单快照**。 + +> 前端动作:产品行程详情 / 订单详情中,挂在 SERVICE 节点上的资源现在可能多出 `refundNote`(退费说明)字段,按既有 SCENIC/ACTIVITY 的退费说明渲染逻辑展示即可。 + +--- + +## 4. 小程序小蒙马"最早可售日"修正 + +小蒙马产品的"最早可售日"(`findEarliestAvailableBatchDate`)原仅按"出发日在未来 + 报名窗口未关"判定,**不看库存**,导致已售罄(持久 FULL)但出发日在未来的班期被错误当成"最早可售日"。 + +已修正为**按展示态 == 报名中(含库存判定)**取最早可售班期。 + +> 前端动作:无需改动,小程序展示的"最早可售日"会自动变准(排除满团班期)。 + +--- + +## 5. 其他(无前端影响,仅备案) + +- product-v2:复制产品时 GROUP 班期状态重置为"报名中"(原沿用源终态致复制出已满/已取消班期)。 +- product-v2:admin 增加行程天 / 上下架去掉了误伤连续操作的幂等节流(原同管理员 5 秒内第二次操作被"请勿重复提交"拦),不影响接口契约。 +- resource:`ServiceUpdateRequest.vehicleType` 长度上限统一为 32(原有矛盾的 32/500 双重校验,实际一直生效 32)。 +- order-v2:删除一个 0 调用死方法(无行为变化)。 + +--- + +## 6. 验证 + +- 各模块编译 + 相关单测通过(product-v2 +37 / resource +2 含售罄班期不选、复制重置、SERVICE refundNote 填充等回归)。 +- 5 服务部署测试服 + 双实例 health UP;API 实测 pageSize 上限 400 已生效。 + +--- + +## 7. 关联 / 联系人 + +- **本次 PR**:#3442(Closes #3440) +- **后端负责人**:@wx +- **前端对接(管理后台 + 小程序)**:mmg