bonusex.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 16/4/11
  6. * Time: 上午12:49
  7. */
  8. defined('InShopNC') or exit('Access Invalid!');
  9. require_once (BASE_ROOT_PATH . '/helper/bonus_helper.php');
  10. require_once (BASE_ROOT_PATH . '/helper/predeposit_helper.php');
  11. require_once (BASE_ROOT_PATH . '/helper/user_helper.php');
  12. require_once (BASE_ROOT_PATH . '/helper/sms_helper.php');
  13. class bonusexControl extends mobileControl
  14. {
  15. public function __construct() {
  16. parent::__construct();
  17. }
  18. private function fileter_typeinfos($type_infos,&$type_info,&$binded_info)
  19. {
  20. $type_info = bonus_helper::filter_type($type_infos['type_info']);
  21. $binded_info = array();
  22. $binded_infos = $type_infos['binded_info'];
  23. if(is_array($binded_infos))
  24. {
  25. foreach($binded_infos as $val)
  26. {
  27. $user_info = bonus_helper::filter_bonus($val);
  28. if(isset($val['user_mobile'])) {
  29. unset($val['user_mobile']);
  30. }
  31. array_push($binded_info,$user_info);
  32. }
  33. }
  34. }
  35. public function openOp()
  36. {
  37. if(!isset($_GET['type_sn']) || empty($_GET['type_sn'])) {
  38. return self::outerr(errcode::ErrParamter,"需要红包 type_sn 参数.");
  39. }
  40. $type_sn = $_GET['type_sn'];
  41. $type_infos = bonus_helper::get_typeinfo($type_sn);
  42. if(empty($type_infos)) {
  43. return self::outerr(errcode::ErrBonus,"无此红包.");
  44. }
  45. $this->fileter_typeinfos($type_infos,$type_info,$binded_info);
  46. $type = \bonus\type::crate_by_paramer($type_infos['type_info']);
  47. if($type->isStart() == false) {
  48. return self::outsuccess(array('type_info' => $type_info),"bonus/unstart");
  49. }
  50. $mine_bonus = bonus_helper::get_mine_by_typesn($type_sn);
  51. if($mine_bonus != false)
  52. { //显示我抢到的红包,按照状态进行判断
  53. $bonus = \bonus\user_bonus::create_by_param($mine_bonus);
  54. $mine_bonus = bonus_helper::filter_bonus($mine_bonus);
  55. if($bonus->isBinded() == false && user_helper::isVerfiyMobile())
  56. {
  57. $ret = bonus_helper::bind_bonus($bonus->bonus_sn(),$_SESSION['MPHPSESSID'],user_helper::cur_mobile(),$new_sn);
  58. if($ret == true) {
  59. $mine_bonus = bonus_helper::get_mine_by_bonussn($new_sn);
  60. }
  61. }
  62. $data = array('type_info' => $type_info, 'mine_bonus' => $mine_bonus,'binded_info' => $binded_info);
  63. if($bonus->isBinded()) {
  64. return self::outsuccess($data,"bonus/content");
  65. }
  66. else
  67. {
  68. if($type->isEnd()) {
  69. return self::outsuccess(array('type_info' => $type_info),"bonus/end");
  70. } else {
  71. return self::outsuccess($data,"bonus/bind");
  72. }
  73. }
  74. }
  75. else
  76. { //我没有抢过的情况
  77. if($type->isEnd()) {
  78. return self::outsuccess(array('type_info' => $type_info),"bonus/end");
  79. }
  80. else if($type->binded_over()) {
  81. return self::outsuccess(array('type_info' => $type_info,'msg' => "手慢了,红包派完了"),"bonus/over");
  82. } else {
  83. return self::outsuccess(array('type_info' => $type_info),"bonus/open");
  84. }
  85. }
  86. }
  87. public function detailOp()
  88. {
  89. if(!isset($_GET['type_sn']) || empty($_GET['type_sn'])) {
  90. return self::outerr(errcode::ErrParamter,"需要红包 type_sn 参数.");
  91. }
  92. $type_sn = $_GET['type_sn'];
  93. $type_infos = bonus_helper::get_typeinfo($type_sn);
  94. if(empty($type_infos)) {
  95. return self::outerr(errcode::ErrBonus,"无此红包.");
  96. }
  97. $this->fileter_typeinfos($type_infos,$type_info,$binded_info);
  98. $type = \bonus\type::crate_by_paramer($type_infos['type_info']);
  99. if($type->isStart() == false) {
  100. return self::outsuccess(array('type_info' => $type_info),"bonus/unstart");
  101. }
  102. $mine_bonus = bonus_helper::get_mine_by_typesn($type_sn);
  103. if($mine_bonus != false) { //显示我抢到的红包,按照状态进行判断
  104. $mine_bonus = bonus_helper::filter_bonus($mine_bonus);
  105. }
  106. return self::outsuccess(array('type_info' => $type_info, 'mine_bonus' => $mine_bonus,'binded_info' => $binded_info),'bonus/detail');
  107. }
  108. public function grabOp()
  109. {
  110. if(!isset($_GET['type_sn']) || empty($_GET['type_sn'])) {
  111. return self::outerr(errcode::ErrParamter,"需要红包 type_sn 参数.");
  112. }
  113. $type_sn = $_GET['type_sn'];
  114. $type_infos = bonus_helper::get_typeinfo($type_sn);
  115. if(empty($type_infos)) {
  116. return self::outerr(errcode::ErrBonus,"无此红包.");
  117. }
  118. $this->fileter_typeinfos($type_infos,$type_info,$binded_info);
  119. $type = \bonus\type::crate_by_paramer($type_infos['type_info']);
  120. if($type->isStart() == false) {
  121. return self::outsuccess(array('type_info' => $type_info),"bonus/unstart");
  122. }
  123. $mine_bonus = bonus_helper::get_mine_by_typesn($type_sn);
  124. if($mine_bonus != false)
  125. { //显示我抢到的红包,按照状态进行判断
  126. $bonus_obj = \bonus\user_bonus::create_by_param($mine_bonus);
  127. $mine_bonus = bonus_helper::filter_bonus($mine_bonus);
  128. if($bonus_obj->isBinded()) {
  129. return self::outsuccess(array('type_info' => $type_info, 'mine_bonus' => $mine_bonus,'binded_info' => $binded_info),"bonus/content");
  130. }
  131. elseif($type->isEnd()) {
  132. return self::outsuccess(array('type_info' => $type_info),"bonus/end");
  133. }
  134. else
  135. {
  136. if(user_helper::isVerfiyMobile())
  137. {
  138. $ret = bonus_helper::bind_bonus($bonus_obj->bonus_sn(),$_SESSION['MPHPSESSID'],user_helper::cur_mobile(),$new_sn);
  139. if($ret == true) {
  140. $mine_bonus = bonus_helper::get_mine_by_bonussn($new_sn);
  141. return self::outsuccess(array('type_info' => $type_info, 'mine_bonus' => $mine_bonus,'binded_info' => $binded_info),"bonus/content");
  142. } else { //todo 此处是绑定错误...
  143. return self::outsuccess(array('type_info' => $type_info, 'mine_bonus' => $mine_bonus,'binded_info' => $binded_info),"bonus/bind");
  144. }
  145. } else {
  146. return self::outsuccess(array('type_info' => $type_info, 'mine_bonus' => $mine_bonus,'binded_info' => $binded_info),"bonus/bind");
  147. }
  148. }
  149. }
  150. else
  151. {
  152. if($type->isEnd()) {
  153. return self::outsuccess(array('type_info' => $type_info),"bonus/end");
  154. }
  155. elseif($type->binded_over()) {
  156. return self::outsuccess(array('type_info' => $type_info,'msg' => "手慢了,红包派完了"),"bonus/over");
  157. }
  158. else
  159. {
  160. $bonus = bonus_helper::grab_bonus($type_sn);
  161. if($bonus == false) {
  162. return self::outsuccess(array('type_info' => $type_info,'msg' => "手慢了,红包派完了"),"bonus/over");
  163. }
  164. else
  165. {
  166. $bonus_obj = \bonus\user_bonus::create_by_param($bonus);
  167. $mine_bonus = bonus_helper::filter_bonus($bonus);
  168. if($bonus_obj->isBinded())
  169. {
  170. $type_infos = bonus_helper::get_typeinfo($bonus_obj->type_sn());
  171. if(empty($type_infos)) {
  172. return self::outerr(errcode::ErrBonus,"无此红包.");
  173. }
  174. $this->fileter_typeinfos($type_infos,$type_info,$binded_info);
  175. $data = array('type_info' => $type_info, 'mine_bonus' => $mine_bonus,'binded_info' => $binded_info);
  176. return self::outsuccess($data,"bonus/content");
  177. } else {
  178. $data = array('type_info' => $type_info, 'mine_bonus' => $mine_bonus,'binded_info' => $binded_info);
  179. return self::outsuccess($data,"bonus/bind");
  180. }
  181. }
  182. }
  183. }
  184. }
  185. public function bindOp()
  186. {
  187. if(!isset($_GET['bonus_sn']) || empty($_GET['bonus_sn'])) {
  188. return self::outerr(errcode::ErrParamter,"请输入红包序列号.");
  189. }
  190. $bonus_sn = $_GET['bonus_sn'];
  191. $mine_bonus = bonus_helper::get_mine_by_bonussn($bonus_sn);
  192. if($mine_bonus == false) {
  193. return self::outerr(errcode::ErrParamter, "您不能领没有抢到的红包.");
  194. }
  195. $bonus_obj = \bonus\user_bonus::create_by_param($mine_bonus);
  196. if($bonus_obj->isBinded()) {
  197. $type_sn = $bonus_obj->type_sn();
  198. $type_infos = bonus_helper::get_typeinfo($type_sn);
  199. $this->fileter_typeinfos($type_infos,$type_info,$binded_info);
  200. $mine_bonus = bonus_helper::filter_bonus($mine_bonus);
  201. return self::outsuccess(array('type_info' => $type_info, 'mine_bonus' => $mine_bonus,'binded_info' => $binded_info),"bonus/content");
  202. }
  203. $type_sn = $bonus_obj->type_sn();
  204. $type_infos = bonus_helper::get_typeinfo($type_sn);
  205. $type = \bonus\type::crate_by_paramer($type_infos['type_info']);
  206. if($type->isEnd()) {
  207. return self::outsuccess(array('type_info' => $type_infos['type_info']),"bonus/end");
  208. }
  209. elseif(user_helper::isVerfiyMobile()) {
  210. $mobile = user_helper::cur_mobile();
  211. }
  212. else
  213. {
  214. $mobile = $_GET['mobile'];
  215. $validator = new Validate();
  216. $validator->setValidate(Validate::verify_mobile($mobile));
  217. $err = $validator->validate();
  218. if ($err != '') {
  219. return self::outerr(errcode::ErrParamter, $err);
  220. }
  221. if(!isset($_GET['code']) || empty($_GET['code'])) {
  222. return self::outerr(errcode::ErrParamter, "请输入验证码.");
  223. }
  224. $code = $_GET['code'];
  225. $ret = sms_helper::check_code(Sms::getbonus_code,$code,$mobile);
  226. if(is_array($ret)) {
  227. return self::outerr($ret['code'], $ret['msg']);
  228. } else {
  229. $_SESSION['member_mobile'] = $mobile;
  230. }
  231. }
  232. $ret = bonus_helper::bind_bonus($bonus_sn,$_SESSION['MPHPSESSID'],$mobile,$new_bonus_sn);
  233. if($ret == true) {
  234. $mine_bonus = bonus_helper::get_mine_by_bonussn($new_bonus_sn);
  235. $bonus_obj = \bonus\user_bonus::create_by_param($mine_bonus);
  236. $type_infos = bonus_helper::get_typeinfo($bonus_obj->type_sn());
  237. $this->fileter_typeinfos($type_infos,$type_info,$binded_info);
  238. //绑定手机成功后自动注册为用户
  239. user_helper::bindbonus_register($mobile,$code);
  240. return self::outsuccess(array('type_info' => $type_info, 'mine_bonus' => $mine_bonus,'binded_info' => $binded_info));
  241. } else {
  242. return self::outerr($ret['code'],$ret['msg']);
  243. }
  244. }
  245. //红包留言
  246. public function commentOp()
  247. {
  248. if(!isset($_GET['bonus_sn']) || empty($_GET['bonus_sn'])) {
  249. return self::outerr(errcode::ErrParamter,"请输入红包序列号.");
  250. }
  251. $bonus_sn = $_GET['bonus_sn'];
  252. if(!isset($_GET['comment']) || empty($_GET['comment'])) {
  253. return self::outerr(errcode::ErrParamter,"请输入留言.");
  254. }
  255. $comment = urldecode($_GET['comment']);
  256. if(bonus_helper::comment($bonus_sn,urldecode($comment)) == true) {
  257. return self::outsuccess(array());
  258. } else {
  259. return self::outerr(errcode::ErrBonusComment,"留言失败.");
  260. }
  261. }
  262. }
  263. function bonus_output_unstart($output)
  264. {
  265. $type_info = $output['type_info'];
  266. $type = \bonus\type::crate_by_paramer($type_info);
  267. $local_tm = time();
  268. $start_tm = $type->get_start_time();
  269. $str_localtime = "<input type=\"hidden\" id=\"server_local_time\" value=\"{$local_tm}\"/>";
  270. $str_starttime = "<input type=\"hidden\" id=\"server_start_time\" value=\"{$start_tm}\"/>";
  271. echo($str_localtime);
  272. echo($str_starttime);
  273. }
  274. function bonus_output_end($output)
  275. {
  276. $type_info = $output['type_info'];
  277. $type = \bonus\type::crate_by_paramer($type_info);
  278. $start_tm = $type->get_start_time();
  279. $end_time = $type->get_end_time();
  280. $day_secs = 24 * 60 * 60;
  281. if(($end_time - $start_tm) == $day_secs) {
  282. return "该红包已超过24小时。";
  283. } else {
  284. return "该红包已过期。";
  285. }
  286. }
  287. function bonus_output_grabinfo($output)
  288. {
  289. $type_info = $output['type_info'];
  290. $type = \bonus\type::crate_by_paramer($type_info);
  291. if($type->binded_over()) {
  292. echo("<p>手慢了,红包被领完了</p>");
  293. }
  294. else if($type->grabed_over())
  295. {
  296. echo ("<p>手慢了,红包被抢完了</p>");
  297. $last_time = $type->grab_lastime();
  298. if($last_time) {
  299. $wait_sec = $last_time + 600 - time();
  300. $wait_min = intval($wait_sec / 60);
  301. $wait_sec = $wait_sec % 60;
  302. if($wait_min > 0) {
  303. echo("<p style=\"font-size:1rem;margin-top:2rem\">{$wait_min}分钟后,您可以尝试抢一个未及时领取的红包.</p>");
  304. } else {
  305. echo("<p style=\"font-size:1rem;margin-top:2rem\">{$wait_sec}秒后,您可以尝试抢一个未及时领取的红包.</p>");
  306. }
  307. }
  308. }
  309. }
  310. function bonus_output_sender($output)
  311. {
  312. $type_info = $output['type_info'];
  313. if(!empty($type_info)) {
  314. $type = \bonus\type::crate_by_paramer($type_info);
  315. echo($type->sender_name());
  316. } else {
  317. echo("");
  318. }
  319. }
  320. function bonus_output_openurl($output)
  321. {
  322. $type_info = $output['type_info'];
  323. $type = \bonus\type::crate_by_paramer($type_info);
  324. $type_sn = $type->getType_sn();
  325. $url = BASE_SITE_URL . "/mobile/index.php?act=bonusex&op=open&type_sn={$type_sn}";
  326. return $url;
  327. }
  328. function bonus_output_detailurl($output)
  329. {
  330. $type_info = $output['type_info'];
  331. $type = \bonus\type::crate_by_paramer($type_info);
  332. $type_sn = $type->getType_sn();
  333. $url = BASE_SITE_URL . "/mobile/index.php?act=bonusex&op=detail&type_sn={$type_sn}&client_type=wap";
  334. return $url;
  335. }
  336. function bonus_output_graburl($output)
  337. {
  338. $type_info = $output['type_info'];
  339. $type = \bonus\type::crate_by_paramer($type_info);
  340. $type_sn = $type->getType_sn();
  341. $url = BASE_SITE_URL . "/mobile/index.php?act=bonusex&op=grab&client_type=wap&type_sn={$type_sn}";
  342. return $url;
  343. }
  344. function bonus_output_type($output)
  345. {
  346. echo '<p class="p p_name" style="color:#454545">';
  347. $type_info = $output['type_info'];
  348. $type = \bonus\type::crate_by_paramer($type_info);
  349. echo($type_info['sender_name'] . "的红包");
  350. if($type->isRandomAmount()) {
  351. echo '<s class="icon_pin"></s>';
  352. }
  353. echo '</p>';
  354. echo '<p class="prompt">' . $type_info['type_bless'] . '</p>';
  355. }
  356. function bonus_output_mine($output)
  357. {
  358. $mine_bonus = $output['mine_bonus'];
  359. if(!empty($mine_bonus)) {
  360. $bonus = \bonus\user_bonus::create_by_param($mine_bonus);
  361. echo('<div class="price">');
  362. echo('<p><span>' . $bonus->bonus_value() . '</span>元</p>');
  363. echo('</div>');
  364. echo('<input type="hidden" id="mine_bonus" value=' ."{$bonus->bonus_sn()}>");
  365. if($bonus->isBinded()) {
  366. echo('<div class="link">');
  367. echo('<p style="margin: 20px 0"><a href="javascript:void(0)">请下载熊猫美妆APP,享用红包</a></p>');
  368. echo('</div>');
  369. }
  370. }
  371. else {
  372. echo('<div class="link">');
  373. echo('<p style="margin: 20px 0><a href="javascript:void(0)">请下载熊猫美妆APP</a></p>');
  374. echo('</div>');
  375. }
  376. }
  377. function bonus_out_bindtimeout($output)
  378. {
  379. $mine_bonus = $output['mine_bonus'];
  380. if(!empty($mine_bonus))
  381. {
  382. $bonus = \bonus\user_bonus::create_by_param($mine_bonus);
  383. $grab_time = $bonus->grab_time();
  384. $time_out = 600;
  385. if($grab_time > 0)
  386. {
  387. if($grab_time + $time_out <= time() - 60) {
  388. return '您的红包随时可能被抢走,抓紧领啊~';
  389. } else {
  390. $left_time = $grab_time + $time_out - time();
  391. $mins = $left_time / 60;
  392. return "请{$mins}分钟内,输入手机号领取红包";
  393. }
  394. }
  395. }
  396. return '';
  397. }
  398. function bonus_out_bindedtime($period)
  399. {
  400. $min = 60;
  401. $hour = 3600;
  402. $day = 24 * 3600;
  403. $days = intval($period / $day);
  404. $period = $period % $day;
  405. $houres = intval($period / $hour);
  406. $period = $period % $hour;
  407. $mins = intval($period / $min);
  408. $period = $period % $min;
  409. if($period > 0) {
  410. $mins += 1;
  411. }
  412. $time_str = '';
  413. if($days > 0) {
  414. $time_str .= "{$days}天";
  415. }
  416. if($houres > 0) {
  417. $time_str .= "{$houres}小时";
  418. }
  419. if($mins > 0) {
  420. $time_str .= "{$mins}分钟";
  421. }
  422. $time_str .= "领完.";
  423. return $time_str;
  424. }
  425. function bonus_output_bindedinfo($output)
  426. {
  427. $type_info = $output['type_info'];
  428. $type = \bonus\type::crate_by_paramer($type_info);
  429. echo('<div class="prompt text_left">');
  430. if($type->binded_over()) {
  431. $prompt = "{$type->getTotal_num()}个红包";
  432. $prompt .= ",";
  433. $period = $type_info['binded_period'];
  434. $prompt .= bonus_out_bindedtime($period);
  435. } else {
  436. $prompt = "领取 {$type->binded_num()}/{$type->getTotal_num()}";
  437. }
  438. echo('<p class="prompt pro">' .$prompt. '</p>');
  439. echo('</div>');
  440. $bined_info = $output['binded_info'];
  441. if(empty($bined_info)) return;
  442. foreach($bined_info as $val)
  443. {
  444. $bonus = \bonus\user_bonus::create_by_param($val);
  445. echo('<div class="li">');
  446. echo('<div class="li_left">');
  447. echo('<p class="p">' . $bonus->user_name() .'</p>');
  448. if(empty($bonus->user_comment()))
  449. {
  450. if($bonus->user_mobile() == $_SESSION['member_mobile']) {
  451. echo ('<p class="prompt" id="my_prompt">');
  452. echo ('<a href="javascript:void(0)" id="message" style="color: #1927D1">留言</a>');
  453. echo ('</p>');
  454. echo('<p class="prompt">' . $bonus->get_time_format() . '</p>');
  455. } else {
  456. echo('<p class="prompt">' . $bonus->get_time_format() . '</p>');
  457. echo('<p class="prompt"></p>');
  458. }
  459. } else {
  460. echo('<p class="prompt">' . $bonus->user_comment() . '</p>');
  461. echo('<p class="prompt">' . $bonus->get_time_format() . '</p>');
  462. }
  463. echo('</div>');
  464. echo('<div class="li_right">');
  465. echo('<p class="p">' . $bonus->bonus_value() . '元</p>');
  466. if($type->binded_over() && $type->isMaxAmount($bonus->bonus_value()) && $type->isRandomAmount()) {
  467. echo('<p class="king_box"><s class="king"></s>手气最佳</p>');
  468. }
  469. echo('</div>');
  470. echo('</div>');
  471. }
  472. }