123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- package blockchain
- import (
- "errors"
- "ktogame/controller"
- "ktogame/models"
- "ktogame/util"
- "strconv"
- "github.com/go-xorm/xorm"
- )
- /*
- type UserInfo struct {
- Id int64
- Addr string
- Direct string //我的上级
- DirectNumber int //直推总人数
- IndirectRewards float64 `xorm:"Decimal"`
- Indirect string //上上级
- IndirectNumber int //间推总人数
- DirectRewards float64 `xorm:"Decimal"`
- Superiors string //所有上级
- AvailableClaim float64 `xorm:"Decimal"` //可领取收益
- TotalClaimed float64 `xorm:"Decimal"` //总共已领取的收益
- AvailableReinput float64 `xorm:"Decimal"` //可用复投
- TotalReinputed float64 `xorm:"Decimal"` //总复投
- ParticipateAmount float64 `xorm:"Decimal"` //总参与
- State int //身份 0 1正式 2 社区
- OpTime string
- Hash string
- }
- type Performance struct {
- Id int64
- Addr string
- TotalPerformance float64 `xorm:"Decimal"`
- ClaimedPerformanceLevel int
- PerformanceRewards float64 `xorm:"Decimal"`
- TotalTeamCultivate float64 `xorm:"Decimal"`
- ClaimedCultivateLevel int
- TeamCultivateRewards float64 `xorm:"Decimal"`
- CommunityGift float64 `xorm:"Decimal"`
- CommunityNode float64 `xorm:"Decimal"`
- }
- */
- func participate(engine *xorm.Engine, user, inviter, hash string, amount float64) error {
- var dui models.UserInfo
- ok, err := engine.Id(inviter).Get(&dui)
- if err != nil {
- return err
- }
- if !ok {
- return errors.New("participate get user info failed")
- }
- //insert new user info
- var ui models.UserInfo
- ui.Addr = user
- ui.Direct = inviter
- ui.Indirect = dui.Direct
- ui.Superiors = dui.Superiors + "," + strconv.FormatInt(dui.Id, 10)
- ui.ParticipateAmount = float64(controller.ParticipateValue * controller.Decimals)
- ui.State = 1
- ui.CreateTime = util.NowTimeString()
- ui.Hash = hash
- _, err = engine.Insert(&ui)
- if err != nil {
- return err
- }
- //insert new user Performance
- var uper models.Performance
- uper.Addr = user
- _, err = engine.Insert(&uper)
- if err != nil {
- return err
- }
- //update rewards pool
- err = controller.UpdateRewardsPool(engine, amount)
- if err != nil {
- return err
- }
- ///update Recommendation Rewards
- ///update direct recommend rewards(10%)
- rewards := amount * 10 / 100
- if ui.Direct != "" {
- err := controller.UpdateAvailableRewards(engine, rewards, ui.Direct, true, true)
- if err != nil {
- return err
- }
- }
- ///update indirect recommend rewards(10%)
- if ui.Indirect != "" {
- err := controller.UpdateAvailableRewards(engine, rewards, ui.Indirect, true, false)
- if err != nil {
- return err
- }
- }
- //update all supers performance (20%)
- err = controller.UpdateSuperiorsPerformance(engine, ui.Superiors, amount)
- if err != nil {
- return err
- }
- //update Community Gift(50%)
- err = controller.UpdateCommunityGift(engine, amount, inviter)
- if err != nil {
- return err
- }
- //Update Community Nodes(5%)
- err = controller.UpdateCommunityNodes(engine, amount)
- if err != nil {
- return err
- }
- return nil
- }
|