1,'title'=>$bookname); }else{ $where=array(); $where['status'] = 1; $where['title'] = [ 'exp' , "regexp '^[0-9]+$'"]; } $res=M('novel')->where($where)->field('id,title,allvisit')->order('id desc')->paginate(5); $page = $res->render(); $data=$res->all(); foreach($data as $k=>$v){ //今日充值 $data[$k]['daymoney'] = db('order')->where('iscontrol',0)->where(array( 'status' => 1, 'articleid' => $v['id'] ))->whereTime('create_time','d')->sum('money'); // 总充值 $data[$k]['money'] = db('order')->where('iscontrol',0)->where(array( 'status' => 1, 'articleid' => $v['id'] ))->sum('money'); // 今日充值次数 $data[$k]['DayNumberofpayments'] = db('order')->where('iscontrol',0)->where(array( 'status' => 1, 'articleid' => $v['id'] ))->whereTime('create_time','d')->count(); // 总充值次数 $data[$k]['Numberofpayments'] = db('order')->where('iscontrol',0)->where(array( 'status' => 1, 'articleid' => $v['id'] ))->count(); // 今日新增用户 $data[$k]['dayusers'] = db('history')->Distinct(true)->where(array( 'articleid' => $v['id'] ))->whereTime('create_time','d')->count('distinct(uid)'); // 新增总用户 $data[$k]['mumusers'] = db('history')->Distinct(true)->where(array( 'articleid' => $v['id'] ))->count('distinct(uid)'); // 今日付费率 $data[$k]['daypayrate'] = $data[$k]['DayNumberofpayments']==0?0:number_format($data[$k]['DayNumberofpayments'] / $data[$k]['dayusers'],2) * 100; // 总付费率 $data[$k]['payrate'] = $data[$k]['Numberofpayments']==0?0:number_format($data[$k]['Numberofpayments'] / $data[$k]['mumusers'],2) * 100; // 今日客单价 $data[$k]['dayprice'] = $data[$k]['daymoney']==0?0:number_format($data[$k]['daymoney'] / $data[$k]['dayusers'],2); // 总客单价 $data[$k]['price'] = $data[$k]['money']==0?0:number_format($data[$k]['money'] / $data[$k]['mumusers'],2); } $res = $data; $this->assign('res', $res); $this->assign('page', $page); $this->setMeta('书籍用户数据统计'); return $this->fetch(); } // 详情用户 public function info(){ $id = input('id'); $startdata = input('startdata'); $enddata = input('enddata'); if($startdata && $enddata){ $text = "从 ".$startdata." 开始 到 ".$enddata." 的数据统计"; $startdata = strtotime($startdata); $enddata = strtotime($enddata); }else{ $startdata = time() - 86400; $enddata = time(); $text = "默认展示 24 小时内数据"; } // 书名 $bookname = db('novel')->where('id',$id)->value('title'); // 基本条件 $where = array( 'status' => 1, 'articleid' => $id ); $data = array(); // 总充值 $data['money'] = db('order')->where('iscontrol',0)->where($where)->whereTime('create_time', 'between', [$startdata,$enddata])->sum('money'); // 总充值次数 $data['Numberofpayments'] = db('order')->where('iscontrol',0)->where($where)->whereTime('create_time', 'between', [$startdata,$enddata])->count(); // 新增总用户 $data['mumusers'] = db('history')->Distinct(true)->where(array( 'articleid' => $id ))->whereTime('create_time', 'between', [$startdata,$enddata])->count('distinct(uid)'); //付费率 $data['payrate'] = $data['Numberofpayments']==0?0:number_format($data['Numberofpayments'] / $data['mumusers'],2) * 100; // 总客单价 $data['price'] = $data['money']==0?0:number_format($data['money'] / $data['mumusers'],2); // 时间筛选用完需转换后给前端 $startdata = date('Y-m-d H:i:s',$startdata); $enddata = date('Y-m-d H:i:s',$enddata); // 充值用户 $user = db('order')->field('a.money,a.out_trade_no,a.create_time as times, b.username,b.avatar,b.uid as userid')->alias('a') ->join('cps_member b','a.uid = b.uid') ->where('iscontrol',0) ->where(array('a.articleid'=>$id,'a.status'=>1)) ->whereTime('a.create_time', 'between', [$startdata,$enddata]) ->order('a.id desc') ->limit(0,10) ->select(); $this->assign('text', $text); $this->assign('user', $user); $this->assign('data', $data); $this->assign('id', $id); $this->assign('startdata', $startdata); $this->assign('enddata', $enddata); $this->assign('bookname', $bookname); $this->setMeta('详情'); return $this->fetch(); } }