|
@@ -22,10 +22,13 @@ func UpdateSuperiorsPerformance(engine *xorm.Engine, superiorsStr string, amount
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
if !ok {
|
|
if !ok {
|
|
- return errors.New("UpdateSuperiorsPerformance get super failed")
|
|
|
|
|
|
+ continue
|
|
}
|
|
}
|
|
supers = append(supers, tmpUser)
|
|
supers = append(supers, tmpUser)
|
|
}
|
|
}
|
|
|
|
+ if len(supers) == 0 {
|
|
|
|
+ return nil
|
|
|
|
+ }
|
|
|
|
|
|
var rp models.RewardsPool
|
|
var rp models.RewardsPool
|
|
_, err := engine.Id(1).Get(&rp)
|
|
_, err := engine.Id(1).Get(&rp)
|
|
@@ -33,17 +36,39 @@ func UpdateSuperiorsPerformance(engine *xorm.Engine, superiorsStr string, amount
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
- for _, user := range supers {
|
|
|
|
|
|
+ for _, super := range supers {
|
|
var per models.Performance
|
|
var per models.Performance
|
|
- ok, err := engine.Id(user.Addr).Get(&per)
|
|
|
|
|
|
+ ok, err := engine.Id(super.Addr).Get(&per)
|
|
if err != nil {
|
|
if err != nil {
|
|
- return err
|
|
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ continue
|
|
}
|
|
}
|
|
if !ok {
|
|
if !ok {
|
|
- return errors.New("UpdateSuperiorsPerformance get performance failed")
|
|
|
|
|
|
+ continue
|
|
}
|
|
}
|
|
|
|
|
|
per.TotalPerformance += amount
|
|
per.TotalPerformance += amount
|
|
|
|
+ if per.TotalPerformance >= CommunityMarkit*Decimals {
|
|
|
|
+ if per.Recorded == 0 {
|
|
|
|
+ var super models.Performance
|
|
|
|
+ ok, err := engine.Id(per.Addr).Get(&super)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ if !ok {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ super.MarketNum += 1
|
|
|
|
+ _, err = engine.ID(super.Addr).Cols("markit_num").Update(&super)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ per.Recorded = 1
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
var level int = 0
|
|
var level int = 0
|
|
for i := 1; i < len(PerformanceLevel); i++ {
|
|
for i := 1; i < len(PerformanceLevel); i++ {
|
|
if PerformanceLevel[i-1] <= per.TotalPerformance && per.TotalPerformance < PerformanceLevel[i] {
|
|
if PerformanceLevel[i-1] <= per.TotalPerformance && per.TotalPerformance < PerformanceLevel[i] {
|
|
@@ -60,12 +85,11 @@ func UpdateSuperiorsPerformance(engine *xorm.Engine, superiorsStr string, amount
|
|
per.PerformanceRewards += rewards //user add rewards to PerformanceRewards
|
|
per.PerformanceRewards += rewards //user add rewards to PerformanceRewards
|
|
per.PerformanceLevel = level
|
|
per.PerformanceLevel = level
|
|
//update available
|
|
//update available
|
|
- err := UpdateAvailableRewards(engine, rewards, user.Addr, false, false)
|
|
|
|
|
|
+ err := UpdateAvailableRewards(engine, rewards, super.Addr, false, false)
|
|
if err != nil {
|
|
if err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
-
|
|
|
|
- _, err = engine.ID(user.Addr).Cols("total_performance,performance_rewards,performance_level").Update(&per)
|
|
|
|
|
|
+ _, err = engine.ID(super.Addr).Cols("total_performance,performance_rewards,performance_level").Update(&per)
|
|
if err != nil {
|
|
if err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
@@ -84,8 +108,8 @@ func UpdateSuperiorsPerformance(engine *xorm.Engine, superiorsStr string, amount
|
|
|
|
|
|
func UpdateRewardsPool(engine *xorm.Engine, amount float64) error {
|
|
func UpdateRewardsPool(engine *xorm.Engine, amount float64) error {
|
|
var rp models.RewardsPool
|
|
var rp models.RewardsPool
|
|
- rp.TeamPerformance = amount * 0.2
|
|
|
|
- rp.TeamCultivate = amount * 0.05
|
|
|
|
|
|
+ rp.TeamPerformance = amount * 0.15
|
|
|
|
+ rp.TeamCultivate = amount * 0.10
|
|
rp.TotalPool += amount
|
|
rp.TotalPool += amount
|
|
_, err := engine.ID(1).Update(&rp)
|
|
_, err := engine.ID(1).Update(&rp)
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -103,7 +127,7 @@ func UpdateAvailableRewards(engine *xorm.Engine, rewards float64, uaddr string,
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
if !ok {
|
|
if !ok {
|
|
- return errors.New("engine get failed")
|
|
|
|
|
|
+ return nil
|
|
}
|
|
}
|
|
user.AvailableClaim = a_rewards
|
|
user.AvailableClaim = a_rewards
|
|
user.AvailableReinput = a_reinput
|
|
user.AvailableReinput = a_reinput
|
|
@@ -140,7 +164,7 @@ func UpdateCommunityGift(engine *xorm.Engine, amount float64, uaddr string) erro
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
if !ok {
|
|
if !ok {
|
|
- return errors.New("engine get info failed")
|
|
|
|
|
|
+ return nil
|
|
}
|
|
}
|
|
|
|
|
|
ok, err = engine.Desc("id").Get(&tmpUser)
|
|
ok, err = engine.Desc("id").Get(&tmpUser)
|
|
@@ -175,7 +199,7 @@ func UpdateCommunityGift(engine *xorm.Engine, amount float64, uaddr string) erro
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
if !ok {
|
|
if !ok {
|
|
- return errors.New("engine get per failed")
|
|
|
|
|
|
+ return nil
|
|
}
|
|
}
|
|
per.CommunityGift += rewards
|
|
per.CommunityGift += rewards
|
|
_, err = engine.ID(uaddr).Cols("community_gift").Update(&per)
|
|
_, err = engine.ID(uaddr).Cols("community_gift").Update(&per)
|
|
@@ -205,3 +229,54 @@ func UpdateCommunityNodes(engine *xorm.Engine, amount float64) error {
|
|
}
|
|
}
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+func UpdateMarket(engine *xorm.Engine, amount float64) error {
|
|
|
|
+ var pers []models.Performance
|
|
|
|
+ err := engine.Where("market_num >= ?", 2).Find(&pers)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ var rp models.RewardsPool
|
|
|
|
+ ok, err := engine.Id(1).Get(&rp)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ if !ok {
|
|
|
|
+ return nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for _, per := range pers {
|
|
|
|
+ var level int = 0
|
|
|
|
+ for i := 1; i < len(MarketLevel); i++ {
|
|
|
|
+ if MarketLevel[i-1] <= per.MarketNum && per.MarketNum < MarketLevel[i] {
|
|
|
|
+ level = i
|
|
|
|
+ break
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if level > 0 {
|
|
|
|
+ if level > per.MarketLevel {
|
|
|
|
+ ratio := MarketRatio[level] - MarketRatio[per.MarketLevel]
|
|
|
|
+ rewards := amount * ratio
|
|
|
|
+ if rp.TeamCultivate >= rewards {
|
|
|
|
+ rp.TeamCultivate -= rewards //pool sub rewards
|
|
|
|
+ per.MarketRewards += rewards //user add rewards to PerformanceRewards
|
|
|
|
+ per.MarketLevel = level
|
|
|
|
+ //update available
|
|
|
|
+ err := UpdateAvailableRewards(engine, rewards, per.Addr, false, false)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ _, err = engine.ID(per.Addr).Cols("market_level,market_rewards").Update(&per)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ _, err = engine.ID(1).Cols("team_performance").Update(&rp)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ return nil
|
|
|
|
+}
|