const mongoose = require('mongoose'); const Vehicle = require('./models/Vehicle'); const Customer = require('./models/Customer'); const Order = require('./models/Order'); const Store = require('./models/Store'); const Rider = require('./models/Rider'); const { hashPassword } = require('./utils/password'); mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost:27017/e-scooter-rental') .then(() => console.log('✅ MongoDB 连接成功')) .catch(err => console.error('❌ MongoDB 连接失败:', err)); async function clearData() { console.log('🧹 清空数据...'); await Vehicle.deleteMany({}); await Customer.deleteMany({}); await Order.deleteMany({}); await Store.deleteMany({}); await Rider.deleteMany({}); console.log('✅ 数据已清空'); } async function createVehicles() { const vehicles = [ { vehicleId: 'SCOOTER001', storeId: 'STORE001', frameNumber: 'FN20240001', model: '黑骑士', color: '黑色', batteryType: '锂电池', batteryCapacity: 20, batteryStatus: '正常', status: '空闲', purchaseDate: new Date('2024-01-15'), purchasePrice: 3500, purchaseSupplier: '小牛电动车' }, { vehicleId: 'SCOOTER002', storeId: 'STORE001', frameNumber: 'FN20240002', model: '黑骑士', color: '白色', batteryType: '锂电池', batteryCapacity: 20, batteryStatus: '正常', status: '空闲', purchaseDate: new Date('2024-02-20'), purchasePrice: 3500, purchaseSupplier: '小牛电动车' }, { vehicleId: 'SCOOTER003', storeId: 'STORE002', frameNumber: 'FN20240003', model: '电动车', color: '蓝色', batteryType: '铅酸电池', batteryCapacity: 24, batteryStatus: '正常', status: '空闲', purchaseDate: new Date('2024-03-10'), purchasePrice: 2800, purchaseSupplier: '雅迪电动车' }, { vehicleId: 'SCOOTER004', storeId: 'STORE002', frameNumber: 'FN20240004', model: '高端豪车', color: '红色', batteryType: '锂电池', batteryCapacity: 30, batteryStatus: '正常', status: '空闲', purchaseDate: new Date('2024-04-05'), purchasePrice: 8000, purchaseSupplier: '特斯拉' }, { vehicleId: 'SCOOTER005', storeId: 'STORE003', frameNumber: 'FN20240005', model: '普通标准套餐', color: '绿色', batteryType: '铅酸电池', batteryCapacity: 20, batteryStatus: '正常', status: '空闲', purchaseDate: new Date('2024-05-01'), purchasePrice: 2500, purchaseSupplier: '爱玛电动车' } ]; console.log('🚗 创建示例车辆...'); await Vehicle.insertMany(vehicles); console.log(`✅ 创建了 ${vehicles.length} 辆车`); } async function createCustomers() { const customers = [ { customerId: 'CUST001', name: '张三', phone: '13800138000', idCard: '110101199001011234', address: '北京市朝阳区', email: 'zhangsan@example.com' }, { customerId: 'CUST002', name: '李四', phone: '13800138001', idCard: '110101199002022345', address: '北京市海淀区', email: 'lisi@example.com' }, { customerId: 'CUST003', name: '王五', phone: '13800138002', idCard: '110101199003033456', address: '北京市西城区', email: 'wangwu@example.com' }, { customerId: 'CUST004', name: '赵六', phone: '13800138003', idCard: '110101199004044567', address: '北京市东城区', email: 'zhaoliu@example.com' }, { customerId: 'CUST005', name: '钱七', phone: '13800138004', idCard: '110101199005055678', address: '北京市丰台区', email: 'qianqi@example.com' } ]; console.log('👥 创建示例客户...'); await Customer.insertMany(customers); console.log(`✅ 创建了 ${customers.length} 个客户`); } async function createOrders() { const vehicles = await Vehicle.find().limit(3); const customers = await Customer.find().limit(3); const orders = [ { orderNumber: 'ORDER001', customer: customers[0]._id, vehicle: vehicles[0]._id, startDate: new Date('2026-02-20'), endDate: new Date('2026-03-20'), rentalFee: 50, deposit: 200, totalAmount: 300, status: '进行中' }, { orderNumber: 'ORDER002', customer: customers[1]._id, vehicle: vehicles[1]._id, startDate: new Date('2026-02-15'), endDate: new Date('2026-03-15'), rentalFee: 50, deposit: 200, totalAmount: 300, status: '进行中' }, { orderNumber: 'ORDER003', customer: customers[2]._id, vehicle: vehicles[2]._id, startDate: new Date('2026-01-10'), endDate: new Date('2026-02-10'), actualEndDate: new Date('2026-02-10'), rentalFee: 40, deposit: 150, totalAmount: 200, paidAmount: 200, status: '已完成' } ]; console.log('📋 创建示例订单...'); await Order.insertMany(orders); console.log(`✅ 创建了 ${orders.length} 个订单`); } async function createStores() { const stores = [ { storeId: 'STORE001', name: '朝阳电动车门店', address: '北京市朝阳区建国路88号', phone: '010-12345678', manager: '张三', status: '营业中', approvalStatus: '已通过', images: [] }, { storeId: 'STORE002', name: '海淀电动车门店', address: '北京市海淀区中关村大街100号', phone: '010-87654321', manager: '李四', status: '营业中', approvalStatus: '已通过', images: [] }, { storeId: 'STORE003', name: '西城电动车门店', address: '北京市西城区西单北大街120号', phone: '010-11223344', manager: '王五', status: '营业中', approvalStatus: '已通过', images: [] } ]; console.log('🏪 创建示例门店...'); await Store.insertMany(stores); console.log(`✅ 创建了 ${stores.length} 个门店`); } async function createRiders() { // 用 bcrypt 哈希密码 const hashedPwd = await hashPassword('123456'); const riders = [ { riderId: 'RIDER001', name: '张骑手', phone: '13900139000', password: hashedPwd, role: 'admin', status: 'active', rating: 4.8, totalOrders: 120, totalIncome: 15000 }, { riderId: 'RIDER002', name: '李骑手', phone: '13900139001', password: hashedPwd, role: 'store', status: 'active', rating: 4.5, totalOrders: 80, totalIncome: 10000 }, { riderId: 'RIDER003', name: '王骑手', phone: '13900139002', password: hashedPwd, role: 'customer', status: 'inactive', rating: 4.9, totalOrders: 200, totalIncome: 25000 } ]; console.log('🛵 创建示例骑手...'); await Rider.insertMany(riders); console.log(`✅ 创建了 ${riders.length} 个骑手`); } async function main() { try { await clearData(); await createStores(); await createVehicles(); await createCustomers(); await createOrders(); await createRiders(); console.log('\n🎉 示例数据创建完成!'); console.log('车辆: 5 辆 | 客户: 5 个 | 订单: 3 个 | 门店: 3 个 | 骑手: 3 个'); console.log('骑手密码统一: 123456'); console.log('RIDER001=admin | RIDER002=store | RIDER003=customer'); } catch (error) { console.error('❌ 创建示例数据失败:', error); } finally { mongoose.disconnect(); process.exit(0); } } main();