login_white = array();//登录白名单 $this->check_status = array();//用户状态校验 $this->check_mobile = array();//需要手机号 $this->check_headimg = array();//授权微信信息 $this->load->model("biz/biz_model"); $this->load->model('receiver/receiver_customers_model', 'customers_model'); $this->load->model('receiver/order/receiver_orders_model', 'orders_model'); $this->load->model('receiver/receiver_customer_sign_model', 'customer_sign_model'); } protected function get() { } //统计客户 protected function get_cust() { $season = $this->input_param('season'); $city_id = $this->input_param('city_id'); !strlen($season) && $season = date('n') - 1;//当前月份 $month = $season + 1; $season_data = $this->months(); $series = []; $bizs = []; $months_arr = []; $months_arr[] = [ 'cn' => $season_data[$season], 's_time' => date("Y-{$month}-01 00:00:00"), 'e_time' => date("Y-{$month}-t 23:59:59"), ]; $fileds = 'id,biz_name'; $biz_id_arr = explode(',', $this->session['biz_id']); if ($this->session['biz_id'] && $biz_id_arr) { $city_id && $o_where = ['city_id' => $city_id]; $bizs_lists = $this->biz_model->get_by_id_arr($biz_id_arr, $o_where, $fileds); } else { $bizs_lists = $this->biz_model->select(['status' => 1, 'city_id' => $city_id], 'id desc', '', '', $fileds); } if ($bizs_lists) { $bizs = array_column($bizs_lists, 'biz_name'); foreach ($bizs_lists as $key => $val) { $count_data = []; foreach ($months_arr as $v2) { $where = [ 'biz_id' => $val['id'], 'status>=' => 0, 'c_time>=' => strtotime($v2['s_time']), 'c_time<=' => strtotime($v2['e_time']), 'brand_id!=' => 3, ]; $count_data[] = $this->customers_model->count($where); } $series[] = [ 'name' => $val['biz_name'], 'type' => 'bar', 'data' => $count_data ]; } } $stat_data = [ 'tooltip' => [ 'trigger' => 'axis', 'axisPointer' => ['type' => 'shadow'] ], 'legend' => [ 'top' => 'bottom', 'data' => $bizs ], 'grid' => [ 'top' => '8%', 'left' => '2%', 'right' => '5%', 'bottom' => '12%', 'containLabel' => true ], 'xAxis' => [ 'type' => 'value', 'boundaryGap' => [0, 0.01] ], 'yAxis' => [ 'type' => 'category', 'data' => array_column($months_arr, 'cn') ], 'series' => $series ]; $data = [ 'stat_data' => $stat_data, 'season_data' => $season_data, 'season' => $season ]; return $data; } //统计订单 protected function get_orders() { $season = $this->input_param('season'); $city_id = $this->input_param('city_id'); !strlen($season) && $season = ceil((date('n')) / 3) - 1;//当月是第几季度 $season_data = $this->season_data($season + 1); $days = getMonth($season + 1); $series = []; $bizs = []; $months_arr = []; foreach ($days as $val) { $months_arr[] = [ 'cn' => date('n月', strtotime($val)), 's_time' => date('Y-m-01 00:00:00', strtotime($val)), 'e_time' => date('Y-m-t 23:59:59', strtotime($val)), ]; } $fileds = 'id,biz_name'; $biz_id_arr = explode(',', $this->session['biz_id']); if ($this->session['biz_id'] && $biz_id_arr) { $city_id && $o_where = ['city_id' => $city_id]; $bizs_lists = $this->biz_model->get_by_id_arr($biz_id_arr, $o_where, $fileds); } else { $bizs_lists = $this->biz_model->select(['status' => 1, 'city_id' => $city_id], 'id desc', '', '', $fileds); } if ($bizs_lists) { $bizs = array_column($bizs_lists, 'biz_name'); foreach ($bizs_lists as $key => $val) { $count_data = []; foreach ($months_arr as $v2) { $where = [ 'biz_id' => $val['id'], 'status>=' => 0, 'c_time>=' => strtotime($v2['s_time']), 'c_time<=' => strtotime($v2['e_time']), 'brand_id!=' => 3, ]; $count_data[] = $this->orders_model->count($where); } $series[] = [ 'name' => $val['biz_name'], 'type' => 'line', 'stack' => '总量', 'data' => $count_data, 'smooth' => true ]; } } $stat_data = [ 'tooltip' => ['trigger' => 'axis'], 'legend' => ['top' => 'bottom', 'data' => $bizs], 'grid' => [ 'top' => '10%', 'left' => '2%', 'right' => '5%', 'bottom' => '12%', 'containLabel' => true ], 'xAxis' => [ 'type' => 'category', 'boundaryGap' => false, 'data' => array_column($months_arr, 'cn') ], 'yAxis' => ['type' => 'value'], 'series' => $series, ]; $data = [ 'stat_data' => $stat_data, 'season_data' => $season_data, 'season' => $season ]; return $data; } //数据分析页面客户数据 protected function get_scust() { $day = $this->input_param('day'); $month = $this->input_param('month'); $biz_id = $this->input_param('biz_id'); $admin_id = $this->input_param('admin_id'); if (!$biz_id) { throw new Exception('参数错误', ERR_PARAMS_ERROR); } if (!$day && $month) { $day = date("Y-{$month}-01"); } !$day && $day = date('Y-m-d');//获取当天 $status_list = [ [ 'title' => '订单客户', 'icon' => 'icon-statistics-custom-1', 'status' => 2 ], [ 'title' => '到店客户', 'icon' => 'icon-statistics-custom-2', 'status' => 1 ], [ 'title' => '未见客户', 'icon' => 'icon-statistics-custom-3', 'status' => 0 ], [ 'title' => '未联潜客', 'icon' => 'icon-statistics-custom-4', 'status' => '' ], [ 'title' => '战败客户', 'icon' => 'icon-statistics-custom-5', 'status' => 3 ], ]; foreach ($status_list as $key => $val) { $setValue = [ 'title' => $val['title'], 'icon' => $val['icon'], ]; $where = [ 'biz_id' => $biz_id, 'brand_id!=' => 3 ]; $admin_id && $where['admin_id'] = $admin_id; if ($day) { $s_time = date('Y-m-01 00:00:00', strtotime($day)); $e_time = date('Y-m-t 23:59:59', strtotime($day)); $where['c_time>='] = strtotime($s_time); $where['c_time<='] = strtotime($e_time); } if (strlen($val['status'])) { $where['status'] = $val['status']; $setValue['value'] = $this->customers_model->count($where); } else { $where["cont_time = '0000-00-00 00:00:00'"] = null; $setValue['value'] = $this->customers_model->count($where); } $custom[] = $setValue; } $months_arr = []; for ($i = 2; $i >= 0; $i--) { $_time = date("Y-m-01", mktime(0, 0, 0, date("m", strtotime($day)) - $i, 1, date("Y", strtotime($day)))); $months_arr [] = [ 'cn' => date('n月', strtotime($_time)), 's_time' => date('Y-m-01 00:00:00', strtotime($_time)), 'e_time' => date('Y-m-t 23:59:59', strtotime($_time)) ]; } foreach ($months_arr as $val) { $where = [ 'biz_id' => $biz_id, 'status>=' => 0, 'c_time>=' => strtotime($val['s_time']), 'c_time<=' => strtotime($val['e_time']), 'brand_id!=' => 3, ]; $count_data[] = $this->customers_model->count($where); } //图标数据 $stat_data = [ 'tooltip' => [ 'trigger' => 'axis', 'axisPointer' => [ 'type' => 'shadow' ] ], 'grid' => [ 'top' => '10%', 'left' => '2%', 'right' => '5%', 'bottom' => '5%', 'containLabel' => true ], 'xAxis' => [ 'type' => 'value', 'boundaryGap' => [0, 0.01] ], 'yAxis' => [ 'type' => 'category', 'data' => array_column($months_arr, 'cn'), ], 'series' => [ [ 'type' => 'bar', 'itemStyle' => [ 'color' => '#2e3246', 'borderRadius' => [0, 20, 20, 0], ], 'barWidth' => '15', 'data' => $count_data, 'label' => [ 'show' => true, 'position' => 'right', 'formatter' => '{@[n]}', 'valueAnimation' => true ] ] ] ]; $data = [ 'custom' => $custom, 'stat_data' => $stat_data, ]; return $data; } //数据分析页面订单数据 protected function get_ocust() { $day = $this->input_param('day'); $biz_id = $this->input_param('biz_id'); $month = $this->input_param('month'); $admin_id = $this->input_param('admin_id'); if (!$biz_id) { throw new Exception('参数错误', ERR_PARAMS_ERROR); } if (!$day && $month) { $day = date("Y-{$month}-01"); } !$day && $day = date('Y-m-d');//获取当天 $status_list = [ [ 'title' => '合同签订', 'icon' => 'icon-statistics-order-1', 'status' => 0 ], [ 'title' => '分期办理', 'icon' => 'icon-statistics-order-2', 'status' => 1 ], [ 'title' => '车辆确认', 'icon' => 'icon-statistics-order-3', 'status' => 2 ], [ 'title' => '申请开票', 'icon' => 'icon-statistics-order-4', 'status' => 3 ], [ 'title' => '代办服务', 'icon' => 'icon-statistics-order-5', 'status' => 4 ], [ 'title' => '交付确认', 'icon' => 'icon-statistics-order-6', 'status' => 5 ], [ 'title' => '完成交付', 'icon' => 'icon-statistics-order-7', 'status' => 6 ], ]; foreach ($status_list as $key => $val) { $setValue = [ 'title' => $val['title'], 'icon' => $val['icon'], ]; $where = [ 'status' => $val['status'], 'biz_id' => $biz_id, 'brand_id!=' => 3, ]; if ($day) { $s_time = date('Y-m-01 00:00:00', strtotime($day)); $e_time = date('Y-m-t 23:59:59', strtotime($day)); $where['c_time>='] = strtotime($s_time); $where['c_time<='] = strtotime($e_time); } $admin_id && $where['admin_id'] = $admin_id; $setValue['value'] = $this->orders_model->count($where); $custom[] = $setValue; } $months_arr = []; for ($i = 2; $i >= 0; $i--) { $_time = date("Y-m-01", mktime(0, 0, 0, date("m", strtotime($day)) - $i, 1, date("Y", strtotime($day)))); $months_arr [] = [ 'cn' => date('n月', strtotime($_time)), 's_time' => date('Y-m-01 00:00:00', strtotime($_time)), 'e_time' => date('Y-m-t 23:59:59', strtotime($_time)) ]; } foreach ($months_arr as $val) { $where = [ 'biz_id' => $biz_id, 'status>=' => 0, 'c_time>=' => strtotime($val['s_time']), 'c_time<=' => strtotime($val['e_time']), 'brand_id!=' => 3, ]; $count_data[] = $this->orders_model->count($where); } $stat_data = [ 'grid' => [ 'top' => '15%', 'left' => '2%', 'right' => '5%', 'bottom' => '5%', 'containLabel' => true ], 'xAxis' => [ 'type' => 'category', 'data' => array_column($months_arr, 'cn'), ], 'yAxis' => [ 'type' => 'value' ], 'series' => [ [ 'data' => $count_data, 'type' => 'line', 'smooth' => true ] ] ]; $data = [ 'custom' => $custom, 'stat_data' => $stat_data, ]; return $data; } //首页饼状图客户统计 protected function get_hcust() { $biz_id = $this->input_param('biz_id'); $group_id = $this->session['group_id']; $uid = $this->session['uid']; !$biz_id && $biz_id = intval($this->session['biz_id']); if (!$biz_id) { throw new Exception('参数错误', ERR_PARAMS_ERROR); } $status_list = $this->customers_model->get_status(); unset($status_list[-1]); $count_data = []; foreach ($status_list as $key => $val) { $where = [ 'biz_id' => $biz_id, 'status' => $key ]; $group_id == 1 && $where['admin_id'] = $uid; $group_id == 4 && $where['brand_id!='] = 3; //客户成功经理过滤 $count = $this->customers_model->count($where); $count_data[] = [ 'value' => $count, 'name' => $val ]; } //所有客户数据 $where = [ 'status>=' => 0, 'biz_id' => $biz_id ]; $group_id == 1 && $where['admin_id'] = $uid; $group_id == 4 && $where['brand_id!='] = 3; //客户成功经理过滤 $count = $this->customers_model->count($where); $where = [ 'status>=' => 0, 'biz_id' => $biz_id, 'is_top' => 1 ]; $group_id == 1 && $where['admin_id'] = $uid; $group_id == 4 && $where['brand_id!='] = 3; //客户成功经理过滤 $top_count = $this->customers_model->count($where); //关注 $where = [ 'status>=' => 0, 'biz_id' => $biz_id, "cont_time = '0000-00-00 00:00:00'" => null ]; $group_id == 1 && $where['admin_id'] = $uid; $group_id == 4 && $where['brand_id!='] = 3; //客户成功经理过滤 $un_count = $this->customers_model->count($where);//未联系 $stat_data = [ 'tooltip' => [ 'trigger' => 'axis', ], 'legend' => [ 'top' => 'bottom', 'orient' => 'horizontal', 'textStyle' => [ 'fontSize' => 9, ] ], 'series' => [ 'type' => 'pie', 'top' => '0', 'radius' => ['30%', '48%'], 'data' => $count_data, 'label' => [ 'formatter' => '\n{b|{b}}\n{c|{c}}\n{per|{d}%} ', 'rich' => [ 'b' => [ 'color' => '#4C5058', 'fontSize' => 10, 'lineHeight' => 15, 'align' => 'left', ], 'b' => [ 'color' => '#4C5058', 'fontSize' => 10, 'lineHeight' => 15, 'align' => 'left', ], 'per' => [ 'color' => '#4C5058', 'fontSize' => 10, 'lineHeight' => 15, 'align' => 'left', ], ] ], ] ]; $data = [ 'stat_data' => $stat_data, 'total' => $count, 'cont_total' => $un_count, 'top_total' => $top_count ]; return $data; } //首页柱状图订单统计 protected function get_horder() { $biz_id = $this->input_param('biz_id'); $group_id = $this->session['group_id']; $uid = $this->session['uid']; !$biz_id && $biz_id = intval($this->session['biz_id']); if (!$biz_id) { throw new Exception('参数错误', ERR_PARAMS_ERROR); } $status_list = $this->orders_model->get_status(); unset($status_list[7]); $count_data = []; $total = 0; foreach ($status_list as $key => $val) { $where = [ 'biz_id' => $biz_id, 'status' => $key ]; $group_id == 1 && $where['admin_id'] = $uid; $group_id == 4 && $where['brand_id!='] = 3; //客户成功经理过滤 $count = $this->orders_model->count($where); $total += $count; $count_data[] = [ 'value' => $count, 'name' => $val ]; } $stat_data = [ 'tooltip' => [ 'trigger' => 'axis', 'axisPointer' => [ 'type' => 'shadow' ] ], 'grid' => [ 'top' => '8%', 'left' => '2%', 'right' => '5%', 'bottom' => '2%', 'containLabel' => true ], 'xAxis' => [ 'type' => 'value', 'boundaryGap' => [0, 0.01] ], 'yAxis' => [ 'type' => 'category', 'data' => array_column($count_data, 'name'), ], 'series' => [ 'type' => 'bar', 'itemStyle' => [ 'color' => '#2e3246', 'borderRadius' => [0, 20, 20, 0], ], 'barWidth' => '15', 'data' => array_column($count_data, 'value'), 'label' => [ 'show' => true, 'position' => 'right', 'formatter' => '{@[n]}', 'valueAnimation' => true ] ] ]; $data = [ 'stat_data' => $stat_data, 'total' => $total ]; return $data; } /** * 获取月份 */ private function months() { $months = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']; return $months; } /** * 获取季度 * @param int $season 当前季度 */ private function season_data($season) { $chiNum = ['一', '二', '三', '四']; if ($season > 4) { return []; } for ($i = 0; $i < $season; $i++) { $season_data[] = "第{$chiNum[$i]}季度"; } return $season_data; } protected function get_stats() { $s_time = $this->input_param('s_time'); $e_time = $this->input_param('e_time'); $province_id = intval($this->input_param('province_id')); $city_id = intval($this->input_param('city_id')); !$s_time && $s_time = date('Y-m-d'); !$e_time && $e_time = date('Y-m-d'); $c_time = ['s_time' => strtotime($s_time), 'e_time' => strtotime(date('Y-m-d 23:59:59', strtotime($e_time)))]; $o_time = ['s_time' => $s_time . ' 00:00:00', 'e_time' => $e_time . ' 23:59:59']; if ($city_id) { // $biz_where = array('province_id' => $province_id, 'city_id' => $city_id, 'status' => 1, 'type' => 0); $biz_where = array('province_id' => $province_id, 'city_id' => $city_id, 'status' => 1); $bizs = $this->biz_model->select($biz_where); $bizs = array_column($bizs, 'id'); $this->session['biz_id'] && $bizs = array_intersect($bizs, explode(',', $this->session['biz_id'])); $biz_id_arr = implode(',', array_unique($bizs)); } else { if ($this->session['biz_id']) { $biz_id_arr = $this->session['biz_id']; } else { // $biz_where = array('province_id' => $province_id, 'status' => 1, 'type' => 0); $biz_where = array('province_id' => $province_id, 'status' => 1); $bizs = $this->biz_model->select($biz_where); $biz_id_arr = implode(',', array_unique(array_column($bizs, 'id'))); } } !$biz_id_arr && $biz_id_arr = 0; //客户 $c_where = [ 'status>=' => 0, 'p_time>=' => $o_time['s_time'], 'p_time<=' => $o_time['e_time'], "biz_id in ({$biz_id_arr})" => null, ]; $customers = $this->customers_model->count($c_where); //进店 // $s_where = [ // "c_time>=" => $c_time['s_time'], // "c_time<=" => $c_time['e_time'], // "status" => 1, // "biz_id in ({$biz_id_arr})" => null, // ]; // $sign = $this->customer_sign_model->count($s_where); $s_where = [ 'status>=' => 0, 'dt_time>=' => $o_time['s_time'], 'dt_time<=' => $o_time['e_time'], "biz_id in ({$biz_id_arr})" => null, ]; $sign = $this->customers_model->count($s_where); //个微 $g_where = [ 'status>=' => 0, 'wxgr' => 1, 'p_time>=' => $o_time['s_time'], 'p_time<=' => $o_time['e_time'], "biz_id in ({$biz_id_arr})" => null, ]; $wxgr = $this->customers_model->count($g_where); //成交 $o_where = [ 'status>=' => 0, 'order_time>=' => $o_time['s_time'], 'order_time<=' => $o_time['e_time'], "biz_id in ({$biz_id_arr})" => null, ]; $orders = $this->orders_model->count($o_where); $data['tabs'] = [ ['title' => '所有客户', 'value_1' => $customers, 'url' => '/pages/dataAnalysis/detail/index?type=0'], ['title' => '到店客户', 'value_1' => $sign, 'url' => '/pages/dataAnalysis/detail/index?type=1'], ['title' => '添加微信', 'value_1' => $wxgr, 'url' => '/pages/dataAnalysis/detail/index?type=2'], ['title' => '所有订单', 'value_1' => $orders, 'url' => '/pages/dataAnalysis/detail/index?type=3'], ]; $orders_per = $customers ? $orders / $customers : 0; $intos_per = $customers ? $sign / $customers : 0; $orders_per = number_format_com($orders_per * 100, 1, ''); $intos_per = number_format_com($intos_per * 100, 1, ''); $data['funnel'] = [ 'title' => '转化漏斗', 'expected_data' => [ ['name' => "订单({$orders_per}%)", 'value' => 33.3], ['name' => "到店({$intos_per}%)", 'value' => 66.7], ['name' => '客户(100%)', 'value' => 100] ], 'actual_data' => [ ['name' => '订单', 'value' => $orders], ['name' => '到店', 'value' => $sign], ['name' => '客户', 'value' => $customers] ] ]; $data['title'] = '数据看板'; return $data; } protected function get_stats_days() { $days = intval($this->input_param('days')); $province_id = intval($this->input_param('province_id')); $city_id = intval($this->input_param('city_id')); !$days && $days = 7; $customers = $orders = $xAxis = []; for ($i = ($days - 1); $i >= 0; $i--) { $s_time = date('Y-m-d', strtotime("-{$i} day")); $c_time = ['s_time' => strtotime($s_time), 'e_time' => strtotime(date('Y-m-d 23:59:59', strtotime($s_time)))]; $o_time = ['s_time' => $s_time . ' 00:00:00', 'e_time' => $s_time . ' 23:59:59']; $xAxis[] = $days > 7 ? date('d', strtotime($s_time)) : date('n-d', strtotime($s_time)); $c_where = [ 'status>=' => 0, 'c_time>=' => $c_time['s_time'], 'c_time<=' => $c_time['e_time'], ]; if ($city_id) { // $biz_where = array('province_id' => $province_id, 'city_id' => $city_id, 'status' => 1, 'type' => 0); $biz_where = array('province_id' => $province_id, 'city_id' => $city_id, 'status' => 1); $bizs = $this->biz_model->select($biz_where); $bizs = array_column($bizs, 'id'); $this->session['biz_id'] && $bizs = array_intersect($bizs, explode(',', $this->session['biz_id'])); $biz_id_arr = implode(',', array_unique($bizs)); } else { if ($this->session['biz_id']) { $biz_id_arr = $this->session['biz_id']; } else { // $biz_where = array('province_id' => $province_id, 'status' => 1, 'type' => 0); $biz_where = array('province_id' => $province_id, 'status' => 1); $bizs = $this->biz_model->select($biz_where); $biz_id_arr = implode(',', array_unique(array_column($bizs, 'id'))); } } !$biz_id_arr && $biz_id_arr = 0; $c_where["biz_id in ({$biz_id_arr})"] = null; $customers[] = $this->customers_model->count($c_where); $o_where = [ 'status>=' => 0, 'order_time>=' => $o_time['s_time'], 'order_time<=' => $o_time['e_time'], "biz_id in ({$biz_id_arr})" => null, ]; $orders[] = $this->orders_model->count($o_where); } $title = $days == 7 ? "近一周" : "近{$days}日"; $data = [ 'title' => "{$title}走势", 'legend_data' => ["客户", "订单"], 'xAxis' => $xAxis, 'series' => [ ['name' => "客户", 'type' => 'line', 'smooth' => true, 'data' => $customers], ['name' => "订单", 'type' => 'line', 'smooth' => true, 'data' => $orders] ] ]; return $data; } protected function get_stats_customer() { $s_time = $this->input_param('s_time'); $e_time = $this->input_param('e_time'); $province_id = intval($this->input_param('province_id')); $city_id = intval($this->input_param('city_id')); $type = intval($this->input_param('type')); !$s_time && $s_time = date('Y-m-d'); !$e_time && $e_time = date('Y-m-d'); $c_time = [ 's_time' => strtotime($s_time), 'e_time' => strtotime(date('Y-m-d 23:59:59', strtotime($e_time))) ]; $o_time = ['s_time' => $s_time . ' 00:00:00', 'e_time' => $e_time . ' 23:59:59']; $pie1_level = $pie1_offline = $biz_customer = []; $bottom2 = $bottom1 = ''; if ($city_id) { // $biz_where = array('province_id' => $province_id, 'city_id' => $city_id, 'status' => 1, 'type' => 0); $biz_where = array('province_id' => $province_id, 'city_id' => $city_id, 'status' => 1); $bizs = $this->biz_model->select($biz_where); $bizs = array_column($bizs, 'id'); $this->session['biz_id'] && $bizs = array_intersect($bizs, explode(',', $this->session['biz_id'])); $biz_id_arr = implode(',', array_unique($bizs)); } else { if ($this->session['biz_id']) { $biz_id_arr = $this->session['biz_id']; } else { // $biz_where = array('province_id' => $province_id, 'status' => 1, 'type' => 0); $biz_where = array('province_id' => $province_id, 'status' => 1); $bizs = $this->biz_model->select($biz_where); $biz_id_arr = implode(',', array_unique(array_column($bizs, 'id'))); } } if ($biz_id_arr) { // $biz_where = array('status' => 1, 'type' => 0, "id in ({$biz_id_arr})" => null); $biz_where = array('status' => 1, "id in ({$biz_id_arr})" => null); $bizs = $this->biz_model->select($biz_where); $sdata_level = $this->customers_model->get_sdata('level'); foreach ($sdata_level as $v) { if ($type == 1) { $title = '到店客户'; // $where = [ // "a.c_time>=" => $c_time['s_time'], // "a.c_time<=" => $c_time['e_time'], // "a.status" => 1, // "b.level" => $v, // "b.biz_id in ({$biz_id_arr})" => null, // ]; // $value = $this->customer_sign_model->db->select('a.id') // ->from('lc_receiver_customer_sign as a') // ->join('lc_receiver_customers as b', "a.customer_id=b.id", 'left') // ->where($where) // ->count_all_results(); $where = [ 'status>=' => 0, 'dt_time>=' => $o_time['s_time'], 'dt_time<=' => $o_time['e_time'], "biz_id in ({$biz_id_arr})" => null ]; $value = $this->customers_model->count($where); } elseif ($type == 2) { $title = '添加微信'; $c_where = [ 'status>=' => 0, 'level' => $v, 'wxgr' => 1, 'p_time>=' => $o_time['s_time'], 'p_time<=' => $o_time['e_time'], "biz_id in ({$biz_id_arr})" => null ]; $value = $this->customers_model->count($c_where); } elseif ($type == 3) { $title = '所有订单'; $where = [ 'a.order_time>=' => $o_time['s_time'], 'a.order_time<=' => $o_time['e_time'], "a.status >=" => 0, "b.level" => $v, "b.biz_id in ({$biz_id_arr})" => null, ]; $value = $this->orders_model->db->select('a.id') ->from('lc_receiver_orders as a') ->join('lc_receiver_customers as b', "a.customer_id=b.id", 'left') ->where($where) ->count_all_results(); } else { $title = '所有客户'; $c_where = [ 'status>=' => 0, 'level' => $v, 'p_time>=' => $o_time['s_time'], 'p_time<=' => $o_time['e_time'], "biz_id in ({$biz_id_arr})" => null ]; $value = $this->customers_model->count($c_where); } if ($value) { $pie1_level[] = ['name' => $v, 'value' => $value]; $bottom1 += $value; } } $offlineSources = $this->customers_model->offlineSources(); foreach ($offlineSources as $k => $v) { $id = count($v["list"]) > 0 ? $k : 0; if ($type == 1) { //到店 // $where = [ // "a.c_time>=" => $c_time['s_time'], // "a.c_time<=" => $c_time['e_time'], // "a.status" => 1, // "b.of_id" => $k, // "b.biz_id in ({$biz_id_arr})" => null, // ]; // $value = $this->customer_sign_model->db->select('a.id') // ->from('lc_receiver_customer_sign as a') // ->join('lc_receiver_customers as b', "a.customer_id=b.id", 'left') // ->where($where) // ->count_all_results(); $where = [ 'status>=' => 0, 'of_id' => $k, 'dt_time>=' => $o_time['s_time'], 'dt_time<=' => $o_time['e_time'], "biz_id in ({$biz_id_arr})" => null ]; $value = $this->customers_model->count($where); } elseif ($type == 2) { //个微 $c_where = [ 'status>=' => 0, 'of_id' => $k, 'wxgr' => 1, 'p_time>=' => $o_time['s_time'], 'p_time<=' => $o_time['e_time'], "biz_id in ({$biz_id_arr})" => null ]; $value = $this->customers_model->count($c_where); } elseif ($type == 3) { //订单 $where = [ 'a.order_time>=' => $o_time['s_time'], 'a.order_time<=' => $o_time['e_time'], "a.status >=" => 0, "b.of_id" => $k, "b.biz_id in ({$biz_id_arr})" => null, ]; $value = $this->orders_model->db->select('a.id') ->from('lc_receiver_orders as a') ->join('lc_receiver_customers as b', "a.customer_id=b.id", 'left') ->where($where) ->count_all_results(); } else { //所有 $c_where = [ 'status>=' => 0, 'of_id' => $k, 'p_time>=' => $o_time['s_time'], 'p_time<=' => $o_time['e_time'], "biz_id in ({$biz_id_arr})" => null ]; $value = $this->customers_model->count($c_where); } $value && $pie1_offline[] = ['id' => $id, 'name' => $v['name'], 'value' => $value]; } //门店归属 foreach ($bizs as $k => $v) { $biz_arr[] = str_replace('车卖场', '', $v['biz_name']); if ($type == 1) { //进店 // $s_where = [ // "c_time>=" => $c_time['s_time'], // "c_time<=" => $c_time['e_time'], // "status" => 1, // "biz_id" => $v['id'], // ]; // $value = $this->customer_sign_model->count($s_where); $where = [ 'status>=' => 0, 'biz_id' => $v['id'], 'dt_time>=' => $o_time['s_time'], 'dt_time<=' => $o_time['e_time'], ]; $value = $this->customers_model->count($where); } elseif ($type == 2) { $where = [ 'status>=' => 0, 'biz_id' => $v['id'], 'wxgr' => 1, 'p_time>=' => $o_time['s_time'], 'p_time<=' => $o_time['e_time'], ]; $value = $this->customers_model->count($where); } elseif ($type == 3) { $where = [ 'status>=' => 0, 'biz_id' => $v['id'], 'order_time>=' => $o_time['s_time'], 'order_time<=' => $o_time['e_time'], ]; $value = $this->orders_model->count($where); } else { $where = [ 'status>=' => 0, 'biz_id' => $v['id'], 'p_time>=' => $o_time['s_time'], 'p_time<=' => $o_time['e_time'], ]; $value = $this->customers_model->count($where); } $biz_customer[] = $value; $bottom2 += $value; } } $data['pie1'] = ['title' => '客户来源', 'series_data_1' => $pie1_level, 'series_data_2' => $pie1_offline, 'bottom' => "合计: {$bottom1}"]; $data['bar'] = ['title' => '归属门店', 'xAxis_data' => $biz_arr, 'series_data' => $biz_customer, 'bottom' => "合计: {$bottom2}"]; $data['title'] = $title; return $data; } protected function get_stats_customer_pid() { $id = $this->input_param('id'); $type = $this->input_param('type'); $s_time = $this->input_param('s_time'); $e_time = $this->input_param('e_time'); $province_id = intval($this->input_param('province_id')); $city_id = intval($this->input_param('city_id')); !$s_time && $s_time = date('Y-m-d'); !$e_time && $e_time = date('Y-m-d'); $c_time = ['s_time' => strtotime($s_time), 'e_time' => strtotime(date('Y-m-d 23:59:59', strtotime($e_time)))]; $pie_offline = []; $o_time = ['s_time' => $s_time . ' 00:00:00', 'e_time' => $e_time . ' 23:59:59']; if ($city_id) { // $biz_where = array('province_id' => $province_id, 'city_id' => $city_id, 'status' => 1, 'type' => 0); $biz_where = array('province_id' => $province_id, 'city_id' => $city_id, 'status' => 1); $bizs = $this->biz_model->select($biz_where); $bizs = array_column($bizs, 'id'); $this->session['biz_id'] && $bizs = array_intersect($bizs, explode(',', $this->session['biz_id'])); $biz_id_arr = implode(',', array_unique($bizs)); } else { if ($this->session['biz_id']) { $biz_id_arr = $this->session['biz_id']; } else { // $biz_where = array('province_id' => $province_id, 'status' => 1, 'type' => 0); $biz_where = array('province_id' => $province_id, 'status' => 1); $bizs = $this->biz_model->select($biz_where); $biz_id_arr = implode(',', array_unique(array_column($bizs, 'id'))); } } if ($biz_id_arr) { $offlineSources = $this->customers_model->offlineSources($id, 0); foreach ($offlineSources["list"] as $k => $v) { $title = $offlineSources['name']; if ($type == 1) { $where = [ "a.c_time>=" => $c_time['s_time'], "a.c_time<=" => $c_time['e_time'], "a.status" => 1, 'b.of_id' => $id, 'b.of2_id' => $k, "b.biz_id in ({$biz_id_arr})" => null, ]; $value_1 = $this->customer_sign_model->db->select('a.id') ->from('lc_receiver_customer_sign as a') ->join('lc_receiver_customers as b', "a.customer_id=b.id", 'left') ->where($where) ->count_all_results(); $value_1 && $pie_offline[] = ['id' => $id, 'name' => $v, 'value' => $value_1]; } else if ($type == 2) { $where = [ 'status>=' => 0, "biz_id in ({$biz_id_arr})" => null, 'wxgr' => 1, 'of_id' => $id, 'of2_id' => $k, 'p_time>=' => $o_time['s_time'], 'p_time<=' => $o_time['e_time'], ]; $value_1 = $this->customers_model->count($where); $value_1 && $pie_offline[] = ['name' => $v, 'value' => $value_1]; } else if ($type == 3) { $where = [ 'a.order_time>=' => $o_time['s_time'], 'a.order_time<=' => $o_time['e_time'], "a.status >=" => 0, 'b.of_id' => $id, 'b.of2_id' => $k, "b.biz_id in ({$biz_id_arr})" => null, ]; $value_1 = $this->orders_model->db->select('a.id') ->from('lc_receiver_orders as a') ->join('lc_receiver_customers as b', "a.customer_id=b.id", 'left') ->where($where) ->count_all_results(); $value_1 && $pie_offline[] = ['name' => $v, 'value' => $value_1]; } else { $where = [ 'status>=' => 0, 'p_time>=' => $o_time['s_time'], 'p_time<=' => $o_time['e_time'], "biz_id in ({$biz_id_arr})" => null, ]; $value_1 = $this->customers_model->count(array_merge($where, ['of_id' => $id, 'of2_id' => $k])); $value_1 && $pie_offline[] = ['name' => $v, 'value' => $value_1]; } $bottom += $value_1; } } return ['title' => $title, 'series_data' => $pie_offline, 'bottom' => "合计: {$bottom}"]; } }