first commit

This commit is contained in:
2025-10-16 21:32:16 +08:00
commit c446df73b5
229 changed files with 499497 additions and 0 deletions

View File

@@ -0,0 +1,186 @@
import { Order } from '../types';
import apiService from './apiService';
import { isMockMode } from './apiService';
class OrderService {
// 模拟订单数据
private mockOrders: Order[];
/**
* 构造函数,初始化模拟订单数据
*/
constructor() {
this.mockOrders = [
{
id: 1001,
startPoint: {
id: 1,
name: '瓦尔塔蓄电池昆明总店',
longitude: 102.705745,
latitude: 25.055281
},
endPoint: {
name: '昆明德众汽车销售服务有限公司',
longitude: 102.714686,
latitude: 25.047134
},
status: 'pending',
goodsType: '瓦尔塔AGM蓄电池',
goodsWeight: 50,
createTime: Date.now() - 3600000 // 1小时前创建
},
{
id: 1002,
startPoint: {
id: 2,
name: '瓦尔塔蓄电池盘龙区分店',
longitude: 102.728421,
latitude: 25.042498
},
endPoint: {
name: '云南中致远汽车销售有限公司',
longitude: 102.796212,
latitude: 24.936947
},
status: 'pending',
goodsType: '瓦尔塔EFB蓄电池',
goodsWeight: 120,
createTime: Date.now() - 7200000 // 2小时前创建
},
{
id: 1003,
startPoint: {
id: 3,
name: '瓦尔塔蓄电池西山区分店',
longitude: 102.689190,
latitude: 25.028234
},
endPoint: {
name: '昆明宝远汽车销售服务有限公司',
longitude: 102.756212,
latitude: 24.986947
},
status: 'pending',
goodsType: '瓦尔塔普通铅酸蓄电池',
goodsWeight: 80,
createTime: Date.now() - 10800000 // 3小时前创建
}
];
}
/**
* 获取所有待处理订单
*/
async getPendingOrders(): Promise<Order[]> {
if (isMockMode) {
return [...this.mockOrders];
}
return apiService.getPendingOrders();
}
/**
* 根据ID获取订单
*/
async getOrderById(id: number): Promise<Order | null> {
if (isMockMode) {
const order = this.mockOrders.find(o => o.id === id);
return order || null;
}
return apiService.getOrderById(id);
}
/**
* 指派订单给货运人员
* @param orderId 订单ID
* @param deliveryPersonId 货运人员ID
* @returns 指派结果包含success状态和可选消息
*/
async assignOrder(orderId: number, deliveryPersonId: number): Promise<{ success: boolean; message?: string }> {
if (isMockMode) {
// 模拟数据 - 查找订单并更新状态
const order = this.mockOrders.find(o => o.id === orderId);
if (order) {
order.status = 'assigned';
order.deliveryPersonId = deliveryPersonId;
console.log(`[MOCK] 订单 ${orderId} 已指派给货运人员 ${deliveryPersonId}`);
return { success: true, message: '指派成功' };
} else {
console.warn(`[MOCK] 订单 ${orderId} 不存在`);
return { success: false, message: '订单不存在' };
}
}
// 真实环境中调用API
try {
return await apiService.assignOrder(orderId, deliveryPersonId);
} catch (error) {
console.error('指派订单失败:', error);
return { success: false, message: error instanceof Error ? error.message : '指派失败' };
}
}
/**
* 更新订单状态
*/
async updateOrderStatus(orderId: number, status: Order['status']): Promise<{ success: boolean; message?: string }> {
if (isMockMode) {
const order = this.mockOrders.find(o => o.id === orderId);
if (order) {
order.status = status;
console.log(`[MOCK] 订单 ${orderId} 状态更新为 ${status}`);
return { success: true, message: '状态更新成功' };
}
return { success: false, message: '订单不存在' };
}
return apiService.updateOrderStatus(orderId, status).then(result => ({
success: result.success,
message: result.message || '状态更新成功'
}));
}
/**
* 创建新订单
*/
async createOrder(orderData: Omit<Order, 'id' | 'createTime'>): Promise<Order> {
if (isMockMode) {
const newOrder: Order = {
...orderData,
id: Math.max(...this.mockOrders.map(o => o.id), 1000) + 1,
createTime: Date.now()
};
this.mockOrders.push(newOrder);
return newOrder;
}
return apiService.createOrder(orderData);
}
/**
* 获取货运人员的订单列表
*/
async getDeliveryPersonOrders(deliveryPersonId: number): Promise<Order[]> {
if (isMockMode) {
// 模拟模式下返回部分订单
return this.mockOrders.slice(0, 2);
}
return apiService.getDeliveryPersonOrders(deliveryPersonId);
}
/**
* 删除订单
* @param orderId 订单ID
*/
async deleteOrder(orderId: number): Promise<void> {
if (isMockMode) {
// 在模拟数据中删除订单
const index = this.mockOrders.findIndex(o => o.id === orderId);
if (index !== -1) {
this.mockOrders.splice(index, 1);
console.log(`订单 ${orderId} 已删除`);
}
return;
}
return apiService.deleteOrder(orderId);
}
}
export default new OrderService();