|
|
|
@ -13,6 +13,7 @@ namespace app\api\controller\apiController; |
|
|
|
|
|
|
|
use app\model\market_performance\MarketPerformance; |
|
|
|
use app\model\order_table\OrderTable; |
|
|
|
use app\model\personnel\PersonnelSummary; |
|
|
|
use app\Request; |
|
|
|
use app\service\api\apiService\CommonService; |
|
|
|
use core\base\BaseApiService; |
|
|
|
@ -249,6 +250,8 @@ class Statistics extends BaseApiService |
|
|
|
*/ |
|
|
|
public function marketData(Request $request) |
|
|
|
{ |
|
|
|
$resourceSharing = new ResourceSharing(); |
|
|
|
$customerResources = new CustomerResources(); |
|
|
|
$personnel_id = $request->param('personnel_id','');//员工表id |
|
|
|
$role_key_arr = $request->param('role_key_arr','');//array 角色key |
|
|
|
$role_key_arr = explode(',',$role_key_arr); |
|
|
|
@ -258,59 +261,75 @@ class Statistics extends BaseApiService |
|
|
|
|
|
|
|
// $role_key_arr = ['sale'];//@todo 调试使用 |
|
|
|
|
|
|
|
$assigned = 0; |
|
|
|
$unassigned = 0; |
|
|
|
$lastWeekNewTotal = 0; |
|
|
|
$resource_list = $resourceSharing->where(['shared_by' => $personnel_id])->select(); |
|
|
|
foreach($resource_list as $item){ |
|
|
|
$sharedAt = strtotime($item['shared_at']); |
|
|
|
$date = date("Y-m-d",$sharedAt); |
|
|
|
if(isDateInThisWeek($date)){ |
|
|
|
$assigned++; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
$customer_list = $customerResources->where(['consultant' => $personnel_id])->select(); |
|
|
|
foreach($customer_list as $item){ |
|
|
|
if(!$resourceSharing->where(['resource_id' => $item['id']])->find()){ |
|
|
|
if(isDateInThisWeek($item['create_date'])){ |
|
|
|
$unassigned++; |
|
|
|
} |
|
|
|
} |
|
|
|
if(isDateInLastWeek($item['create_date'])){ |
|
|
|
$lastWeekNewTotal++; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
$staff_list = []; |
|
|
|
$personnel_summary = new PersonnelSummary(); |
|
|
|
$staff_list = $personnel_summary |
|
|
|
->alias('a') |
|
|
|
->join(['school_campus_person_role' => 'b'],'a.campus_person_role_id = b.id','left') |
|
|
|
->join(['school_personnel' => 'c'],'b.person_id = c.id','left') |
|
|
|
->field("c.name,a.task_num as goal,a.complete_num as wx_yj") |
|
|
|
->select(); |
|
|
|
|
|
|
|
if(in_array('market',$role_key_arr) || in_array('market_manager',$role_key_arr)){ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//市场人员统计数据(地推拉人头的) |
|
|
|
$data = [ |
|
|
|
'role_type'=>'market_type',//角色类型|market_type=市场,sale_type=销售 |
|
|
|
|
|
|
|
'num_1' => ($assigned = rand(20, 150)),//本周已分配 |
|
|
|
'num_2' => ($unassigned = rand(5, 50)),//本周未分配 |
|
|
|
'num_1' => $assigned,//本周已分配 |
|
|
|
'num_2' => $unassigned,//本周未分配 |
|
|
|
'total_1' => ($newTotal = $assigned + $unassigned),//本周拉新总数 |
|
|
|
'total_2' => ($lastWeekNewTotal = rand(10, 100)),//上周拉新总数 |
|
|
|
|
|
|
|
'num_1_rate' => min(100, round($assigned / $newTotal * 100, 2)),//已分配比例 |
|
|
|
'num_2_rate' => min(100, round($unassigned / $newTotal * 100, 2)),//未分配比例 |
|
|
|
'num_3_rate' => min(100, round($newTotal / max(1, $lastWeekNewTotal) * 100, 2)), // 本周拉新率(对比上周) |
|
|
|
'num_4_rate' => min(100, round($assigned / max(1, $lastWeekNewTotal) * 100, 2)), // 本周分配率(对比上周) |
|
|
|
'staff_list' => [ |
|
|
|
['name' => '张三', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
['name' => '李四', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
['name' => '王五', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
['name' => '赵六', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
['name' => '钱七', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
['name' => '孙八', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
['name' => '周九', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
['name' => '吴十', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
['name' => '郑十一', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
['name' => '王十二', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
], |
|
|
|
'total_2' => $lastWeekNewTotal,//上周拉新总数 |
|
|
|
|
|
|
|
'num_1_rate' => $newTotal ? min(100, round($assigned / $newTotal * 100, 2)) : 0,//已分配比例 |
|
|
|
'num_2_rate' => $newTotal ? min(100, round($unassigned / $newTotal * 100, 2)) : 0,//未分配比例 |
|
|
|
'num_3_rate' => $lastWeekNewTotal ? min(100, round($newTotal / max(1, $lastWeekNewTotal) * 100, 2)) : 0, // 本周拉新率(对比上周) |
|
|
|
'num_4_rate' => $lastWeekNewTotal ? min(100, round($assigned / max(1, $lastWeekNewTotal) * 100, 2)) : 0, // 本周分配率(对比上周) |
|
|
|
'staff_list' => $staff_list, |
|
|
|
]; |
|
|
|
}elseif(in_array('sale',$role_key_arr) || in_array('sale_manager',$role_key_arr)){ |
|
|
|
//销售人员统计数据(买课的) |
|
|
|
$data = [ |
|
|
|
'role_type'=>'sale',//角色类型|market_type=市场,sale_type=销售 |
|
|
|
|
|
|
|
'num_1' => ($assigned = rand(20, 150)),//本周已分配 |
|
|
|
'num_2' => ($unassigned = rand(5, 50)),//本周未分配 |
|
|
|
'num_1' => $assigned,//本周已分配 |
|
|
|
'num_2' => $unassigned,//本周未分配 |
|
|
|
'total_1' => ($newTotal = $assigned + $unassigned),//本周拉新总数 |
|
|
|
'total_2' => ($lastWeekNewTotal = rand(10, 100)),//上周拉新总数 |
|
|
|
|
|
|
|
'num_1_rate' => min(100, round($assigned / $newTotal * 100, 2)),//已分配比例 |
|
|
|
'num_2_rate' => min(100, round($unassigned / $newTotal * 100, 2)),//未分配比例 |
|
|
|
'num_3_rate' => min(100, round($newTotal / max(1, $lastWeekNewTotal) * 100, 2)), // 本周拉新率(对比上周) |
|
|
|
'num_4_rate' => min(100, round($assigned / max(1, $lastWeekNewTotal) * 100, 2)), // 本周分配率(对比上周) |
|
|
|
'staff_list' => [ |
|
|
|
['name' => '张三', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
['name' => '李四', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
['name' => '王五', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
['name' => '赵六', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
['name' => '钱七', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
['name' => '孙八', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
['name' => '周九', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
['name' => '吴十', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
['name' => '郑十一', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
['name' => '王十二', 'goal' => rand(50, 200), 'wx_yj' => rand(30, 180)], |
|
|
|
], |
|
|
|
'total_2' => $lastWeekNewTotal,//上周拉新总数 |
|
|
|
|
|
|
|
'num_1_rate' => $newTotal ? min(100, round($assigned / $newTotal * 100, 2)) : 0,//已分配比例 |
|
|
|
'num_2_rate' => $newTotal ? min(100, round($unassigned / $newTotal * 100, 2)) : 0,//未分配比例 |
|
|
|
'num_3_rate' => $lastWeekNewTotal ? min(100, round($newTotal / max(1, $lastWeekNewTotal) * 100, 2)) : 0, // 本周拉新率(对比上周) |
|
|
|
'num_4_rate' => $lastWeekNewTotal ? min(100, round($assigned / max(1, $lastWeekNewTotal) * 100, 2)) : 0, // 本周分配率(对比上周) |
|
|
|
'staff_list' => $staff_list, |
|
|
|
]; |
|
|
|
}else{ |
|
|
|
return fail('角色权限不正确'); |
|
|
|
|