## 线下付款下单失败排查
- 文件：`src/pages/shop/checkout.tsx`、`src/api/shop/shopOrder/index.ts`
- 现象：结算页选择线下付款（payType=9）下单时报错：`创建支付订单失败：创建微信支付订单失败：支付配置中应用ID为null或空`
- 原因：前端传参正确，但后端 `POST /shop/shop-order` 在 payType=9 时仍尝试创建微信支付订单，因未配置 appId 失败
- 前端处理：
  - `checkout.tsx` 增加线下付款支付配置类错误的友好提示
  - `createOrder` 返回类型放宽为 `WxPayResult | null`，兼容非微信支付场景
- 后端修复（`/Users/gxwebsoft/JAVA/guilixu-java`，3 个文件）：
  1. `OrderBusinessService.java` — `createOrder()` 中 Integer 比较从 `==` 改为 `.equals()`，避免装箱陷阱导致 payType=8/9 拦截失效；微信支付分支前加日志
  2. `ShopOrderServiceImpl.java` — `createWxOrder()` 方法开头增加 payType 守卫，非微信支付(1/102)直接抛异常，不走 JSAPI 分支
  3. `ShopOrderController.java` — `saveLegacy()` 方法增加 payType 检查，货到付款/线下付款/余额支付跳过 createWxOrder
- 验证：Maven compile 成功，无编译错误
- 注意：后端服务需重启才能生效

## 结算页支付方式调整
- 文件：`src/pages/shop/checkout.tsx`
- 注释掉货到付款(id=8)选项，只保留线下付款(id=9)
- 默认支付方式从 8(货到付款) 改为 9(线下付款)

## 门店订单修改金额功能
- 文件：`src/pages/store/orders/index.tsx`
- 新增 OpType `'editPrice'`，在订单卡片操作区增加橙色「修改金额」按钮
- 仅对可操作订单（非已完成/非已关闭）显示
- 弹窗包含：当前实付展示、新金额输入（digit）、修改原因（必填 textarea）
- 提交调用 `updateShopOrder({ orderId, payPrice, comments })`，金额变更记录追加到 comments
- 复用现有 `updateShopOrder` API（PUT `/shop/shop-order`），无需新增接口

## 修复 VIP 会员价格显示和下单问题
- **根因**：`useVipStatus` hook 已定义但从未被任何页面使用，所有页面直接调用 `isVipMember()` 读取同步缓存。该缓存仅在「个人中心」页刷新，导致 VIP 会员访问商品详情/购物车/结算页时缓存为 stale false，不显示 dealerPrice
- **修复文件**（共 9 个）：
  1. `src/api/shop/shopOrder/model/index.ts` — `OrderGoodsItem` 新增 `price?: string` 字段，下单时传 VIP 单价
  2. `src/pages/shop/product-detail.tsx` — 引入 `useVipStatus`，用响应式 `isVip` 替换 `isVipMember()`
  3. `src/pages/shop/checkout.tsx` — 引入 `useVipStatus`，`goodsPrice` useMemo 依赖加 `isVip`；下单时 `OrderGoodsItem` 传 `price` 字段
  4. `src/pages/shop/index.tsx` — 引入 `useVipStatus`，替换 `isVipMember()`
  5. `src/pages/shop/category.tsx` — 引入 `useVipStatus`，替换 `isVipMember()`
  6. `src/pages/shop/cart.tsx` — 引入 `useVipStatus`，替换 `isVipMember()`
  7. `src/contexts/CartContext.tsx` — CartProvider 引入 `useVipStatus`，`calcPrice` 用响应式 `isVip`
  8. `src/components/business/SkuSelector/index.tsx` — 引入 `useVipStatus`，替换 `isVipMember()`
  9. `src/components/common/ProductCard/index.tsx` — 引入 `useVipStatus`，替换 `isVipMember()`
- **原理**：`useVipStatus` 在组件挂载时异步调用 `checkAndCacheVipStatus` 查询后端并更新缓存+React state，state 变化触发重渲染，使所有价格显示/计算自动更新为 dealerPrice
- 验证：`npx taro build --type weapp` 构建成功

## 门店订单修改金额 — 修改原因保存字段变更
- 文件：`src/pages/store/orders/index.tsx`、`src/api/shop/shopOrder/model/index.ts`
- 变更：修改金额时的"修改原因"从追加到 `comments` 字段改为保存到 `merchantRemarks`（商户备注）字段
- `ShopOrder` 接口新增 `merchantRemarks?: string` 字段
- `submitEditPrice` 中 `updateShopOrder` 传参从 `comments` 改为 `merchantRemarks`

## 订单备注字段分离（buyerRemarks / merchantRemarks / comments）
- 文件：`src/api/shop/shopOrder/model/index.ts`、`src/pages/shop/checkout.tsx`、`src/pages/store/orders/index.tsx`
- `ShopOrder` 和 `OrderCreateRequest` 接口均新增 `buyerRemarks?: string`（买家备注）
- 结算页 `checkout.tsx`：订单备注从 `comments: remarks` 改为 `buyerRemarks: remarks`
- 门店订单列表 `store/orders/index.tsx`：订单卡片新增买家备注展示块（橙色背景，收货信息下方）
- 字段约定：`buyerRemarks`=买家下单备注，`merchantRemarks`=商户修改金额原因，`comments`=系统/其他备注

## 修复线下付款订单状态显示
- 文件：`src/components/common/OrderCard/index.tsx`、`src/pages/order/list.tsx`、`src/pages/order/detail.tsx`
- 问题：线下付款(payType=9)下单成功后，订单列表和详情页显示"线下付款·待确认"，用户认为状态不对
- 修复内容：
  1. OrderCard `getCardStatus`：将线下付款(payType=9)与货到付款(payType=8)统一处理，`!payStatus && !isCod && !isOffline` 才显示"待付款"，否则直接按 deliveryStatus 判断，线下付款订单显示"待发货"
  2. OrderCard `showCloseButton`：增加 `!order.payStatus` 条件，已付款订单不再显示取消按钮（需到详情页退款）
  3. OrderCard 按钮文案：从"关闭订单"改为"取消订单"，与详情页一致
  4. list.tsx `handleCloseOrder`：弹窗标题改为"确认取消订单"，toast 改为"订单已取消"
  5. detail.tsx `getOrderDisplayStatus`：线下付款未确认时显示"待发货"（蓝色），subtitle 保留付款引导文案
  6. detail.tsx `getOrderPhase`：保留 `offline_pending` 阶段，底部按钮仍为"取消订单+联系客服"（未确认收款可取消，非退款）
