stat.ctrl.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  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. uni_user_permission_check('mc_member');
  8. $dos = array('list', 'chart');
  9. $do = in_array($do, $dos) ? $do : 'chart';
  10. load()->model('mc');
  11. $starttime = empty($_GPC['time']['start']) ? mktime(0, 0, 0, date('m') , 1, date('Y')) : strtotime($_GPC['time']['start']);
  12. $endtime = empty($_GPC['time']['end']) ? TIMESTAMP : strtotime($_GPC['time']['end']) + 86399;
  13. $num = ($endtime + 1 - $starttime) / 86400;
  14. if($do == 'chart') {
  15. $type = trim($_GPC['type']) ? trim($_GPC['type']) : 'credit2';
  16. $names = array('credit1' => '积分', 'credit2' => '余额', 'cash' => '现金');
  17. $_W['page']['title'] = "{$names[$type]}统计-会员中心";
  18. $type = trim($_GPC['type']) ? trim($_GPC['type']) : 'credit2';
  19. if($type != 'cash') {
  20. $today_recharge = floatval(pdo_fetchcolumn('SELECT SUM(num) FROM ' . tablename('mc_credits_record') . ' WHERE uniacid = :uniacid AND credittype = :credittype AND num > 0 AND createtime >= :starttime AND createtime <= :endtime', array(':uniacid' => $_W['uniacid'], ':credittype' => $type, ':starttime' => strtotime(date('Y-m-d')), ':endtime' => TIMESTAMP)));
  21. $today_consume = floatval(pdo_fetchcolumn('SELECT SUM(num) FROM ' . tablename('mc_credits_record') . ' WHERE uniacid = :uniacid AND credittype = :credittype AND num < 0 AND createtime >= :starttime AND createtime <= :endtime', array(':uniacid' => $_W['uniacid'], ':credittype' => $type, ':starttime' => strtotime(date('Y-m-d')), ':endtime' => TIMESTAMP)));
  22. $total_recharge = floatval(pdo_fetchcolumn('SELECT SUM(num) FROM ' . tablename('mc_credits_record') . ' WHERE uniacid = :uniacid AND credittype = :credittype AND num > 0 AND createtime >= :starttime AND createtime <= :endtime', array(':uniacid' => $_W['uniacid'], ':credittype' => $type, ':starttime' => $starttime, ':endtime' => $endtime)));
  23. $total_consume = floatval(pdo_fetchcolumn('SELECT SUM(num) FROM ' . tablename('mc_credits_record') . ' WHERE uniacid = :uniacid AND credittype = :credittype AND num < 0 AND createtime >= :starttime AND createtime <= :endtime', array(':uniacid' => $_W['uniacid'], ':credittype' => $type, ':starttime' => $starttime, ':endtime' => $endtime)));
  24. } else {
  25. $today_consume = floatval(pdo_fetchcolumn('SELECT SUM(final_cash) FROM ' . tablename('mc_cash_record') . ' WHERE uniacid = :uniacid AND createtime >= :starttime AND createtime <= :endtime', array(':uniacid' => $_W['uniacid'], ':starttime' => strtotime(date('Y-m-d')), ':endtime' => TIMESTAMP)));
  26. $total_consume = floatval(pdo_fetchcolumn('SELECT SUM(final_cash) FROM ' . tablename('mc_cash_record') . ' WHERE uniacid = :uniacid AND createtime >= :starttime AND createtime <= :endtime', array(':uniacid' => $_W['uniacid'], ':starttime' => $starttime, ':endtime' => $endtime)));
  27. }
  28. if($_W['isajax']) {
  29. $stat = array();
  30. for($i = 0; $i < $num; $i++) {
  31. $time = $i * 86400 + $starttime;
  32. $key = date('m-d', $time);
  33. $stat['consume'][$key] = 0;
  34. $stat['recharge'][$key] = 0;
  35. }
  36. if($type != 'cash') {
  37. $data = pdo_fetchall('SELECT id,num,credittype,createtime,uniacid FROM ' . tablename('mc_credits_record') . ' WHERE uniacid = :uniacid AND credittype = :credittype AND createtime >= :starttime AND createtime <= :endtime', array(':uniacid' => $_W['uniacid'], ':credittype' => $type, ':starttime' => $starttime, ':endtime' => $endtime));
  38. if(!empty($data)) {
  39. foreach($data as $da) {
  40. $key = date('m-d', $da['createtime']);
  41. if($da['num'] > 0) {
  42. $stat['recharge'][$key] += $da['num'];
  43. } else {
  44. $stat['consume'][$key] += abs($da['num']);
  45. }
  46. }
  47. }
  48. } else {
  49. $data = pdo_fetchall('SELECT * FROM ' . tablename('mc_cash_record') . ' WHERE uniacid = :uniacid AND createtime >= :starttime AND createtime <= :endtime', array(':uniacid' => $_W['uniacid'], ':starttime' => $starttime, ':endtime' => $endtime));
  50. if(!empty($data)) {
  51. foreach($data as $da) {
  52. $key = date('m-d', $da['createtime']);
  53. $stat['consume'][$key] += abs($da['final_cash']);
  54. }
  55. }
  56. }
  57. $out['label'] = array_keys($stat['consume']);
  58. $out['datasets'] = array('recharge' => array_values($stat['recharge']), 'consume' => array_values($stat['consume']));
  59. exit(json_encode($out));
  60. }
  61. }
  62. if($do == 'list') {
  63. $type = trim($_GPC['type']) ? trim($_GPC['type']) : 'credit2';
  64. $names = array('credit1' => '积分', 'credit2' => '余额', 'cash' => '现金');
  65. $_W['page']['title'] = "{$names[$type]}查询-会员中心";
  66. if($type != 'cash') {
  67. $tablename = 'mc_credits_record';
  68. $condition = ' WHERE uniacid = :uniacid AND credittype = :credittype AND createtime >= :starttime AND createtime <= :endtime';
  69. $params = array(':uniacid' => $_W['uniacid'], ':credittype' => $type, ':starttime' => $starttime, ':endtime' => $endtime);
  70. $num = intval($_GPC['num']);
  71. if($num > 0) {
  72. if($num == 1) {
  73. $condition .= ' AND num >= 0';
  74. } else {
  75. $condition .= ' AND num <= 0';
  76. }
  77. }
  78. $min = intval($_GPC['min']);
  79. if($min > 0 ) {
  80. $condition .= ' AND abs(num) >= :minnum';
  81. $params[':minnum'] = $min;
  82. }
  83. $max = intval($_GPC['max']);
  84. if($max > 0 ) {
  85. $condition .= ' AND abs(num) <= :maxnum';
  86. $params[':maxnum'] = $max;
  87. }
  88. } else {
  89. $tablename = 'mc_cash_record';
  90. $condition = ' WHERE uniacid = :uniacid AND createtime >= :starttime AND createtime <= :endtime';
  91. $params = array(':uniacid' => $_W['uniacid'], ':starttime' => $starttime, ':endtime' => $endtime);
  92. $min = intval($_GPC['min']);
  93. if($min > 0 ) {
  94. $condition .= ' AND abs(final_fee) >= :minnum';
  95. $params[':minnum'] = $min;
  96. }
  97. $max = intval($_GPC['max']);
  98. if($max > 0 ) {
  99. $condition .= ' AND abs(final_fee) <= :maxnum';
  100. $params[':maxnum'] = $max;
  101. }
  102. }
  103. $user = trim($_GPC['user']);
  104. if(!empty($user)) {
  105. $condition .= ' AND (uid IN (SELECT uid FROM '.tablename('mc_members').' WHERE uniacid = :uniacid AND (realname LIKE :username OR uid = :uid OR mobile LIKE :mobile)))';
  106. $params[':username'] = "%{$user}%";
  107. $params[':uid'] = intval($user);
  108. $params[':mobile'] = "%{$user}%";
  109. }
  110. $psize = 30;
  111. $pindex = max(1, intval($_GPC['page']));
  112. $limit = " ORDER BY id DESC LIMIT " . ($pindex - 1) * $psize . ", {$psize}";
  113. $total = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename($tablename) . $condition, $params);
  114. $data = pdo_fetchall('SELECT * FROM ' . tablename($tablename) . $condition . $limit, $params);
  115. if(!empty($data)) {
  116. $uids = array();
  117. $clerks = array();
  118. foreach($data as $da) {
  119. if(!in_array($da['uid'], $uids)) {
  120. $uids[] = $da['uid'];
  121. }
  122. if(!in_array($da['clerk_id'], $clerks)) {
  123. $clerks[] = $da['clerk_id'];
  124. }
  125. }
  126. $uids = implode(',', $uids);
  127. $users = pdo_fetchall('SELECT mobile,uid,realname FROM ' . tablename('mc_members') . " WHERE uniacid = :uniacid AND uid IN ($uids)", array(':uniacid' => $_W['uniacid']), 'uid');
  128. $clerks = implode(',', $clerks);
  129. $clerks = pdo_fetchall('SELECT name,id FROM ' . tablename('activity_coupon_password') . " WHERE uniacid = :uniacid AND id IN ($clerks)", array(':uniacid' => $_W['uniacid']), 'id');
  130. $stores = pdo_getall('activity_stores', array('uniacid' => $_W['uniacid']), array('id', 'business_name', 'branch_name'), 'id');
  131. }
  132. $pager = pagination($total, $pindex, $psize);
  133. }
  134. template('mc/stat');