[Snow Team] backend-fixer: auto-commit work

This commit is contained in:
yml
2026-06-09 17:04:40 +08:00
parent f5b38ff772
commit 62b898d7cc
11 changed files with 291 additions and 214 deletions
+33 -18
View File
@@ -185,11 +185,17 @@ func (r *Repository) Create(renterID uint64, req CreateRequest) (*OrderDTO, erro
OwnerID: listing.OwnerID,
RenterID: renterID,
EstimatedDurationHours: rentHours,
RentAmount: float64(pricing.RentAmountCent) / 100,
RentAmountCent: pricing.RentAmountCent,
OwnerRentAmount: float64(pricing.OwnerRentAmountCent) / 100,
OwnerRentAmountCent: pricing.OwnerRentAmountCent,
DepositAmount: paidDepositAmount,
DepositAmountCent: int64(math.Round(paidDepositAmount * 100)),
DepositOriginalAmount: depositOriginalAmount,
DepositOriginalAmountCent: int64(math.Round(depositOriginalAmount * 100)),
DepositWaivedAmount: waivedDepositAmount,
DepositWaivedAmountCent: int64(math.Round(waivedDepositAmount * 100)),
PlatformFee: float64(pricing.PlatformFeeCent) / 100,
PlatformFeeCent: pricing.PlatformFeeCent,
AccountSnapshot: snapshot,
Status: "pending_payment",
@@ -690,10 +696,10 @@ func (r *Repository) CounterCheckout(userID uint64, orderID uint64, req CounterC
return nil, err
}
dto := toCheckoutDTOForUser(*checkout, userID, model.RentalOrder{
OwnerID: userID,
RentAmountCent: int64(math.Round(checkout.RentAmount * 100)),
OwnerID: userID,
RentAmountCent: int64(math.Round(checkout.RentAmount * 100)),
OwnerRentAmountCent: int64(math.Round(checkout.OwnerRentAmount * 100)),
DepositAmountCent: int64(math.Round(checkout.DepositAmount * 100)),
DepositAmountCent: int64(math.Round(checkout.DepositAmount * 100)),
})
return &dto, nil
}
@@ -1244,21 +1250,30 @@ func buildCheckout(order model.RentalOrder, initiatedBy uint64, status string, c
return model.OrderCheckout{}, err
}
return model.OrderCheckout{
OrderID: order.ID,
InitiatedBy: initiatedBy,
Status: status,
RentAmount: float64(settlement.ActualRentAmountCent) / 100,
OwnerRentAmount: float64(settlement.OwnerRentIncomeCent) / 100,
PlatformFee: float64(settlement.PlatformFeeCent) / 100,
DepositAmount: depositAmountFromCent,
ConsumableAmount: consumableAmount,
CoinConsumedM: roundQuantity(coinConsumedM),
OtherAmount: otherAmount,
DepositDeductAmount: roundMoney(deductAmount),
RenterRefundAmount: float64(settlement.RenterRefundCent) / 100,
OwnerIncomeAmount: float64(settlement.OwnerIncomeCent) / 100,
Content: content,
EvidenceURLS: evidence,
OrderID: order.ID,
InitiatedBy: initiatedBy,
Status: status,
RentAmount: float64(settlement.ActualRentAmountCent) / 100,
RentAmountCent: settlement.ActualRentAmountCent,
OwnerRentAmount: float64(settlement.OwnerRentIncomeCent) / 100,
OwnerRentAmountCent: settlement.OwnerRentIncomeCent,
PlatformFee: float64(settlement.PlatformFeeCent) / 100,
PlatformFeeCent: settlement.PlatformFeeCent,
DepositAmount: depositAmountFromCent,
DepositAmountCent: order.DepositAmountCent,
ConsumableAmount: consumableAmount,
ConsumableAmountCent: int64(math.Round(consumableAmount * 100)),
CoinConsumedM: roundQuantity(coinConsumedM),
OtherAmount: otherAmount,
OtherAmountCent: int64(math.Round(otherAmount * 100)),
DepositDeductAmount: roundMoney(deductAmount),
DepositDeductAmountCent: settlement.DepositCompensationCent,
RenterRefundAmount: float64(settlement.RenterRefundCent) / 100,
RenterRefundAmountCent: settlement.RenterRefundCent,
OwnerIncomeAmount: float64(settlement.OwnerIncomeCent) / 100,
OwnerIncomeAmountCent: settlement.OwnerIncomeCent,
Content: content,
EvidenceURLS: evidence,
}, nil
}
@@ -12,9 +12,9 @@ import (
func TestCalculateCheckoutSettlementRefundsUnusedRent(t *testing.T) {
order := model.RentalOrder{
RentAmount: 383,
OwnerRentAmount: 353,
DepositAmount: 150,
RentAmountCent: 38300,
OwnerRentAmountCent: 35300,
DepositAmountCent: 15000,
AccountSnapshot: datatypes.JSON([]byte(`{
"haf_coin_amount": 100000000,
"asset_summary": {
@@ -30,35 +30,35 @@ func TestCalculateCheckoutSettlementRefundsUnusedRent(t *testing.T) {
settlement := calculateCheckoutSettlement(order, 7, 90, 0)
// 角精度:243.7 = roundMoney(236.7 + 7)
if settlement.ActualRentAmount != 243.7 {
t.Fatalf("ActualRentAmount = %.1f, want 243.7", settlement.ActualRentAmount)
if float64(settlement.ActualRentAmountCent)/100 != 243.7 {
t.Fatalf("ActualRentAmount = %.1f, want 243.7", float64(settlement.ActualRentAmountCent)/100)
}
// 角精度:216.7 = roundMoney(209.7 + 7) 卖家币价+消耗品
if settlement.OwnerRentIncome != 216.7 {
t.Fatalf("OwnerRentIncome = %.1f, want 216.7", settlement.OwnerRentIncome)
if float64(settlement.OwnerRentIncomeCent)/100 != 216.7 {
t.Fatalf("OwnerRentIncome = %.1f, want 216.7", float64(settlement.OwnerRentIncomeCent)/100)
}
// 角精度:27.0 = roundMoney(27) 平台费
if settlement.PlatformFee != 27.0 {
t.Fatalf("PlatformFee = %.1f, want 27.0", settlement.PlatformFee)
if float64(settlement.PlatformFeeCent)/100 != 27.0 {
t.Fatalf("PlatformFee = %.1f, want 27.0", float64(settlement.PlatformFeeCent)/100)
}
// 角精度:139.3 = roundMoney(383 - 243.7)
if settlement.RentRefund != 139.3 {
t.Fatalf("RentRefund = %.1f, want 139.3", settlement.RentRefund)
if float64(settlement.RentRefundCent)/100 != 139.3 {
t.Fatalf("RentRefund = %.1f, want 139.3", float64(settlement.RentRefundCent)/100)
}
if settlement.DepositRefund != 150 {
t.Fatalf("DepositRefund = %.1f, want 150.0", settlement.DepositRefund)
if float64(settlement.DepositRefundCent)/100 != 150 {
t.Fatalf("DepositRefund = %.1f, want 150.0", float64(settlement.DepositRefundCent)/100)
}
// 角精度:289.3 = roundMoney(139.3 + 150)
if settlement.RenterRefund != 289.3 {
t.Fatalf("RenterRefund = %.1f, want 289.3", settlement.RenterRefund)
if float64(settlement.RenterRefundCent)/100 != 289.3 {
t.Fatalf("RenterRefund = %.1f, want 289.3", float64(settlement.RenterRefundCent)/100)
}
}
func TestCalculateCheckoutSettlementUsesBuyerAndSellerRatiosSeparately(t *testing.T) {
order := model.RentalOrder{
RentAmount: 383,
OwnerRentAmount: 353,
DepositAmount: 150,
RentAmountCent: 38300,
OwnerRentAmountCent: 35300,
DepositAmountCent: 15000,
AccountSnapshot: datatypes.JSON([]byte(`{
"haf_coin_amount": 100000000,
"asset_summary": {
@@ -74,24 +74,24 @@ func TestCalculateCheckoutSettlementUsesBuyerAndSellerRatiosSeparately(t *testin
settlement := calculateCheckoutSettlement(order, 0, 50, 0)
// 角精度:131.5 = roundMoney(131.5)
if settlement.ActualRentAmount != 131.5 {
t.Fatalf("租客侧实际租金 = %.1f, want 131.5", settlement.ActualRentAmount)
if float64(settlement.ActualRentAmountCent)/100 != 131.5 {
t.Fatalf("租客侧实际租金 = %.1f, want 131.5", float64(settlement.ActualRentAmountCent)/100)
}
// 角精度:116.5 = roundMoney(116.5)
if settlement.OwnerRentIncome != 116.5 {
t.Fatalf("卖家侧租金收入 = %.1f, want 116.5", settlement.OwnerRentIncome)
if float64(settlement.OwnerRentIncomeCent)/100 != 116.5 {
t.Fatalf("卖家侧租金收入 = %.1f, want 116.5", float64(settlement.OwnerRentIncomeCent)/100)
}
// 角精度:15.0 = roundMoney(15)
if settlement.PlatformFee != 15.0 {
t.Fatalf("平台差价 = %.1f, want 15.0", settlement.PlatformFee)
if float64(settlement.PlatformFeeCent)/100 != 15.0 {
t.Fatalf("平台差价 = %.1f, want 15.0", float64(settlement.PlatformFeeCent)/100)
}
}
func TestCalculateCheckoutSettlementAddsDepositCompensation(t *testing.T) {
order := model.RentalOrder{
RentAmount: 383,
OwnerRentAmount: 353,
DepositAmount: 150,
RentAmountCent: 38300,
OwnerRentAmountCent: 35300,
DepositAmountCent: 15000,
AccountSnapshot: datatypes.JSON([]byte(`{
"haf_coin_amount": 100000000,
"asset_summary": {
@@ -106,20 +106,20 @@ func TestCalculateCheckoutSettlementAddsDepositCompensation(t *testing.T) {
settlement := calculateCheckoutSettlement(order, 120, 100, 30)
if settlement.ActualRentAmount != 383 {
t.Fatalf("ActualRentAmount = %.2f, want 383.00", settlement.ActualRentAmount)
if float64(settlement.ActualRentAmountCent)/100 != 383 {
t.Fatalf("ActualRentAmount = %.2f, want 383.00", float64(settlement.ActualRentAmountCent)/100)
}
if settlement.OwnerRentIncome != 353 {
t.Fatalf("OwnerRentIncome = %.2f, want 353.00", settlement.OwnerRentIncome)
if float64(settlement.OwnerRentIncomeCent)/100 != 353 {
t.Fatalf("OwnerRentIncome = %.2f, want 353.00", float64(settlement.OwnerRentIncomeCent)/100)
}
if settlement.DepositCompensation != 30 {
t.Fatalf("DepositCompensation = %.2f, want 30.00", settlement.DepositCompensation)
if float64(settlement.DepositCompensationCent)/100 != 30 {
t.Fatalf("DepositCompensation = %.2f, want 30.00", float64(settlement.DepositCompensationCent)/100)
}
if settlement.OwnerIncome != 383 {
t.Fatalf("OwnerIncome = %.2f, want 383.00", settlement.OwnerIncome)
if float64(settlement.OwnerIncomeCent)/100 != 383 {
t.Fatalf("OwnerIncome = %.2f, want 383.00", float64(settlement.OwnerIncomeCent)/100)
}
if settlement.RenterRefund != 120 {
t.Fatalf("RenterRefund = %.2f, want 120.00", settlement.RenterRefund)
if float64(settlement.RenterRefundCent)/100 != 120 {
t.Fatalf("RenterRefund = %.2f, want 120.00", float64(settlement.RenterRefundCent)/100)
}
}