reinput.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package controller
  2. import (
  3. "ktogame/models"
  4. )
  5. func (uc *UserController) Reinput(user string) {
  6. var ui models.UserInfo
  7. ok, err := uc.engine.Id(user).Get(&ui)
  8. if err != nil {
  9. ErrResponse(uc.Controller, err)
  10. return
  11. }
  12. if !ok {
  13. ErrResponse(uc.Controller, "db get failed!")
  14. return
  15. }
  16. if ui.AvailableReinput < ModBase*Decimals {
  17. ErrResponse(uc.Controller, "no available reinput balance")
  18. return
  19. }
  20. ///update availableReinput by left in db
  21. ///update totalReinput
  22. left := uint64(ui.AvailableReinput) % (ModBase * Decimals)
  23. reinputValue := ui.AvailableReinput - float64(left)
  24. ui.AvailableReinput = float64(left)
  25. ui.TotalReinputed += reinputValue
  26. if ui.TotalReinputed >= CommunityLimit*Decimals {
  27. ui.State = CommunityUsers
  28. }
  29. _, err = uc.engine.ID(user).Cols("available_reinput").Update(&ui)
  30. if err != nil {
  31. ErrResponse(uc.Controller, err)
  32. return
  33. }
  34. _, err = uc.engine.ID(user).Cols("total_reinput").Update(&ui)
  35. if err != nil {
  36. ErrResponse(uc.Controller, err)
  37. return
  38. }
  39. ///update Recommendation Rewards
  40. ///update direct recommend rewards
  41. rewards := reinputValue * 10 / 100
  42. if ui.Direct != -1 {
  43. err := UpdateAvailableRewards(uc.engine, rewards, ui.Direct)
  44. if err != nil {
  45. ErrResponse(uc.Controller, err)
  46. return
  47. }
  48. }
  49. ///update indirect recommend rewards
  50. if ui.Indirect != -1 {
  51. err := UpdateAvailableRewards(uc.engine, rewards, ui.Indirect)
  52. if err != nil {
  53. ErrResponse(uc.Controller, err)
  54. return
  55. }
  56. }
  57. err = UpdateRewardsPool(uc.engine, reinputValue)
  58. if err != nil {
  59. ErrResponse(uc.Controller, err)
  60. return
  61. }
  62. err = UpdateSuperiorsPerformance(uc.engine, ui.Superiors, reinputValue)
  63. if err != nil {
  64. ErrResponse(uc.Controller, err)
  65. return
  66. }
  67. TxObjectResponse(uc.Controller, "success")
  68. }