draft
This commit is contained in:
56
backend/internal/model/service_fee.go
Normal file
56
backend/internal/model/service_fee.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package model
|
||||
|
||||
import "time"
|
||||
|
||||
// PayMethodGroup 支付方式分组(用于服务费配置)
|
||||
type PayMethodGroup string
|
||||
|
||||
const (
|
||||
PayMethodGroupScan PayMethodGroup = "SCAN" // 扫码支付(微信/支付宝)
|
||||
PayMethodGroupTransfer PayMethodGroup = "TRANSFER" // 对公转账
|
||||
PayMethodGroupBalance PayMethodGroup = "BALANCE" // 余额支付
|
||||
)
|
||||
|
||||
// ServiceFeeConfig 服务费配置
|
||||
type ServiceFeeConfig struct {
|
||||
ID uint64 `gorm:"column:id;primaryKey;autoIncrement"`
|
||||
AppID string `gorm:"column:app_id;size:32;not null;uniqueIndex:uk_app_method"`
|
||||
PayMethodGroup PayMethodGroup `gorm:"column:pay_method_group;size:20;not null;uniqueIndex:uk_app_method"`
|
||||
FeeRate float64 `gorm:"column:fee_rate;type:decimal(6,4);not null"` // 0.0000 ~ 9.9999%
|
||||
FeeReceiverMerchantID string `gorm:"column:fee_receiver_merchant_id;size:64;not null"`
|
||||
Status int8 `gorm:"column:status;not null;default:1"`
|
||||
CreatedAt time.Time `gorm:"column:created_at;autoCreateTime:milli"`
|
||||
UpdatedAt time.Time `gorm:"column:updated_at;autoUpdateTime:milli"`
|
||||
}
|
||||
|
||||
func (ServiceFeeConfig) TableName() string { return "service_fee_config" }
|
||||
|
||||
// ServiceFeeLog 服务费流水
|
||||
type ServiceFeeLog struct {
|
||||
ID uint64 `gorm:"column:id;primaryKey;autoIncrement"`
|
||||
TradeNo string `gorm:"column:trade_no;size:32;not null;uniqueIndex:uk_trade_action"`
|
||||
ConfigID uint64 `gorm:"column:config_id;not null"`
|
||||
FeeAmount int64 `gorm:"column:fee_amount;not null"`
|
||||
FeeRate float64 `gorm:"column:fee_rate;type:decimal(6,4);not null"`
|
||||
ReceiverMerchantID string `gorm:"column:receiver_merchant_id;size:64;not null"`
|
||||
Action string `gorm:"column:action;size:20;not null;uniqueIndex:uk_trade_action"` // CHARGE / ROLLBACK
|
||||
Status string `gorm:"column:status;size:20;not null;default:PENDING"`
|
||||
ChannelSharingNo string `gorm:"column:channel_sharing_no;size:64"`
|
||||
CreatedAt time.Time `gorm:"column:created_at;autoCreateTime:milli"`
|
||||
UpdatedAt time.Time `gorm:"column:updated_at;autoUpdateTime:milli"`
|
||||
}
|
||||
|
||||
func (ServiceFeeLog) TableName() string { return "service_fee_log" }
|
||||
|
||||
// PayMethodToGroup 将支付方式映射到服务费分组
|
||||
func PayMethodToGroup(m PayMethod) PayMethodGroup {
|
||||
switch m {
|
||||
case PayMethodWechatJSAPI, PayMethodWechatH5, PayMethodWechatNative,
|
||||
PayMethodWechatMini, PayMethodAlipay, PayMethodQuickPay:
|
||||
return PayMethodGroupScan
|
||||
case PayMethodTransfer:
|
||||
return PayMethodGroupTransfer
|
||||
default:
|
||||
return PayMethodGroupBalance
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user