getDayDate(); $courseAnalyse['course_1'] = Db::name('xilufitness_work_course')->where($this->getWhereParams(1,1))->count('*'); //待开团课 $courseAnalyse['course_2'] = Db::name('xilufitness_work_course')->where($this->getWhereParams(2,2))->count('*'); //待开私教课 $courseAnalyse['course_3'] = Db::name('xilufitness_work_camp')->where($this->getWhereParams(3,3))->count('*'); //待开活动 $courseAnalyse['coach_count'] = Db::name('xilufitness_coach')->where($this->getWhereParams(4,0))->count('*'); //教练 $dayAnalyse['recharge_amount'] = Db::name('xilufitness_order') ->where($this->getWhereParams(5,0,$dayDate['start_at'],$dayDate['end_at'])) ->sum('pay_amount'); //今日充值金额 $dayAnalyse['record_count'] = Db::name('xilufitness_order_verification_records') ->where($this->getWhereParams(6,0,$dayDate['start_at'],$dayDate['end_at'])) ->count('*'); //今日核销课程数 $dayAnalyse['sign_count'] = Db::name('xilufitness_order') ->where($this->getWhereParams(7,0,$dayDate['start_at'],$dayDate['end_at'])) ->count('*');//今日报名数 $dayAnalyse['user_count'] = Db::name('xilufitness_user') ->where($this->getWhereParams(8,0,$dayDate['start_at'],$dayDate['end_at'])) ->count('*');//今日会员注册数 $analyseData['shop_count'] = Db::name('xilufitness_shop') ->where($this->getWhereParams(9,0)) ->count('*'); //门店数量 $analyseData['user_count'] = Db::name('xilufitness_user') ->where($this->getWhereParams(10,0)) ->count('*'); //会员总数量 $analyseData['recharge_total_amount'] = Db::name('xilufitness_order') ->where($this->getWhereParams(11,0)) ->sum('pay_amount'); //充值总金额 $analyseData['sign_total_amount'] = Db::name('xilufitness_order') ->where($this->getWhereParams(12,0)) ->sum('pay_amount'); //报名总金额 $this->assign('courseAnalyse',$courseAnalyse); $this->assign('dayAnalyse',$dayAnalyse); $this->assign('analyseData',$analyseData); $login_account_type = $this->getFitnessAccountRole(); //登录账号类型 $this->assign('is_fitness_shop',$login_account_type == 2 ? 1 : 0); return $this->view->fetch(); } /** * 订单数据展示 */ public function get_data(){ $c_where = $this->getCommonWhere(); $datetime = $this->request->param('datetime',''); $range_data = $this->dateRange($datetime); $x_data = []; $y_data = []; $column = []; //订单数量统计 $column[0] = '团课'; $column[1] = '私教课'; $column[2] = '活动'; foreach ($range_data['list'] as $key => $val){ $start_at = $range_data['range_type'] == 1 ? $key.":00:00" : $key." 00:00:00"; $end_at = $range_data['range_type'] == 1 ? $key.":59:50" : $key." 23:59:59"; $x_data[] = $val; $y_data['data_0'][] = Db::name('xilufitness_order') ->where(function ($query) use($start_at,$end_at,$c_where){ $query->where(['order_type' => 1, 'pay_status' => 1, 'pay_time' => [['egt',strtotime($start_at)],['elt',strtotime($end_at)]] ]); if(!empty($c_where['brand_id'])){ $query->where('brand_id',$c_where['brand_id']); } if(!empty($c_where['shop_id'])){ $query->where('shop_id',$c_where['shop_id']); } }) ->count('*'); $y_data['data_1'][] = Db::name('xilufitness_order') ->where(function ($query) use($start_at,$end_at,$c_where){ $query->where(['order_type' => 2, 'pay_status' => 1, 'pay_time' => [['egt',strtotime($start_at)],['elt',strtotime($end_at)]] ]); if(!empty($c_where['brand_id'])){ $query->where('brand_id',$c_where['brand_id']); } if(!empty($c_where['shop_id'])){ $query->where('shop_id',$c_where['shop_id']); } }) ->count('*'); $y_data['data_3'][] = Db::name('xilufitness_order') ->where(function ($query) use($start_at,$end_at,$c_where){ $query->where(['order_type' => 3, 'pay_status' => 1, 'pay_time' => [['egt',strtotime($start_at)],['elt',strtotime($end_at)]] ]); if(!empty($c_where['brand_id'])){ $query->where('brand_id',$c_where['brand_id']); } if(!empty($c_where['shop_id'])){ $query->where('shop_id',$c_where['shop_id']); } }) ->count('*'); unset($start_at); unset($end_at); } $result = ['series' => $y_data, 'fieldtextdata' => $column,'column' =>$x_data]; return json(['code' => 1, 'data' => $result]); } /** * 根据日期范围返回x轴日期数据列表 */ private function dateRange($datetime=''){ $list = []; if(empty($datetime)){ //默认近 8天的数据 $current_time = strtotime(date('Y-m-d',strtotime("-7 day",time()))); $end_time = strtotime(date('Y-m-d',time())); $i = 0; do{ $next_time = date('Y-m-d',strtotime("+$i day",$current_time)); $list[$next_time] = $next_time; } while($end_time > strtotime($next_time) && ++$i ); $range_type = 2; } else { $date_range = explode(" - ",$datetime); $total_time = strtotime($date_range[1]) - strtotime($date_range[0]); if($total_time <= 86400){ //一天内的 $day_time = date('Y-m-d',strtotime($date_range[0])); $day_times = ['00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23']; foreach ($day_times as $key => $val){ $list[$day_time.' '.$val] = $day_time.' '.$val.'点'; } $range_type = 1; } else { $current_time = strtotime($date_range[0]); $end_time = strtotime(date('Y-m-d',strtotime($date_range[1]))); $i = 0; do{ $next_time = date('Y-m-d',strtotime("+$i day",$current_time)); $list[$next_time] = $next_time; } while($end_time > strtotime($next_time) && ++$i ); $range_type = 2; } } return ['list' => $list, 'range_type' => $range_type]; } /** * 获取搜索条件 */ private function getWhereParams(int $key,int $course_type=0,$start_at='',$end_at=''){ $c_where = $this->getCommonWhere(); switch ($key){ case $key == 1: case $key == 2: $where = function ($query) use($c_where,$course_type){ $query->where(['status' => 'normal', 'course_type' => $course_type, 'start_at' => ['gt',time()] ]); if(!empty($c_where['brand_id'])){ $query->where('brand_id','eq',$c_where['brand_id']); } if(!empty($c_where['shop_id'])){ $query->where('shop_id','eq',$c_where['shop_id']); } }; break; case $key == 3: $where = function ($query) use($c_where,$course_type){ $query->where(['status' => 'normal','start_at' => ['gt',time()] ]); if(!empty($c_where['brand_id'])){ $query->where('brand_id','eq',$c_where['brand_id']); } if(!empty($c_where['shop_id'])){ $query->where('shop_id','eq',$c_where['shop_id']); } }; break; case $key == 4: $where = function ($query) use($c_where){ $query->where(['status' => 'normal']); if(!empty($c_where['brand_id'])){ $query->where('brand_id','eq',$c_where['brand_id']); } if(!empty($c_where['shop_id'])){ $query->whereRaw("FIND_IN_SET({$c_where['shop_id']},`shop_ids`)"); } }; break; case $key == 5: $where = function ($query) use($c_where,$start_at,$end_at){ $query->where(['order_type' => 0, 'pay_status' => 1, 'pay_time' => [['egt',$start_at],['elt',$end_at]]]); if(!empty($c_where['brand_id'])){ $query->where('brand_id','eq',$c_where['brand_id']); } if(!empty($c_where['shop_id'])){ $query->where('shop_id','eq',$c_where['shop_id']); } }; break; case $key == 6: $where = function ($query) use($c_where,$start_at,$end_at){ $query->where(['check_time' => [['egt',$start_at],['elt',$end_at]]]); if(!empty($c_where['brand_id'])){ $query->where('brand_id','eq',$c_where['brand_id']); } if(!empty($c_where['shop_id'])){ $query->where('shop_id','eq',$c_where['shop_id']); } }; break; case $key == 7: $where = function ($query) use($c_where,$start_at,$end_at){ $query->where(['pay_time' => [['egt',$start_at],['elt',$end_at]], 'order_type' => [['neq',0],['neq',4]]]); if(!empty($c_where['brand_id'])){ $query->where('brand_id','eq',$c_where['brand_id']); } if(!empty($c_where['shop_id'])){ $query->where('shop_id','eq',$c_where['shop_id']); } }; break; case $key == 8: $where = function ($query) use($c_where,$start_at,$end_at){ $query->where(['createtime' => [['egt',$start_at],['elt',$end_at]]]); if(!empty($c_where['brand_id'])){ $query->where('brand_id','eq',$c_where['brand_id']); } }; break; case $key == 9: $where = function ($query) use($c_where){ $query->where(['status' => 'normal']); if(!empty($c_where['brand_id'])){ $query->where('brand_id','eq',$c_where['brand_id']); } if(!empty($c_where['shop_id'])){ $query->where('id','eq',$c_where['shop_id']); } }; break; case $key == 10: $where = function ($query) use($c_where){ $query->where(['status' => 'normal']); if(!empty($c_where['brand_id'])){ $query->where('brand_id','eq',$c_where['brand_id']); } }; break; case $key == 11: $where = function ($query) use($c_where){ $query->where(['pay_status' => 1, 'order_type' => 0]); if(!empty($c_where['brand_id'])){ $query->where('brand_id','eq',$c_where['brand_id']); } }; break; case $key == 12: $where = function ($query) use($c_where){ $query->where(['pay_status' => 1, 'order_type' => [['neq',0],['neq',4]], 'order_status' => ['neq',4]]); if(!empty($c_where['brand_id'])){ $query->where('brand_id','eq',$c_where['brand_id']); } if(!empty($c_where['shop_id'])){ $query->where('shop_id','eq',$c_where['shop_id']); } }; } return $where; } /** * 获取公共搜索条件信息 */ private function getCommonWhere(){ $fitness_brand_id = $this->getFitnessBrandId(); $fitness_shop_id = $this->getFitnessShopId(); return ['brand_id' => $fitness_brand_id, 'shop_id' => $fitness_shop_id]; } /** * 获取今日时间 */ private function getDayDate(){ $start_at = mktime(0,0,0,date('m'),date('d'),date('Y')); $end_at = mktime(23,59,59,date('m'),date('d'),date('Y')); return ['start_at' => $start_at, 'end_at' => $end_at]; } //添加 public function add(){ return; } //编辑 public function edit($ids = null) { return; } //删除 public function del($ids = null) { return; } //回收站列表 public function recyclebin() { return; } //回收站(真实删除或清空) public function destroy($ids = null) { return; } //回收站还原 public function restore($ids = null) { return; } //批量操作(修改状态) public function multi($ids = null) { return; } }