qiuqiucard.ctrl.php 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. /**
  3. * [WeEngine System] Copyright (c) 2014 WE7.CC
  4. * WeEngine is NOT a free software, it under the license terms, visited http://www.we7.cc/ for more details.
  5. */
  6. defined('IN_IA') or exit('Access Denied');
  7. $dos = array('sign_display', 'sign', 'sign_record', 'recommend', 'notice', 'sign_strategy', 'share');
  8. $do = in_array($do, $dos) ? $do : 'sign_display';
  9. load()->model('user');
  10. load()->model('card');
  11. $notice_count = card_notice_stat();
  12. $setting = pdo_get('mc_card', array('uniacid' => $_W['uniacid']));
  13. if($do == 'sign_display') {
  14. $title = '签到-会员卡';
  15. $credits = mc_credit_fetch($_W['member']['uid']);
  16. $time = intval($_GPC['e']) ? intval($_GPC['e']) : TIMESTAMP;
  17. $pretime = strtotime('-1 month', $time);
  18. $nexttime = strtotime('+1 month', $time);
  19. $year = date('Y', $time);
  20. $month = date('m', $time);
  21. $day = date('d', $time);
  22. $record = pdo_fetch('SELECT id FROM ' . tablename('mc_card_sign_record') . ' WHERE uniacid = :uniacid AND uid = :uid AND addtime >= :addtime', array(':uniacid' => $_W['uniacid'], ':uid' => $_W['member']['uid'], ':addtime' => strtotime(date('Y-m-d'))));
  23. $total = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename('mc_card_sign_record') . ' WHERE uniacid = :uniacid AND uid = :uid', array(':uniacid' => $_W['uniacid'], ':uid' => $_W['member']['uid']));
  24. $month_record = pdo_fetchall('SELECT id,addtime FROM ' . tablename('mc_card_sign_record') . ' WHERE uniacid = :uniacid AND uid = :uid AND addtime >= :starttime AND addtime <= :endtime', array(':uniacid' => $_W['uniacid'], ':uid' => $_W['member']['uid'], ':starttime' => strtotime(date('Y-m', $time)), ':endtime' => strtotime('+1 month', strtotime(date('Y-m', $time)))));
  25. $flags = array();
  26. if(!empty($month_record)) {
  27. foreach($month_record as $li) {
  28. $flags[] = date('j', $li['addtime']);
  29. }
  30. }
  31. $flags = json_encode($flags);
  32. }
  33. if($do == 'sign') {
  34. if($_W['isajax']) {
  35. $record = pdo_fetch('SELECT id FROM ' . tablename('mc_card_sign_record') . ' WHERE uniacid = :uniacid AND uid = :uid AND addtime >= :addtime', array(':uniacid' => $_W['uniacid'], ':uid' => $_W['member']['uid'], ':addtime' => strtotime(date('Y-m-d'))));
  36. if(!empty($record)) {
  37. exit(json_encode(array('error' => 1, 'message' => '今天已签到')));
  38. }
  39. $set = card_credit_set();
  40. if(empty($set)) {
  41. exit(json_encode(array('error' => 1, 'message' => '商家未开启签到功能')));
  42. }
  43. $everydaynum = intval($set['sign']['everydaynum']);
  44. $lastday = intval($set['sign']['lastday']);
  45. $lastnum = intval($set['sign']['lastnum']);
  46. $data = array(
  47. 'uniacid' => $_W['uniacid'],
  48. 'uid' => $_W['member']['uid'],
  49. 'credit' => $everydaynum,
  50. 'is_grant' => 0,
  51. 'addtime' => TIMESTAMP,
  52. );
  53. pdo_insert('mc_card_sign_record', $data);
  54. $credit = $everydaynum;
  55. if($credit > 0) {
  56. $log = "用户签到赠送【{$credit}】积分";
  57. }
  58. if($lastday > 1 && $lastnum > 0) {
  59. $count = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename('mc_card_sign_record') . ' WHERE uniacid = :uniacid AND uid = :uid AND is_grant = 0 AND addtime >= :addtime', array(':uniacid' => $_W['uniacid'], ':uid' => $_W['member']['uid'], ':addtime' => strtotime("-{$lastday} days", date('Y-m-d'))));
  60. if($count >= $lastday) {
  61. pdo_update('mc_card_sign_record', array('is_grant' => 1), array('uniacid' => $_W['uniacid'], 'uid' => $_W['member']['uid'], 'is_grant' => 0));
  62. $credit += $lastnum;
  63. $log .= ",连续签到{$lastday}天,赠送【{$lastnum}】积分,本次总共赠送【{$credit}】积分";
  64. }
  65. }
  66. mc_credit_update($_W['member']['uid'], 'credit1', $credit, array(0, $log, 'sign'));
  67. $status = mc_notice_credit1($_W['openid'], $_W['member']['uid'], $credit, $log);
  68. exit(json_encode(array('error' => 0, 'message' => "签到成功,赠送{$credit}积分")));
  69. }
  70. }
  71. if($do == 'sign_record') {
  72. $title = '签到记录-会员卡';
  73. $psize = 30;
  74. $pindex = max(1, intval($_GPC['page']));
  75. $total = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename('mc_card_sign_record') . ' WHERE uniacid = :uniacid AND uid = :uid', array(':uniacid' => $_W['uniacid'], ':uid' => $_W['member']['uid']));
  76. $data = pdo_fetchall('SELECT * FROM ' . tablename('mc_card_sign_record') . ' WHERE uniacid = :uniacid AND uid = :uid ORDER BY id DESC LIMIT ' . ($pindex - 1) * $psize . ", {$psize}", array(':uniacid' => $_W['uniacid'], ':uid' => $_W['member']['uid']));
  77. $pager = pagination($total, $pindex, $psize);
  78. }
  79. if($do == 'sign_strategy') {
  80. $set = card_credit_set();
  81. $content = $set['content'];
  82. }
  83. if($do == 'recommend') {
  84. $title = '签到记录-会员卡';
  85. $psize = 30;
  86. $pindex = max(1, intval($_GPC['page']));
  87. $total = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename('mc_card_recommend') . ' WHERE uniacid = :uniacid', array(':uniacid' => $_W['uniacid']));
  88. $data = pdo_fetchall('SELECT * FROM ' . tablename('mc_card_recommend') . ' WHERE uniacid = :uniacid ORDER BY displayorder DESC, id DESC LIMIT ' . ($pindex - 1) * $psize . ", {$psize}", array(':uniacid' => $_W['uniacid']));
  89. $pager = pagination($total, $pindex, $psize);
  90. }
  91. if($do == 'share') {
  92. if(!$_W['isajax']) {
  93. exit();
  94. }
  95. $set = card_credit_set();
  96. if($set['share']['times'] > 0 && $set['share']['num'] > 0 ) {
  97. $total = intval(pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename('mc_handsel') . ' WHERE uniacid = :uniacid AND touid = :touid AND module = :module AND action = :action AND createtime >= :createtime', array(':uniacid' => $_W['uniacid'], ':touid' => $_W['member']['uid'], ':module' => 'card', ':action' => 'share', ':createtime' => strtotime(date('Y-m-d')))));
  98. if($total < $set['share']['times']) {
  99. $data = array(
  100. 'uniacid' => $_W['uniacid'],
  101. 'touid' => $_W['member']['uid'],
  102. 'module' => 'card',
  103. 'action' => 'share',
  104. 'createtime' => TIMESTAMP,
  105. 'credit_value' => intval($set['share']['num']),
  106. );
  107. pdo_insert('mc_handsel', $data);
  108. if($set['share']['num'] > 0) {
  109. $log = "用户分享会员卡的每日推荐页面,赠送【{$set['share']['num']}】积分";
  110. mc_credit_update($_W['member']['uid'], 'credit1', $set['share']['num'], array(0, $log, 'card'));
  111. $status = mc_notice_credit1($_W['openid'], $_W['member']['uid'], $set['share']['num'], $log);
  112. if(is_error($status)) {
  113. exit($log);
  114. }
  115. }
  116. } else {
  117. exit("每天只会赠送{$set['share']['times']}次积分,明天再来吧");
  118. }
  119. } else {
  120. exit('商家没有开始积分赠送');
  121. }
  122. exit();
  123. }
  124. if($do == 'notice') {
  125. $title = '系统消息-会员卡';
  126. if($_W['isajax']) {
  127. $id = intval($_GPC['id']);
  128. if($id > 0) {
  129. pdo_update('mc_card_notices_unread', array('is_new' => 0), array('uniacid' => $_W['uniacid'], 'uid' => $_W['member']['uid'], 'notice_id' => $id));
  130. $total = card_notice_stat();
  131. exit($total);
  132. }
  133. }
  134. $psize = 20;
  135. $pindex = max(1, intval($_GPC['page']));
  136. $type = intval($_GPC['type']) ? intval($_GPC['type']) : 1;
  137. $total = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename('mc_card_notices_unread') . ' WHERE uniacid = :uniacid AND uid = :uid AND type = :type', array(':uniacid' => $_W['uniacid'], ':uid' => $_W['member']['uid'], ':type' => $type));
  138. $data = pdo_fetchall('SELECT a.*,b.* FROM ' . tablename('mc_card_notices_unread') . ' AS a LEFT JOIN ' . tablename('mc_card_notices') . ' AS b ON a.notice_id = b.id WHERE a.uniacid = :uniacid AND a.uid = :uid AND a.type = :type ORDER BY a.notice_id DESC LIMIT ' . ($pindex - 1) * $psize . ", {$psize}", array(':uniacid' => $_W['uniacid'], ':uid' => $_W['member']['uid'], ':type' => $type));
  139. $pager = pagination($total, $pindex, $psize);
  140. }
  141. template('mc/card');