49 lines
2.8 KiB
Markdown
49 lines
2.8 KiB
Markdown
# 操作日志:配送点订单创建联动
|
||
|
||
操作时间:2026-08-23
|
||
操作类型:扩展、修改
|
||
影响模块:5176 创建订单页、配送合同候选、用户地址候选、合同气瓶候选
|
||
|
||
## 操作前状态
|
||
|
||
- 页面挂载时并行加载所有关系,地址和气瓶不依赖所选合同。
|
||
- 配送后端忽略订单合同、合同用户地址和合同气瓶筛选参数。
|
||
- 地址候选退化显示唯一标识;合同气瓶无法区分当前名称、编码和类型。
|
||
- 切换合同不会清空旧地址和气瓶,可能填到最后才被服务端拒绝。
|
||
- 优惠金额没有非负前端约束,页面不展示金额预估。
|
||
|
||
## 具体操作
|
||
|
||
1. 合同候选增加当前配送点范围和可履约状态过滤。
|
||
2. 地址候选增加合同归属校验,并限定合同签约用户。
|
||
3. 合同气瓶候选增加合同归属、未解绑过滤和名称/编码/类型搜索。
|
||
4. 新增前端父子联动、默认地址选择、防抖搜索和请求版本守卫。
|
||
5. 切换合同时原子清空旧地址和气瓶,加载期间禁用控件及保存。
|
||
6. 联系人和联系电话继续独立手填;请求流水号继续按 5173 人工必填。
|
||
7. 优惠金额默认 0、禁止负数,并展示服务端最终计算声明的金额预估。
|
||
8. 保存增加显式防重入、候选空态阻断和金额正数校验。
|
||
|
||
## 行为变化
|
||
|
||
- 变更前:候选看似可选,但服务端最终可能因跨合同或失效记录拒绝。
|
||
- 变更后:页面只展示当前合同有效候选,后端仍执行最终授权与一致性校验。
|
||
- 兼容性:不修改数据库和创建订单请求结构;三个列表接口仅新增可选筛选参数。
|
||
|
||
## 验证结果
|
||
|
||
- `go test ./api/internal/logic/delivery ./api/internal/logic/platform/gasorder`:通过;覆盖当前点范围、有效合同、合同用户地址和未解绑气瓶。
|
||
- `npm.cmd run type:check`:通过。
|
||
- `npm.cmd run resource-pages:check`:通过,详情 17、新建 9、编辑 5;覆盖联动参数、可读候选、版本守卫、保存阻断和金额公式。
|
||
- `npm.cmd run contract:check`:通过,18 个资源。
|
||
- `npm.cmd run profile:check`:通过。
|
||
- `npm.cmd run build`:通过,2648 个模块完成生产构建。
|
||
- 后端已重新构建并恢复监听 12426;旧程序保存在 `platform-api.before-order-linkage.exe`。
|
||
- 应用内浏览器访问创建订单页被登录页拦截,未在未授权状态下填写或提交账号信息;页面交互需由现有已登录会话刷新后复核。
|
||
|
||
## 风险评估
|
||
|
||
- 快速切换合同:通过逐资源版本号丢弃旧响应。
|
||
- 伪造筛选参数:后端先校验合同属于当前配送点,并在创建时再次校验。
|
||
- 前端金额与服务端不同:页面明确标为预估,写入金额完全由服务端计算。
|
||
- 地址无联系人字段:保持独立必填快照,不生成虚假联系人数据。
|