fix(distribution): 分站挂牌的号主收入记入对应分站钱包
结账和仲裁不再把分销站号主收入写入主站钱包,用户列表也只展示主站余额。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -99,6 +99,7 @@ func (r *Repository) Arbitrate(ctx context.Context, adminID uint64, id uint64, r
|
||||
); err != nil {
|
||||
return err
|
||||
}
|
||||
stampOwnerIncomeSite(&settlement, &listing)
|
||||
if err := wallet.AppendEntries(tx, settlement.Entries...); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -442,6 +443,22 @@ func newArbitrationSettlement(order model.RentalOrder, renterFrozenBalanceCent i
|
||||
return settlement
|
||||
}
|
||||
|
||||
func stampOwnerIncomeSite(settlement *arbitrationSettlement, listing *model.RentalListing) {
|
||||
if settlement == nil {
|
||||
return
|
||||
}
|
||||
siteID := uint64(0)
|
||||
if listing != nil && listing.DistributionSiteID != nil {
|
||||
siteID = *listing.DistributionSiteID
|
||||
}
|
||||
for i := range settlement.Entries {
|
||||
entry := &settlement.Entries[i]
|
||||
if entry.Direction == "in" && entry.BalanceType == "available" && entry.BizType == "arbitration_owner_income" {
|
||||
entry.DistributionSiteID = siteID
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (settlement *arbitrationSettlement) addOwnerIncome(order model.RentalOrder, amountCent int64, remark string) {
|
||||
if settlement == nil || amountCent <= 0 {
|
||||
return
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
|
||||
"hfb_sys/backend/internal/database"
|
||||
"hfb_sys/backend/internal/model"
|
||||
"hfb_sys/backend/internal/modules/wallet"
|
||||
|
||||
"gorm.io/datatypes"
|
||||
"gorm.io/gorm"
|
||||
@@ -753,3 +754,19 @@ func TestApplyAdminListFiltersSmartRouting(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestStampOwnerIncomeSiteUsesListingSite(t *testing.T) {
|
||||
siteID := uint64(3)
|
||||
orderID := uint64(9)
|
||||
settlement := arbitrationSettlement{Entries: []wallet.Entry{
|
||||
{UserID: 1, OrderID: &orderID, Direction: "in", AmountCent: 100, BalanceType: "available", BizType: "arbitration_owner_income"},
|
||||
{UserID: 2, OrderID: &orderID, Direction: "out", AmountCent: 50, BalanceType: "frozen", BizType: "arbitration_release_frozen"},
|
||||
}}
|
||||
stampOwnerIncomeSite(&settlement, &model.RentalListing{DistributionSiteID: &siteID})
|
||||
if settlement.Entries[0].DistributionSiteID != 3 {
|
||||
t.Fatalf("号主入账站点 = %d, want 3", settlement.Entries[0].DistributionSiteID)
|
||||
}
|
||||
if settlement.Entries[1].DistributionSiteID != 0 {
|
||||
t.Fatalf("租客解冻站点 = %d, want 0", settlement.Entries[1].DistributionSiteID)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user