member_invitee.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php
  2. declare(strict_types=0);
  3. require_once(BASE_HELPER_PATH . '/model_helper.php');
  4. require_once(BASE_HELPER_PATH . '/calc_helper.php');
  5. class member_inviteeControl extends mbMemberControl
  6. {
  7. public function listOp()
  8. {
  9. $mod_member = Model('member');
  10. $items = $mod_member->getMemberList(['inviter_id' => session_helper::memberid()],'*', 0, 'member_time desc');
  11. $result = [];
  12. foreach ($items as $item)
  13. {
  14. $user_info = new member_info($item);
  15. $result[] = $user_info->filter();
  16. }
  17. return self::outsuccess($result);
  18. }
  19. public static function comp_policy($left,$right)
  20. {
  21. $t_l = intval($left['num']);
  22. $t_r = intval($right['num']);
  23. if($t_l > $t_r) {
  24. return 1;
  25. }
  26. elseif($t_l == $t_r)
  27. {
  28. return 0;
  29. }
  30. else {
  31. return -1;
  32. }
  33. }
  34. public function goods_shareOp()
  35. {
  36. $goods_id = intval($_GET['goods_id']);
  37. if($goods_id <= 0) {
  38. return self::outerr(errcode::ErrParamter,'goods_id 不能小于0.');
  39. }
  40. else
  41. {
  42. $calctor = new CalcPrice(session_helper::memberid());
  43. $policy = $calctor->share_policy($goods_id);
  44. if(empty($policy)) {
  45. return self::outsuccess([]);
  46. }
  47. usort($policy,[__CLASS__,'comp_policy']);
  48. [$policy,$maxnum,$amount] = $this->fill_policy($policy);
  49. $result['policy'] = $policy;
  50. $left_invitees = $calctor->left_invitees();
  51. $invitees = [];
  52. if($maxnum > $left_invitees) {
  53. $result['tip_title'] = "邀请{$maxnum}好友,可以省{$amount}元";
  54. $result['tip_num'] = $maxnum-$left_invitees;
  55. $count = $left_invitees;
  56. }
  57. else {
  58. $result['tip_title'] = "您已成功邀请{$maxnum}好友,下单即省{$amount}元";
  59. $result['tip_num'] = 0;
  60. $count = $maxnum;
  61. }
  62. if($left_invitees > 0)
  63. {
  64. $mod_member = Model('member');
  65. $items = $mod_member->getMemberList(['inviter_id' => session_helper::memberid()],'*', 0, 'member_id desc',$left_invitees);
  66. $items = array_reverse($items);
  67. $index = 0;
  68. foreach ($items as $item)
  69. {
  70. try {
  71. if($index >= $count) break;
  72. $member = new member_info($item);
  73. $invitees[] = $member->filter();
  74. $index++;
  75. }
  76. catch (Exception $ex) {
  77. Log::record($ex->getMessage(),Log::ERR);
  78. }
  79. }
  80. }
  81. $result['invitess'] = $invitees;
  82. $result['mini_code'] = $this->mini_code();
  83. $result['share_code'] = $this->share_code();
  84. return self::outsuccess($result);
  85. }
  86. }
  87. private function fill_policy($policy)
  88. {
  89. $index = 1;
  90. foreach ($policy as $item)
  91. {
  92. for($end = $item['num']; $end > $index;$index++) {
  93. $result[] = ['num' => $index,'discount' => 0];
  94. }
  95. $result[] = $item;
  96. $index += 1;
  97. }
  98. return [$result,$item['num'],$item['discount']];
  99. }
  100. private function mini_code()
  101. {
  102. $uid = session_helper::memberid();
  103. $passwd = util::passwd;
  104. $name = md5("{$uid}.{$passwd}") . ".png";
  105. $save_path = BASE_UPLOAD_PATH . DS . ATTACH_MINI_QRCODE . DS . $name;
  106. $url = UPLOAD_SITE_URL . DS . ATTACH_MINI_QRCODE . DS . $name;
  107. if(!file_exists($save_path)) {
  108. QueueClient::push('makeMemberMiniQrCode',['member_id' => $uid]);
  109. return '';
  110. }
  111. return $url;
  112. }
  113. private function share_code()
  114. {
  115. $uid = session_helper::memberid();
  116. $passwd = util::passwd;
  117. $name = md5("{$uid}.{$passwd}") . ".png";
  118. $name = "share-{$name}";
  119. $save_path = BASE_UPLOAD_PATH . DS . ATTACH_MINI_QRCODE . DS . $name;
  120. $url = UPLOAD_SITE_URL . DS . ATTACH_MINI_QRCODE . DS . $name;
  121. if(!file_exists($save_path)) {
  122. QueueClient::push('makeMemberMiniQrCode',['member_id' => $uid]);
  123. }
  124. return $url;
  125. }
  126. }