package entity import ( "github.com/shopspring/decimal" "gorm.io/gorm" ) type SysLevelConfig struct { Level int `json:"level" gorm:"unique;comment:用户等级"` Icon string `json:"icon" gorm:"type:VARCHAR(255);comment:等级图标"` LevelName string `json:"levelName" gorm:"comment:等级名称"` PersonAchievement decimal.Decimal `json:"personAchievement" gorm:"type:decimal(25,8);default:0;comment:个人业绩要求"` TeamAchievement decimal.Decimal `json:"teamAchievement" gorm:"type:decimal(25,8);default:0;comment:团队业绩要求"` FewTeamAchievement decimal.Decimal `json:"fewTeamAchievement" gorm:"type:decimal(25,8);default:0;comment:小团队业绩要求"` StaticRatio decimal.Decimal `json:"staticRatio" gorm:"type:decimal(25,8);default:0;comment:总静态收益占比"` AvgRatio decimal.Decimal `json:"avgRatio" gorm:"type:decimal(25,8);default:0;comment:均分占比"` WeightedRatio decimal.Decimal `json:"weightedRatio" gorm:"type:decimal(25,8);default:0;comment:加权占比"` GiftLargeRegionAchievement decimal.Decimal `json:"giftLargeRegionAchievement" gorm:"type:decimal(25,8);default:0;comment:赠送大区业绩"` } func (*SysLevelConfig) TableName() string { return SysModelPrefix + "level_config" } func (*SysLevelConfig) Comment() string { return "用户等级配置" } func NewSysLevelConfig() *SysLevelConfig { return &SysLevelConfig{} } func (c *SysLevelConfig) DataInit(db *gorm.DB) error { list := []SysLevelConfig{ { Level: 1, Icon: "", LevelName: "V1", PersonAchievement: decimal.NewFromFloat(100), TeamAchievement: decimal.NewFromFloat(5000), FewTeamAchievement: decimal.NewFromFloat(5000), StaticRatio: decimal.NewFromFloat(0.1), AvgRatio: decimal.NewFromFloat(0.2), WeightedRatio: decimal.NewFromFloat(0.8), }, { Level: 2, Icon: "", LevelName: "V2", PersonAchievement: decimal.NewFromFloat(500), TeamAchievement: decimal.NewFromFloat(20000), FewTeamAchievement: decimal.NewFromFloat(20000), StaticRatio: decimal.NewFromFloat(0.1), AvgRatio: decimal.NewFromFloat(0.2), WeightedRatio: decimal.NewFromFloat(0.8), }, { Level: 3, Icon: "", LevelName: "V3", PersonAchievement: decimal.NewFromFloat(1000), TeamAchievement: decimal.NewFromFloat(100000), FewTeamAchievement: decimal.NewFromFloat(100000), StaticRatio: decimal.NewFromFloat(0.15), AvgRatio: decimal.NewFromFloat(0.2), WeightedRatio: decimal.NewFromFloat(0.8), }, { Level: 4, Icon: "", LevelName: "V4", PersonAchievement: decimal.NewFromFloat(2000), TeamAchievement: decimal.NewFromFloat(500000), FewTeamAchievement: decimal.NewFromFloat(500000), StaticRatio: decimal.NewFromFloat(0.15), AvgRatio: decimal.NewFromFloat(0.2), WeightedRatio: decimal.NewFromFloat(0.8), }, { Level: 5, Icon: "", LevelName: "V5", PersonAchievement: decimal.NewFromFloat(4000), TeamAchievement: decimal.NewFromFloat(2000000), FewTeamAchievement: decimal.NewFromFloat(2000000), StaticRatio: decimal.NewFromFloat(0.1), AvgRatio: decimal.NewFromFloat(0.2), WeightedRatio: decimal.NewFromFloat(0.8), }, { Level: 6, Icon: "", LevelName: "V6", PersonAchievement: decimal.NewFromFloat(8000), TeamAchievement: decimal.NewFromFloat(6000000), FewTeamAchievement: decimal.NewFromFloat(6000000), StaticRatio: decimal.NewFromFloat(0.1), AvgRatio: decimal.NewFromFloat(0.2), WeightedRatio: decimal.NewFromFloat(0.8), }, } for _, row := range list { find := &SysLevelConfig{} if stat := db.Model(&SysLevelConfig{}).Where("level = ?", row.Level). Find(&find).Statement; stat.RowsAffected == 0 { if err := db.Create(&row).Error; err != nil { return err } } } return nil }