register.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 2017/11/2
  6. * Time: 下午7:57
  7. */
  8. namespace async;
  9. use search;
  10. use push_helper;
  11. use bonus;
  12. use bonus_helper;
  13. use member_info;
  14. use Log;
  15. class register extends IAsync
  16. {
  17. private $cur_user;
  18. private $cur_info;
  19. private $last_inviter;
  20. public function __construct($user,$inviter)
  21. {
  22. $this->cur_user = $user;
  23. $this->cur_info = new member_info($user);
  24. $this->last_inviter = $inviter;
  25. $this->add_invitee($inviter);
  26. }
  27. private function inviters()
  28. {
  29. if($this->last_inviter <= 0){
  30. return [];
  31. }
  32. else
  33. {
  34. $inviters = [];
  35. $parent_inviters = search\relation_client::instance()->fetch_inviters(['user_id' => $this->last_inviter]);
  36. $inviters[] = $this->last_inviter;
  37. foreach ($parent_inviters as $inviter) {
  38. $inviters[] = $inviter;
  39. }
  40. return $inviters;
  41. }
  42. }
  43. public function run()
  44. {
  45. $this->reward_user();
  46. $inviters = $this->inviters();
  47. return $this->notify_inviter($inviters);
  48. }
  49. private function notify_inviter($inviters)
  50. {
  51. if(empty($inviters)) return false;
  52. $level = 0;
  53. // $ex_invitee = $this->cur_user;
  54. foreach ($inviters as $inviter)
  55. {
  56. $this->reward_inviter($inviter,$level);
  57. // $invitees = search\relation_client::instance()->fetch_invitees(['user_id' => $inviter]);
  58. // $invitees = $this->ex_user($invitees,$ex_invitee);
  59. // $this->reward_invitees($inviter,$invitees,$level);
  60. // $ex_invitee = $inviter;
  61. $level += 1;
  62. }
  63. return true;
  64. }
  65. //给Level 级的邀请者发奖励
  66. private function reward_inviter($inviter, $level)
  67. {
  68. $params = bonus\parameters::guide_inviter($this->cur_info->nickname(),$level);
  69. foreach ($params as $param)
  70. {
  71. $type = bonus_helper::create_type_input($param);
  72. $money = $type->getTotal_amount();
  73. $rate = $type->bonus_rate();
  74. $ret = bonus_helper::make_bonus($param,$param['rate_money']);
  75. if($ret != false)
  76. {
  77. $type_sn = $ret['type_sn'];
  78. $fSuccess = bonus_helper::send($type_sn,[$inviter]);
  79. if($fSuccess == false) {
  80. Log::record("send bonus error: type_sn={$type_sn}",Log::DEBUG);
  81. }
  82. else {
  83. push_helper::inviter_bonus($inviter,$this->cur_user,$level + 1,$money,$rate,$type_sn);
  84. $this->add_reward($inviter,$money);
  85. }
  86. }
  87. else {
  88. return false;
  89. }
  90. }
  91. return true;
  92. }
  93. private function reward_invitees($inviter, $invitees, $level)
  94. {
  95. if(empty($invitees)) return false;
  96. $inviter_info = new member_info($inviter);
  97. $num = count($invitees);
  98. $params = bonus\parameters::guide_invitee($inviter_info->nickname(),$this->cur_info->nickname(),$level,$num);
  99. foreach ($params as $param)
  100. {
  101. $type = bonus_helper::create_type_input($param);
  102. $money = $type->getTotal_amount();
  103. $rate = $type->bonus_rate();
  104. $ret = bonus_helper::make_bonus($param,$param['rate_money']);
  105. if($ret != false)
  106. {
  107. $type_sn = $ret['type_sn'];
  108. bonus_helper::send($type_sn,$invitees);
  109. $i = 0;
  110. foreach ($invitees as $invitee)
  111. {
  112. $amount = $money / $num;
  113. $this->add_reward($invitee,$amount);
  114. if($i < self::max_level_pushs) {
  115. push_helper::invitee_bonus($inviter, $invitee, $this->cur_info, $level + 1, $amount, $rate, $type_sn);
  116. }
  117. $i++;
  118. }
  119. } else {
  120. return false;
  121. }
  122. }
  123. return true;
  124. }
  125. private function reward_user()
  126. {
  127. $params = bonus\parameters::user_reigster_fixed();
  128. foreach ($params as $param)
  129. {
  130. $type = bonus_helper::create_type_input($param);
  131. $money = $type->getTotal_amount();
  132. $ret = bonus_helper::make_bonus($param,$param['rate_money']);
  133. if($ret != false) {
  134. $type_sn = $ret['type_sn'];
  135. bonus_helper::send($type_sn,[$this->cur_user]);
  136. push_helper::register_bonus($this->cur_user,$money,$type_sn);
  137. } else {
  138. return false;
  139. }
  140. }
  141. return true;
  142. }
  143. }