修复拼单默认自动匹配

This commit is contained in:
yml2213
2026-08-18 15:24:30 +08:00
parent cbfc9bff03
commit be6f4f2507
2 changed files with 33 additions and 21 deletions
@@ -628,7 +628,7 @@ export async function saveAdminWorkProductRule(payload: JsonObject = {}) {
sharingEnabled &&
unitPriceFen > 0 &&
(normalizeBoolean(payload.sharingAutoFromOrder ?? payload.sharing_auto_from_order, false) ||
(!hasManualSharingConfig && existingRule?.sharing_auto_from_order !== false))
!hasManualSharingConfig)
const hasManualSharingQuantity = hasConfiguredSharingValue(
payload.sharingTotalQuantity ?? payload.sharing_total_quantity,
)
@@ -97,6 +97,10 @@ export default function ProductRulesPanel() {
function editRule(rule: WorkProductRule) {
setEditingRule(rule)
const hasManualSharingOverride = hasManualSharingInput(
rule.sharing?.totalQuantity,
rule.sharing?.unitReward,
)
form.setFieldsValue({
provider: rule.provider,
platform: rule.platform,
@@ -119,15 +123,13 @@ export default function ProductRulesPanel() {
unitPrice: rule.unitPriceFen / 100,
sharingEnabled: rule.sharing?.enabled || false,
sharingAutoFromOrder: rule.sharing?.autoFromOrder || false,
sharingTotalQuantity: rule.sharing?.autoFromOrder
? undefined
: rule.sharing?.totalQuantity || 1,
sharingUnitReward: rule.sharing?.autoFromOrder
? undefined
: (rule.sharing?.unitReward || 0) / 100,
sharingTotalAmount: rule.sharing?.autoFromOrder
? undefined
: ((rule.sharing?.totalQuantity || 1) * (rule.sharing?.unitReward || 0)) / 100,
sharingTotalQuantity: hasManualSharingOverride ? rule.sharing?.totalQuantity : undefined,
sharingUnitReward: hasManualSharingOverride
? (rule.sharing?.unitReward || 0) / 100
: undefined,
sharingTotalAmount: hasManualSharingOverride
? ((rule.sharing?.totalQuantity || 1) * (rule.sharing?.unitReward || 0)) / 100
: undefined,
timeoutMinutes: rule.timeoutMinutes || 0,
timeoutPolicy: rule.timeoutPolicy || 'reopen',
fieldsText: formatRuleFields(rule.requirement?.fields || []),
@@ -174,7 +176,10 @@ export default function ProductRulesPanel() {
try {
const unitMode = values.pricingMode === 'unit'
const hasManualSharingOverride =
Number(values.sharingTotalQuantity || 0) > 0 || Number(values.sharingUnitReward || 0) > 0
form.isFieldTouched('sharingTotalQuantity') || form.isFieldTouched('sharingUnitReward')
? Number(values.sharingTotalQuantity || 0) > 0 ||
Number(values.sharingUnitReward || 0) > 0
: hasManualSharingInput(values.sharingTotalQuantity, values.sharingUnitReward)
const { pricingMode: _pricingMode, ...payload } = values
await saveAdminWorkProductRule({
...payload,
@@ -202,6 +207,10 @@ export default function ProductRulesPanel() {
async function toggleRuleEnabled(rule: WorkProductRule, enabled: boolean) {
try {
const hasManualSharingOverride = hasManualSharingInput(
rule.sharing?.totalQuantity,
rule.sharing?.unitReward,
)
await saveAdminWorkProductRule({
ruleId: rule.ruleId,
ruleKey: rule.ruleKey,
@@ -216,16 +225,15 @@ export default function ProductRulesPanel() {
rewardAmount: rule.rewardAmount / 100,
unitPrice: rule.unitPriceFen / 100,
sharingEnabled: rule.sharing?.enabled || false,
sharingAutoFromOrder: rule.sharing?.autoFromOrder || false,
sharingTotalQuantity: rule.sharing?.autoFromOrder
? undefined
: rule.sharing?.totalQuantity || 1,
sharingUnitReward: rule.sharing?.autoFromOrder
? undefined
: (rule.sharing?.unitReward || 0) / 100,
sharingTotalAmount: rule.sharing?.autoFromOrder
? undefined
: ((rule.sharing?.totalQuantity || 1) * (rule.sharing?.unitReward || 0)) / 100,
sharingAutoFromOrder:
rule.unitPriceFen > 0 && rule.sharing?.enabled === true && !hasManualSharingOverride,
sharingTotalQuantity: hasManualSharingOverride ? rule.sharing?.totalQuantity : undefined,
sharingUnitReward: hasManualSharingOverride
? (rule.sharing?.unitReward || 0) / 100
: undefined,
sharingTotalAmount: hasManualSharingOverride
? ((rule.sharing?.totalQuantity || 1) * (rule.sharing?.unitReward || 0)) / 100
: undefined,
timeoutMinutes: rule.timeoutMinutes || 0,
timeoutPolicy: rule.timeoutPolicy || 'reopen',
fieldsText: formatRuleFields(rule.requirement?.fields || []),
@@ -785,3 +793,7 @@ function formatRuleFields(fields: CollectField[]) {
})
.join('\n')
}
function hasManualSharingInput(quantity: unknown, unitRewardFen: unknown) {
return Number(quantity || 0) > 1 || Number(unitRewardFen || 0) > 0
}