|
|
|
@ -362,6 +362,117 @@ class Statistics extends BaseApiService |
|
|
|
return success($data); |
|
|
|
} |
|
|
|
|
|
|
|
public function getStaffStatistics(Request $request){ |
|
|
|
$date = $request->param('date',''); |
|
|
|
$date = strtotime($date); |
|
|
|
$year = date('Y', $date); |
|
|
|
|
|
|
|
$campus_person_role = new CampusPersonRole(); |
|
|
|
$customerResources = new CustomerResources(); |
|
|
|
|
|
|
|
$dict = new \app\model\dict\Dict(); |
|
|
|
$dict_info = $dict->where([['key', '=', 'SourceChannel']])->findOrEmpty()->toArray(); |
|
|
|
$channelList = $dict_info['dictionary']; |
|
|
|
|
|
|
|
|
|
|
|
$staff_list = $campus_person_role |
|
|
|
->alias("a") |
|
|
|
->join(['school_personnel' => 'c'],'a.person_id = c.id','left') |
|
|
|
->where([ |
|
|
|
['a.dept_id','in',1] |
|
|
|
]) |
|
|
|
->field("c.id,c.name") |
|
|
|
->select(); |
|
|
|
$staff_list = $staff_list->toArray(); // 转换成数组 |
|
|
|
$customer_list = $customerResources->select()->toArray(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$staff_map = []; |
|
|
|
foreach($staff_list as &$staff){ |
|
|
|
$staff['weekCount'] = 0; |
|
|
|
$staff['monthCount'] = 0; |
|
|
|
$staff['yearCount'] = 0; |
|
|
|
$staff['total'] = 0; |
|
|
|
foreach($channelList as $channel){ |
|
|
|
$staff['channel'][$channel['value']] = 0; |
|
|
|
} |
|
|
|
$staff_map[$staff['id']] = &$staff; |
|
|
|
} |
|
|
|
|
|
|
|
foreach ($customer_list as $val){ |
|
|
|
$dateTimestamp = strtotime($val['create_date']); |
|
|
|
$dateYear = date('Y', $dateTimestamp); |
|
|
|
|
|
|
|
if(isset($staff_map[$val['consultant']])){ |
|
|
|
|
|
|
|
if(isDateInThisWeek($val['create_date'])){ |
|
|
|
$staff_map[$val['consultant']]['weekCount']++; |
|
|
|
} |
|
|
|
if($val['create_year_month'] == date("Y-m",$date)){ |
|
|
|
$staff_map[$val['consultant']]['monthCount']++; |
|
|
|
} |
|
|
|
|
|
|
|
if($dateYear == $year){ |
|
|
|
$staff_map[$val['consultant']]['yearCount']++; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$campusModel = new \app\model\campus\Campus(); |
|
|
|
|
|
|
|
$campus = $campusModel->select(); |
|
|
|
$campus = $campus->toArray(); |
|
|
|
|
|
|
|
$channel_list = []; |
|
|
|
foreach($channelList as &$channel){ |
|
|
|
foreach ($campus as $key=>$val){ |
|
|
|
$channel[$val['id']] = 0; |
|
|
|
$channel['total'] = 0; |
|
|
|
// $channel['staffs'] = $staff_map; |
|
|
|
} |
|
|
|
|
|
|
|
$channel_list[$channel['value']] = &$channel; |
|
|
|
} |
|
|
|
|
|
|
|
$customer_list = $customerResources->where([ |
|
|
|
['create_year_month','=',date("Y-m",$date)], |
|
|
|
])->select()->toArray(); |
|
|
|
|
|
|
|
foreach ($customer_list as $val){ |
|
|
|
// dump($staff_map[$val['consultant']]['channel'][1]);die; |
|
|
|
|
|
|
|
if(isset($channel_list[$val['source_channel']])){ |
|
|
|
$channel_list[$val['source_channel']]['total']++; |
|
|
|
if(isset($channel_list[$val['source_channel']][$val['campus']])){ |
|
|
|
$channel_list[$val['source_channel']][$val['campus']]++; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if(isset($staff_map[$val['consultant']])){ |
|
|
|
|
|
|
|
if(isset($staff_map[$val['consultant']]['channel'][$val['source_channel']])){ |
|
|
|
|
|
|
|
$staff_map[$val['consultant']]['channel'][$val['source_channel']]++; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return success([ |
|
|
|
'staffData' => $staff_map, |
|
|
|
'schoolList' => $campus, |
|
|
|
'channelList' => $channel_list, |
|
|
|
]); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|