feat(finance): 增加保险统计与订单保险明细

This commit is contained in:
yml
2026-11-14 17:04:24 +08:00
parent 50e3ce00f2
commit 6a2652f69d
11 changed files with 288 additions and 7 deletions
@@ -406,6 +406,18 @@ func (r *Repository) dailySettlements(ctx context.Context, query DashboardQuery)
err := db.Table("rental_orders AS ro USE INDEX (idx_rental_orders_dashboard_settled)").
Select(`DATE_FORMAT(ro.settled_at, '%Y-%m-%d') AS date,
COALESCE(SUM(oc.platform_fee_cent), 0) AS platform_income_amount_cent,
COALESCE(SUM(CASE WHEN ro.compensation_plan = 'insurance' AND ro.insurance_fee_bps > 0
THEN 1 ELSE 0 END), 0) AS insurance_order_count,
COALESCE(SUM(CASE WHEN ro.compensation_plan = 'insurance' AND ro.insurance_fee_bps > 0
THEN COALESCE(oc.insurance_fee_cent, 0) ELSE 0 END), 0) AS insurance_profit_amount_cent,
COALESCE(SUM(CASE WHEN ro.compensation_plan = 'insurance' AND ro.insurance_fee_bps > 0
AND ro.is_premium = 0 THEN 1 ELSE 0 END), 0) AS normal_insurance_order_count,
COALESCE(SUM(CASE WHEN ro.compensation_plan = 'insurance' AND ro.insurance_fee_bps > 0
AND ro.is_premium = 0 THEN COALESCE(oc.insurance_fee_cent, 0) ELSE 0 END), 0) AS normal_insurance_profit_amount_cent,
COALESCE(SUM(CASE WHEN ro.compensation_plan = 'insurance' AND ro.insurance_fee_bps > 0
AND ro.is_premium = 1 THEN 1 ELSE 0 END), 0) AS premium_insurance_order_count,
COALESCE(SUM(CASE WHEN ro.compensation_plan = 'insurance' AND ro.insurance_fee_bps > 0
AND ro.is_premium = 1 THEN COALESCE(oc.insurance_fee_cent, 0) ELSE 0 END), 0) AS premium_insurance_profit_amount_cent,
COALESCE(SUM(oc.owner_income_amount_cent), 0) AS owner_should_income_amount_cent,
COALESCE(SUM(COALESCE(w.owner_wallet_income_amount_cent, 0)), 0) AS owner_wallet_income_amount_cent,
COALESCE(SUM(CASE WHEN ro.settlement_mode = 'platform_managed'
@@ -466,6 +478,12 @@ func summaryFromDailyRows(payments []dailyPaymentRow, settlements []dailySettlem
}
for _, row := range settlements {
summary.NormalOrderProfitAmountCent += row.PlatformIncomeAmountCent
summary.InsuranceOrderCount += row.InsuranceOrderCount
summary.InsuranceProfitAmountCent += row.InsuranceProfitAmountCent
summary.NormalInsuranceOrderCount += row.NormalInsuranceOrderCount
summary.NormalInsuranceProfitAmountCent += row.NormalInsuranceProfitAmountCent
summary.PremiumInsuranceOrderCount += row.PremiumInsuranceOrderCount
summary.PremiumInsuranceProfitAmountCent += row.PremiumInsuranceProfitAmountCent
summary.OwnerShouldIncomeAmountCent += row.OwnerShouldIncomeAmountCent
summary.OwnerWalletIncomeAmountCent += row.OwnerWalletIncomeAmountCent
summary.OwnerEffectiveSettlementAmountCent += row.OwnerEffectiveSettlementAmountCent
@@ -604,6 +622,12 @@ type dailyPaidOrderRow struct {
type dailySettlementRow struct {
Date string
PlatformIncomeAmountCent int64
InsuranceOrderCount int64
InsuranceProfitAmountCent int64
NormalInsuranceOrderCount int64
NormalInsuranceProfitAmountCent int64
PremiumInsuranceOrderCount int64
PremiumInsuranceProfitAmountCent int64
OwnerShouldIncomeAmountCent int64
OwnerWalletIncomeAmountCent int64
OwnerEffectiveSettlementAmountCent int64