1
This commit is contained in:
@@ -402,21 +402,52 @@ module.exports = {
|
||||
|
||||
// 更新 pla_account 表的 deliver_config 和 auto_deliver 字段
|
||||
|
||||
// 查出来合并原来的字段,如何没传就不覆盖
|
||||
// 获取原有配置
|
||||
const original_deliver_config = user.deliver_config || {};
|
||||
const new_deliver_config = { ...original_deliver_config, ...deliver_config };
|
||||
|
||||
// 深度合并配置(只覆盖传入的字段,保留原有的其他字段)
|
||||
const deepMerge = (target, source) => {
|
||||
const result = { ...target };
|
||||
Object.keys(source).forEach(key => {
|
||||
const sourceValue = source[key];
|
||||
const targetValue = target[key];
|
||||
|
||||
// 如果源值是对象且目标值也是对象,递归合并(排除数组)
|
||||
if (sourceValue && typeof sourceValue === 'object' && !Array.isArray(sourceValue) &&
|
||||
targetValue && typeof targetValue === 'object' && !Array.isArray(targetValue)) {
|
||||
result[key] = deepMerge(targetValue, sourceValue);
|
||||
} else {
|
||||
// 否则直接覆盖
|
||||
result[key] = sourceValue;
|
||||
}
|
||||
});
|
||||
return result;
|
||||
};
|
||||
|
||||
const new_deliver_config = deepMerge(original_deliver_config, deliver_config);
|
||||
|
||||
// 处理 auto_deliver 字段(支持 auto_deliver 和 auto_delivery 两种字段名)
|
||||
let auto_deliver_value = 0;
|
||||
if (deliver_config.auto_deliver !== undefined) {
|
||||
auto_deliver_value = deliver_config.auto_deliver ? 1 : 0;
|
||||
} else if (deliver_config.auto_delivery !== undefined) {
|
||||
auto_deliver_value = deliver_config.auto_delivery ? 1 : 0;
|
||||
} else {
|
||||
// 如果没有传入 auto_deliver,保持原有值
|
||||
auto_deliver_value = user.auto_deliver || 0;
|
||||
}
|
||||
|
||||
await pla_account.update(
|
||||
{
|
||||
deliver_config: new_deliver_config,
|
||||
auto_deliver: deliver_config.auto_delivery ? 1 : 0
|
||||
auto_deliver: auto_deliver_value
|
||||
},
|
||||
{ where: { id: user.id } }
|
||||
);
|
||||
|
||||
console.log('[保存投递配置成功]', {
|
||||
sn_code,
|
||||
auto_delivery: deliver_config.auto_delivery,
|
||||
auto_deliver: auto_deliver_value,
|
||||
timestamp: new Date().toISOString()
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user