initial commit
This commit is contained in:
253
mock/order.mock.ts
Normal file
253
mock/order.mock.ts
Normal file
@@ -0,0 +1,253 @@
|
||||
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: '订单不存在',
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user