更新数据库配置为niumall,添加用户登出功能并集成axios
This commit is contained in:
@@ -3,7 +3,7 @@ DB_HOST=129.211.213.226
|
||||
DB_PORT=9527
|
||||
DB_USERNAME=root
|
||||
DB_PASSWORD=aiotAiot123!
|
||||
DB_NAME=jiebandata
|
||||
DB_NAME=niumall
|
||||
|
||||
# JWT配置
|
||||
JWT_SECRET=niumall_jwt_secret_key_2024
|
||||
|
||||
135
backend/init_database.js
Normal file
135
backend/init_database.js
Normal file
@@ -0,0 +1,135 @@
|
||||
const { sequelize } = require('./models');
|
||||
const { ApiUser, Order } = require('./models');
|
||||
const bcrypt = require('bcryptjs');
|
||||
|
||||
// 演示账号数据
|
||||
const demoUsers = [
|
||||
{
|
||||
username: 'admin',
|
||||
password: 'admin123',
|
||||
phone: '13800138001',
|
||||
email: 'admin@niumall.com',
|
||||
user_type: 'admin',
|
||||
status: 'active'
|
||||
},
|
||||
{
|
||||
username: 'buyer',
|
||||
password: 'buyer123',
|
||||
phone: '13800138002',
|
||||
email: 'buyer@niumall.com',
|
||||
user_type: 'client',
|
||||
status: 'active'
|
||||
},
|
||||
{
|
||||
username: 'trader',
|
||||
password: 'trader123',
|
||||
phone: '13800138003',
|
||||
email: 'trader@niumall.com',
|
||||
user_type: 'supplier',
|
||||
status: 'active'
|
||||
}
|
||||
];
|
||||
|
||||
// 演示订单数据
|
||||
const demoOrders = [
|
||||
{
|
||||
orderNo: 'ORD20240520001',
|
||||
buyerId: 2, // buyer用户
|
||||
buyerName: '采购商',
|
||||
supplierId: 3, // trader用户
|
||||
supplierName: '供应商',
|
||||
traderId: null,
|
||||
traderName: null,
|
||||
cattleBreed: '西门塔尔牛',
|
||||
cattleCount: 10,
|
||||
expectedWeight: 5000.00,
|
||||
actualWeight: null,
|
||||
unitPrice: 35.00,
|
||||
totalAmount: 175000.00,
|
||||
paidAmount: 50000.00,
|
||||
remainingAmount: 125000.00,
|
||||
status: 'pending',
|
||||
deliveryAddress: '北京市朝阳区某某路123号',
|
||||
expectedDeliveryDate: new Date('2024-06-01'),
|
||||
actualDeliveryDate: null,
|
||||
notes: '请按时交货,质量要保证'
|
||||
},
|
||||
{
|
||||
orderNo: 'ORD20240520002',
|
||||
buyerId: 2, // buyer用户
|
||||
buyerName: '采购商',
|
||||
supplierId: 3, // trader用户
|
||||
supplierName: '供应商',
|
||||
traderId: null,
|
||||
traderName: null,
|
||||
cattleBreed: '夏洛来牛',
|
||||
cattleCount: 5,
|
||||
expectedWeight: 2500.00,
|
||||
actualWeight: null,
|
||||
unitPrice: 38.00,
|
||||
totalAmount: 95000.00,
|
||||
paidAmount: 95000.00,
|
||||
remainingAmount: 0.00,
|
||||
status: 'confirmed',
|
||||
deliveryAddress: '北京市海淀区某某路456号',
|
||||
expectedDeliveryDate: new Date('2024-05-28'),
|
||||
actualDeliveryDate: null,
|
||||
notes: '加急订单'
|
||||
}
|
||||
];
|
||||
|
||||
// 初始化数据库
|
||||
const initDatabase = async () => {
|
||||
try {
|
||||
console.log('开始初始化数据库...');
|
||||
|
||||
// 测试数据库连接
|
||||
await sequelize.authenticate();
|
||||
console.log('✅ 数据库连接成功');
|
||||
|
||||
// 删除并重新创建表结构
|
||||
console.log('正在创建表结构...');
|
||||
await sequelize.sync({ force: true });
|
||||
console.log('✅ 表结构创建完成');
|
||||
|
||||
// 添加演示用户
|
||||
console.log('正在添加演示用户...');
|
||||
for (const userData of demoUsers) {
|
||||
// 加密密码
|
||||
const salt = await bcrypt.genSalt(10);
|
||||
const passwordHash = await bcrypt.hash(userData.password, salt);
|
||||
|
||||
try {
|
||||
await ApiUser.create({
|
||||
...userData,
|
||||
password_hash: passwordHash
|
||||
});
|
||||
console.log(`✅ 成功创建用户: ${userData.username} (${userData.user_type})`);
|
||||
} catch (error) {
|
||||
console.error(`❌ 创建用户 ${userData.username} 时出错:`, error.message);
|
||||
}
|
||||
}
|
||||
|
||||
// 添加演示订单
|
||||
console.log('正在添加演示订单...');
|
||||
for (const orderData of demoOrders) {
|
||||
try {
|
||||
await Order.create(orderData);
|
||||
console.log(`✅ 成功创建订单: ${orderData.orderNo}`);
|
||||
} catch (error) {
|
||||
console.error(`❌ 创建订单 ${orderData.orderNo} 时出错:`, error.message);
|
||||
}
|
||||
}
|
||||
|
||||
console.log('✅ 数据库初始化完成');
|
||||
} catch (error) {
|
||||
console.error('❌ 数据库初始化失败:', error.message);
|
||||
console.error(error);
|
||||
} finally {
|
||||
// 关闭数据库连接
|
||||
await sequelize.close();
|
||||
}
|
||||
};
|
||||
|
||||
// 执行初始化
|
||||
initDatabase();
|
||||
@@ -39,6 +39,7 @@ const jwt = require('jsonwebtoken')
|
||||
* example: 权限不足
|
||||
*/
|
||||
|
||||
const jwt = require('jsonwebtoken')
|
||||
// 从环境变量或配置中获取JWT密钥
|
||||
const JWT_SECRET = process.env.JWT_SECRET || 'your_jwt_secret_key'
|
||||
|
||||
|
||||
@@ -12,4 +12,23 @@ router.post('/mini-program/login', AuthController.miniProgramLogin);
|
||||
// 获取当前用户信息
|
||||
router.get('/current', authenticate, AuthController.getCurrentUser);
|
||||
|
||||
// 用户登出
|
||||
router.post('/logout', authenticate, async (req, res) => {
|
||||
try {
|
||||
// JWT是无状态的,服务器端无法直接使token失效
|
||||
// 登出操作主要由客户端完成,如删除本地存储的token
|
||||
// 这里只返回成功信息
|
||||
res.json({
|
||||
success: true,
|
||||
message: '登出成功'
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('用户登出失败:', error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: '登出失败,请稍后再试'
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user