1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- 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
- rewards := reinputValue * 10 / 100
- a_rewards := rewards * 60 / 100
- a_reinput := rewards * 40 / 100
- ///update direct recommend rewards
- if ui.Direct != -1 {
- var dui models.UserInfo
- ok, err := uc.engine.Id(ui.Direct).Get(&dui)
- if err != nil {
- ErrResponse(uc.Controller, err)
- return
- }
- if !ok {
- ErrResponse(uc.Controller, "db get failed!")
- return
- }
- dui.AvailableClaim = a_rewards
- dui.AvailableReinput = a_reinput
- _, err = uc.engine.ID(dui.Addr).Cols("available_claim").Update(&dui)
- if err != nil {
- ErrResponse(uc.Controller, err)
- return
- }
- _, err = uc.engine.ID(dui.Addr).Cols("available_reinput").Update(&dui)
- if err != nil {
- ErrResponse(uc.Controller, err)
- return
- }
- }
- ///update indirect recommend rewards
- if ui.Indirect != -1 {
- var idui models.UserInfo
- ok, err := uc.engine.Id(ui.Indirect).Get(&idui)
- if err != nil {
- ErrResponse(uc.Controller, err)
- return
- }
- if !ok {
- ErrResponse(uc.Controller, "db get failed!")
- return
- }
- idui.AvailableClaim = a_rewards
- idui.AvailableReinput = a_reinput
- _, err = uc.engine.ID(idui.Addr).Cols("available_claim").Update(&idui)
- if err != nil {
- ErrResponse(uc.Controller, err)
- return
- }
- _, err = uc.engine.ID(idui.Addr).Cols("available_reinput").Update(&idui)
- if err != nil {
- ErrResponse(uc.Controller, err)
- return
- }
- }
- TxObjectResponse(uc.Controller, "success")
- }
|