v3计划内容上传

This commit is contained in:
2026-07-04 20:36:26 +08:00
parent def3ed5175
commit 743d242d52
23 changed files with 291 additions and 53 deletions
+6 -1
View File
@@ -29,9 +29,13 @@ export function validateMinPurchase(
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) {
return { ok: false, message: '核销金额不能超过该核销单可用金额' };
}
return { ok: true };
}
@@ -45,12 +49,13 @@ export interface BenefitCouponBalance {
export function allocateBenefitCoupons(
coupons: BenefitCouponBalance[],
amount: number,
documentAmount?: number | null,
): { ok: true; allocations: Array<{ couponId: string; amount: number }> } | { ok: false; message: string } {
const active = coupons
.filter((c) => c.balance > 0)
.sort((a, b) => a.createdAt - b.createdAt);
const totalBalance = active.reduce((sum, c) => sum + c.balance, 0);
const check = validateRedeemAmount(totalBalance, amount);
const check = validateRedeemAmount(totalBalance, amount, documentAmount);
if (!check.ok) return { ok: false, message: check.message! };
let remaining = amount;