Browse Source

删除测试脚本,保留关键文件代码

Integration
SwTt29 2 months ago
parent
commit
7065d22a3e
  1. 89
      check-specific-user.js
  2. 63
      reset-sync-status.js
  3. 10
      src/services/databaseService.js
  4. 46
      test-incremental.js

89
check-specific-user.js

@ -0,0 +1,89 @@
// 检查特定用户的同步状态和jiandaoyun_record_id字段
const mysql = require('mysql2/promise');
const config = require('./src/config/config');
// 要检查的用户ID
const targetUserId = 'user_1766039120078_lcmc7kom1';
async function checkSpecificUser() {
console.log(`===== 检查用户 ${targetUserId} 的同步状态 =====`);
let connection = null;
try {
// 1. 连接数据库
console.log('1. 连接数据库...');
connection = await mysql.createConnection({
host: config.db.host,
port: config.db.port,
user: config.db.user,
password: config.db.password,
database: config.db.database
});
console.log('数据库连接成功');
// 2. 查询该用户的详细信息
console.log(`\n2. 查询用户 ${targetUserId} 的详细信息...`);
const checkSql = `
SELECT userId, phoneNumber, nickName, type, authorized_region, sync_status,
last_sync_time, jiandaoyun_record_id, jiandao_record_id
FROM ${config.tables.users.name}
WHERE userId = ?
`;
const [rows] = await connection.execute(checkSql, [targetUserId]);
if (rows.length === 0) {
console.log(`未找到用户 ${targetUserId}`);
return;
}
const userInfo = rows[0];
console.log('用户信息:', JSON.stringify(userInfo, null, 2));
// 3. 检查是否有该用户的同步记录
console.log(`\n3. 检查用户 ${targetUserId} 是否在同步队列中...`);
const syncSql = `
SELECT userId, phoneNumber, sync_status, jiandaoyun_record_id
FROM ${config.tables.users.name}
WHERE (sync_status = 0 OR sync_status IS NULL)
AND (jiandaoyun_record_id IS NULL OR jiandaoyun_record_id = '')
LIMIT 10
`;
const [syncRows] = await connection.execute(syncSql);
console.log(`当前需要同步的用户数量: ${syncRows.length}`);
const isInSyncQueue = syncRows.some(user => user.userId === targetUserId);
console.log(`用户 ${targetUserId} 是否在同步队列中: ${isInSyncQueue}`);
if (syncRows.length > 0) {
console.log('同步队列中的用户ID:', syncRows.map(user => user.userId));
}
// 4. 检查是否有该用户的相关产品数据
console.log(`\n4. 检查用户 ${targetUserId} 的产品数据...`);
const productSql = `
SELECT * FROM ${config.tables.products.name}
WHERE userId = ?
LIMIT 5
`;
const [productRows] = await connection.execute(productSql, [targetUserId]);
console.log(`用户 ${targetUserId} 的产品数量: ${productRows.length}`);
if (productRows.length > 0) {
console.log('产品示例:', JSON.stringify(productRows.slice(0, 2), null, 2));
}
} catch (error) {
console.error('检查过程中发生错误:', error);
console.error('错误堆栈:', error.stack);
} finally {
if (connection) {
await connection.end();
console.log('\n数据库连接已关闭');
}
console.log('\n===== 检查完成 =====');
}
}
// 运行检查
checkSpecificUser();

63
reset-sync-status.js

