biz_812
This commit is contained in:
@@ -10,6 +10,7 @@ require_once APPPATH . 'controllers/wxapp/Wxapp.php';
|
||||
|
||||
class Biz extends Wxapp
|
||||
{
|
||||
private $biz_id;
|
||||
|
||||
function __construct($inputs, $app_key)
|
||||
{
|
||||
@@ -19,15 +20,252 @@ class Biz extends Wxapp
|
||||
$this->check_status = array();//用户状态校验
|
||||
$this->check_mobile = array();//需要手机号
|
||||
$this->check_headimg = array();//授权微信信息
|
||||
$this->load->model("biz/biz_model", 'mdBiz');
|
||||
$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('area_model');
|
||||
$this->load->model('sys/sys_street_model', 'mdStreet');
|
||||
$this->load->model('receiver/order/receiver_orders_model', 'mdOrders');
|
||||
$this->load->model('receiver/order/receiver_orders_v2_model', 'mdOrders');
|
||||
$this->load->model('receiver/receiver_customers_model', 'mdCustomers');
|
||||
$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']);
|
||||
}
|
||||
//点亮
|
||||
$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/'],
|
||||
['title' => '企微添加/点亮', 'value_1' => $wxqys_add, 'value_2' => '/' . $wxqys, 'url' => 'pages/'],
|
||||
['title' => '成交/退定', 'value_1' => $orders, 'value_2' => '/' . $refunds, 'url' => 'pages/'],
|
||||
];
|
||||
$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' => '客户量', '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']]);
|
||||
}
|
||||
$data = ['title' => "近{$days}日走势图", 'legend_data' => ["近{$days}日客户数", "近{$days}日订单数"], 'xAxis' => $xAxis,
|
||||
'series' => [['name' => "近{$days}日客户数", 'type' => 'line', 'stack' => '总量', 'smooth' => true, 'data' => $customers]
|
||||
, ['name' => "近{$days}日订单数", 'type' => 'line', 'stack' => '总量', '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]));
|
||||
$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();
|
||||
$pie2_level[] = ['name' => $v, 'value' => $value_2];
|
||||
}
|
||||
$offlineSources = $this->mdCustomers->offlineSources();
|
||||
foreach ($offlineSources as $k => $v) {
|
||||
$value_1 = $this->mdCustomers->count(array_merge($where, ['of_id' => $k]));
|
||||
$pie1_offline[] = ['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();
|
||||
$pie2_offline[] = ['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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 = [];
|
||||
$offlineSources = $this->mdCustomers->offlineSources();
|
||||
foreach ($offlineSources as $k => $v) {
|
||||
$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();
|
||||
$pie1_series_data[] = ['name' => $v['name'], 'value' => $value];
|
||||
}
|
||||
$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_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']]));
|
||||
}
|
||||
$series_data_1[] = ['name' => $name, 'value' => $value];
|
||||
}
|
||||
}
|
||||
//退定
|
||||
$refunds = $this->mdOrders->count($where_r);
|
||||
$res_r = $this->mdOrders->select($where_r, 'id desc', 0, 0, 'distinct(brand_id) as brand_id');
|
||||
if ($res_r) {
|
||||
$str_ids = implode(",", array_unique(array_column($res_r, 'brand_id')));
|
||||
$map_brand = $this->mdAutoBrand->map('id', 'name', ["id in({$str_ids})" => null]);
|
||||
foreach ($res_r 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_r, ['brand_id' => $v['brand_id']]));
|
||||
}
|
||||
$series_data_2[] = ['name' => $name, 'value' => $value];
|
||||
}
|
||||
}
|
||||
$data['pie1'] = ['title' => '订单来源', 'series_data' => $pie1_series_data];
|
||||
$data['pie2'] = ['title' => '品牌分布'
|
||||
, 'series_data' => [['name' => '成交数', 'value' => $orders, 'selected' => true], ['name' => '退定数', 'value' => $refunds]]
|
||||
, '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;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Notes:店铺概况_tab
|
||||
* Created on: 2022/1/5 15:13
|
||||
@@ -41,6 +279,12 @@ class Biz extends Wxapp
|
||||
|
||||
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]);
|
||||
@@ -135,6 +379,8 @@ class Biz extends Wxapp
|
||||
|
||||
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) {
|
||||
@@ -162,6 +408,9 @@ class Biz extends Wxapp
|
||||
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user