Files
agent/mock/order.mock.ts
2026-02-16 12:46:37 +08:00

254 lines
6.3 KiB
TypeScript

import type { Order } from '@/pages/Order/data';
// 模拟订单数据
const orders: Order[] = [
{
id: '1',
orderNo: 'ORD202402140001',
customerName: '张三',
customerPhone: '13800138001',
customerEmail: 'zhangsan@example.com',
items: [
{
id: '1-1',
orderId: '1',
productName: 'iPhone 15 Pro Max',
productImage: 'https://via.placeholder.com/80',
quantity: 1,
price: 9999,
subtotal: 9999,
},
{
id: '1-2',
orderId: '1',
productName: 'AirPods Pro',
productImage: 'https://via.placeholder.com/80',
quantity: 1,
price: 1899,
subtotal: 1899,
},
],
totalAmount: 11898,
status: 'completed',
paymentMethod: 'wechat',
paymentTime: '2024-02-14 10:30:00',
shippingAddress: '北京市朝阳区建国路88号',
shippingCompany: '顺丰速运',
shippingNo: 'SF1234567890',
shippedAt: '2024-02-14 14:00:00',
completedAt: '2024-02-15 16:30:00',
createdAt: '2024-02-14 10:00:00',
updatedAt: '2024-02-15 16:30:00',
},
{
id: '2',
orderNo: 'ORD202402140002',
customerName: '李四',
customerPhone: '13800138002',
items: [
{
id: '2-1',
orderId: '2',
productName: 'MacBook Pro 14',
productImage: 'https://via.placeholder.com/80',
quantity: 1,
price: 14999,
subtotal: 14999,
},
],
totalAmount: 14999,
status: 'shipped',
paymentMethod: 'alipay',
paymentTime: '2024-02-14 11:00:00',
shippingAddress: '上海市浦东新区陆家嘴环路100号',
shippingCompany: '京东物流',
shippingNo: 'JD0987654321',
shippedAt: '2024-02-14 15:30:00',
createdAt: '2024-02-14 10:45:00',
updatedAt: '2024-02-14 15:30:00',
},
{
id: '3',
orderNo: 'ORD202402140003',
customerName: '王五',
customerPhone: '13800138003',
customerEmail: 'wangwu@example.com',
items: [
{
id: '3-1',
orderId: '3',
productName: 'iPad Pro 12.9',
productImage: 'https://via.placeholder.com/80',
quantity: 2,
price: 8499,
subtotal: 16998,
},
],
totalAmount: 16998,
status: 'paid',
paymentMethod: 'bank',
paymentTime: '2024-02-14 13:00:00',
shippingAddress: '广州市天河区天河路385号',
createdAt: '2024-02-14 12:30:00',
updatedAt: '2024-02-14 13:00:00',
},
{
id: '4',
orderNo: 'ORD202402140004',
customerName: '赵六',
customerPhone: '13800138004',
items: [
{
id: '4-1',
orderId: '4',
productName: 'Apple Watch Ultra',
productImage: 'https://via.placeholder.com/80',
quantity: 1,
price: 5999,
subtotal: 5999,
},
],
totalAmount: 5999,
status: 'pending',
paymentMethod: 'wechat',
createdAt: '2024-02-14 14:00:00',
updatedAt: '2024-02-14 14:00:00',
},
{
id: '5',
orderNo: 'ORD202402140005',
customerName: '孙七',
customerPhone: '13800138005',
customerEmail: 'sunqi@example.com',
items: [
{
id: '5-1',
orderId: '5',
productName: 'AirPods Max',
productImage: 'https://via.placeholder.com/80',
quantity: 1,
price: 4399,
subtotal: 4399,
},
],
totalAmount: 4399,
status: 'cancelled',
paymentMethod: 'alipay',
cancelledAt: '2024-02-14 15:00:00',
cancelReason: '不想买了',
createdAt: '2024-02-14 09:00:00',
updatedAt: '2024-02-14 15:00:00',
},
];
export default {
// 查询订单列表
'GET /api/orders': (req: any, res: any) => {
const { current = 1, pageSize = 10, orderNo, customerName, status, paymentMethod } = req.query;
let filteredOrders = [...orders];
// 按订单号筛选
if (orderNo) {
filteredOrders = filteredOrders.filter((order) =>
order.orderNo.includes(orderNo),
);
}
// 按客户姓名筛选
if (customerName) {
filteredOrders = filteredOrders.filter((order) =>
order.customerName.includes(customerName),
);
}
// 按订单状态筛选
if (status) {
filteredOrders = filteredOrders.filter((order) => order.status === status);
}
// 按支付方式筛选
if (paymentMethod) {
filteredOrders = filteredOrders.filter(
(order) => order.paymentMethod === paymentMethod,
);
}
// 分页
const start = (current - 1) * pageSize;
const end = start + pageSize;
const paginatedOrders = filteredOrders.slice(start, end);
res.send({
success: true,
data: paginatedOrders,
total: filteredOrders.length,
});
},
// 查询订单详情
'GET /api/orders/:id': (req: any, res: any) => {
const { id } = req.params;
const order = orders.find((item) => item.id === id);
if (order) {
res.send({
success: true,
data: order,
});
} else {
res.status(404).send({
success: false,
message: '订单不存在',
});
}
},
// 订单发货
'POST /api/orders/:id/ship': (req: any, res: any) => {
const { id } = req.params;
const order = orders.find((item) => item.id === id);
if (order) {
order.status = 'shipped';
order.shippingCompany = req.body.shippingCompany;
order.shippingNo = req.body.shippingNo;
order.shippedAt = new Date().toISOString();
order.updatedAt = new Date().toISOString();
res.send({
success: true,
message: '发货成功',
});
} else {
res.status(404).send({
success: false,
message: '订单不存在',
});
}
},
// 取消订单
'POST /api/orders/:id/cancel': (req: any, res: any) => {
const { id } = req.params;
const order = orders.find((item) => item.id === id);
if (order) {
order.status = 'cancelled';
order.cancelReason = req.body.description || req.body.reason;
order.cancelledAt = new Date().toISOString();
order.updatedAt = new Date().toISOString();
res.send({
success: true,
message: '订单已取消',
});
} else {
res.status(404).send({
success: false,
message: '订单不存在',
});
}
},
};