@ -0,0 +1,63 @@
// 选择有收藏产品的用户并重置同步状态
const mysql = require('mysql2/promise');
const config = require('./src/config/config');
async function resetSyncStatus() {
console.log('===== 重置有收藏产品用户的同步状态 =====');
try {
// 连接数据库
const connection = await mysql.createConnection(config.db);
console.log('数据库连接成功');
// 查询有收藏产品的用户
const [usersWithFavorites] = await connection.execute(
'SELECT DISTINCT u.id, u.userId, u.phoneNumber FROM users u INNER JOIN favorites f ON u.phoneNumber = f.user_phone LIMIT 1'
);
if (usersWithFavorites.length === 0) {
console.log('没有找到有收藏产品的用户');
await connection.end();
return;
}
const testUser = usersWithFavorites[0];
const phoneNumber = testUser.phoneNumber;
const userId = testUser.userId;
console.log('选择测试用户:', JSON.stringify(testUser));
// 重置同步状态
await connection.execute(
'UPDATE users SET sync_status = 0 WHERE phoneNumber = ?',
[phoneNumber]
);
console.log(`已将用户 ${phoneNumber} 的同步状态重置为未同步`);
// 验证重置结果
const [updatedUser] = await connection.execute(
'SELECT id, userId, phoneNumber, sync_status FROM users WHERE phoneNumber = ?',
[phoneNumber]
);
if (updatedUser.length > 0) {
console.log('重置后的用户状态:', updatedUser[0]);
}
await connection.end();
console.log('\n✅ 操作完成!');
} catch (error) {
console.error('操作过程中发生错误:', error.message);
if (error.sql) {
console.error('SQL语句:', error.sql);
}
}
}
// 执行操作
resetSyncStatus().catch(error => {
console.error('操作执行失败:', error.message);
process.exit(1);
});

10
src/services/databaseService.js

@ -71,6 +71,12 @@ class DatabaseService {
const phoneNumber = user[config.tables.users.fields.phoneNumber];
const jiandaoyunRecordId = user.jiandaoyun_record_id;
// 手动映射字段名,确保数据库的authorized_region正确映射到user.authorizedRegion
// 这是因为数据库查询结果中的字段名保持原始的蛇形命名,而转换方法使用驼峰命名
if (config.tables.users.fields.authorizedRegion in user) {
user.authorizedRegion = user[config.tables.users.fields.authorizedRegion];
}
// 查询负责人信息(usermanagements表)
const [userManagements] = await this.connection.execute(
`SELECT ${config.tables.userManagements.fields.userName}
@ -120,7 +126,8 @@ class DatabaseService {
// 即使该字段的值为null
const userWithRecordId = {
...user,
jiandaoyun_record_id: user.jiandaoyun_record_id
// 直接使用之前获取的jiandaoyunRecordId变量,确保字段存在
jiandaoyun_record_id: jiandaoyunRecordId
};
syncData.push({
@ -268,3 +275,4 @@ class DatabaseService {
}
module.exports = new DatabaseService();

46
test-incremental.js

@ -1,46 +0,0 @@
// 测试增量同步功能
const DatabaseService = require('./src/services/databaseService');
const config = require('./src/config/config');
async function testIncrementalSync() {
console.log('===== 测试增量同步功能 =====');
try {
// 连接数据库
await DatabaseService.connect();
// 检查配置
console.log('当前同步配置:', JSON.stringify(config.sync, null, 2));
// 查询需要同步的数据
console.log('查询需要同步的数据...');
const syncData = await DatabaseService.getAllSyncData();
console.log(`\n测试结果:`);
console.log(`增量同步模式: ${config.sync.incremental ? '开启' : '关闭'}`);
console.log(`查询到需要同步的数据条数: ${syncData.length}`);
if (syncData.length > 0) {
console.log('\n前3条数据示例:');
for (let i = 0; i < Math.min(3, syncData.length); i++) {
console.log(`\n用户ID: ${syncData[i].userId}`);
console.log(`公司: ${syncData[i].user.company}`);
console.log(`联系人: ${syncData[i].user.nickName}`);
console.log(`购买商品数量: ${syncData[i].cartItems.length}`);
console.log(`销售商品数量: ${syncData[i].products.length}`);
}
}
} catch (error) {
console.error('测试过程中发生错误:', error.message);
} finally {
// 断开数据库连接
await DatabaseService.disconnect();
}
}
// 执行测试
testIncrementalSync().catch(error => {
console.error('测试执行失败:', error.message);
process.exit(1);
});
Loading…
Cancel
Save