You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
453 lines
11 KiB
453 lines
11 KiB
2 months ago
|
<?php
|
||
|
namespace app\card\model;
|
||
|
|
||
|
use app\BaseModel;
|
||
|
use longbingcore\wxcore\Excel;
|
||
|
use think\Model;
|
||
|
|
||
|
|
||
|
|
||
|
class User extends BaseModel
|
||
|
{
|
||
|
//定义表名
|
||
|
protected $name = 'longbing_card_user';
|
||
|
|
||
|
|
||
|
protected static function init ()
|
||
|
{
|
||
|
//TODO:初始化内容
|
||
|
}
|
||
|
|
||
|
public function searchNickNameAttr($query, $value, $data)
|
||
|
{
|
||
|
$query->where('nickName','like', '%' . $value . '%');
|
||
|
}
|
||
|
|
||
|
public function createUser($data)
|
||
|
{
|
||
|
$data['create_time'] = time();
|
||
|
$result = $this->save($data);
|
||
|
return !empty($result);
|
||
|
}
|
||
|
|
||
|
public function updateUser($filter ,$data)
|
||
|
{
|
||
|
$data['update_time'] = time();
|
||
|
$result = $this->where($filter)->update($data);
|
||
|
return !empty($result);
|
||
|
}
|
||
|
|
||
|
public function getUser($filter)
|
||
|
{
|
||
|
$result = $this->where($filter)->find();
|
||
|
if(!empty($result)) $result = $result->toArray();
|
||
|
return $result;
|
||
|
}
|
||
|
public function listUser($filter)
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @param $where
|
||
|
* @功能说明:名片导出
|
||
|
* @author chenniang
|
||
|
* @DataTime: 2020-04-14 14:41
|
||
|
*/
|
||
|
public function cardExcel($where,$mapor,$type=0,$start_time='',$end_time=''){
|
||
|
|
||
|
$data = User::alias( 'a' )
|
||
|
->join( 'longbing_card_user_info b', 'b.fans_id = a.id' ,'LEFT')
|
||
|
->join( 'longbing_card_company c', 'b.company_id = c.id', 'LEFT' )
|
||
|
->join( 'longbing_card_company d', 'c.top_id = d.id', 'LEFT' )
|
||
|
->where( $where )
|
||
|
->where(function ($query) use ($mapor){
|
||
|
$query->whereOr($mapor);
|
||
|
})
|
||
|
->field( [ 'b.id as card_id', 'b.name', 'b.avatar', 'b.job_id', 'b.company_id', 'b.phone',
|
||
|
'b.create_time', 'a.nickName', 'a.avatarUrl', 'a.is_staff', 'a.is_boss',
|
||
|
'c.name as company_name', 'd.name as top_company_name', 'b.is_default', 'a.id' ,'a.import','a.uniacid']
|
||
|
)
|
||
|
->group('a.id')
|
||
|
->order( [ 'a.is_boss' => 'desc', 'a.is_staff' => 'desc', 'a.update_time' => 'desc', 'a.id' => 'desc' ] )
|
||
|
->select()
|
||
|
->toArray();
|
||
|
|
||
|
|
||
|
if(!empty($data)){
|
||
|
|
||
|
foreach ($data as $k=>$v){
|
||
|
|
||
|
if(empty($v['top_company_name'])){
|
||
|
|
||
|
$data[$k]['top_company_name'] = $v['company_name'];
|
||
|
|
||
|
$data[$k]['company_name'] = '未设置部门';
|
||
|
}
|
||
|
$data[$k]['name'] = !empty($v['name'])?$v['name']:$v['nickName'];
|
||
|
//累计客户数量
|
||
|
$data[$k]['all_customer'] = $this->customerCount($v['id'],$v['uniacid'],0,$end_time);
|
||
|
//新增客户
|
||
|
$data[$k]['new_customer'] = $this->customerCount($v['id'],$v['uniacid'],$start_time,$end_time);
|
||
|
//累计线索
|
||
|
$data[$k]['all_collection'] = $this->collectionCount($v['id'],$v['uniacid'],0,$end_time);
|
||
|
//新增线索
|
||
|
$data[$k]['new_collection'] = $this->collectionCount($v['id'],$v['uniacid'],$start_time,$end_time);
|
||
|
//总浏览量
|
||
|
$data[$k]['all_visit'] = $this->visitCount($v['id'],$v['uniacid'],0,$end_time);
|
||
|
//新增浏览量
|
||
|
$data[$k]['new_visit'] = $this->visitCount($v['id'],$v['uniacid'],$start_time,$end_time);
|
||
|
//累计转发
|
||
|
$data[$k]['all_zf'] = $this->zfCount($v['id'],$v['uniacid'],0,$end_time);
|
||
|
//新增转发
|
||
|
$data[$k]['new_zf'] = $this->zfCount($v['id'],$v['uniacid'],$start_time,$end_time);
|
||
|
//累计被保存
|
||
|
$data[$k]['all_save'] = $this->saveCount($v['id'],$v['uniacid'],0,$end_time);
|
||
|
//新增保存
|
||
|
$data[$k]['new_save'] = $this->saveCount($v['id'],$v['uniacid'],$start_time,$end_time);
|
||
|
//累计点赞
|
||
|
$data[$k]['all_dz'] = $this->dzCount($v['id'],$v['uniacid'],0,$end_time);
|
||
|
//新增点赞
|
||
|
$data[$k]['new_dz'] = $this->dzCount($v['id'],$v['uniacid'],$start_time,$end_time);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$header=[
|
||
|
'序号',
|
||
|
'分公司',
|
||
|
'部门',
|
||
|
'员工姓名',
|
||
|
'客户数',
|
||
|
'',
|
||
|
'累计线索',
|
||
|
'',
|
||
|
'累计浏览量',
|
||
|
'',
|
||
|
'累计被转发',
|
||
|
'',
|
||
|
'累计被保存',
|
||
|
'',
|
||
|
'累计被点赞',
|
||
|
'',
|
||
|
];
|
||
|
|
||
|
if($type==1){
|
||
|
$header_one=[
|
||
|
'',
|
||
|
'',
|
||
|
'',
|
||
|
'',
|
||
|
'新增',
|
||
|
'总数',
|
||
|
'新增',
|
||
|
'总数',
|
||
|
'新增',
|
||
|
'总数',
|
||
|
'新增',
|
||
|
'总数',
|
||
|
'新增',
|
||
|
'总数',
|
||
|
'新增',
|
||
|
'总数',
|
||
|
];
|
||
|
}else{
|
||
|
|
||
|
$header_one=[
|
||
|
'',
|
||
|
'',
|
||
|
'',
|
||
|
'',
|
||
|
'累计新增',
|
||
|
'总数',
|
||
|
'累计新增',
|
||
|
'总数',
|
||
|
'累计新增',
|
||
|
'总数',
|
||
|
'累计新增',
|
||
|
'总数',
|
||
|
'累计新增',
|
||
|
'总数',
|
||
|
'累计新增',
|
||
|
'总数',
|
||
|
];
|
||
|
}
|
||
|
$new_data = [];
|
||
|
|
||
|
$new_data[] = $header_one;
|
||
|
|
||
|
$data = array_values($data);
|
||
|
|
||
|
foreach ($data as $k=>$v){
|
||
|
|
||
|
$info = array();
|
||
|
|
||
|
$info[] = $k+1;
|
||
|
|
||
|
$info[] = $v['top_company_name'];
|
||
|
|
||
|
$info[] = $v['company_name'];
|
||
|
|
||
|
$info[] = $v['name'];
|
||
|
|
||
|
$info[] = $v['new_customer'];
|
||
|
|
||
|
$info[] = $v['all_customer'];
|
||
|
|
||
|
$info[] = $v['new_collection'];
|
||
|
|
||
|
$info[] = $v['all_collection'];
|
||
|
|
||
|
$info[] = $v['new_visit'];
|
||
|
|
||
|
$info[] = $v['all_visit'];
|
||
|
|
||
|
$info[] = $v['new_zf'];
|
||
|
|
||
|
$info[] = $v['all_zf'];
|
||
|
|
||
|
$info[] = $v['new_save'];
|
||
|
|
||
|
$info[] = $v['all_save'];
|
||
|
|
||
|
$info[] = $v['new_dz'];
|
||
|
|
||
|
$info[] = $v['all_dz'];
|
||
|
|
||
|
$new_data[] = $info;
|
||
|
}
|
||
|
|
||
|
$excel = new Excel();
|
||
|
|
||
|
$name = '员工列表';
|
||
|
|
||
|
if($type==1){
|
||
|
|
||
|
$name = date('Y-m-d',$start_time).'——'.'员工列表';
|
||
|
}
|
||
|
|
||
|
if($type==0&&!empty($start_time)&&!empty($end_time)){
|
||
|
|
||
|
$name = date('Y-m-d',$start_time).'——'.date('Y-m-d',$end_time).'-'.'员工列表';
|
||
|
}
|
||
|
|
||
|
|
||
|
// dump($name);exit;
|
||
|
$fileName=$excel->excelExport($name,$header,$new_data,1);
|
||
|
|
||
|
return $data;
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @param $user_id
|
||
|
* @param $start_time
|
||
|
* @param $end_time
|
||
|
* @功能说明:客户数量
|
||
|
* @author chenniang
|
||
|
* @DataTime: 2020-04-14 16:14
|
||
|
*/
|
||
|
public function customerCount($user_id,$uniacid,$start_time='',$end_time=''){
|
||
|
//线索模型
|
||
|
$collect = new Collection();
|
||
|
|
||
|
$whez[] =[
|
||
|
|
||
|
['a.uid','<>',$user_id],
|
||
|
|
||
|
['intention','=',1],
|
||
|
|
||
|
['a.to_uid','=',$user_id],
|
||
|
|
||
|
['a.uniacid','=',$uniacid]
|
||
|
];
|
||
|
|
||
|
//如果选了时间
|
||
|
if(!empty($start_time)||!empty($end_time)){
|
||
|
|
||
|
$whez[] = ['a.create_time','between',"$start_time,$end_time"];
|
||
|
}
|
||
|
|
||
|
$new_customer = $collect->todayUid($whez);
|
||
|
|
||
|
return $new_customer;
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param $user_id
|
||
|
* @param $start_time
|
||
|
* @param $end_time
|
||
|
* @功能说明:线索数量
|
||
|
* @author chenniang
|
||
|
* @DataTime: 2020-04-14 16:14
|
||
|
*/
|
||
|
public function collectionCount($user_id,$uniacid,$start_time='',$end_time=''){
|
||
|
//线索模型
|
||
|
$collect = new Collection();
|
||
|
|
||
|
|
||
|
$whes[] = [
|
||
|
|
||
|
['a.uid','<>',$user_id],
|
||
|
|
||
|
['a.to_uid','=',$user_id],
|
||
|
|
||
|
['a.uniacid','=',$uniacid],
|
||
|
|
||
|
// ['intention','=',0],
|
||
|
];
|
||
|
|
||
|
//如果选了时间
|
||
|
if(!empty($start_time)||!empty($end_time)){
|
||
|
|
||
|
$whes[] = ['a.create_time','between',"$start_time,$end_time"];
|
||
|
}
|
||
|
|
||
|
$data = $collect->todayUid($whes);
|
||
|
|
||
|
return $data;
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param $user_id
|
||
|
* @param $start_time
|
||
|
* @param $end_time
|
||
|
* @功能说明:线索数量
|
||
|
* @author chenniang
|
||
|
* @DataTime: 2020-04-14 16:14
|
||
|
*/
|
||
|
public function visitCount($user_id,$uniacid,$start_time='',$end_time=''){
|
||
|
|
||
|
//雷达模型
|
||
|
$card_count = new CardCount();
|
||
|
|
||
|
$wheres[] = [
|
||
|
['to_uid','=',$user_id],
|
||
|
|
||
|
['sign','=','praise'],
|
||
|
|
||
|
['type','=',2],
|
||
|
|
||
|
['uniacid','=',$uniacid]
|
||
|
];
|
||
|
|
||
|
//如果选了时间
|
||
|
if(!empty($start_time)||!empty($end_time)){
|
||
|
|
||
|
$wheres[] = ['create_time','between',"$start_time,$end_time"];
|
||
|
}
|
||
|
//新增浏览量
|
||
|
$data = $card_count->getCount($wheres);
|
||
|
|
||
|
return $data;
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param $user_id
|
||
|
* @param $start_time
|
||
|
* @param $end_time
|
||
|
* @功能说明:转发数量
|
||
|
* @author chenniang
|
||
|
* @DataTime: 2020-04-14 16:14
|
||
|
*/
|
||
|
public function zfCount($user_id,$uniacid,$start_time='',$end_time=''){
|
||
|
|
||
|
//雷达模型
|
||
|
$card_count = new CardCount();
|
||
|
|
||
|
$where4[] = [
|
||
|
|
||
|
['to_uid','=',$user_id],
|
||
|
|
||
|
['type','=',4],
|
||
|
|
||
|
['sign','=','praise'],
|
||
|
|
||
|
['uniacid','=',$uniacid]
|
||
|
];
|
||
|
|
||
|
//如果选了时间
|
||
|
if(!empty($start_time)||!empty($end_time)){
|
||
|
|
||
|
$where4[] = ['create_time','between',"$start_time,$end_time"];
|
||
|
}
|
||
|
//新增浏览量
|
||
|
$data = $card_count->getCount($where4);
|
||
|
|
||
|
return $data;
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param $user_id
|
||
|
* @param $start_time
|
||
|
* @param $end_time
|
||
|
* @功能说明:保存数量
|
||
|
* @author chenniang
|
||
|
* @DataTime: 2020-04-14 16:14
|
||
|
*/
|
||
|
public function saveCount($user_id,$uniacid,$start_time='',$end_time=''){
|
||
|
//雷达模型
|
||
|
$card_count = new CardCount();
|
||
|
|
||
|
$where6[] = [
|
||
|
|
||
|
['to_uid','=',$user_id],
|
||
|
|
||
|
['type','=',1],
|
||
|
|
||
|
['sign','=','copy'],
|
||
|
|
||
|
['uniacid','=',$uniacid]
|
||
|
];
|
||
|
//如果选了时间
|
||
|
if(!empty($start_time)||!empty($end_time)){
|
||
|
|
||
|
$where6[] = ['create_time','between',"$start_time,$end_time"];
|
||
|
}
|
||
|
//保存
|
||
|
$data = $card_count->getCount($where6);
|
||
|
|
||
|
return $data;
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param $user_id
|
||
|
* @param $start_time
|
||
|
* @param $end_time
|
||
|
* @功能说明:点赞数量
|
||
|
* @author chenniang
|
||
|
* @DataTime: 2020-04-14 16:14
|
||
|
*/
|
||
|
public function dzCount($user_id,$uniacid,$start_time='',$end_time=''){
|
||
|
//雷达模型
|
||
|
$card_count = new CardCount();
|
||
|
|
||
|
$where5[] = [
|
||
|
|
||
|
['to_uid','=',$user_id],
|
||
|
|
||
|
['type','=',3],
|
||
|
|
||
|
['sign','=','praise'],
|
||
|
|
||
|
['uniacid','=',$uniacid]
|
||
|
];
|
||
|
//如果选了时间
|
||
|
if(!empty($start_time)&&!empty($end_time)){
|
||
|
|
||
|
$where5[] = ['create_time','between',"$start_time,$end_time"];
|
||
|
}
|
||
|
//点赞
|
||
|
$data = $card_count->getCount($where5);
|
||
|
|
||
|
return $data;
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|