| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package entity
- import (
- "app/commons/constant"
- "github.com/shopspring/decimal"
- "gorm.io/gorm"
- )
- // 质押产品
- // 活期产品 -- 随进随出 -- 当前版本仅有活期产品
- // 定期产品 -- 到期可赎回
- // 股票质押产品配置
- const (
- StakeProductTypeRegularly = "regularly" // 定期
- StakeProductTypeCurrent = "current" // 活期
- )
- type StakeProduct struct {
- MysqlBaseModel
- Name string `json:"name" gorm:"type:varchar(256);comment: 产品名称;"`
- Symbol string `json:"symbol" gorm:"type:varchar(64);comment:支付币种;"`
- CycleDay int `json:"cycleDay" gorm:"comment:质押周期天0:活期;"`
- PledgeMode string `json:"pledgeMode" gorm:"comment:质押类型:current活期 regularly 定期;"`
- PeriodProfitRatio decimal.Decimal `json:"periodProfitRatio" gorm:"type:decimal(25,8);default:0;comment:期收益比例"`
- IsQueue bool `json:"isQueue" gorm:"comment:产品是否开启排队;"`
- QuotaPerMinutes decimal.Decimal `json:"quotaPerMinutes" gorm:"comment:每分钟释放生效额度;"`
- CurrentAvailableQuota decimal.Decimal `json:"currentAvailableQuota" gorm:"comment:当前累计可用生效额度;"`
- Sort int `json:"sort" gorm:"default:0;comment:排序"`
- Enable bool `json:"enable" gorm:"type:tinyint;default:0;comment:是否有效 1=可质押 0=暂停质押"`
- }
- func (*StakeProduct) TableName() string {
- return ModelPrefix + "stake_product"
- }
- func (*StakeProduct) Comment() string {
- return "产品配置"
- }
- func NewStakeProduct() *StakeProduct {
- return &StakeProduct{}
- }
- func (c *StakeProduct) DataInit(db *gorm.DB) error {
- list := []StakeProduct{
- {
- Symbol: constant.CoinSymbolTD,
- Name: "活期",
- CycleDay: 0,
- PledgeMode: StakeProductTypeCurrent,
- PeriodProfitRatio: decimal.NewFromFloat(0.0008), // 收益频率:每2小时1次(单次0.08%/日化0.96%/月化28.8%)
- IsQueue: false,
- QuotaPerMinutes: decimal.NewFromFloat(365),
- CurrentAvailableQuota: decimal.NewFromFloat(0),
- Sort: 0,
- Enable: true,
- },
- {
- Symbol: constant.CoinSymbolTD,
- Name: "30天定期",
- CycleDay: 30,
- PledgeMode: StakeProductTypeRegularly,
- PeriodProfitRatio: decimal.NewFromFloat(0.001), // 收益频率:每2小时1次(单次0.08%/日化0.96%/月化28.8%)
- IsQueue: false,
- QuotaPerMinutes: decimal.NewFromFloat(165),
- CurrentAvailableQuota: decimal.NewFromFloat(0),
- Sort: 1,
- Enable: false,
- },
- }
- for _, row := range list {
- find := NewStakeProduct()
- if stat := db.Model(&StakeProduct{}).
- Where("symbol = ?", row.Symbol).Where("cycle_day", row.CycleDay).
- Find(&find).Statement; stat.RowsAffected == 0 {
- if err := db.Create(&row).Error; err != nil {
- return err
- }
- }
- }
- return nil
- }
|