invite_friend.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 2017/11/9
  6. * Time: 上午11:42
  7. */
  8. require_once(BASE_ROOT_PATH . '/helper/algorithm.php');
  9. require_once(BASE_ROOT_PATH . '/helper/login_helper.php');
  10. require_once(BASE_ROOT_PATH . '/helper/session_helper.php');
  11. require_once(BASE_ROOT_PATH . '/helper/sms_helper.php');
  12. require_once(BASE_ROOT_PATH . '/helper/url_helper.php');
  13. require_once(BASE_ROOT_PATH . '/helper/model_helper.php');
  14. require_once(BASE_ROOT_PATH . '/helper/invite_helper.php');
  15. require_once(BASE_ROOT_PATH . '/helper/third_author/wxauthor.php');
  16. require_once(BASE_ROOT_PATH . '/helper/user_session/storage.php');
  17. class invite_friendControl extends mobileControl
  18. {
  19. public function __construct()
  20. {
  21. parent::__construct();
  22. }
  23. public function indexOp()
  24. {
  25. $user = intval($_GET['curuser']);
  26. if(session_helper::need_wechat_author())
  27. {
  28. $author = new thrid_author\wxauthor();
  29. $url = author_url::inviter_url($user);
  30. $url = $author->enter($url);
  31. return self::outsuccess(['direct_uri' => $url],"redirect");
  32. }
  33. if($user <= 0)
  34. {
  35. if(session_helper::logined()) {
  36. $user = session_helper::memberid();
  37. }
  38. }
  39. $type_sn = account_helper::invite_bonus(session_helper::share_id());
  40. if($user > 0) {
  41. return self::outsuccess(['tpl' => new tpl_invite_friend($user,$type_sn)],"invite_friend/invite",'wap');
  42. }
  43. else {
  44. return self::outerr(errcode::ErrParamter);
  45. }
  46. }
  47. public function call_userOp()
  48. {
  49. if(!session_helper::logined()) {
  50. return self::outerr(errcode::ErrUnLogin,"召唤操作有可能会骚扰用户,只有在登录时才可以操作");
  51. }
  52. $user = intval($_GET['user']);
  53. if($user > 0)
  54. {
  55. $mod_member = Model('member');
  56. $minfo = $mod_member->getMemberInfo(['inviter_id' => session_helper::memberid(),'member_id' => $user]);
  57. if(!empty($minfo)) {
  58. $caller = new friend_caller();
  59. $caller->call($user);
  60. push_helper::call_friends(session_helper::memberid(),$user);
  61. return self::outsuccess(null);
  62. }
  63. }
  64. return self::outerr(errcode::ErrParamter);
  65. }
  66. }
  67. class friend_caller extends user_session\storage
  68. {
  69. public function __construct()
  70. {
  71. parent::__construct();
  72. }
  73. public function limit_type()
  74. {
  75. return user_session\storage::DAILY_SUPPORT;;
  76. }
  77. public function storage_tag()
  78. {
  79. return 'friend_caller';
  80. }
  81. public function called($user) {
  82. return $this->base_supported($user);
  83. }
  84. public function call($user) {
  85. parent::base_support($user);
  86. }
  87. }
  88. class tpl_invite_friend
  89. {
  90. private $mUser;
  91. private $mRewardedInvites;
  92. private $mRewardingInvites;
  93. private $mUserInfo;
  94. private $mShareInfo;
  95. private $mTypesn;
  96. private $mMineInfo;
  97. private $mRank;
  98. private $mMine;
  99. private $mCaller;
  100. public function __construct($user,$type_sn)
  101. {
  102. $this->mUser = $user;
  103. $this->mRewardedInvites = [];
  104. $this->mRewardingInvites = [];
  105. $this->init($user);
  106. $this->mShareInfo = invite_helper::share_info(session_helper::share_id());
  107. $this->mTypesn = $type_sn;
  108. $this->mMine = (session_helper::memberid() == $user);
  109. $this->mCaller = new friend_caller();
  110. }
  111. private function init($user)
  112. {
  113. if($user <= 0) return false;
  114. $mod_member = Model('member');
  115. $items = $mod_member->getMemberList(['member_id|inviter_id' => ['_multi' => true,$user,$user]],'*', 0, 'reward_amount desc');
  116. $cur_user = session_helper::memberid();
  117. $index = 0;
  118. foreach ($items as $item)
  119. {
  120. $user_info = new member_info($item);
  121. $uid = $user_info->member_id();
  122. if($uid == $user) {
  123. $this->mUserInfo = $user_info;
  124. }
  125. elseif ($uid == $cur_user) {
  126. $this->mMineInfo = $user_info;
  127. $this->mRank = $index + 1;
  128. }
  129. else
  130. {
  131. if($user_info->rewared_inviter()) {
  132. $this->mRewardedInvites[] = $user_info;
  133. } else {
  134. $this->mRewardingInvites[] = $user_info;
  135. }
  136. }
  137. $index++;
  138. }
  139. }
  140. public function show()
  141. {
  142. $this->show_relay();
  143. // if(!empty($this->mTypesn)) {
  144. // $this->show_bonus();
  145. // }
  146. $rewared = $this->show_rewared();
  147. $rewarding = $this->show_rewarding();
  148. if($rewared == false && $rewarding == false) {
  149. $this->show_noinvitee();
  150. }
  151. $this->show_prompt();
  152. }
  153. private function show_noinvitee()
  154. {
  155. echo "<div class=\"bonus_list\">";
  156. echo "<span class=\"invite_null\">TA尚未邀请好友</span>";
  157. echo "</div>";
  158. }
  159. private function show_relay()
  160. {
  161. $minfo = $this->mUserInfo;
  162. $inviter_id = $minfo->inviter_id();
  163. $str = "<div class=\"user_msg\">
  164. <div class=\"user\">
  165. <div class=\"user_img\"><img src=\"{$minfo->avatar()}\"></div>
  166. <div class=\"user_name\">{$minfo->nickname()}</div>";
  167. echo $str;
  168. if($inviter_id > 0) {
  169. $url = BASE_SITE_URL . "/mobile/index.php?act=invite_friend&op=index&client_type=wap&curuser={$inviter_id}";
  170. $inviter = new member_info($inviter_id);
  171. $str = "<div class=\"invite_user\">
  172. <a href=\"{$url}\">
  173. <span class=\"label\">邀请者:</span><img src=\"{$inviter->avatar()}\" class=\"invite_img\">
  174. </a>
  175. </div>";
  176. echo $str;
  177. }
  178. $str = "</div>
  179. <div class=\"get_bonus\">
  180. <div class=\"total\"><span class=\"price\">{$minfo->reward_amount()}</span>元</div>
  181. </div>
  182. </div>";
  183. echo $str;
  184. }
  185. // private function show_bonus()
  186. // {
  187. // echo "<div class=\"open_bonus_link\">
  188. // <div class=\"bonus\">
  189. // <div class=\"bonus_top\"></div>
  190. // <div class=\"bonus_center\"></div>
  191. // <div class=\"bonus_bg\">
  192. // <span id=\"coin\" class=\"open_bonus_btn gold_coin\"></span>
  193. // </div>
  194. // </div>
  195. // </div>";
  196. // }
  197. private function show_rewared()
  198. {
  199. if(empty($this->mMineInfo) && empty($this->mRewardedInvites)) {
  200. return false;
  201. }
  202. if(!empty($this->mMineInfo) && $this->mMineInfo->rewared_inviter()) {
  203. $count = count($this->mRewardedInvites) + 1;
  204. } else {
  205. $count = count($this->mRewardedInvites);
  206. }
  207. echo "<div class=\"bonus_list\">";
  208. echo "<div class=\"prompt_label\">
  209. <span class=\"title\">已带来收益的好友<span class=\"invite_num\">({$count})</span></span>
  210. </div>";
  211. if(!empty($this->mMineInfo) && $this->mMineInfo->rewared_inviter()) {
  212. $this->show_invitee($this->mMineInfo);
  213. }
  214. foreach ($this->mRewardedInvites as $minfo) {
  215. $this->show_invitee($minfo);
  216. }
  217. echo "</div>";
  218. return true;
  219. }
  220. private function show_rewarding()
  221. {
  222. if(empty($this->mMineInfo) && empty($this->mRewardingInvites)) {
  223. return false;
  224. }
  225. if(!empty($this->mMineInfo) && $this->mMineInfo->rewared_inviter() == false) {
  226. $count = count($this->mRewardingInvites) + 1;
  227. } else {
  228. $count = count($this->mRewardingInvites);
  229. }
  230. echo "<div class=\"bonus_list\">";
  231. echo "<div class=\"prompt_label\">
  232. <span class=\"title\">尚未带来收益的好友<span class=\"invite_num\">({$count})</span></span>
  233. </div>";
  234. if(!empty($this->mMineInfo) && $this->mMineInfo->rewared_inviter() == false) {
  235. $this->show_invitee($this->mMineInfo);
  236. }
  237. foreach ($this->mRewardingInvites as $minfo) {
  238. $this->show_invitee($minfo);
  239. }
  240. echo "</div>";
  241. return true;
  242. }
  243. private function show_prompt()
  244. {
  245. $str = "<div class=\"prompt\">
  246. <div class=\"prompt_label\">
  247. <span class=\"title\">提示</span>
  248. </div>
  249. <div class=\"prompt_list\">
  250. <p>1.由于近期发现恶意刷红包用户,为保障体验,在邀请好友之后,需要好友微信授权、注册、下载APP登录后才发邀请奖励。</p>
  251. <p>2.邀请前5名新用户可得10元100%红包,邀请好友数量>5后可得10元40%红包,雨露均沾红包为40%红包,为了您的长期收益,我们建议您邀请真实的朋友。</p>
  252. <p>3.您可以点击\"召唤TA\",邀请好友回来。(同一用户每天只能召唤一次)</p>
  253. <p>4.熊猫有权解散违规邀请的用户,收回已发红包并关闭相关订单。(具体细节查看规则)</p>
  254. </div>
  255. </div>
  256. <div class=\"briefing_address\"></div>";
  257. echo $str;
  258. }
  259. private function show_invitee($minfo)
  260. {
  261. if(empty($minfo)) return;
  262. $user = $minfo->member_id();
  263. $called = $this->mCaller->called($user);
  264. $url = BASE_SITE_URL . "/mobile/index.php?act=invite_friend&op=index&client_type=wap&curuser={$user}";
  265. $str = "<div class=\"item\">
  266. <a href=\"{$url}\">
  267. <div class=\"user_img\">
  268. <img src=\"{$minfo->avatar()}\">
  269. </div>
  270. <div class=\"user_name text-overflow\">
  271. <p class=\"text-overflow\"> {$minfo->nickname()}</p>
  272. <p class=\"invite_msg\">邀请{$minfo->invitees()}人,收益<span class=\"price\">{$minfo->reward_amount()}</span>元</p>
  273. </div>";
  274. if($this->mMine == false)
  275. {
  276. $str .= "<div class=\"look_btn\">
  277. <span class=\"arrow\"></span>
  278. </div>";
  279. }
  280. $str .= "</a>";
  281. if($this->mMine)
  282. {
  283. if($called) {
  284. $str .= "<span class=\"call_btn called\" data-user=\"{$user}\">召唤TA</span>";
  285. } else {
  286. $str .= "<span class=\"call_btn\" data-user=\"{$user}\">召唤TA</span>";
  287. }
  288. }
  289. $str .= "</div>";
  290. echo $str;
  291. }
  292. public function show_open()
  293. {
  294. if(!session_helper::isapp())
  295. {
  296. echo "<div class=\"fixed_bottom\">
  297. <span class=\"logo\"></span>
  298. <div class=\"label\">
  299. <p>熊猫美妆</p>
  300. <p>下载APP即可得更多奖励</p>
  301. </div>
  302. <a href=\"#\" class=\"download_app_btn\" id=\"download_app\">打开APP</a>
  303. </div>";
  304. }
  305. }
  306. public function bonus_url() {
  307. return url_helper::bonus_open_url($this->mTypesn);
  308. }
  309. public function share_url()
  310. {
  311. return url_helper::bonus_open_url($this->mTypesn);
  312. }
  313. public function share_title()
  314. {
  315. return $this->mShareInfo['title'];
  316. }
  317. public function share_image()
  318. {
  319. return $this->mShareInfo['img'];;
  320. }
  321. public function share_subtitle()
  322. {
  323. return $this->mShareInfo['sub_title'];;
  324. }
  325. }