invite_friend.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
  1. <?php
  2. require_once(BASE_ROOT_PATH . '/helper/algorithm.php');
  3. require_once(BASE_ROOT_PATH . '/helper/login_helper.php');
  4. require_once(BASE_ROOT_PATH . '/helper/session_helper.php');
  5. require_once(BASE_ROOT_PATH . '/helper/sms_helper.php');
  6. require_once(BASE_ROOT_PATH . '/helper/url_helper.php');
  7. require_once(BASE_ROOT_PATH . '/helper/model_helper.php');
  8. require_once(BASE_ROOT_PATH . '/helper/invite_helper.php');
  9. require_once(BASE_ROOT_PATH . '/helper/third_author/wxauthor.php');
  10. require_once(BASE_ROOT_PATH . '/helper/user_session/storage.php');
  11. class invite_friendControl extends mobileControl
  12. {
  13. public function __construct()
  14. {
  15. parent::__construct();
  16. }
  17. public function indexOp()
  18. {
  19. $user = intval($_GET['curuser']);
  20. if(session_helper::need_wechat_author())
  21. {
  22. $author = new thrid_author\wxauthor();
  23. $url = author_url::inviter_url($user);
  24. $url = $author->enter($url);
  25. return self::outsuccess(['direct_uri' => $url],"redirect");
  26. }
  27. if($user <= 0)
  28. {
  29. if(session_helper::logined()) {
  30. $user = session_helper::memberid();
  31. }
  32. }
  33. $type_sn = account_helper::invite_bonus(session_helper::share_id());
  34. if($user > 0) {
  35. return self::outsuccess(['tpl' => new tpl_invite_friend($user,$type_sn)],"invite_friend/invite",'wap');
  36. }
  37. else {
  38. return self::outerr(errcode::ErrParamter);
  39. }
  40. }
  41. public function call_userOp()
  42. {
  43. if(!session_helper::logined()) {
  44. return self::outerr(errcode::ErrUnLogin,"召唤操作有可能会骚扰用户,只有在登录时才可以操作");
  45. }
  46. $user = intval($_GET['user']);
  47. if($user > 0)
  48. {
  49. $mod_member = Model('member');
  50. $minfo = $mod_member->getMemberInfo(['inviter_id' => session_helper::memberid(),'member_id' => $user]);
  51. if(!empty($minfo)) {
  52. $caller = new user_session\friend_caller();
  53. $caller->call($user);
  54. push_helper::call_friends(session_helper::memberid(),$user);
  55. return self::outsuccess(null);
  56. }
  57. }
  58. return self::outerr(errcode::ErrParamter);
  59. }
  60. }
  61. class friend_caller extends user_session\storage
  62. {
  63. public function __construct()
  64. {
  65. parent::__construct();
  66. }
  67. public function limit_type()
  68. {
  69. return user_session\storage::DAILY_SUPPORT;;
  70. }
  71. public function storage_tag()
  72. {
  73. return 'friend_caller';
  74. }
  75. public function called($user) {
  76. return $this->base_supported($user);
  77. }
  78. public function call($user) {
  79. parent::base_support($user);
  80. }
  81. }
  82. class tpl_invite_friend
  83. {
  84. private $mUser;
  85. private $mRewardedInvites;
  86. private $mRewardingInvites;
  87. private $mUserInfo;
  88. private $mShareInfo;
  89. private $mTypesn;
  90. private $mMineInfo;
  91. private $mRank;
  92. private $mMine;
  93. private $mCaller;
  94. public function __construct($user,$type_sn)
  95. {
  96. $this->mUser = $user;
  97. $this->mRewardedInvites = [];
  98. $this->mRewardingInvites = [];
  99. $this->init($user);
  100. $this->mShareInfo = invite_helper::share_info(session_helper::share_id());
  101. $this->mTypesn = $type_sn;
  102. $this->mMine = (session_helper::memberid() == $user);
  103. $this->mCaller = new user_session\friend_caller();
  104. }
  105. private function init($user)
  106. {
  107. if($user <= 0) return false;
  108. $mod_member = Model('member');
  109. $items = $mod_member->getMemberList(['member_id|inviter_id' => ['_multi' => true,$user,$user]],'*', 0, 'reward_amount desc');
  110. $cur_user = session_helper::memberid();
  111. $index = 0;
  112. foreach ($items as $item)
  113. {
  114. $user_info = new member_info($item);
  115. $uid = $user_info->member_id();
  116. if($uid == $user) {
  117. $this->mUserInfo = $user_info;
  118. }
  119. elseif ($uid == $cur_user) {
  120. $this->mMineInfo = $user_info;
  121. $this->mRank = $index + 1;
  122. }
  123. else
  124. {
  125. if($user_info->rewared_inviter()) {
  126. $this->mRewardedInvites[] = $user_info;
  127. } else {
  128. $this->mRewardingInvites[] = $user_info;
  129. }
  130. }
  131. $index++;
  132. }
  133. }
  134. public function show()
  135. {
  136. // if(!empty($this->mTypesn)) {
  137. // $this->show_bonus();
  138. // }
  139. $rewared = $this->show_rewared();
  140. $rewarding = $this->show_rewarding();
  141. $relay = $this->show_relay();
  142. // if($rewared == false && $rewarding == false) {
  143. // $this->show_noinvitee();
  144. // }
  145. $prompt = $this->show_prompt();
  146. echo $relay.$rewared.$rewarding.$prompt;
  147. }
  148. private function show_noinvitee()
  149. {
  150. echo "<div class=\"bonus_list\">";
  151. echo "<span class=\"invite_null\">TA尚未邀请好友</span>";
  152. echo "</div>";
  153. }
  154. private function show_relay()
  155. {
  156. $minfo = $this->mUserInfo;
  157. $total_cnt = $this->reward_member_cnt + $this->rewarding_member_cnt;
  158. if($total_cnt > 0) {
  159. $str = "<div class=\"text_center mt14\">
  160. <p class=\"l_ht42 f30 col333\">已邀请 <span class=\"colDD4545\">{$total_cnt}</span> 名好友,共获得 <span class=\"colDD4545\">{$minfo->reward_amount()}</span> 元红包</p>
  161. </div>";
  162. }else{
  163. $str = "<div class=\"text_center mt14\">
  164. <p class=\"l_ht42 f30 col333\">您尚未邀请好友</p>
  165. </div>";
  166. }
  167. return $str;
  168. }
  169. // private function show_bonus()
  170. // {
  171. // echo "<div class=\"open_bonus_link\">
  172. // <div class=\"bonus\">
  173. // <div class=\"bonus_top\"></div>
  174. // <div class=\"bonus_center\"></div>
  175. // <div class=\"bonus_bg\">
  176. // <span id=\"coin\" class=\"open_bonus_btn gold_coin\"></span>
  177. // </div>
  178. // </div>
  179. // </div>";
  180. // }
  181. private $reward_member_cnt = 0;
  182. private function show_rewared()
  183. {
  184. $html = "";
  185. if(empty($this->mMineInfo) && empty($this->mRewardedInvites)) {
  186. return $html;
  187. }
  188. if(!empty($this->mMineInfo) && $this->mMineInfo->rewared_inviter()) {
  189. $count = count($this->mRewardedInvites) + 1;
  190. } else {
  191. $count = count($this->mRewardedInvites);
  192. }
  193. $this->reward_member_cnt = $count;
  194. $html .= "<div class=\"bonus_list\">";
  195. if(!empty($this->mMineInfo) && $this->mMineInfo->rewared_inviter()) {
  196. $html .= $this->show_invitee($this->mMineInfo);
  197. }
  198. foreach ($this->mRewardedInvites as $minfo) {
  199. $html .= $this->show_invitee($minfo);
  200. }
  201. $html .= "</div>";
  202. return $html;
  203. }
  204. private $rewarding_member_cnt = 0;
  205. private function show_rewarding()
  206. {
  207. $html = "";
  208. if(empty($this->mMineInfo) && empty($this->mRewardingInvites)) {
  209. return $html;
  210. }
  211. if(!empty($this->mMineInfo) && $this->mMineInfo->rewared_inviter() == false) {
  212. $count = count($this->mRewardingInvites) + 1;
  213. } else {
  214. $count = count($this->mRewardingInvites);
  215. }
  216. $this->rewarding_member_cnt = $count;
  217. $html .= "<div class=\"bonus_list\">";
  218. if(!empty($this->mMineInfo) && $this->mMineInfo->rewared_inviter() == false) {
  219. $html .= $this->show_invitee($this->mMineInfo);
  220. }
  221. foreach ($this->mRewardingInvites as $minfo) {
  222. $html .= $this->show_invitee($minfo);
  223. }
  224. $html .= "</div>";
  225. return $html;
  226. }
  227. private function show_prompt()
  228. {
  229. $str = "<div class=\"prompt\">
  230. <div class=\"prompt_label\">
  231. <span class=\"title\">活动规则</span>
  232. </div>
  233. <div class=\"gifts_tips_list\">
  234. <div class=\"gifts_tips_item\"><span class=\"tips_count\">1</span>当您分享红包给新人好友,领取成功后双方均可获得相应奖励(30元个人红包)。</div>
  235. <div class=\"gifts_tips_item mt4\"><span class=\"tips_count\">2</span>成功领取:通过您发出的红包链接,新人好友通过页面注册下载APP、微信授权/登录账号后,即为成功领取。</div>
  236. <div class=\"gifts_tips_item mt4\"><span class=\"tips_count\">3</span>通过不正当手段(包括但不限于侵犯第三人合法权益,作弊,扰乱系统,实施网络工具,批量注册,用机器注册账户,用机器模拟客户端)获得奖励,熊猫美妆有权撤销奖励以及相关订单。</div>
  237. </div>
  238. </div>
  239. <div class=\"briefing_address\"></div>";
  240. return $str;
  241. }
  242. private function show_invitee($minfo)
  243. {
  244. if(empty($minfo)) return "";
  245. $user = $minfo->member_id();
  246. $called = $this->mCaller->called($user);
  247. $str = "<div class=\"item\">
  248. <div class=\"user_img\">
  249. <img src=\"{$minfo->avatar()}\">
  250. </div>
  251. <div class=\"user_name text-overflow\">
  252. <p class=\"text-overflow\"> {$minfo->nickname()}</p>
  253. <p class=\"invite_msg\">邀请{$minfo->invitees()}人,收益<span class=\"price\">{$minfo->reward_amount()}</span>元</p>
  254. </div>";
  255. if($this->mMine == false)
  256. {
  257. $str .= "<div class=\"look_btn\">
  258. <span class=\"arrow\"></span>
  259. </div>";
  260. }
  261. if($this->mMine)
  262. {
  263. if($called) {
  264. $str .= "<span class=\"call_btn called\" data-user=\"{$user}\">召唤TA</span>";
  265. } else {
  266. $str .= "<span class=\"call_btn\" data-user=\"{$user}\">召唤TA</span>";
  267. }
  268. }
  269. $str .= "</div>";
  270. return $str;
  271. }
  272. public function show_open()
  273. {
  274. if(!session_helper::isapp())
  275. {
  276. echo "<div class=\"fixed_bottom\">
  277. <span class=\"logo\"></span>
  278. <div class=\"label\">
  279. <p>熊猫美妆</p>
  280. <p>下载APP即可得更多奖励</p>
  281. </div>
  282. <a href=\"#\" class=\"download_app_btn\" id=\"download_app\">打开APP</a>
  283. </div>";
  284. }
  285. }
  286. public function bonus_url() {
  287. return url_helper::bonus_open_url($this->mTypesn);
  288. }
  289. public function share_url()
  290. {
  291. return url_helper::bonus_open_url($this->mTypesn);
  292. }
  293. public function share_path()
  294. {
  295. return url_helper::bonus_open_path($this->mTypesn);
  296. }
  297. public function share_title()
  298. {
  299. return $this->mShareInfo['title'];
  300. }
  301. public function share_image()
  302. {
  303. return $this->mShareInfo['img'];;
  304. }
  305. public function share_subtitle()
  306. {
  307. return $this->mShareInfo['sub_title'];;
  308. }
  309. }