reinput.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. rewards := reinputValue * 10 / 100
  41. a_rewards := rewards * 60 / 100
  42. a_reinput := rewards * 40 / 100
  43. ///update direct recommend rewards
  44. if ui.Direct != -1 {
  45. var dui models.UserInfo
  46. ok, err := uc.engine.Id(ui.Direct).Get(&dui)
  47. if err != nil {
  48. ErrResponse(uc.Controller, err)
  49. return
  50. }
  51. if !ok {
  52. ErrResponse(uc.Controller, "db get failed!")
  53. return
  54. }
  55. dui.AvailableClaim = a_rewards
  56. dui.AvailableReinput = a_reinput
  57. _, err = uc.engine.ID(dui.Addr).Cols("available_claim").Update(&dui)
  58. if err != nil {
  59. ErrResponse(uc.Controller, err)
  60. return
  61. }
  62. _, err = uc.engine.ID(dui.Addr).Cols("available_reinput").Update(&dui)
  63. if err != nil {
  64. ErrResponse(uc.Controller, err)
  65. return
  66. }
  67. }
  68. ///update indirect recommend rewards
  69. if ui.Indirect != -1 {
  70. var idui models.UserInfo
  71. ok, err := uc.engine.Id(ui.Indirect).Get(&idui)
  72. if err != nil {
  73. ErrResponse(uc.Controller, err)
  74. return
  75. }
  76. if !ok {
  77. ErrResponse(uc.Controller, "db get failed!")
  78. return
  79. }
  80. idui.AvailableClaim = a_rewards
  81. idui.AvailableReinput = a_reinput
  82. _, err = uc.engine.ID(idui.Addr).Cols("available_claim").Update(&idui)
  83. if err != nil {
  84. ErrResponse(uc.Controller, err)
  85. return
  86. }
  87. _, err = uc.engine.ID(idui.Addr).Cols("available_reinput").Update(&idui)
  88. if err != nil {
  89. ErrResponse(uc.Controller, err)
  90. return
  91. }
  92. }
  93. TxObjectResponse(uc.Controller, "success")
  94. }