e-scooter-rental-system/server/initDemoUsers.js

82 lines
2.5 KiB
JavaScript

/**
* 初始化小程序演示账号
* 用法: node server/initDemoUsers.js
*/
require('dotenv').config();
const mongoose = require('mongoose');
const Store = require('./models/Store');
const StoreAuth = require('./models/StoreAuth');
const Rider = require('./models/Rider');
const { hashPassword } = require('./utils/password');
async function init() {
await mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost:27017/e-scooter-rental');
console.log('🔄 连接 MongoDB...\n');
// ===== 1. 门店演示账号 =====
console.log('--- 门店演示账号 ---');
const storeDemo = await StoreAuth.findOne({ username: 'store_demo' });
if (storeDemo) {
console.log('⚠️ 门店演示账号已存在: store_demo / demo123');
} else {
// 确保有门店可关联
let store = await Store.findOne({ approvalStatus: '已通过' });
if (!store) store = await Store.findOne();
if (!store) {
// 没有门店,先创建一个
store = await Store.create({
storeId: 'STORE_DEMO',
name: '演示门店',
address: '演示地址',
phone: '13800138000',
manager: '演示管理员',
status: '营业中',
approvalStatus: '已通过'
});
console.log('✅ 创建演示门店: STORE_DEMO');
}
const hashed = await hashPassword('demo123');
await StoreAuth.create({
storeId: store.storeId,
username: 'store_demo',
password: hashed,
name: '门店演示账号',
status: 'active'
});
console.log('✅ 门店演示账号创建成功!');
}
console.log(' 用户名: store_demo');
console.log(' 密码: demo123');
console.log('');
// ===== 2. 骑手演示账号 =====
console.log('--- 骑手演示账号 ---');
const riderDemo = await Rider.findOne({ phone: '13800138100' });
if (riderDemo) {
console.log('⚠️ 骑手演示账号已存在: 13800138100 / demo123');
} else {
const hashed = await hashPassword('demo123');
await Rider.create({
riderId: 'RIDER_DEMO',
name: '骑手演示账号',
phone: '13800138100',
password: hashed,
role: 'rider',
status: 'active',
rating: 5.0,
totalOrders: 0,
totalIncome: 0
});
console.log('✅ 骑手演示账号创建成功!');
}
console.log(' 手机号: 13800138100');
console.log(' 密码: demo123');
console.log('');
console.log('🎉 演示账号初始化完成!');
await mongoose.disconnect();
}
init().catch(err => { console.error(err); process.exit(1); });