v3.5.3版本更新1
CI / verify (pull_request) Has been cancelled

This commit is contained in:
2026-08-20 18:54:15 +08:00
parent ee493823bf
commit fc2e5b65de
65 changed files with 2297 additions and 875 deletions
+11
View File
@@ -2,6 +2,7 @@ import { describe, expect, it } from 'vitest';
import {
calcBenefitAmount,
calcRedeemSettleAmount,
resolveSettlementRate,
calcLogisticsFeeByBottles,
calcOrderBoxCount,
shouldHoldAutoCourierDispatch,
@@ -92,6 +93,7 @@ describe('validateRedeemAmount', () => {
expect(validateRedeemAmount(100, 100).ok).toBe(true);
expect(validateRedeemAmount(50, 60).ok).toBe(false);
expect(validateRedeemAmount(100, 0).ok).toBe(false);
expect(validateRedeemAmount(100, Number.NaN).ok).toBe(false);
});
it('allows direct redeem up to total balance without a document cap', () => {
@@ -114,6 +116,15 @@ describe('calcRedeemSettleAmount', () => {
});
});
describe('resolveSettlementRate', () => {
it('falls back to 0.6 when missing or invalid', () => {
expect(resolveSettlementRate(0.6)).toBe(0.6);
expect(resolveSettlementRate(0)).toBe(0.6);
expect(resolveSettlementRate(Number.NaN)).toBe(0.6);
expect(resolveSettlementRate(undefined)).toBe(0.6);
});
});
describe('calcLogisticsFeeByBottles', () => {
const xfx = {
baseBottles: 2,
+14 -3
View File
@@ -33,14 +33,25 @@ export function validateMinPurchase(
return { ok: true };
}
export const DEFAULT_STORE_SETTLEMENT_RATE = 0.6;
export function resolveSettlementRate(raw: unknown): number {
const n = Number(raw);
return Number.isFinite(n) && n > 0 ? n : DEFAULT_STORE_SETTLEMENT_RATE;
}
export function validateRedeemAmount(
balance: number,
amount: number,
documentAmount?: number | null,
): { ok: boolean; message?: string } {
if (amount <= 0) return { ok: false, message: '核销金额必须大于 0' };
if (amount > balance) return { ok: false, message: '核销金额不能超过可用余额' };
if (documentAmount != null && amount > documentAmount) {
if (!Number.isFinite(amount) || amount <= 0) {
return { ok: false, message: '核销金额必须大于 0' };
}
if (!Number.isFinite(balance) || amount > balance) {
return { ok: false, message: '核销金额不能超过可用余额' };
}
if (documentAmount != null && Number.isFinite(documentAmount) && amount > documentAmount) {
return { ok: false, message: '核销金额不能超过该核销单可用金额' };
}
return { ok: true };