外部渠道、全车件与大客户订单
模块职责
渠道模块用于承接外部平台或大客户订单,把外部订单转换为 DGJ 侧平台订单、销售出库或采购相关单据,并把审核、发货、签收、售后状态回传给渠道方。
主要入口
- 内部渠道 API:
application/controllers/inner/channel - 渠道订单控制器:
application/controllers/inner/channel/Order.php - 渠道商品控制器:
application/controllers/inner/channel/Goods.php - 渠道售后控制器:
application/controllers/inner/channel/Aftersale.php - 全车件入口:
application/controllers/allcarpart
关键 Service
application/Services/Channel/BaseOrder.php:渠道订单列表、详情、创建、发货、签收基础逻辑。application/Services/Channel/BaseGoods.php:渠道商品基础能力。application/Services/Channel/BaseAftersale.php:渠道售后基础能力。application/Services/Channel/Fc/FcOrderService.php:FC 渠道订单。application/Services/Channel/Fc/FcGoodsService.php:FC 渠道商品。application/Services/Channel/Fc/FcAftersaleService.php:FC 渠道售后。application/Services/Channel/Czg、Dcd:其他渠道实现。
关键模型
- 渠道订单主表:
application/models/channel/ChannelOrderModel.php - 渠道订单明细:
ChannelOrderInfoModel.php - 渠道售后主表:
ChannelAftersaleModel.php - 渠道售后明细:
ChannelAftersaleInfoModel.php - 渠道签收明细:
ChannelOrderSignDetailModel.php
渠道订单状态
定义在 application/KzData/Enums/ChannelOrderEnums.php:
created:待审核。wait_ship:待发货。part_ship:部分发货。finish:已完成。cancel:已取消。
审核结果:
1审核通过。0审核拒绝。
订单号前缀:
CHS:平台订单。CHR:平台退单。
渠道订单创建流程
渠道方请求创建订单
-> inner/channel/Order::create
-> BaseChannel 根据 sceneCode 选择具体渠道 Service
-> BaseOrder::formatRequestToOrderEntry
-> 生成 DGJ 平台订单号 CHS
-> 写 channel_order 和 channel_order_info
-> 返回 saleOrderNo/sourceOrderNo/details
关键校验:
- 场景码
sceneCode必须能找到渠道服务。 - 外部订单号不能重复。
- 商品明细要映射到 DGJ SKU 或可识别的第三方商品。
- 服务站、商户、店铺、客户关系必须存在。
渠道审核流程
渠道订单待审核
-> inner/channel/Order::order_approve
-> 具体渠道 Service 执行审核
-> 审核通过后状态变 wait_ship
-> 审核拒绝后状态变 cancel 或拒绝态
-> MqSer::sendChannelOrderApprove 通知渠道
渠道发货流程
渠道订单 wait_ship / part_ship
-> BaseOrder::delivery
-> checkCanDelivery 校验剩余可发数量
-> 组装出库参数
-> InvCuService::submitOrderV2 创建出库/大客户出库单
-> 更新 channel_order_info.shiped_num
-> 更新 channel_order 状态 part_ship 或 finish
-> MqSer::sendChannelOrderDelivery 通知渠道
业务边界:
- 发货数量不能超过明细剩余数量。
- 部分发货后订单保持
part_ship。 - 全部发货后订单变
finish。 - 发货会关联 DGJ 侧销售/出库单据。
渠道签收流程
渠道方回传签收
-> inner/channel/Order::confirm_receipt
-> BaseOrder::confirm_receipt
-> 生成 signingNo + shipOrderNo + shipOrderRowNo 的唯一签收 ID
-> 写 channel_order_sign_detail
-> 防止重复签收
全车件模块
全车件入口集中在 application/controllers/allcarpart,它是一套相对独立的采购、销售、库存、资金页面:
allcarpart/purchase:询价、采购订单、采购退货、模板。allcarpart/sale:销售单、销售出库、销售退货、销售价格策略。allcarpart/storage:库存、仓库、货位、盘点。allcarpart/fund:账户、付款单。allcarpart/goods:商品和搜索。
路由在 application/config/routes.php 中显式映射,例如:
allcarpart/purchase/po-return-orderallcarpart/sale/sa-orderallcarpart/sale/sa-invoice-orderallcarpart/storage/inventoryallcarpart/fund/payment-order
与其他模块的关系
- 销售:渠道订单发货通常会落销售或出库单。
- 库存:发货扣库存,退货入库。
- MQ:渠道审核、发货、退货动作通过
MqSer推送。 - 客户/供应商:渠道订单需要映射服务站、商户、外部店铺和客户。
- 报表:全车件和渠道订单最终也会进入采购、销售、库存或资金报表。
排查建议
- 渠道重复下单:查
source_order_no和短时间重复请求锁。 - 发货失败:查订单状态是否为
wait_ship或part_ship,明细剩余数量是否足够。 - 渠道没收到发货:查
MqSer::sendChannelOrderDelivery和dgj_channel队列。 - 全车件页面路由 404:先看
application/config/routes.php中 allcarpart 映射。