Files
platforms/docs/项目文档_配送点订单创建联动_v1.0.md
2026-08-23 11:30:52 +08:00

3.5 KiB
Raw Blame History

项目文档:配送点订单创建联动 v1.0

1. 项目概述

5176 配送点管理端创建订单页按 5173 的安全联动规则展示候选。配送合同是地址和合同气瓶的父级;前端只负责筛选交互和金额预估,后端始终在当前配送点范围内重新校验并计算最终金额。

技术栈Vue 3、TypeScript、Arco Design、Go、Gin、GORM。

2. 目录结构

frontend/delivery_admin/src/
├── api/order-creation.ts                    # 金额预估与前端金额校验
├── api/resources.ts                         # 订单字段和关系联动契约
└── views/resource/
    ├── OrderAmountPreview.vue               # 只读金额预估
    ├── ResourceFieldForm.vue                # 关系空态、禁用和可读候选
    ├── ResourceRecordPage.vue               # 保存保护和页面编排
    └── use-resource-relations.ts            # 父子联动、搜索和版本守卫
backend/api/internal/logic/delivery/
├── order.go                                 # 可履约合同与未解绑合同气瓶候选
├── user.go                                  # 合同签约用户地址候选
└── order_candidate_test.go                  # 候选 SQL 范围测试

3. 业务规则

  • 请求流水号按 5173 保持人工必填,用作唯一幂等追踪字段。
  • 合同候选仅包含当前配送点范围内、生效中、已到生效时间、尚未过期且签约用户服务关系仍有效的合同。
  • 未选择合同时,收货地址和合同气瓶禁用并提示先选合同。
  • 收货地址仅来自合同签约用户,显示完整地址;存在默认地址时自动选择。
  • 合同气瓶仅包含所选合同尚未解绑的绑定,显示“智能气阀名称 / 气瓶编码 / 气瓶类型”。
  • 切换合同立即清空旧地址和旧气瓶;同一资源仅最新请求可以回写候选。
  • 联系人和联系电话继续作为独立、必填、可编辑的订单快照字段,不从地址伪造回填。
  • 优惠金额默认 0不得为负且必须小于气瓶金额与配送费之和。
  • 金额预估公式为:气瓶金额 + 默认配送费 - 优惠金额。最终金额由服务端重新计算。

4. 接口兼容与安全

  • /gasorder_contract 新增可选 candidate=order 筛选;不传参数时合同管理列表保持原行为。
  • /user_address 新增可选 gasorder_contract_identity 筛选;后端先确认合同属于当前配送点,再限定合同用户。
  • /gasorder_contract_product 新增可选 contract_identity 筛选;后端先确认合同属于当前配送点,再限定未解绑绑定。
  • 原路径、原响应字段和创建订单请求协议保持兼容;候选接口只新增可选参数和只读展示名称。
  • 前端候选不可作为授权依据,创建接口继续校验合同、地址、气瓶、创建方和金额。

5. 维护与验证

新增联动字段时必须声明父字段、服务端筛选键、空态文案和切换提示。禁止仅在浏览器中过滤全量候选。关系请求必须保留版本守卫,保存期间冻结表单并显式防重入。

验证命令:

go test ./api/internal/logic/delivery ./api/internal/logic/platform/gasorder
npm.cmd run type:check
npm.cmd run resource-pages:check
npm.cmd run contract:check
npm.cmd run build

6. 变更记录

  • v1.02026-08-23新增配送合同到地址、合同气瓶的安全联动加入金额预估、空态提示、过期响应保护和提交保护。