Browse Source

添加followup字段同步,并修复地址字段写入问题

JDY3
Trae AI 1 month ago
parent
commit
2866f44b61
  1. 21
      src/config/config.js
  2. 7
      src/services/databaseService.js
  3. 33
      src/services/jiandaoyunService.js
  4. 72
      test-single-user.js
  5. 8
      test_jiandaoyun.js

21
src/config/config.js

@ -17,7 +17,14 @@ module.exports = {
fields: {
userId: 'userId',
nickName: 'nickName',
phoneNumber: 'phoneNumber'
phoneNumber: 'phoneNumber',
company: 'company',
level: 'level',
demand: 'demand',
region: 'region',
detailedaddress: 'detailedaddress',
type: 'type',
followup: 'followup'
}
},
userManagements: {
@ -40,14 +47,22 @@ module.exports = {
// 字段映射关系
fieldMapping: {
'userId': '_widget_1767422700667',
'userName': '_widget_1747117151082'
'userName': '_widget_1747117151082',
'company': '_widget_1747117151075',
'level': '_widget_1755333366982',
'demand': '_widget_1757035166649',
'region': '_widget_1749864292852',
'detailedaddress': '_widget_1747204368174',
'type': '_widget_1768897870066',
'followup': '_widget_1767426290793'
},
// 子表字段配置
subTableFields: {
'subTable': '_widget_1747117151085',
'nickName': '_widget_1747117151087',
'phoneNumber': '_widget_1747117151088'
'phoneNumber': '_widget_1747117151088',
'detailedaddress': '_widget_1747204368174'
},
// 同步配置

7
src/services/databaseService.js

@ -40,6 +40,13 @@ class DatabaseService {
let usersQuery = `SELECT ${config.tables.users.fields.userId},
${config.tables.users.fields.nickName},
${config.tables.users.fields.phoneNumber},
${config.tables.users.fields.company},
${config.tables.users.fields.level},
${config.tables.users.fields.demand},
${config.tables.users.fields.region},
${config.tables.users.fields.detailedaddress},
${config.tables.users.fields.type},
${config.tables.users.fields.followup},
dataid
FROM ${config.tables.users.name}`;

33
src/services/jiandaoyunService.js

@ -27,7 +27,9 @@ class JiandaoyunService {
'袁嘉莉': 'woxjrqDwAAKLP25CjOCQg77lSv6oYiGQ',
'汤敏': 'woxjrqDwAA0_YzPpRrb1THjzYi1zd4Cw',
'杨率': 'woxjrqDwAAMkzyxQt_tE7V2GLPF8gokQ',
'李真音': 'woxjrqDwAAZxbx0YzET4gqGkN8693CbQ'
'李真音': 'woxjrqDwAAZxbx0YzET4gqGkN8693CbQ',
'李毅': 'woxjrqDwAAqSLFZnsNy9W61ELGeMazhQ',
'李文涛': 'woxjrqDwAAmm8IhlT0cdaB7DjNmIVLsg'
};
}
@ -102,14 +104,39 @@ class JiandaoyunService {
console.log('字段映射:', JSON.stringify(mapping, null, 2));
// 使用简道云API v1的正确值格式,使用value字段来包装值
// 转换需要的字段:userId
// 转换需要的字段:userId, company, level, demand, region, type, followup
jiandaoyunData[mapping.userId] = { value: user.userId || '' };
jiandaoyunData[mapping.company] = { value: user.company || '' };
jiandaoyunData[mapping.level] = { value: user.level || '' };
// 将demand转换为数组格式
let demandValue = user.demand || '';
let demandArray = [];
if (demandValue && demandValue !== '-') {
demandArray = demandValue.split(',').map(item => item.trim());
}
jiandaoyunData[mapping.demand] = { value: demandArray };
// 将region转换为数组格式
let regionValue = user.region || '';
let regionArray = [];
if (regionValue && regionValue !== '-') {
regionArray = regionValue.split(',').map(item => item.trim());
}
jiandaoyunData[mapping.region] = { value: regionArray };
jiandaoyunData[mapping.type] = { value: user.type || '' };
// 转换followup字段
jiandaoyunData[mapping.followup] = { value: user.followup || '' };
// 处理子表字段
const subTableField = config.subTableFields.subTable;
const subTableData = [{
[config.subTableFields.nickName]: { value: user.nickName || '' },
[config.subTableFields.phoneNumber]: { value: user.phoneNumber || '' }
[config.subTableFields.phoneNumber]: { value: user.phoneNumber || '' },
// 地址字段直接作为字符串写入子表
[config.subTableFields.detailedaddress]: { value: user.detailedaddress || '' }
}];
jiandaoyunData[subTableField] = { value: subTableData };

72
test-single-user.js

@ -0,0 +1,72 @@
// 测试单个用户数据同步
const mysql = require('mysql2/promise');
const config = require('./src/config/config');
const jiandaoyunService = require('./src/services/jiandaoyunService');
async function testSingleUserSync() {
console.log('===== 测试单个用户数据同步 =====');
try {
// 连接数据库
const connection = await mysql.createConnection(config.db);
// 查询指定用户数据
const [users] = await connection.execute(
`SELECT DISTINCT ${config.tables.users.fields.userId},
${config.tables.users.fields.nickName},
${config.tables.users.fields.phoneNumber},
${config.tables.users.fields.company},
${config.tables.users.fields.level},
${config.tables.users.fields.demand},
${config.tables.users.fields.region},
${config.tables.users.fields.detailedaddress},
${config.tables.users.fields.type},
dataid
FROM ${config.tables.users.name}
WHERE ${config.tables.users.fields.userId} = ?`,
['user_1768360161521_zz8rtwtip']
);
if (users.length === 0) {
console.log('未找到指定用户数据');
return;
}
const user = users[0];
console.log('用户数据:', JSON.stringify(user, null, 2));
// 查询负责人信息
const [userManagements] = await connection.execute(
`SELECT ${config.tables.userManagements.fields.userName}
FROM ${config.tables.userManagements.name}
WHERE ${config.tables.userManagements.fields.userId} = ?`,
[user.userId]
);
const syncData = [{
user: user,
userManagement: userManagements[0] || {},
userId: user.userId
}];
// 转换数据格式
const transformedData = jiandaoyunService.transformDataToJiandaoyunFormat(syncData[0]);
console.log('转换后的数据:', JSON.stringify(transformedData, null, 2));
// 检查地址字段是否正确包含在子表中
const subTableData = transformedData[config.subTableFields.subTable].value;
console.log('子表数据:', JSON.stringify(subTableData, null, 2));
// 执行同步
const results = await jiandaoyunService.batchSubmitData(syncData, connection);
console.log('同步结果:', JSON.stringify(results, null, 2));
await connection.end();
console.log('测试完成');
} catch (error) {
console.error('测试过程中发生错误:', error.message);
console.error('错误堆栈:', error.stack);
}
}
testSingleUserSync();

8
test_jiandaoyun.js

@ -9,7 +9,13 @@ async function testJiandaoyunFix() {
user: {
userId: 'user_1767321160164_rs4adi855',
nickName: '杨率',
phoneNumber: '15502828108'
phoneNumber: '15502828108',
company: '测试公司',
level: 'department-sea-pools',
demand: '测试需求',
region: '四川地区',
detailedaddress: '四川省成都市青羊区哈哈哈哈哈哈',
type: 'buyer'
},
userManagement: {
userName: '何佳芹'

Loading…
Cancel
Save