login_white = array();//登录白名单 $this->check_status = array();//用户状态校验 $this->check_mobile = array();//需要手机号 $this->check_headimg = array();//授权微信信息 $this->load->model('receiver/order/receiver_orders_v2_model', 'mdOrders'); $this->load->model('receiver/receiver_customers_model', 'mdCustomers'); $this->load->model('auto/auto_brand_biz_model'); $this->biz_id = $this->get_biz_id(); } /** * Notes:门店数据 * Created on: 2022/8/10 14:37 * Created by: dengbw * @return array */ protected function get_stats() { $this->load->model('app/app_lichene_qy_log_model', 'mdWechatqyLog'); $s_time = $this->input_param('s_time'); $e_time = $this->input_param('e_time'); !$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']; //客户 $customers = $this->mdCustomers->count(['biz_id' => $this->biz_id, 'status>=' => 0, 'c_time>=' => $c_time['s_time'], 'c_time<=' => $c_time['e_time']]); //进店 $intos = $this->mdCustomers->db->select('a.id') ->from('lc_receiver_customer_oplogs as a') ->join('lc_receiver_customers as b', "b.id=a.customer_id", 'left') ->where(['a.type' => 4, 'a.log' => '客户到店', 'a.c_time>=' => $c_time['s_time'], 'a.c_time<=' => $c_time['e_time'], 'b.status>=' => 0, 'b.biz_id' => $this->biz_id]) ->count_all_results(); //企微添加 $wxqys_add = 0; $res_user = $this->app_user_model->select(['status' => 1, 'userid<>' => '', 'biz_id' => $this->biz_id], 'id desc', 0, 0, 'userid'); if ($res_user) { $str_ids = implode("','", array_unique(array_column($res_user, 'userid'))); $wxqys_add = $this->mdWechatqyLog->count(["userid in('{$str_ids}')" => null, 'change_type' => 'add_external_contact' , 'c_time>=' => $c_time['s_time'], 'c_time<=' => $c_time['e_time']]); } //点亮 $wxqys = $this->mdCustomers->count(['biz_id' => $this->biz_id, 'status>=' => 0, 'c_time>=' => $c_time['s_time'], 'c_time<=' => $c_time['e_time'], 'wxqy' => 1]); //成交 $orders = $this->mdOrders->count(['biz_id' => $this->biz_id, 'status>=' => 0, 'order_time>=' => $o_time['s_time'], 'order_time<=' => $o_time['e_time']]); //退定 $refunds = $this->mdOrders->count(['biz_id' => $this->biz_id, 'status' => 2, 'refund_time>=' => $o_time['s_time'], 'refund_time<=' => $o_time['e_time']]); $data['tabs'] = [['title' => '客户/进店', 'value_1' => $customers, 'value_2' => '/' . $intos, 'url' => '/pages/storeData/customerData/index'], ['title' => '企微添加/点亮', 'value_1' => $wxqys_add, 'value_2' => '/' . $wxqys, 'url' => '/pages/storeData/wechatData/index'], ['title' => '成交/退定', 'value_1' => $orders, 'value_2' => '/' . $refunds, 'url' => '/pages/storeData/orderData/index'], ]; $orders_per = number_format_com($orders / $customers * 100, 1, ''); $intos_per = number_format_com($intos / $customers * 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' => $intos], ['name' => '客户量', 'value' => $customers]]]; $data['title'] = '数据看板'; return $data; } /** * Notes:客户/订单走势图 * Created on: 2022/8/12 10:56 * Created by: dengbw * @return mixed */ protected function get_stats_days() { $days = intval($this->input_param('days')); !$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)); $customers[] = $this->mdCustomers->count(['biz_id' => $this->biz_id, 'status>=' => 0, 'c_time>=' => $c_time['s_time'], 'c_time<=' => $c_time['e_time']]);; $orders[] = $this->mdOrders->count(['biz_id' => $this->biz_id, 'status>=' => 0, 'order_time>=' => $o_time['s_time'], 'order_time<=' => $o_time['e_time']]); } $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; } /** * Notes:客户数据 * Created on: 2022/8/11 16:09 * Created by: dengbw * @return mixed */ protected function get_stats_customer() { $s_time = $this->input_param('s_time'); $e_time = $this->input_param('e_time'); !$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)))]; $pie1_level = $pie2_level = $pie1_offline = $pie2_offline = $users = $users_customer = []; $sdata_level = $this->mdCustomers->get_sdata('level'); $where = ['biz_id' => $this->biz_id, 'status>=' => 0, 'c_time>=' => $c_time['s_time'], 'c_time<=' => $c_time['e_time']]; foreach ($sdata_level as $v) { $value_1 = $this->mdCustomers->count(array_merge($where, ['level' => $v])); $value_1 && $pie1_level[] = ['name' => $v, 'value' => $value_1]; $value_2 = $this->mdCustomers->db->select('a.id') ->from('lc_receiver_customer_oplogs as a') ->join('lc_receiver_customers as b', "b.id=a.customer_id", 'left') ->where(['a.type' => 4, 'a.log' => '客户到店', 'a.c_time>=' => $c_time['s_time'], 'a.c_time<=' => $c_time['e_time'], 'b.status>=' => 0, 'b.biz_id' => $this->biz_id, 'b.level' => $v]) ->count_all_results(); $value_2 && $pie2_level[] = ['name' => $v, 'value' => $value_2]; } $offlineSources = $this->mdCustomers->offlineSources(); foreach ($offlineSources as $k => $v) { $id = count($v["list"])>0 ? $k : 0; $value_1 = $this->mdCustomers->count(array_merge($where, ['of_id' => $k])); $value_1 && $pie1_offline[] = ['id' => $id,'name' => $v['name'], 'value' => $value_1]; $value_2 = $this->mdCustomers->db->select('a.id') ->from('lc_receiver_customer_oplogs as a') ->join('lc_receiver_customers as b', "b.id=a.customer_id", 'left') ->where(['a.type' => 4, 'a.log' => '客户到店', 'a.c_time>=' => $c_time['s_time'], 'a.c_time<=' => $c_time['e_time'], 'b.status>=' => 0, 'b.biz_id' => $this->biz_id, 'b.of_id' => $k]) ->count_all_results(); $value_2 && $pie2_offline[] = ['id' => $id,'name' => $v['name'], 'value' => $value_2]; } $res_user = $this->app_user_model->select(['status' => 1, 'biz_id' => $this->biz_id], 'id desc', 0, 0, 'id,uname'); foreach ($res_user as $k => $v) { $users[] = $v['uname']; $users_customer[] = $this->mdCustomers->count(array_merge($where, ['admin_id' => $v['id']])); } $data['pie1'] = ['title' => '客户来源(录入)', 'series_data_1' => $pie1_level, 'series_data_2' => $pie1_offline]; $data['pie2'] = ['title' => '客户来源(进店)', 'series_data_1' => $pie2_level, 'series_data_2' => $pie2_offline]; $data['bar'] = ['title' => '顾问录入客户', 'xAxis_data' => $users, 'series_data' => $users_customer]; $data['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'); !$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 = []; $where = ['biz_id' => $this->biz_id, 'status>=' => 0, 'c_time>=' => $c_time['s_time'], 'c_time<=' => $c_time['e_time']]; $o_time = ['s_time' => $s_time . ' 00:00:00', 'e_time' => $e_time . ' 23:59:59']; $offlineSources = $this->mdCustomers->offlineSources($id); foreach ($offlineSources["list"] as $k => $v) { if($type==1){ $value_1 = $this->mdCustomers->count(array_merge($where, ['of_id'=>$id,'of2_id' => $k])); $value_1 && $pie_offline[] = ['name' => $v, 'value' => $value_1]; }else if($type==2){ $value_1 = $this->mdOrders->db->select('a.id') ->from('lc_receiver_orders_v2 as a') ->join('lc_receiver_customers as b', "b.id=a.customer_id", 'left') ->where(['a.biz_id' => $this->biz_id, 'a.status>=' => 0, 'a.order_time>=' => $o_time['s_time'], 'a.order_time<=' => $o_time['e_time'] , 'b.of_id' => $id, 'b.of2_id' => $k]) ->count_all_results(); $value_1 && $pie_offline[] = ['name' => $v, 'value' => $value_1]; }else{ $value_1 = $this->mdCustomers->db->select('a.id') ->from('lc_receiver_customer_oplogs as a') ->join('lc_receiver_customers as b', "b.id=a.customer_id", 'left') ->where(['a.type' => 4, 'a.log' => '客户到店', 'a.c_time>=' => $c_time['s_time'], 'a.c_time<=' => $c_time['e_time'], 'b.status>=' => 0, 'b.biz_id' => $this->biz_id, 'b.of_id' => $id, 'of2_id' => $k]) ->count_all_results(); $value_1 && $pie_offline[] = ['id' => $id,'name' => $v, 'value' => $value_1]; } } if($type==1){ $title = "客户来源(录入)"; }else if($type==2){ $title = "订单来源"; }else{ $title = "客户来源(进店)"; } return ['title' => $title, 'series_data' => $pie_offline]; } /** * Notes:企微数据 * Created on: 2022/8/11 15:40 * Created by: dengbw * @return mixed */ protected function get_stats_wxqy() { $this->load->model('app/app_lichene_qy_log_model', 'mdWechatqyLog'); $s_time = $this->input_param('s_time'); $e_time = $this->input_param('e_time'); !$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)))]; $bar1_xAxis_data = $bar1_series_data = $bar2_xAxis_data = $bar2_series_data = []; $res_user = $this->app_user_model->select(['status' => 1, 'biz_id' => $this->biz_id], 'id desc', 0, 0, 'id,uname,userid'); foreach ($res_user as $k => $v) { $bar1_xAxis_data[] = $v['uname']; $wxqys_add = 0; if ($v['userid']) { $wxqys_add = $this->mdWechatqyLog->count(["userid" => $v['userid'], 'change_type' => 'add_external_contact' , 'c_time>=' => $c_time['s_time'], 'c_time<=' => $c_time['e_time']]); } $bar1_series_data[] = $wxqys_add; $bar2_xAxis_data[] = $v['uname']; $bar2_series_data[] = $this->mdCustomers->count(['admin_id' => $v['id'], 'biz_id' => $this->biz_id, 'status>=' => 0 , 'c_time>=' => $c_time['s_time'], 'c_time<=' => $c_time['e_time'], 'wxqy' => 1]); } $data['bar1'] = ['title' => '企微添加好友', 'xAxis_data' => $bar1_xAxis_data, 'series_data' => $bar1_series_data]; $data['bar2'] = ['title' => '企微添加点亮', 'xAxis_data' => $bar2_xAxis_data, 'series_data' => $bar2_series_data]; $data['title'] = '企微数据'; return $data; } /** * Notes:订单数据 * Created on: 2022/8/11 15:40 * Created by: dengbw * @return mixed */ protected function get_stats_order() { $s_time = $this->input_param('s_time'); $e_time = $this->input_param('e_time'); !$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_series_data = $users = $users_customer = $users_order = []; $pie1_bottom = 0; $offlineSources = $this->mdCustomers->offlineSources(); foreach ($offlineSources as $k => $v) { $id = count($v["list"])>0 ? $k : 0; $value = $this->mdOrders->db->select('a.id') ->from('lc_receiver_orders_v2 as a') ->join('lc_receiver_customers as b', "b.id=a.customer_id", 'left') ->where(['a.biz_id' => $this->biz_id, 'a.status>=' => 0, 'a.order_time>=' => $o_time['s_time'], 'a.order_time<=' => $o_time['e_time'] , 'b.of_id' => $k]) ->count_all_results(); if ($value) { $pie1_series_data[] = ['id'=> $id, 'name' => $v['name'], 'value' => $value]; $pie1_bottom += $value; } } $pie1_bottom = $pie1_bottom ? "订单数 $pie1_bottom" : ''; $res_user = $this->app_user_model->select(['status' => 1, 'biz_id' => $this->biz_id], 'id desc', 0, 0, 'id,uname'); foreach ($res_user as $k => $v) { $users[] = $v['uname']; $users_customer[] = $this->mdCustomers->count(['admin_id' => $v['id'], 'biz_id' => $this->biz_id, 'status>=' => 0 , 'c_time>=' => $c_time['s_time'], 'c_time<=' => $c_time['e_time']]); $users_order[] = $this->mdOrders->count(['admin_id' => $v['id'], 'biz_id' => $this->biz_id, 'status>=' => 0 , 'order_time>=' => $o_time['s_time'], 'order_time<=' => $o_time['e_time']]); } $this->load->model('auto/auto_brand_model', 'mdAutoBrand'); $series_data = $series_data_1 = $series_data_2 = []; $where_o = ['biz_id' => $this->biz_id, 'status>=' => 0, 'order_time>=' => $o_time['s_time'], 'order_time<=' => $o_time['e_time']]; $where_r = ['biz_id' => $this->biz_id, 'status' => 2, 'refund_time>=' => $o_time['s_time'], 'refund_time<=' => $o_time['e_time']]; //成交 $orders = $this->mdOrders->count($where_o); $res_o = $this->mdOrders->select($where_o, 'id desc', 0, 0, 'distinct(brand_id) as brand_id'); if ($res_o) { $str_ids = implode(",", array_unique(array_column($res_o, 'brand_id'))); $map_brand = $this->mdAutoBrand->map('id', 'name', ["id in({$str_ids})" => null]); foreach ($res_o as $k => $v) { $name = $map_brand[$v['brand_id']] ? $map_brand[$v['brand_id']] : '-'; $value = 0; if ($v['brand_id']) { $value = $this->mdOrders->count(array_merge($where_o, ['brand_id' => $v['brand_id']])); } $brand_id = $v['brand_id']; $value && $series_data_1[] = ['id' => $brand_id,'name' => $name, 'value' => $value]; } } //退定 $refunds = $this->mdOrders->count($where_r); $pie2_bottom = ''; $orders_refunds = $orders + $refunds; if ($orders) { $series_data[] = ['name' => '成交', 'value' => $orders]; $orders_per = number_format_com($orders / $orders_refunds * 100, 1, ''); $pie2_bottom = "成交数 {$orders}({$orders_per}%)"; } if ($refunds) { $series_data[] = ['name' => '退定', 'value' => $refunds]; $refunds_per = number_format_com($refunds / $orders_refunds * 100, 1, ''); $pie2_bottom = $pie2_bottom ? $pie2_bottom . " 退定数 {$refunds}({$refunds_per}%)" : "退定数 {$refunds}({$refunds_per}%)"; } $data['pie1'] = ['title' => '订单来源', 'bottom' => $pie1_bottom, 'series_data' => $pie1_series_data]; $data['pie2'] = ['title' => '品牌分布', 'bottom' => $pie2_bottom, 'series_data' => $series_data, 'series_data_1' => $series_data_1, 'series_data_2' => $series_data_2]; $data['bar'] = ['title' => '顾问成交情况', 'xAxis_data' => $users , 'series' => [['name' => '客户数', 'type' => 'bar', 'data' => $users_customer], ['name' => '订单数', 'type' => 'bar', 'data' => $users_order]]]; $data['title'] = '订单数据'; return $data; } //订单数据 protected function get_stats_order_series(){ $id = $this->input_param('id'); $s_time = $this->input_param('s_time'); $e_time = $this->input_param('e_time'); !$s_time && $s_time = date('Y-m-d'); !$e_time && $e_time = date('Y-m-d'); $o_time = ['s_time' => $s_time . ' 00:00:00', 'e_time' => $e_time . ' 23:59:59']; $this->load->model('auto/auto_series_model', 'mdAutoSeries'); $series_data_1 = []; $where_o = ['biz_id' => $this->biz_id, 'status>=' => 0, 'order_time>=' => $o_time['s_time'], 'order_time<=' => $o_time['e_time'],'brand_id'=>$id]; //成交 $res_o = $this->mdOrders->select($where_o, 'id desc', 0, 0, 'distinct(s_id) as s_id'); if ($res_o) { $str_ids = implode(",", array_unique(array_column($res_o, 's_id'))); $map_series = $this->mdAutoSeries->map('id', 'name', ["id in({$str_ids})" => null]); foreach ($res_o as $k => $v) { $name = $map_series[$v['s_id']] ? $map_series[$v['s_id']] : '-'; $value = 0; if ($v['s_id']) { $value = $this->mdOrders->count(array_merge($where_o, ['s_id' => $v['s_id']])); } $value && $series_data_1[] = ['name' => $name, 'value' => $value]; } } return ['title' => '品牌分布', 'series_data' => $series_data_1]; } /** * Notes:店铺概况_tab * Created on: 2022/1/5 15:13 * Created by: dengbw * @return array */ protected function get_situation_tabs() { return [['id' => 1, 'name' => '基础信息'], ['id' => 2, 'name' => '售卖情况']]; } protected function get_situation() { $this->load->model("biz/biz_brand_model", 'mdBizBrand'); $this->load->model("biz/biz_base_model", 'mdBizBase'); $this->load->model("biz/biz_sell_model", 'mdBizSell'); $this->load->model("biz/biz_model", 'mdBiz'); $this->load->model('area_model'); $this->load->model('sys/sys_street_model', 'mdStreet'); $tabs_id = intval($this->input_param('tabs_id')); $biz_id = $this->session['new_biz_id'] ? $this->session['new_biz_id'] : intval($this->session['biz_id']); $re_biz = $this->mdBiz->get(['id' => $biz_id, 'status' => 1]); if (!$re_biz) { throw new Hd_exception('店铺不存在!', API_CODE_FAIL); } $info = []; if ($tabs_id == 2) {//售卖情况 $this->load->model('auto/auto_brand_model', 'mdAutoBrand'); $jsondata = $re_biz['jsondata'] ? json_decode($re_biz['jsondata'], true) : []; $y_month = date('Y-m', strtotime("-1 month"));//上个月 $re_sell = $this->mdBizSell->get(['biz_id' => $biz_id, 'y_month' => $y_month]); $fields = $this->mdBizSell->get_fields(); $b_biz_rows = $this->auto_brand_biz_model->select(['biz_id'=>$biz_id],'','','','brand_id'); foreach ($fields as $key => $value) { if ($key == 'y_month') { $fields[$key]['value'] = $y_month; } else if ($key == 'cooperation_car' && $b_biz_rows) { $auto_brands = implode(',', array_column($b_biz_rows,'brand_id')); $res_ab = $this->mdAutoBrand->select(["id in({$auto_brands})" => null], 'id desc', 0, 0, 'name'); $res_ab && $fields[$key]['value'] = array_column($res_ab, 'name'); } else if ($key == 'sales') { $last_month_s = date("Y-m-01", strtotime("-1 month"));//上1个月1日 $last_month_e = date("Y-m-d", strtotime("$last_month_s +1 month -1 day")); //上1个月最后一天 $where = ['biz_id' => $biz_id, 'status<>' => -1, 'brand_id<>' => 3, 'biz_id<>' => 1]; $orders = $this->mdOrders->count(array_merge($where, ['c_time >=' => strtotime($last_month_s . ' 00:00:00') , 'c_time <=' => strtotime($last_month_e . ' 23:59:59')])); $fields[$key]['value'] = $orders; } else { $re_sell[$key] && $fields[$key]['value'] = $re_sell[$key]; } $setValue = $fields[$key]; $setValue['field'] = $key; $info[] = $setValue; } } else {//基础信息 $re_base = $this->mdBizBase->get(['biz_id' => $biz_id]); $fields = $this->mdBizBase->get_fields(); unset($fields['company']); # 230220close foreach ($fields as $key => $value) { $list = ''; if ($key == 'county_id') {//县区 $result = $this->area_model->get(['county_id' => $re_biz['county_id']]); $result['county_name'] && $fields[$key]['value'] = $result['county_name']; } else if ($key == 'street_id' && $re_biz['county_id']) {//乡镇 $list[] = $value['list']; $result = $this->area(['type' => $key, 'id' => $re_biz['county_id']]); foreach ($result as $key2 => $value2) { $list[] = $value2; } $fields[$key]['list'] = $list; $re_biz['street_id'] && $fields[$key]['value'] = $re_biz['street_id']; } else if ($key == 'company' && $re_biz['brand_id']) {//公司名称 $result = $this->mdBizBrand->get(['id' => $re_biz['brand_id']]); $result['brand_name'] && $fields[$key]['value'] = $result['brand_name']; } else if ($key == 'type') {//类型 $fields[$key]['value'] = $this->mdBiz->type_ary($re_biz['type']); } else if ($key == 'level') {//级别 $fields[$key]['value'] = $this->level($biz_id); } else if ($key == 'address' && $re_biz['address']) {//位置 $fields[$key]['value'] = $re_biz['address']; } else if ($key == 'lead') {//负责人 $list[] = $value['list']; $result = $this->app_user_model->select(['biz_id' => $biz_id], 'id DESC', 0, 0, 'id,uname as name'); foreach ($result as $key2 => $value2) { $list[] = $value2; } $fields[$key]['list'] = $list; $re_base[$key] && $fields[$key]['value'] = $re_base[$key]; } else if ($key == 'imgs') {//负责人 $imgs = $re_base[$key] ? json_decode($re_base[$key], true) : []; foreach ($fields[$key]['list'] as $key2 => $value2) { $setValue = $value2; if ($imgs[$value2['id']]) { $setValue['value'] = $imgs[$value2['id']]; $setValue['src'] = build_qiniu_image_url($setValue['value']); } else { $setValue['value'] = ''; $setValue['src'] = ''; } $list[] = $setValue; } $fields[$key]['list'] = $list; } else if ($re_base && $re_base[$key]) {//有字段赋值 $fields[$key]['value'] = $re_base[$key]; } $setValue = $fields[$key]; $setValue['field'] = $key; $info[] = $setValue; } } return $info; } protected function get_street() { $this->load->model('area_model'); $this->load->model('sys/sys_street_model', 'mdStreet'); $id = intval($this->input->get('id')); $list[] = ['id' => 0, 'name' => '选择乡镇']; if (!$id) { return $list; } $result = $this->area(['type' => 'street', 'id' => $id]); foreach ($result as $key => $value) { $list[] = $value; } return $list; } public function area($params) { $result = []; if ($params['id']) { if ($params['type'] == 'county_id' || $params['type'] == 'county') { $result = $this->area_model->county($params['id'], 1); } else if ($params['type'] == 'street_id' || $params['type'] == 'street') { $result = $this->mdStreet->select(['county_id' => $params['id']], 'id ASC', 0, 0, 'street_id as id,street_name as name'); } } return $result; } protected function post_situation() { $this->load->model("biz/biz_base_model", 'mdBizBase'); $this->load->model("biz/biz_sell_model", 'mdBizSell'); $this->load->model("biz/biz_model", 'mdBiz'); $tabs_id = intval($this->input_param('tabs_id')); $info = $this->input_param('info'); if (!$tabs_id || !$info) { throw new Exception('参数错误', ERR_PARAMS_ERROR); } $biz_id = $this->session['new_biz_id'] ? $this->session['new_biz_id'] : intval($this->session['biz_id']); if ($tabs_id == 2) {//售卖情况 $date = []; foreach ($info as $key => $value) { if ($value['field'] == 'sale_cars' || $value['field'] == 'clues_channel') { } else if ($value['field'] == 'cooperation_car') { $date[$value['field']] = $value['value'] ? implode(',', $value['value']) : ''; } else { $date[$value['field']] = $value['value']; } } $y_month = date('Y-m', strtotime("-1 month"));//上个月 $re_sell = $this->mdBizSell->get(['biz_id' => $biz_id, 'y_month' => $y_month]); if (!$re_sell) {//新增 $date['biz_id'] = $biz_id; $date['y_month'] = $y_month; $date['status'] = 1; $date['c_time'] = time(); $this->mdBizSell->add($date); } else {//更新 $this->mdBizSell->update($date, ['id' => $re_sell['id']]); } } else {//基础信息 $date = $biz = []; foreach ($info as $key => $value) { if ($value['field'] == 'company' || $value['field'] == 'level' || $value['field'] == 'type' || $value['field'] == 'county_id') { } else if ($value['field'] == 'address' || $value['field'] == 'street_id') {//更新门店信息 $biz[$value['field']] = $value['value']; } else if ($value['field'] == 'imgs') { $imgs = []; foreach ($value['list'] as $key2 => $value2) { $imgs[$value2['id']] = $value2['value']; } $date[$value['field']] = json_encode($imgs, JSON_UNESCAPED_UNICODE); } else { $date[$value['field']] = $value['value']; } } $re_base = $this->mdBizBase->get(['biz_id' => $biz_id]); if (!$re_base) {//新增 $date['biz_id'] = $biz_id; $date['status'] = 1; $date['c_time'] = time(); $this->mdBizBase->add($date); } else {//更新 $this->mdBizBase->update($date, ['id' => $re_base['id']]); } $this->mdBiz->update($biz, ['id' => $biz_id]);//更新门店信息 } throw new Exception('保存成功', API_CODE_SUCCESS); } private function level($biz_id = 0) { $str = ''; if ($biz_id) { $where = ['biz_id' => $biz_id, 'status<>' => -1, 'brand_id<>' => 3, 'biz_id<>' => 1]; $last_month_s = date("Y-m-01", strtotime("-1 month"));//上1个月1日 $last_month_e = date("Y-m-d", strtotime("$last_month_s +1 month -1 day")); //上1个月最后一天 $orders = $this->mdOrders->count(array_merge($where, ['c_time >=' => strtotime($last_month_s . ' 00:00:00') , 'c_time <=' => strtotime($last_month_e . ' 23:59:59')])); if ($orders >= 12) { $str = 'A1'; } else if ($orders >= 9) { $str = 'A2'; } else if ($orders >= 6) { $str = 'A3'; } else if ($orders >= 5) { $str = 'B1'; } else if ($orders >= 4) { $str = 'B2'; } else if ($orders >= 3) { $str = 'B3'; } else { $month_s = date("Y-m-01", strtotime("-3 month")); //上3个月1日 $month_e = date("Y-m-d", strtotime("$month_s +1 month -1 day")); //上3个月最后一天 $orders = $this->mdOrders->count(array_merge($where, ['c_time >=' => strtotime($month_s . ' 00:00:00') , 'c_time <=' => strtotime($month_e . ' 23:59:59')])); if ($orders && $orders <= 8) { $str = 'C1'; } else { $month_s = date("Y-m-d", strtotime("$last_month_s -15 day"));//45天前 $month_e = $last_month_e; //上个月最后一天 $orders = $this->mdOrders->count(array_merge($where, ['c_time >=' => strtotime($month_s . ' 00:00:00') , 'c_time <=' => strtotime($month_e . ' 23:59:59')])); if ($orders == 1) { $str = 'C2'; } else if ($orders == 0) { $this->load->model('items/items_model', 'mdItems'); $count_items = $this->mdItems->count(['status<>' => 0, 'biz_id' => $biz_id, 'brand_id<>' => 3, 'biz_id<>' => 1]); !$count_items && $str = 'C3';//门店有样车未开单 } } } } return $str; } }