=========================================================================
          2026-07-17 今日改动问题点总结
=========================================================================

【一】管理后台（guilixu-admin）

1. 发货弹窗新增「发货门店」「配送店员」选择功能
   - 文件：src/views/shop/shopOrder/components/deliveryModal.vue
   - 新增发货门店下拉（复用 listShopStore），选中后自动回填
     发货人/电话/地址
   - 商家送货(deliveryType=2)新增配送店员二级联动下拉
   - 新增校验：发货门店必填(deliveryType≠1)、配送店员必填(deliveryType=2)
   - 提交时附带 sendStoreId / deliveryUserId

2. 发货弹窗文案优化
   - 文件：src/views/shop/shopOrder/components/deliveryModal.vue
   - 「发货门店」标签动态化：快递配送→发货门店，商家送货→配送门店
   - 「发货人」标签动态化：快递配送→寄件人，商家送货→发货人
   - 提示文案、验证规则文案同步动态化
   - 快递配送时增加"寄件人信息将同步至快递面单"说明

3. 订单模型字段补充
   - 文件：src/api/shop/shopOrder/model/index.ts
   - 新增 sendStoreId、deliveryUserId 字段

4. 订单详情页展示发货门店/配送店员
   - 文件：src/views/shop/shopOrder/components/orderInfo.vue
   - 发货信息卡片增加「发货门店」「配送店员」展示
   - 支付状态标签新增「已发货待收款」(payType=9 && payStatus=0 && deliveryStatus=20)
   - 步骤条逻辑：线下付款未付款但已发货时显示「下单→待收款→已发货」

5. 线下付款先发货后结款流程
   - 文件：src/views/shop/shopOrder/index.vue
   - 线下付款未付款订单按发货状态区分操作按钮：
     · deliveryStatus=10：显示「确认收款」+「发货」+「关闭」
     · deliveryStatus=20：仅显示「确认收款」
   - 文件：src/views/shop/shopOrder/components/OfflinePaymentModal.vue
   - 新增 deliveryStatus 字段及动态提示文案
   - 成功消息动态化：已发货→「已自动完成」，未发货→「已进入待发货状态」

6. 配送方式排序调整
   - 文件：src/views/shop/shopOrder/components/deliveryModal.vue
   - radio 顺序改为：快递配送→商家送货→无需发货

-------------------------------------------------------------------------

【二】后端 Java（guilixu-java）

1. shop_order 主表新增字段
   - ShopOrder.java：新增 sendStoreId、deliveryUserId 持久化字段
     及 sendStoreName、deliveryUserName 虚拟展示字段
   - ShopOrderMapper.xml：LEFT JOIN shop_store / shop_store_user 联带名称
   - SQL：ALTER TABLE shop_order ADD send_store_id INT, delivery_user_id INT

2. shop_order_delivery 发货单表新增字段
   - ShopOrderDelivery.java：新增 sendStoreId、deliveryUserId
   - ShopOrderController.update()：发货写入分支(无需物流/实物快递/补录运单号)
     均 setSendStoreId / setDeliveryUserId
   - SQL：ALTER TABLE shop_order_delivery ADD send_store_id INT, delivery_user_id INT

3. 线下付款确认收款逻辑调整
   - ShopOrderServiceImpl.confirmOfflinePayment()：移除订单状态=0约束，
     允许已发货订单确认收款；已发货(deliveryStatus=20)时确认后自动完成订单
   - ShopOrderController / ShopOrderService：更新接口描述和成功消息

-------------------------------------------------------------------------

【三】商家端小程序（xinlong-shop-taro）

1. 修复 storeId=0 导致发货人员列表为空的 Bug
   - 文件：src/pages/store/orders/index.tsx
   - 问题根因：openShipModal 调 listShopStoreUser() 未传 storeId(默认0)
   - 修复：先 getMyClerk() 取 storeId，再 listShopStoreUser({storeId})
   - 默认选中当前登录人对应的店员

2. 修复订单详情页配送方式判断逻辑
   - 文件：src/pages/order/detail.tsx
   - 问题：原 isExpress = deliveryType === 0 || undefined，无法区分商家送货
   - 修复：isExpress 改为 deliveryType === 0 || 2 || undefined
   - 新增 DELIVERY_TYPE_MAP：0=快递配送, 1=自提, 2=商家送货
   - 收货信息卡片：商家送货显示🛵+配送门店名，快递配送显示📦
   - 订单信息区新增「配送方式」字段展示

3. 支持线下付款先发货后结款
   - 文件：src/pages/store/orders/index.tsx
   - getStatusText()：新增「已发货待收款」状态
   - getOrderActions()：线下付款未付款(payType=9)也能显示发货按钮
   - OP_DESC：确认收款描述移除"订单将进入待发货状态"

-------------------------------------------------------------------------

【四】跨项目误改纠正（教训记录）

1. 误将商家端功能改到 guilixu-taro（用户端）
   - 错误改动：useClerk 全局上下文、订单详情 deliveryType 修复
   - 已用 git checkout 还原 guilixu-taro 的 5 个跟踪文件
   - 已删除 guilixu-taro 新建的 2 个文件(ClerkContext.tsx / useClerk.ts)
   - 正确项目：xinlong-shop-taro（商家端）

2. 教训：跨项目改动前，先在多个候选项目里确认"哪个项目有该功能源码"
   商家端发货/门店/订单 → xinlong-shop-taro
   用户端订单详情等    → guilixu-taro

=========================================================================
                          今日 Git 提交记录
=========================================================================

bef50c2  feat(order): 支持线下付款先发货后结款流程
57be388  fix(xinlong-shop-taro): 修复订单详情页配送方式判断逻辑
bd814d0  feat(shop): 优化发货弹窗文案及修复小程序配送方式判断
3edbb13  fix(orders): 修正发货功能关联的项目错误导致 storeId 为 0
b406973  feat(store): 修正 storeId 获取并新增发货人员选择功能
2745f4b  feat(shopOrder): 增加发货门店与配送店员选择功能
e9249c9  feat(shopOrder): 增加发货门店与配送店员选择功能
6b57dd2  fix(shopOrder): 修正确认收货状态码

=========================================================================
生成时间：2026-07-17 18:18
=========================================================================
