1 changed files with 143 additions and 0 deletions
@ -0,0 +1,143 @@ |
|||||
|
// 更新商品联系人信息的数据库函数
|
||||
|
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 |
||||
|
} |
||||
|
} |
||||
|
); |
||||
|
|
||||
|
// 创建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 |
||||
|
} |
||||
|
} |
||||
|
); |
||||
|
|
||||
|
// 主函数:更新商品联系人信息
|
||||
|
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); |
||||
|
} finally { |
||||
|
// 关闭数据库连接
|
||||
|
await Promise.all([ |
||||
|
wechatAppSequelize.close(), |
||||
|
userLoginSequelize.close() |
||||
|
]); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 导出函数供其他模块使用
|
||||
|
module.exports = updateProductContacts; |
||||
|
|
||||
|
// 如果直接运行此文件,则执行函数
|
||||
|
if (require.main === module) { |
||||
|
updateProductContacts(); |
||||
|
} |
||||
Loading…
Reference in new issue