Customer.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\model\Admin;
  4. use app\admin\model\User;
  5. use app\common\controller\Backend;
  6. use app\common\model\Attachment;
  7. use app\common\model\SysConfig;
  8. use app\common\model\ViewUnique;
  9. use app\common\service\PayTransPerSvc;
  10. use fast\Date;
  11. use think\Db;
  12. /**
  13. * 控制台
  14. *
  15. * @icon fa fa-dashboard
  16. * @remark 用于展示当前系统中的统计数据、统计报表及重要实时数据
  17. */
  18. class Customer extends Backend
  19. {
  20. /**
  21. * 查看
  22. */
  23. public function index()
  24. {
  25. try {
  26. \think\Db::execute("SET @@sql_mode='';");
  27. } catch (\Exception $e) {
  28. }
  29. list($postTime,$postTimeArr) = $this->rangeTime('startTime');
  30. $where = [];
  31. $map = [];
  32. if($postTime){
  33. $time = explode(' - ',$postTime);
  34. $startTime = strtotime($time[0]);
  35. $endTime = strtotime($time[1]);
  36. $where['create_time'] = array('between',[$startTime,$endTime]);
  37. $map['createtime'] = array('between',[$startTime,$endTime]);
  38. }
  39. //新增用户数
  40. $register = Db('User')->where($map)->count();
  41. //下单用户数
  42. $buy = Db('Orders')->where($where)->where('status','in','5,10,20')->group('user_id')->count();
  43. //下单支付转化率
  44. $orderNum = Db('Orders')->where($where)->count();
  45. $payRate = 0;
  46. if($orderNum > 0)$payRate = round($buy/$orderNum,2)*100;
  47. $payRate = $payRate.'%';
  48. //支付方式
  49. $orderList = Db("Orders")->where($where)
  50. ->whereNotNull('pay_type')
  51. ->field('pay_type, COUNT(*) AS nums')
  52. ->group('pay_type')
  53. ->select();
  54. $payTotalCount = Db("Orders")->where($where)->where('status','in','5,10,20,30')->count();
  55. $payTypeList = [];
  56. $payTypeList1 = [];
  57. foreach ($orderList as $k => $v) {
  58. if($v['pay_type'] == 1){
  59. $v['pay_type'] = '企业网银';
  60. }elseif ($v['pay_type'] == 2){
  61. $v['pay_type'] = '微信';
  62. }elseif ($v['pay_type'] == 3){
  63. $v['pay_type'] = '支付宝';
  64. }elseif ($v['pay_type'] == 4){
  65. $v['pay_type'] = '银联';
  66. }elseif ($v['pay_type'] == 5){
  67. $v['pay_type'] = '代付';
  68. }elseif ($v['pay_type'] == 6){
  69. $v['pay_type'] = '线下';
  70. }
  71. $rate = 0;
  72. if($payTotalCount > 0)$rate = round($v['nums']/$payTotalCount,2)*100;
  73. $rate = $rate.'%';
  74. $payTypeList[$v['pay_type']] = $v['nums'];
  75. $payTypeList1[$v['pay_type']] = $rate;
  76. }
  77. if ($this->request->isAjax()) {
  78. //如果发送的来源是Selectpage,则转发到Selectpage
  79. if ($this->request->request('keyField')) {
  80. return $this->selectpage();
  81. }
  82. $limit = 2;
  83. list($where, $sort, $order, $offset, $limit) = $this->buildparams();
  84. $this->model = new \app\admin\model\Orders;
  85. $list = $this->model
  86. ->with(['user'])
  87. ->field('orders.*,user.nickname,user.username, SUM(orders.amount_pay) AS total')
  88. ->where('orders.status','in','5,10,20')
  89. ->order('total desc')
  90. ->group('orders.user_id')
  91. ->paginate($limit);
  92. $result = array("total" => $list->total(), "rows" => $list->items());
  93. return json($result);
  94. }
  95. $this->view->assign([
  96. 'register' => $register,
  97. 'buy' => $buy,
  98. 'post_time'=>$postTime,
  99. 'pay_rate' =>$payRate
  100. ]);
  101. $this->assignconfig('type_column', array_keys($payTypeList));
  102. $this->assignconfig('type_data', array_values($payTypeList));
  103. $this->assignconfig('type_column1', array_keys($payTypeList1));
  104. $this->assignconfig('type_data1', array_values($payTypeList1));
  105. #转化率
  106. $payCount=\app\admin\model\Orders::payed()->filterDate($postTimeArr)->count();
  107. $viewCount=ViewUnique::filterDate($postTimeArr,'date')->sum('num');
  108. $payTransPer=$viewCount?bcmul(100,bcdiv($payCount,$viewCount)):0;
  109. $this->assign('payTransPer',$payTransPer);
  110. return $this->view->fetch();
  111. }
  112. }