90 lines
3.7 KiB
Go
90 lines
3.7 KiB
Go
package adminfinance
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
type financeDetailRow struct {
|
|
OrderID uint64
|
|
OrderNo string
|
|
OrderStatus string
|
|
SettlementStatus string
|
|
RefundStatus string
|
|
HandoffMode string
|
|
SettlementMode string
|
|
OfflineSettlementStatus string
|
|
OfflineSettlementAmountCent int64
|
|
RenterID uint64
|
|
RenterPhone string
|
|
RenterNickname string
|
|
OwnerID uint64
|
|
OwnerPhone string
|
|
OwnerNickname string
|
|
OrderRentAmountCent int64
|
|
OrderDepositAmountCent int64
|
|
CheckoutRentAmountCent int64
|
|
CheckoutRenterRefundCent int64
|
|
CheckoutOwnerIncomeCent int64
|
|
CheckoutPlatformFeeCent int64
|
|
OwnerWalletIncomeAmountCent int64
|
|
OwnerEffectiveSettlementAmountCent int64
|
|
PaidAmountCent int64
|
|
RefundedAmountCent int64
|
|
RefundingAmountCent int64
|
|
FailedRefundAmountCent int64
|
|
ChannelNetAmountCent int64
|
|
PlatformNetAmountCent int64
|
|
SettlementDiffAmountCent int64
|
|
FinanceStatus string
|
|
CreatedAt time.Time
|
|
SettledAt *time.Time
|
|
OfflineSettledAt *time.Time
|
|
}
|
|
|
|
func (r financeDetailRow) toDTO() FinanceDetailDTO {
|
|
diff := r.SettlementDiffAmountCent
|
|
status := r.FinanceStatus
|
|
if status == "" {
|
|
status = financeStatusNormal
|
|
}
|
|
if absCent(diff) < settlementDiffThresholdCent && status == financeStatusSettlementDiff {
|
|
status = financeStatusNormal
|
|
}
|
|
return FinanceDetailDTO{
|
|
OrderID: r.OrderID,
|
|
OrderNo: r.OrderNo,
|
|
OrderStatus: r.OrderStatus,
|
|
SettlementStatus: r.SettlementStatus,
|
|
RefundStatus: r.RefundStatus,
|
|
HandoffMode: r.HandoffMode,
|
|
SettlementMode: r.SettlementMode,
|
|
OfflineSettlementStatus: r.OfflineSettlementStatus,
|
|
OfflineSettlementAmountCent: r.OfflineSettlementAmountCent,
|
|
RenterID: r.RenterID,
|
|
RenterPhone: r.RenterPhone,
|
|
RenterNickname: r.RenterNickname,
|
|
OwnerID: r.OwnerID,
|
|
OwnerPhone: r.OwnerPhone,
|
|
OwnerNickname: r.OwnerNickname,
|
|
OrderRentAmountCent: r.OrderRentAmountCent,
|
|
OrderDepositAmountCent: r.OrderDepositAmountCent,
|
|
CheckoutRentAmountCent: r.CheckoutRentAmountCent,
|
|
CheckoutRenterRefundCent: r.CheckoutRenterRefundCent,
|
|
CheckoutOwnerIncomeCent: r.CheckoutOwnerIncomeCent,
|
|
CheckoutPlatformFeeCent: r.CheckoutPlatformFeeCent,
|
|
OwnerWalletIncomeAmountCent: r.OwnerWalletIncomeAmountCent,
|
|
OwnerEffectiveSettlementAmountCent: r.OwnerEffectiveSettlementAmountCent,
|
|
PaidAmountCent: r.PaidAmountCent,
|
|
RefundedAmountCent: r.RefundedAmountCent,
|
|
RefundingAmountCent: r.RefundingAmountCent,
|
|
FailedRefundAmountCent: r.FailedRefundAmountCent,
|
|
ChannelNetAmountCent: r.ChannelNetAmountCent,
|
|
PlatformNetAmountCent: r.PlatformNetAmountCent,
|
|
SettlementDiffAmountCent: diff,
|
|
FinanceStatus: status,
|
|
CreatedAt: r.CreatedAt,
|
|
SettledAt: r.SettledAt,
|
|
OfflineSettledAt: r.OfflineSettledAt,
|
|
}
|
|
}
|