diff --git a/api/controller_front/user.js b/api/controller_front/user.js index f2f9ae5..4366fa0 100644 --- a/api/controller_front/user.js +++ b/api/controller_front/user.js @@ -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() });