sys_level_config.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package entity
  2. import (
  3. "github.com/shopspring/decimal"
  4. "gorm.io/gorm"
  5. )
  6. type SysLevelConfig struct {
  7. Level int `json:"level" gorm:"unique;comment:用户等级"`
  8. Icon string `json:"icon" gorm:"type:VARCHAR(255);comment:等级图标"`
  9. LevelName string `json:"levelName" gorm:"comment:等级名称"`
  10. PersonAchievement decimal.Decimal `json:"personAchievement" gorm:"type:decimal(25,8);default:0;comment:个人业绩要求"`
  11. TeamAchievement decimal.Decimal `json:"teamAchievement" gorm:"type:decimal(25,8);default:0;comment:团队业绩要求"`
  12. FewTeamAchievement decimal.Decimal `json:"fewTeamAchievement" gorm:"type:decimal(25,8);default:0;comment:小团队业绩要求"`
  13. StaticRatio decimal.Decimal `json:"staticRatio" gorm:"type:decimal(25,8);default:0;comment:总静态收益占比"`
  14. AvgRatio decimal.Decimal `json:"avgRatio" gorm:"type:decimal(25,8);default:0;comment:均分占比"`
  15. WeightedRatio decimal.Decimal `json:"weightedRatio" gorm:"type:decimal(25,8);default:0;comment:加权占比"`
  16. GiftLargeRegionAchievement decimal.Decimal `json:"giftLargeRegionAchievement" gorm:"type:decimal(25,8);default:0;comment:赠送大区业绩"`
  17. }
  18. func (*SysLevelConfig) TableName() string {
  19. return SysModelPrefix + "level_config"
  20. }
  21. func (*SysLevelConfig) Comment() string {
  22. return "用户等级配置"
  23. }
  24. func NewSysLevelConfig() *SysLevelConfig {
  25. return &SysLevelConfig{}
  26. }
  27. func (c *SysLevelConfig) DataInit(db *gorm.DB) error {
  28. list := []SysLevelConfig{
  29. {
  30. Level: 1,
  31. Icon: "",
  32. LevelName: "V1",
  33. PersonAchievement: decimal.NewFromFloat(100),
  34. TeamAchievement: decimal.NewFromFloat(5000),
  35. FewTeamAchievement: decimal.NewFromFloat(5000),
  36. StaticRatio: decimal.NewFromFloat(0.1),
  37. AvgRatio: decimal.NewFromFloat(0.2),
  38. WeightedRatio: decimal.NewFromFloat(0.8),
  39. },
  40. {
  41. Level: 2,
  42. Icon: "",
  43. LevelName: "V2",
  44. PersonAchievement: decimal.NewFromFloat(500),
  45. TeamAchievement: decimal.NewFromFloat(20000),
  46. FewTeamAchievement: decimal.NewFromFloat(20000),
  47. StaticRatio: decimal.NewFromFloat(0.1),
  48. AvgRatio: decimal.NewFromFloat(0.2),
  49. WeightedRatio: decimal.NewFromFloat(0.8),
  50. },
  51. {
  52. Level: 3,
  53. Icon: "",
  54. LevelName: "V3",
  55. PersonAchievement: decimal.NewFromFloat(1000),
  56. TeamAchievement: decimal.NewFromFloat(100000),
  57. FewTeamAchievement: decimal.NewFromFloat(100000),
  58. StaticRatio: decimal.NewFromFloat(0.15),
  59. AvgRatio: decimal.NewFromFloat(0.2),
  60. WeightedRatio: decimal.NewFromFloat(0.8),
  61. },
  62. {
  63. Level: 4,
  64. Icon: "",
  65. LevelName: "V4",
  66. PersonAchievement: decimal.NewFromFloat(2000),
  67. TeamAchievement: decimal.NewFromFloat(500000),
  68. FewTeamAchievement: decimal.NewFromFloat(500000),
  69. StaticRatio: decimal.NewFromFloat(0.15),
  70. AvgRatio: decimal.NewFromFloat(0.2),
  71. WeightedRatio: decimal.NewFromFloat(0.8),
  72. },
  73. {
  74. Level: 5,
  75. Icon: "",
  76. LevelName: "V5",
  77. PersonAchievement: decimal.NewFromFloat(4000),
  78. TeamAchievement: decimal.NewFromFloat(2000000),
  79. FewTeamAchievement: decimal.NewFromFloat(2000000),
  80. StaticRatio: decimal.NewFromFloat(0.1),
  81. AvgRatio: decimal.NewFromFloat(0.2),
  82. WeightedRatio: decimal.NewFromFloat(0.8),
  83. },
  84. {
  85. Level: 6,
  86. Icon: "",
  87. LevelName: "V6",
  88. PersonAchievement: decimal.NewFromFloat(8000),
  89. TeamAchievement: decimal.NewFromFloat(6000000),
  90. FewTeamAchievement: decimal.NewFromFloat(6000000),
  91. StaticRatio: decimal.NewFromFloat(0.1),
  92. AvgRatio: decimal.NewFromFloat(0.2),
  93. WeightedRatio: decimal.NewFromFloat(0.8),
  94. },
  95. }
  96. for _, row := range list {
  97. find := &SysLevelConfig{}
  98. if stat := db.Model(&SysLevelConfig{}).Where("level = ?", row.Level).
  99. Find(&find).Statement; stat.RowsAffected == 0 {
  100. if err := db.Create(&row).Error; err != nil {
  101. return err
  102. }
  103. }
  104. }
  105. return nil
  106. }