242 lines
14 KiB
PHP
242 lines
14 KiB
PHP
<?php
|
|
|
|
class Score_entity
|
|
{
|
|
|
|
private $ci;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->ci = &get_instance();
|
|
$this->ci->load->model('receiver/receiver_score_config_model');
|
|
$this->ci->load->model('receiver/receiver_score_log_model');
|
|
$this->ci->load->model('receiver/receiver_customers_model');
|
|
$this->ci->load->model('receiver/receiver_customer_oplogs_model');
|
|
$this->ci->load->model('receiver/order/receiver_orders_model');
|
|
$this->ci->load->model('receiver/order/receiver_order_oplogs_model');
|
|
$this->ci->load->model('receiver/receiver_customers_visit_data_model');
|
|
}
|
|
|
|
/**
|
|
* @param $day
|
|
* @param $uid
|
|
* @param $biz_id
|
|
* @return true
|
|
*/
|
|
public static function init($day, $uid, $group_id, $biz_id)
|
|
{
|
|
$typeList = Receiver_score_config_model::TYPE_LIST;
|
|
foreach ($typeList as $k => $v) {
|
|
$type = $k;
|
|
if (is_array($v['sub_list'])) {
|
|
foreach ($v['sub_list'] as $k2 => $v2) {
|
|
$sub_type = $k2;
|
|
self::addLogByType($day, $uid, $group_id, $biz_id, $type, $sub_type);
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public static function addLogByType($day, $uid, $group_id, $biz_id, $type, $sub_type)
|
|
{
|
|
switch ($type) {
|
|
case Receiver_score_config_model::TYPE_BASE: //基础分
|
|
if ($sub_type == Receiver_score_config_model::TYPE_BASE_DEFAULT) {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, '基础分', 1);
|
|
}
|
|
if ($sub_type == Receiver_score_config_model::TYPE_BASE_KG) {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, '开工', 1, 0, 0);
|
|
}
|
|
break;
|
|
case Receiver_score_config_model::TYPE_CLUE:
|
|
$receiverCustomersModel = new Receiver_customers_model();
|
|
if ($sub_type == Receiver_score_config_model::TYPE_CLUE_ADD) { //添加线索
|
|
$where = [
|
|
'status>=' => 0, 'rid' => 0, 'sales_id' => $uid, 'biz_id' => $biz_id,
|
|
'c_time>=' => strtotime($day . ' 00:00:00'), 'c_time<=' => strtotime($day . ' 23:59:59')
|
|
];
|
|
$rows = $receiverCustomersModel->select($where, '', 1, 1000, 'id');
|
|
$desc = '新增线索';
|
|
if ($rows) {
|
|
foreach ($rows as $val) {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}:" . $val['id'], 2, $val['id']);
|
|
}
|
|
} else {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}默认值", 1, 0, 0);
|
|
}
|
|
} elseif ($sub_type == Receiver_score_config_model::TYPE_CLUE_ADD_WX) { //添加微信
|
|
$receiverCustomerOplogsModel = new Receiver_customer_oplogs_model();
|
|
$where = [
|
|
'uid' => $uid, 'type' => 10,
|
|
'c_time>=' => strtotime($day . ' 00:00:00'), 'c_time<=' => strtotime($day . ' 23:59:59')
|
|
];
|
|
$rows = $receiverCustomerOplogsModel->select($where, '', 1, 1000, 'DISTINCT(customer_id)');
|
|
$desc = '添加微信';
|
|
if ($rows) {
|
|
foreach ($rows as $val) {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}:" . $val['customer_id'], 2, $val['customer_id']);
|
|
}
|
|
} else {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}默认值", 1, 0, 0);
|
|
}
|
|
} elseif ($sub_type == Receiver_score_config_model::TYPE_CLUE_ADD_GJ) { //跟进
|
|
$receiverCustomerOplogsModel = new Receiver_customer_oplogs_model();
|
|
$where = [
|
|
'uid' => $uid, 'type' => 0, 'cf_platform' => 'wxapp',
|
|
'c_time>=' => strtotime($day . ' 00:00:00'), 'c_time<=' => strtotime($day . ' 23:59:59')
|
|
];
|
|
$rows = $receiverCustomerOplogsModel->select($where, '', 1, 1000, 'DISTINCT(customer_id)');
|
|
$desc = '跟进小记';
|
|
if ($rows) {
|
|
foreach ($rows as $val) {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}:" . $val['customer_id'], 2, $val['customer_id']);
|
|
}
|
|
} else {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}默认值", 1, 0, 0);
|
|
}
|
|
} elseif ($sub_type == Receiver_score_config_model::TYPE_CLUE_ADD_TEL) { //电话
|
|
$receiverCustomerOplogsModel = new Receiver_customer_oplogs_model();
|
|
$where = [
|
|
'uid' => $uid, 'type' => 2, 'cf_platform' => 'wxapp',
|
|
'c_time>=' => strtotime($day . ' 00:00:00'), 'c_time<=' => strtotime($day . ' 23:59:59')
|
|
];
|
|
$rows = $receiverCustomerOplogsModel->select($where, '', 1, 1000, 'DISTINCT(customer_id)');
|
|
$desc = '电话邀约';
|
|
if ($rows) {
|
|
foreach ($rows as $val) {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}:" . $val['customer_id'], 2, $val['customer_id']);
|
|
}
|
|
} else {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}默认值", 1, 0, 0);
|
|
}
|
|
}
|
|
break;
|
|
case Receiver_score_config_model::TYPE_ORDER:
|
|
if ($sub_type == Receiver_score_config_model::TYPE_ORDER_ADD) { //新增订单
|
|
$receiverOrdersModel = new Receiver_orders_model();
|
|
$where = [
|
|
'status>=' => 0, 'sale_id' => $uid, 'biz_id' => $biz_id,
|
|
'c_time>=' => strtotime($day . ' 00:00:00'), 'c_time<=' => strtotime($day . ' 23:59:59')
|
|
];
|
|
$rows = $receiverOrdersModel->select($where, '', 1, 1000, 'id');
|
|
$desc = '新增订单';
|
|
if ($rows) {
|
|
foreach ($rows as $val) {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}:" . $val['id'], 2, $val['id']);
|
|
}
|
|
} else {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}默认值", 1, 0, 0);
|
|
}
|
|
} elseif ($sub_type == Receiver_score_config_model::TYPE_ORDER_UPLOAD_DATA) { //订单上传资料
|
|
$receiverOrderOplogModel = new Receiver_order_oplogs_model();
|
|
$where = [
|
|
'uid' => $uid, 'type' => 1, 'cf_platform' => 'wxapp', "log != ''" => null,
|
|
'c_time>=' => strtotime($day . ' 00:00:00'), 'c_time<=' => strtotime($day . ' 23:59:59')
|
|
];
|
|
$rows = $receiverOrderOplogModel->select($where, '', 1, 1000, 'DISTINCT order_id,log');
|
|
$desc = '上传资料';
|
|
if ($rows) {
|
|
foreach ($rows as $val) {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}:" . $val['order_id'], 2, $val['log']);
|
|
}
|
|
} else {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}默认值", 1, 0, 0);
|
|
}
|
|
}
|
|
break;
|
|
case Receiver_score_config_model::TYPE_DEDUCT:
|
|
if ($sub_type == Receiver_score_config_model::TYPE_DEDUCT_CLUE_TIMEOUT) {
|
|
$receiverCustomersModel = new Receiver_customers_model();
|
|
$sTime = strtotime($day . ' 00:00:00');
|
|
$eTime = strtotime($day . ' 23:59:59');
|
|
$where = [
|
|
'status>=' => 0, 'rid>' => 0, 'sales_id' => $uid, 'biz_id' => $biz_id,
|
|
'sales_p_time>=' => $day . ' 00:00:00', 'sales_p_time<=' => $day . ' 23:59:59',
|
|
"id not in (select customer_id from lc_receiver_customer_oplogs where c_time>={$sTime} and c_time<={$eTime})" => null
|
|
];
|
|
$rows = $receiverCustomersModel->select($where, '', 1, 1000, 'id');
|
|
$desc = '线索跟进时间超过10分钟';
|
|
if ($rows) {
|
|
foreach ($rows as $val) {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}:" . $val['id'], 2, $val['id']);
|
|
}
|
|
} else {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}默认值", 1, 0, 0);
|
|
}
|
|
} elseif ($sub_type == Receiver_score_config_model::TYPE_DEDUCT_BILL_TIMEOUT) {
|
|
$receiverOrdersModel = new Receiver_orders_model();
|
|
$where = [
|
|
'status>=' => 0, 'sale_id' => $uid, 'biz_id' => $biz_id,
|
|
'bill_time!=' => '0000-00-00 00:00:00', 'UNIX_TIMESTAMP( bill_time ) > c_time' => null,
|
|
'u_time>=' => $day . ' 00:00:00', 'u_time<=' => $day . ' 23:59:59'
|
|
];
|
|
$rows = $receiverOrdersModel->select($where, '', 1, 1000, 'id');
|
|
$desc = '开票时间早于订单录入时间';
|
|
if ($rows) {
|
|
foreach ($rows as $val) {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}:" . $val['id'], 2, $val['id']);
|
|
}
|
|
} else {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}默认值", 1, 0, 0);
|
|
}
|
|
} elseif ($sub_type == Receiver_score_config_model::TYPE_DEDUCT_ORDER_CTIME) {
|
|
$desc = '线索录入与下单时间间隔少于10分钟';
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}默认值", 1, 0, 0);
|
|
} elseif ($sub_type == Receiver_score_config_model::TYPE_DEDUCT_VISIT_TIMEOUT) {
|
|
$mdCustomerVisitData = new receiver_customers_visit_data_model();
|
|
$where = [
|
|
"a.biz_id" => $biz_id, "a.cs_biz_id<>" => -1,
|
|
"a.status in(0,1)" => null, "b.t_day" => $day,
|
|
"b.status" => 1, "a.admin_id" => $uid
|
|
];
|
|
$rows = $mdCustomerVisitData->select_visit($where, 'a.id desc', 1, 100, 'a.id');
|
|
$desc = '线索逾期未跟进';
|
|
if ($rows) {
|
|
foreach ($rows as $val) {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}:" . $val['id'], 2, $val['id']);
|
|
}
|
|
} else {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}默认值", 1, 0, 0);
|
|
}
|
|
} elseif ($sub_type == Receiver_score_config_model::TYPE_DEDUCT_P_TIME_TIMEOUT && $group_id == App_licheb_users_model::GROUP_BIZ) {
|
|
$receiverCustomersModel = new Receiver_customers_model();
|
|
$where = [
|
|
'status>=' => 0, 'rid>' => 0, 'biz_id' => $biz_id,
|
|
'p_time>=' => $day . ' 00:00:00', 'p_time<=' => $day . ' 23:59:59',
|
|
'UNIX_TIMESTAMP(p_time)-UNIX_TIMESTAMP(sales_p_time) ' > 600
|
|
];
|
|
$rows = $receiverCustomersModel->select($where, '', 1, 1000, 'id');
|
|
$desc = '分配时间超过10分钟';
|
|
if ($rows) {
|
|
foreach ($rows as $val) {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}:" . $val['id'], 2, $val['id']);
|
|
}
|
|
} else {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}默认值", 1, 0, 0);
|
|
}
|
|
} elseif ($sub_type == Receiver_score_config_model::TYPE_DEDUCT__TIMEOUT && $group_id == App_licheb_users_model::GROUP_BIZ) {
|
|
$receiverOrdersModel = new Receiver_orders_model();
|
|
$where = [
|
|
'status>=' => 0, 'biz_id' => $biz_id, 'apply_def_time!=' => '0000-00-00 00:00:00', 'if_defeat' => 1,
|
|
'apply_def_time>=' => $day . ' 00:00:00', 'apply_def_time<=' => $day . ' 23:59:59'
|
|
];
|
|
$rows = $receiverOrdersModel->select($where, '', 1, 1000, 'id');
|
|
$desc = '战败申请当日未处理';
|
|
if ($rows) {
|
|
foreach ($rows as $val) {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}:" . $val['id'], 2, $val['id']);
|
|
}
|
|
} else {
|
|
Receiver_score_log_model::add_score($uid, $biz_id, $day, $type, $sub_type, "{$desc}默认值", 1, 0, 0);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
?>
|