123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package controller
- import (
- "ktogame/models"
- )
- func (uc *UserController) Reinput(user string) {
- var ui models.UserInfo
- ok, err := uc.engine.Id(user).Get(&ui)
- if err != nil {
- ErrResponse(uc.Controller, err)
- return
- }
- if !ok {
- ErrResponse(uc.Controller, "db get failed!")
- return
- }
- if ui.AvailableReinput < ModBase*Decimals {
- ErrResponse(uc.Controller, "no available reinput balance")
- return
- }
- ///update availableReinput by left in db
- ///update totalReinput
- left := uint64(ui.AvailableReinput) % (ModBase * Decimals)
- reinputValue := ui.AvailableReinput - float64(left)
- ui.AvailableReinput = float64(left)
- ui.TotalReinputed += reinputValue
- if ui.TotalReinputed >= CommunityLimit*Decimals {
- ui.State = CommunityUsers
- }
- _, err = uc.engine.ID(user).Cols("available_reinput").Update(&ui)
- if err != nil {
- ErrResponse(uc.Controller, err)
- return
- }
- _, err = uc.engine.ID(user).Cols("total_reinput").Update(&ui)
- if err != nil {
- ErrResponse(uc.Controller, err)
- return
- }
- ///update Recommendation Rewards
- ///update direct recommend rewards
- rewards := reinputValue * 10 / 100
- if ui.Direct != -1 {
- err := UpdateAvailableRewards(uc.engine, rewards, ui.Direct)
- if err != nil {
- ErrResponse(uc.Controller, err)
- return
- }
- }
- ///update indirect recommend rewards
- if ui.Indirect != -1 {
- err := UpdateAvailableRewards(uc.engine, rewards, ui.Indirect)
- if err != nil {
- ErrResponse(uc.Controller, err)
- return
- }
- }
- err = UpdateRewardsPool(uc.engine, reinputValue)
- if err != nil {
- ErrResponse(uc.Controller, err)
- return
- }
- err = UpdateSuperiorsPerformance(uc.engine, ui.Superiors, reinputValue)
- if err != nil {
- ErrResponse(uc.Controller, err)
- return
- }
- TxObjectResponse(uc.Controller, "success")
- }
|