|
|
<?php
|
|
|
// +----------------------------------------------------------------------
|
|
|
// | Description: 客户跟进
|
|
|
// +----------------------------------------------------------------------
|
|
|
// | Author: Michael_xu | gengxiaoxu@5kcrm.com
|
|
|
// +----------------------------------------------------------------------
|
|
|
namespace app\bi\model;
|
|
|
|
|
|
use think\Db;
|
|
|
use app\admin\model\Common;
|
|
|
use think\Request;
|
|
|
|
|
|
class Record extends Common
|
|
|
{
|
|
|
/**
|
|
|
* 为了数据库的整洁,同时又不影响Model和Controller的名称
|
|
|
* 我们约定每个模块的数据表都加上相同的前缀,比如CRM模块用crm作为数据表前缀
|
|
|
*/
|
|
|
protected $name = 'admin_record';
|
|
|
|
|
|
/**
|
|
|
* [跟进统计]
|
|
|
* @author Michael_xu
|
|
|
* @param
|
|
|
* @return
|
|
|
*/
|
|
|
function getDataList($request){
|
|
|
$userModel = new \app\admin\model\User();
|
|
|
//员工IDS
|
|
|
$map_user_ids = [];
|
|
|
if ($request['user_id']) {
|
|
|
$map_user_ids = array($request['user_id']);
|
|
|
} else {
|
|
|
if ($request['structure_id']) {
|
|
|
$map_user_ids = $userModel->getSubUserByStr($request['structure_id'], 2);
|
|
|
}
|
|
|
}
|
|
|
$perUserIds = $userModel->getUserByPer('bi', 'customer', 'read'); //权限范围内userIds
|
|
|
$userIds = $map_user_ids ? array_intersect($map_user_ids, $perUserIds) : $perUserIds; //数组交集
|
|
|
$where['id'] = array('in',$userIds);
|
|
|
$where['type'] = 1;
|
|
|
$userList = db('admin_user')->where($where)->field('id,username,realname')->select();
|
|
|
foreach ($userList as $k=>$v) {
|
|
|
$whereArr = [];
|
|
|
$customer_num = 0; //跟进客户数
|
|
|
$record_num = 0; //跟进次数
|
|
|
$whereArr['create_user_id'] = $v['id'];
|
|
|
|
|
|
$start_time = $request['start_time'];
|
|
|
$end_time = $request['end_time'];
|
|
|
|
|
|
if ($start_time && $end_time) {
|
|
|
$create_time = array('between',array($start_time,$end_time));
|
|
|
}
|
|
|
$whereArr['create_time'] = $create_time;
|
|
|
$userList[$k]['customer_num'] = $customer_num = $this->getCustomerNum($whereArr);
|
|
|
$userList[$k]['record_num'] = $record_num = $this->getRecordNum($whereArr);
|
|
|
}
|
|
|
return $userList ? : [];
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 根据条件获取跟进客户数
|
|
|
* @author zhi
|
|
|
* @param
|
|
|
* @return
|
|
|
*/
|
|
|
function getCustomerNum($whereArr){
|
|
|
$dataCount = db('admin_record')->where($whereArr)->group('types_id')->count();
|
|
|
return $dataCount;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* [根据条件获取跟进次数]
|
|
|
* @author zhi
|
|
|
* @param
|
|
|
* @return
|
|
|
*/
|
|
|
function getRecordNum($whereArr){
|
|
|
$dataCount = db('admin_record')->where($whereArr)->count();
|
|
|
return $dataCount;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 跟进次数排行
|
|
|
* @author zhi
|
|
|
* @param
|
|
|
* @return
|
|
|
*/
|
|
|
function getSortByCount($whereArr)
|
|
|
{
|
|
|
$count = db('admin_record')->group('create_user_id')->field('create_user_id,count(record_id) as count')->order('count desc')->where($whereArr)->select();
|
|
|
return $count;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 跟进客户排行
|
|
|
* @author zhi
|
|
|
* @param
|
|
|
* @return
|
|
|
*/
|
|
|
function getSortByCustomer($whereArr)
|
|
|
{
|
|
|
$list = db('admin_record')->group('create_user_id')->field('create_user_id')->where($whereArr)->select();
|
|
|
foreach ($list as $key => $value) {
|
|
|
$where = array();
|
|
|
$where['create_user_id'] = array('eq',$value['create_user_id']);
|
|
|
$list[$key]['count'] = count(db('admin_record')->group('types_id')->field('count(types_id) as count')->order('count desc')->where($where)->select());
|
|
|
}
|
|
|
return sort_select($list,'count');
|
|
|
}
|
|
|
} |