|
|
|
|
// 更新商品联系人信息的数据库函数
|
|
|
|
|
require('dotenv').config();
|
|
|
|
|
const { Sequelize } = require('sequelize');
|
|
|
|
|
|
|
|
|
|
// 创建wechat_app数据库连接
|
|
|
|
|
const wechatAppSequelize = new Sequelize(
|
|
|
|
|
process.env.DB_DATABASE || 'wechat_app',
|
|
|
|
|
process.env.DB_USER || 'root',
|
|
|
|
|
process.env.DB_PASSWORD === undefined ? null : process.env.DB_PASSWORD,
|
|
|
|
|
{
|
|
|
|
|
host: process.env.DB_HOST || 'localhost',
|
|
|
|
|
port: process.env.DB_PORT || 3306,
|
|
|
|
|
dialect: 'mysql',
|
|
|
|
|
define: {
|
|
|
|
|
timestamps: false
|
|
|
|
|
},
|
|
|
|
|
timezone: '+08:00' // 设置时区为UTC+8
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// 创建userlogin数据库连接
|
|
|
|
|
const userLoginSequelize = new Sequelize(
|
|
|
|
|
'userlogin',
|
|
|
|
|
process.env.DB_USER || 'root',
|
|
|
|
|
process.env.DB_PASSWORD === undefined ? null : process.env.DB_PASSWORD,
|
|
|
|
|
{
|
|
|
|
|
host: process.env.DB_HOST || 'localhost',
|
|
|
|
|
port: process.env.DB_PORT || 3306,
|
|
|
|
|
dialect: 'mysql',
|
|
|
|
|
define: {
|
|
|
|
|
timestamps: false
|
|
|
|
|
},
|
|
|
|
|
timezone: '+08:00' // 设置时区为UTC+8
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// 主函数:更新商品联系人信息
|
|
|
|
|
async function updateProductContacts() {
|
|
|
|
|
try {
|
|
|
|
|
// 测试数据库连接
|
|
|
|
|
await Promise.all([
|
|
|
|
|
wechatAppSequelize.authenticate(),
|
|
|
|
|
userLoginSequelize.authenticate()
|
|
|
|
|
]);
|
|
|
|
|
console.log('✅ 数据库连接成功');
|
|
|
|
|
|
|
|
|
|
// 1. 查询wechat_app数据库中products表status为published且product_contact为null的记录
|
|
|
|
|
console.log('\n1. 查询待更新的商品...');
|
|
|
|
|
const products = await wechatAppSequelize.query(
|
|
|
|
|
'SELECT productId, productName FROM products WHERE status = ? AND product_contact IS NULL',
|
|
|
|
|
{
|
|
|
|
|
replacements: ['published'],
|
|
|
|
|
type: wechatAppSequelize.QueryTypes.SELECT
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
console.log(`📋 找到 ${products.length} 个待更新联系人信息的商品`);
|
|
|
|
|
|
|
|
|
|
if (products.length === 0) {
|
|
|
|
|
console.log('✅ 所有商品都已更新联系人信息,无需操作');
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 2. 查询userlogin库中managers表role为"销售员"的userName
|
|
|
|
|
console.log('\n2. 查询所有销售员...');
|
|
|
|
|
const managers = await userLoginSequelize.query(
|
|
|
|
|
'SELECT userName FROM managers WHERE role = ?',
|
|
|
|
|
{
|
|
|
|
|
replacements: ['销售员'],
|
|
|
|
|
type: userLoginSequelize.QueryTypes.SELECT
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const salesmanUserNames = managers.map(m => m.userName);
|
|
|
|
|
console.log(`👥 找到 ${salesmanUserNames.length} 名销售员`);
|
|
|
|
|
|
|
|
|
|
if (salesmanUserNames.length === 0) {
|
|
|
|
|
console.log('❌ 没有找到销售员,无法更新商品联系人信息');
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 3. 在wechat_app库中查询这些销售员的nickName和phoneNumber
|
|
|
|
|
console.log('\n3. 查询销售员的联系方式...');
|
|
|
|
|
const salesmenContacts = await wechatAppSequelize.query(
|
|
|
|
|
'SELECT nickName, phoneNumber FROM users WHERE nickName IN (?)',
|
|
|
|
|
{
|
|
|
|
|
replacements: [salesmanUserNames],
|
|
|
|
|
type: wechatAppSequelize.QueryTypes.SELECT
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
console.log(`📞 找到 ${salesmenContacts.length} 名有联系方式的销售员`);
|
|
|
|
|
|
|
|
|
|
if (salesmenContacts.length === 0) {
|
|
|
|
|
console.log('❌ 没有找到有联系方式的销售员,无法更新商品联系人信息');
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 4. 随机分配销售员到商品
|
|
|
|
|
console.log('\n4. 开始分配销售员到商品...');
|
|
|
|
|
let updatedCount = 0;
|
|
|
|
|
|
|
|
|
|
for (const product of products) {
|
|
|
|
|
// 随机选择一个销售员
|
|
|
|
|
const randomIndex = Math.floor(Math.random() * salesmenContacts.length);
|
|
|
|
|
const selectedSalesman = salesmenContacts[randomIndex];
|
|
|
|
|
|
|
|
|
|
// 更新商品的联系人信息
|
|
|
|
|
await wechatAppSequelize.query(
|
|
|
|
|
'UPDATE products SET product_contact = ?, contact_phone = ? WHERE productId = ?',
|
|
|
|
|
{
|
|
|
|
|
replacements: [
|
|
|
|
|
selectedSalesman.nickName,
|
|
|
|
|
selectedSalesman.phoneNumber,
|
|
|
|
|
product.productId
|
|
|
|
|
],
|
|
|
|
|
type: wechatAppSequelize.QueryTypes.UPDATE
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
console.log(`✅ 商品 ${product.productId} (${product.productName}) 已分配销售员: ${selectedSalesman.nickName} - ${selectedSalesman.phoneNumber}`);
|
|
|
|
|
updatedCount++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
console.log(`\n🎉 更新完成!共更新了 ${updatedCount} 个商品的联系人信息`);
|
|
|
|
|
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error('❌ 操作失败:', error.message);
|
|
|
|
|
console.error('📝 错误详情:', error);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 导出函数供其他模块使用
|
|
|
|
|
module.exports = updateProductContacts;
|
|
|
|
|
|
|
|
|
|
// 如果直接运行此文件,则执行更新操作
|
|
|
|
|
if (require.main === module) {
|
|
|
|
|
updateProductContacts();
|
|
|
|
|
}
|