合并仲裁实际消耗结算选项

This commit is contained in:
yml2213
2026-07-31 22:12:25 +08:00
parent 9511b580e4
commit 921654e5b0
3 changed files with 86 additions and 30 deletions
@@ -337,7 +337,7 @@ func TestArbitrationCompletedOrderRequiresActualCoinConsumedM(t *testing.T) {
}
_, err = repo.Arbitrate(t.Context(), 77, created.ID, ArbitrateRequest{
Result: "release_deposit",
Result: "actual_settlement",
Remark: "确认完成订单",
}, AuditMeta{})
if !errors.Is(err, ErrInvalidDispute) {
@@ -347,7 +347,7 @@ func TestArbitrationCompletedOrderRequiresActualCoinConsumedM(t *testing.T) {
actualCoinConsumedM := 50.0
actualConsumableAmountCent := int64(12000)
_, err = repo.Arbitrate(t.Context(), 77, created.ID, ArbitrateRequest{
Result: "release_deposit",
Result: "actual_settlement",
Remark: "确认实际消耗 50M",
ActualCoinConsumedM: &actualCoinConsumedM,
}, AuditMeta{})
@@ -356,7 +356,7 @@ func TestArbitrationCompletedOrderRequiresActualCoinConsumedM(t *testing.T) {
}
if _, err := repo.Arbitrate(t.Context(), 77, created.ID, ArbitrateRequest{
Result: "release_deposit",
Result: "actual_settlement",
Remark: "确认实际消耗 50M 和额外物品",
ActualCoinConsumedM: &actualCoinConsumedM,
ActualConsumableAmountCent: &actualConsumableAmountCent,
@@ -372,6 +372,40 @@ func TestArbitrationCompletedOrderRequiresActualCoinConsumedM(t *testing.T) {
}
}
func TestActualSettlementArbitrationUsesOwnerCompensationAmount(t *testing.T) {
order := disputePureCoinOrder()
actualCoinConsumedM := 50.0
actualConsumableAmountCent := int64(12000)
settlement, actualSettlement, _, depositDeductAmountCent, err := buildActualCheckoutArbitrationSettlement(nil, model.Dispute{}, order, ArbitrateRequest{
Result: "actual_settlement",
Remark: "按实际消耗结算",
ActualCoinConsumedM: &actualCoinConsumedM,
ActualConsumableAmountCent: &actualConsumableAmountCent,
}, 0)
if err != nil {
t.Fatalf("不填押金赔付的实际结算失败: %v", err)
}
if depositDeductAmountCent != 0 || actualSettlement.DepositCompensationCent != 0 || settlement.DepositDeductAmountCent != 0 {
t.Fatalf("不填押金赔付不应默认扣全押金: input=%d actual=%d settlement=%d", depositDeductAmountCent, actualSettlement.DepositCompensationCent, settlement.DepositDeductAmountCent)
}
compensationCent := int64(3000)
settlement, actualSettlement, _, depositDeductAmountCent, err = buildActualCheckoutArbitrationSettlement(nil, model.Dispute{}, order, ArbitrateRequest{
Result: "actual_settlement",
Remark: "赔付号主",
AmountCent: compensationCent,
ActualCoinConsumedM: &actualCoinConsumedM,
ActualConsumableAmountCent: &actualConsumableAmountCent,
}, 0)
if err != nil {
t.Fatalf("填写押金赔付的实际结算失败: %v", err)
}
if depositDeductAmountCent != compensationCent || actualSettlement.DepositCompensationCent != compensationCent || settlement.DepositDeductAmountCent != compensationCent {
t.Fatalf("押金赔付 = %d/%d/%d, want %d", depositDeductAmountCent, actualSettlement.DepositCompensationCent, settlement.DepositDeductAmountCent, compensationCent)
}
}
func TestCheckoutDisputeArbitrationReusesCheckoutCoinConsumedM(t *testing.T) {
db := setupDisputeTestDB(t)
repo := NewRepository(db, Dependencies{RefundStarter: RefundStarterFunc(func(context.Context, uint64, int64, string, string) (string, error) {