# 2026-04-10 工作日志

## 完成的功能：四种用户分级标签

### 需求
用户 ID 下方"管理员"标签改为四种分级：
- 0: 普通用户
- 1: 超级管理员
- 2: 合伙人（总店）
- 3: 合伙人（分店）

### 修改的文件

#### 后端 (JAVA)
1. `ShopDealerUser.java` - 添加 `dealerLevel` 字段
2. `ShopDealerUserMapper.xml` - 添加 dealerLevel 查询条件

#### 前端 (VUE)
1. `src/api/shop/shopDealerUser/model/index.ts` - 添加 dealerLevel 字段
2. `src/utils/userLevel.ts` - 新建用户等级配置工具文件
3. `src/pages/user/components/UserCard.tsx` - 修改角色标签显示逻辑

### 注意事项
- 需要在数据库中添加 `dealer_level` 字段
- 后端需要重启生效
- 前端通过 dealerLevel 字段判断显示对应样式

## 配送员订单通知功能

### 需求
客户下单后，配送员手机声音提示和红点提示功能

### 实现方案
1. **红点提示**：在配送员首页「配送订单」图标上显示待配送订单数量
2. **声音提示**：收到新订单时播放微信官方提示音
3. **设置功能**：支持开启/关闭声音提醒

### 新增/修改的文件
1. `src/api/glt/gltTicketOrder/index.ts` - 添加 `getRiderPendingCount` 接口
2. `src/hooks/useRiderNotification.ts` - 新建配送员通知 Hook
3. `src/rider/index.tsx` - 添加 Badge 红点和设置入口

### 技术实现
- 使用 30 秒轮询获取待配送订单数量
- 使用 NutUI 的 Badge 组件显示红点
- 使用 Taro.createInnerAudioContext 播放提示音
- 声音设置保存在本地存储 `rider_sound_enabled`

### 待后端配合
- 需要后端提供 `/glt/glt-ticket-order/rider/count` 接口（可选，使用现有 page 接口也行）
- 需要配置微信订阅消息模板（可选）

## 下单页配送方式 + 配送费功能

### 需求
1. 下单页必选配送方式：电梯 / 步梯 / 一楼商铺·其他
2. 步梯需二级选择是否送上楼，送上楼需选楼层
3. 配送费计算：每桶每层1元，第1层不收费（即 `(楼层-1) × 数量`）
4. 自提模式隐藏配送方式选择器

### 修改的文件
1. `src/api/shop/shopOrder/model/index.ts` - OrderCreateRequest 新增 deliveryMethod、deliveryFloor 字段
2. `src/utils/payment.ts` - buildSingleGoodsOrder 透传配送方式字段
3. `src/shop/orderConfirm/index.tsx` - 配送方式选择UI、配送费计算、楼层选择弹窗、支付校验
4. `src/shop/orderConfirm/index.scss` - 配送方式选择器、楼层网格样式

### 后端需配合
- 订单表新增 `delivery_method` 和 `delivery_floor` 字段
- 订单创建接口接收并存储这两个字段
- 骑手端/后台展示配送方式和楼层信息

## 配送方式功能迁移：orderConfirm → user/ticket/use

### 原因
配送方式选择功能从购买下单页（orderConfirm）迁移到水票核销/立即送水页面（user/ticket/use）。

### 修改的文件
1. `src/shop/orderConfirm/index.tsx` - 回滚：移除配送方式状态变量、UI、校验、楼层选择弹窗、配送费计算
2. `src/shop/orderConfirm/index.scss` - 回滚：移除配送方式/楼层选择相关样式
3. `src/api/glt/gltTicketOrder/model/index.ts` - GltTicketOrder 新增 deliveryMethod、deliveryFloor、deliveryFee 字段
4. `src/user/ticket/use.tsx` - 新增：配送方式选择UI、配送费计算、楼层选择弹窗、提交校验、编辑模式回显
5. `src/user/ticket/use.scss` - 新增：配送方式/楼层选择样式

### 关键差异
- orderConfirm 页面是付费购买，配送费加到实付金额中
- use 页面是水票核销（不付费），配送费以"到付"形式展示在底部栏
- use 页面同时支持新建和编辑模式，编辑时回显配送信息

## 微信订阅消息配置（补充）

### 需要做的配置

#### 后端配置
1. `GltSubscribeMessageServiceImpl.java` - 订阅消息发送服务
   - 需要配置 `SUBSCRIBE_TEMPLATE_ID` 为实际模板ID
   
2. `GltTicketOrderController.java` - 订单创建时通知配送员
   - 注入 `GltSubscribeMessageService` 和 `UserMapper`
   - 添加 `notifyRidersOfNewOrder` 方法

#### 前端配置
1. `src/rider/index.tsx`
   - `handleRequestSubscribeMessage` 函数需要配置实际的模板ID

### 微信后台需要申请的模板
模板名称：订单配送通知
关键词：订单状态、订单编号、配送地址、商品数量、通知时间
