361 lines
7.8 KiB
Markdown
361 lines
7.8 KiB
Markdown
# 后台订单显示优化说明
|
||
|
||
## 📋 优化内容
|
||
|
||
### 新增显示字段
|
||
- ✅ 购买者昵称
|
||
- ✅ 购买的书名(《一场Soul的创业实验》)
|
||
- ✅ 购买的章节(第X章 第X节)
|
||
- ✅ 商品类型标签
|
||
|
||
---
|
||
|
||
## 🔧 修改的文件
|
||
|
||
### 1. `/app/api/orders/route.ts` - 订单API
|
||
|
||
**修改内容**:
|
||
- JOIN `users` 表获取购买者信息
|
||
- 返回 `userNickname` 和 `userAvatar` 字段
|
||
|
||
**新增字段**:
|
||
```typescript
|
||
{
|
||
userNickname: string | null, // 购买者昵称
|
||
userAvatar: string | null // 购买者头像
|
||
}
|
||
```
|
||
|
||
**SQL 查询**:
|
||
```sql
|
||
SELECT o.*, u.nickname as user_nickname, u.avatar as user_avatar
|
||
FROM orders o
|
||
LEFT JOIN users u ON o.user_id = u.id
|
||
ORDER BY o.created_at DESC
|
||
```
|
||
|
||
---
|
||
|
||
### 2. `/app/admin/page.tsx` - 管理后台首页
|
||
|
||
**优化内容**:
|
||
- 最近订单卡片显示购买者昵称
|
||
- 显示完整的书名和章节信息
|
||
- 优化UI布局,增加头像展示
|
||
- 改进时间显示格式
|
||
|
||
**显示效果**:
|
||
|
||
```
|
||
┌─────────────────────────────────────────────┐
|
||
│ [头像] 张三 · 《一场Soul的创业实验》 │
|
||
│ 章节购买 | 02-04 14:30 +¥0.95 │
|
||
│ 推荐: ABC123 │
|
||
└─────────────────────────────────────────────┘
|
||
```
|
||
|
||
**核心函数**:
|
||
```typescript
|
||
// 格式化商品信息
|
||
const formatOrderProduct = (p: any) => {
|
||
// 解析 description 字段,返回:
|
||
// { title: "第1章 第2节", subtitle: "《一场Soul的创业实验》" }
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 3. `/app/admin/orders/page.tsx` - 订单管理页面
|
||
|
||
**优化内容**:
|
||
- 从API读取订单(包含购买者昵称)
|
||
- 显示完整的书名和章节
|
||
- 改进搜索功能(支持昵称、手机号、商品名搜索)
|
||
- 支持订单号搜索
|
||
- 优化状态筛选(兼容 'paid' 和 'completed' 状态)
|
||
|
||
**表格列**:
|
||
| 订单号 | 用户 | 商品 | 金额 | 支付方式 | 状态 | 分销佣金 | 下单时间 |
|
||
|--------|------|------|------|----------|------|----------|----------|
|
||
| MP20260204... | 张三<br>138xxxx | 第1章 第2节<br>《一场Soul...》 | ¥0.95 | 微信支付 | 已完成 | ¥0.86 | 2026-02-04 14:30 |
|
||
|
||
**核心函数**:
|
||
```typescript
|
||
// 格式化商品信息
|
||
const formatProduct = (order: any) => {
|
||
return {
|
||
name: "第1章 第2节",
|
||
type: "《一场Soul的创业实验》"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 商品信息解析逻辑
|
||
|
||
### 输入数据(orders 表)
|
||
```javascript
|
||
{
|
||
productType: "section", // 商品类型
|
||
productId: "1-2", // 章节ID
|
||
description: "章节购买-1-2", // 商品描述
|
||
amount: 0.95 // 金额
|
||
}
|
||
```
|
||
|
||
### 解析规则
|
||
|
||
#### 1. 章节购买
|
||
**输入**:
|
||
```javascript
|
||
{
|
||
productType: "section",
|
||
productId: "1-2",
|
||
description: "章节购买-1-2"
|
||
}
|
||
```
|
||
|
||
**输出**:
|
||
```javascript
|
||
{
|
||
title: "第1章 第2节",
|
||
subtitle: "《一场Soul的创业实验》"
|
||
}
|
||
```
|
||
|
||
#### 2. 整本购买
|
||
**输入**:
|
||
```javascript
|
||
{
|
||
productType: "fullbook",
|
||
description: "《一场Soul的创业实验》全书"
|
||
}
|
||
```
|
||
|
||
**输出**:
|
||
```javascript
|
||
{
|
||
title: "《一场Soul的创业实验》",
|
||
subtitle: "全书购买"
|
||
}
|
||
```
|
||
|
||
#### 3. 找伙伴
|
||
**输入**:
|
||
```javascript
|
||
{
|
||
productType: "match",
|
||
description: "找伙伴匹配"
|
||
}
|
||
```
|
||
|
||
**输出**:
|
||
```javascript
|
||
{
|
||
title: "找伙伴匹配",
|
||
subtitle: "功能服务"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 🎨 UI 改进
|
||
|
||
### 主仪表盘 - 最近订单
|
||
|
||
**旧版**:
|
||
```
|
||
单章 1-2
|
||
2026-02-04 14:30:15
|
||
邀请码: ABC123
|
||
|
||
+¥0.95
|
||
微信支付
|
||
```
|
||
|
||
**新版**:
|
||
```
|
||
[头像] 张三 · 《一场Soul的创业实验》
|
||
章节购买 | 02-04 14:30 +¥0.95
|
||
推荐: ABC123 微信
|
||
```
|
||
|
||
**优势**:
|
||
- ✅ 一目了然看到购买者
|
||
- ✅ 清晰显示书名和章节
|
||
- ✅ 更紧凑的布局
|
||
- ✅ 支持hover高亮
|
||
|
||
---
|
||
|
||
### 订单管理页面
|
||
|
||
**改进点**:
|
||
1. **用户列** - 显示昵称和手机号
|
||
2. **商品列** - 显示书名和章节,带类型标签
|
||
3. **搜索** - 支持昵称、手机号、商品名、订单号搜索
|
||
4. **筛选** - 支持多种订单状态筛选
|
||
5. **兼容性** - 兼容 'paid' 和 'completed' 两种状态
|
||
|
||
---
|
||
|
||
## 🔍 搜索功能增强
|
||
|
||
### 支持的搜索维度
|
||
1. **用户维度**
|
||
- 购买者昵称
|
||
- 购买者手机号
|
||
|
||
2. **订单维度**
|
||
- 订单号(orderSn)
|
||
- 订单ID
|
||
|
||
3. **商品维度**
|
||
- 商品名称(书名、章节)
|
||
- 商品描述
|
||
|
||
### 示例
|
||
```javascript
|
||
// 搜索 "张三" → 匹配用户昵称
|
||
// 搜索 "138" → 匹配手机号
|
||
// 搜索 "第1章" → 匹配商品名称
|
||
// 搜索 "MP20260204" → 匹配订单号
|
||
```
|
||
|
||
---
|
||
|
||
## ✅ 测试验证
|
||
|
||
### 测试场景
|
||
|
||
#### 1. 主仪表盘 - 最近订单
|
||
- [ ] 显示购买者昵称
|
||
- [ ] 显示完整书名
|
||
- [ ] 显示章节信息
|
||
- [ ] 显示推荐人
|
||
- [ ] 头像正常显示
|
||
|
||
#### 2. 订单管理页面
|
||
- [ ] 用户列显示昵称和手机号
|
||
- [ ] 商品列显示书名和章节
|
||
- [ ] 搜索功能正常
|
||
- [ ] 筛选功能正常
|
||
- [ ] 订单状态正确
|
||
|
||
#### 3. API 测试
|
||
```bash
|
||
# 测试订单API
|
||
curl http://localhost:3000/api/orders | jq '.orders[0] | {userNickname, description, productType}'
|
||
|
||
# 预期输出:
|
||
{
|
||
"userNickname": "张三",
|
||
"description": "章节购买-1-2",
|
||
"productType": "section"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 📝 数据库查询说明
|
||
|
||
### 原查询(无购买者信息)
|
||
```sql
|
||
SELECT * FROM orders ORDER BY created_at DESC
|
||
```
|
||
|
||
### 新查询(JOIN 用户信息)
|
||
```sql
|
||
SELECT
|
||
o.*,
|
||
u.nickname as user_nickname,
|
||
u.avatar as user_avatar
|
||
FROM orders o
|
||
LEFT JOIN users u ON o.user_id = u.id
|
||
ORDER BY o.created_at DESC
|
||
```
|
||
|
||
**优势**:
|
||
- 一次查询获取所有必要信息
|
||
- 避免前端多次查询
|
||
- 提升页面加载速度
|
||
|
||
---
|
||
|
||
## 🚀 部署说明
|
||
|
||
### 无需数据库迁移
|
||
- ✅ 只是修改查询逻辑,不改表结构
|
||
- ✅ 使用 LEFT JOIN,兼容旧数据
|
||
|
||
### 部署步骤
|
||
```bash
|
||
# 1. 构建
|
||
pnpm build
|
||
|
||
# 2. 部署
|
||
python devlop.py
|
||
|
||
# 3. 重启服务
|
||
# 在宝塔面板重启 PM2
|
||
```
|
||
|
||
---
|
||
|
||
## 📌 注意事项
|
||
|
||
### 1. 数据兼容性
|
||
- 如果 `user_id` 对应的用户不存在,显示"匿名用户"
|
||
- 如果 `description` 为空,使用 fallback 显示
|
||
|
||
### 2. 性能考虑
|
||
- LEFT JOIN 不会影响性能(users 表很小)
|
||
- 前端只展示最近 5 条订单,查询很快
|
||
|
||
### 3. 未来扩展
|
||
- 可以添加更多商品类型
|
||
- 可以添加订单详情弹窗
|
||
- 可以支持导出带购买者信息的Excel
|
||
|
||
---
|
||
|
||
## ✅ 完成清单
|
||
|
||
- ✅ 修改 `/api/orders` API(JOIN users)
|
||
- ✅ 优化主仪表盘"最近订单"卡片
|
||
- ✅ 优化订单管理页面表格
|
||
- ✅ 增强搜索功能
|
||
- ✅ 改进UI布局
|
||
- ✅ 创建文档
|
||
|
||
---
|
||
|
||
## 📸 效果预览
|
||
|
||
### 主仪表盘
|
||
```
|
||
┌─ 最近订单 ──────────────────────────────┐
|
||
│ │
|
||
│ [Z] 张三 · 《一场Soul的创业实验》 │
|
||
│ 章节购买 | 02-04 14:30 +¥0.95 │
|
||
│ 推荐: ABC123 │
|
||
│ │
|
||
│ [L] 李四 · 找伙伴匹配 +¥1.00 │
|
||
│ 功能服务 | 02-04 13:15 │
|
||
│ │
|
||
└──────────────────────────────────────────┘
|
||
```
|
||
|
||
### 订单管理页面
|
||
```
|
||
订单号 | 用户 | 商品 | 金额 | 状态
|
||
----------------|---------------|---------------------|--------|------
|
||
MP20260204... | 张三 | 第1章 第2节 | ¥0.95 | 已完成
|
||
| 138xxxx | 《一场Soul...》 | |
|
||
```
|
||
|
||
---
|
||
|
||
**优化完成!后台管理端现在可以清晰显示购买者、书名和章节信息了。**
|