request->token; $type = input('type', '', 'trim'); $accrued = input('accrued'); if (!in_array($type, ['All', 'MaterialCase', 'Video', 'Article', 'CompanyStrength', 'MaterialEvidence', 'Building', 'ToolAll', 'CustomerJsAll', 'weiwang', 'card'])){ return json(['code'=> self::success, 'data'=> [], 'msg'=> '获取成功']); } $start_time_get = input('start_time', time(), 'strtotime'); $end_time_get = input('end_time', time(), 'strtotime'); $start_time = date('Y-m-d 00:00:00', $start_time_get); $end_time = date('Y-m-d 23:59:59', $end_time_get); // 所选部门 $org_id = input('org_id', $token['org_id'], 'intval'); // 数据总览 // 部门信息 $data['org_name'] = Org::where('id', '=', $org_id)->value('name'); //员工数量 $sub_org = orgSubIds($org_id); $sub_employee_ids = Employee::where([['org_id', 'in', $sub_org], ['state', '=', '在职'], ['uid', '>', 0]])->column('id'); $data['employee_count'] = count($sub_employee_ids); switch ($type){ case 'All': $clue_type = ['materialCase', 'video', 'article', 'CompanyStrength', 'companyStrength', 'materialEvidence', 'building', 'buildingVr', 'toolAll', 'companyVr', 'lottery', 'styleTest', 'likeTest', 'priceCalculation', 'spellgroup', 'agents', 'weiwang', 'card']; $share_type = ['MaterialCase', 'Video', 'Article', 'CompanyStrength', 'MaterialEvidence', 'Building', 'ToolAll', 'CustomerJsAll', 'weiwang', 'card', 'MaterialCase_vr', 'Building_vr', 'EmployeeCard_vr', 'Company_vr']; break; case 'MaterialCase': $clue_type = ['materialCase']; $share_type = ['MaterialCase', 'MaterialCase_vr']; break; case 'Video': $clue_type = ['video']; $share_type = ['Video']; break; case 'Article': $clue_type = ['article']; $share_type = ['Article']; break; case 'CompanyStrength': $clue_type = ['CompanyStrength', 'companyStrength']; $share_type = ['CompanyStrength']; break; case 'MaterialEvidence': $clue_type = ['materialEvidence']; $share_type = ['MaterialEvidence']; break; case 'Building': $clue_type = ['building', 'buildingVr']; $share_type = ['Building', 'Building_vr']; break; case 'ToolAll': $clue_type = ['toolAll', 'companyVr']; $share_type = ['ToolAll', 'Company_vr']; break; case 'CustomerJsAll': $clue_type = ['lottery', 'styleTest', 'likeTest', 'priceCalculation', 'spellgroup', 'agents']; $share_type = ['CustomerJsAll']; break; case 'weiwang': $clue_type = ['weiwang']; $share_type = ['weiwang']; break; case 'card': $clue_type = ['card']; $share_type = ['card', 'EmployeeCard_vr']; break; default: $clue_type = []; $share_type = []; break; } //转发人数(筛选为全部时需统计每日发圈转发次数和人数) if(!$accrued){ $t_where[] = ['share_time', 'between', [$start_time, $end_time]]; } $t_where[] = ['type', 'in', $share_type]; $t_where[] = ['employee_id', 'in', $sub_employee_ids]; $shared_employee = ShareLog::where($t_where)->group('employee_id')->column('employee_id'); if($type == 'All'){ //查询每日发圈转发人数 $wechat_where = [ ['employee_id', 'in', $sub_employee_ids] ]; if(!$accrued){ $wechat_where[] = ['addtime', 'between', [$start_time, $end_time]]; } $whchat_data = DailyWechatArticleCopy::where($wechat_where)->group('employee_id')->column('employee_id'); $new_data = array_merge($shared_employee, $whchat_data); $shared_employee = array_unique($new_data); } $data['share_employee_count'] = count($shared_employee); // 转发次数 $share_all = ShareLog::where($t_where)->select(); $data['share_count'] = $share_all->count(); if($type == 'All'){ //查询每日发圈转发次数 $data['share_count'] += DailyWechatArticleCopy::where($wechat_where)->count(); } // 获得线索 $clue_where[] = ['employee_id', 'in', $sub_employee_ids]; if($type != 'All') { $clue_where[] = ['pipe_type', 'in', $clue_type]; } if(!$accrued){ $clue_where[] = ['addtime', 'between', [$start_time, $end_time]]; } $clue_count = CustomerClue::where($clue_where)->count(); $data['clue_count'] = $clue_count; // 浏览次数 $foot_where[] = ['employee_id', 'in', $sub_employee_ids]; if($type != 'All') { $foot_where[] = ['pipe_type', 'in', $clue_type]; } if(!$accrued){ $foot_where[] = ['addtime', 'between', [$start_time, $end_time]]; } $foot_count = Footprints::where($foot_where)->count(); $data['footprints_count'] = $foot_count; // 浏览时长 $visit_long = Footprints::where($foot_where)->sum('visit_due_time'); $data['visit_long'] = round($visit_long/60, 1); // 未转发人数 $un_share_employee = array_diff($sub_employee_ids, $shared_employee); $data['un_share_employee_count'] = count($un_share_employee); // 是否有子部门 $have_sub_org = Org::where('pid', '=', $org_id)->count(); if ($have_sub_org > 0){ $data['have_sub_org'] = true; } else { $data['have_sub_org'] = false; } /** -----乐尚企业演示,数量进行调整,正式使用系统时删除此代码 ------*/ if(request()->token['root_org'] == 1793) { $data['employee_count'] = 512; $data['share_employee_count'] = 358; $data['share_count'] = 5179; $data['clue_count'] = 2681; $data['footprints_count'] = 12850; $data['visit_long'] = 2478.6; $data['un_share_employee_count'] = 154; } /*------------------------------------------------------------------------*/ return json(['code'=> self::success, 'data'=> $data, 'msg'=> '请求成功']); } /** * 部门数据 */ public function org(){ $token = $this->request->token; $type = input('type', '', 'trim'); $accrued = input('accrued'); if (!in_array($type, ['All', 'MaterialCase', 'Video', 'Article', 'CompanyStrength', 'MaterialEvidence', 'Building', 'ToolAll', 'CustomerJsAll', 'weiwang', 'card'])){ return json(['code'=> self::success, 'data'=> [], 'msg'=> '获取成功']); } $start_time_get = input('start_time', time(), 'strtotime'); $end_time_get = input('end_time', time(), 'strtotime'); $start_time = date('Y-m-d 00:00:00', $start_time_get); $end_time = date('Y-m-d 23:59:59', $end_time_get); // 所选部门 $org_id = input('org_id', $token['org_id'], 'intval'); $sub_org = Org::where([['pid', '=', $org_id], ['status', '=', 1]])->field('id,name,pid')->select()->toArray(); switch ($type){ case 'All': $clue_type = ['materialCase', 'video', 'article', 'CompanyStrength', 'companyStrength', 'materialEvidence', 'building', 'buildingVr', 'toolAll', 'companyVr', 'lottery', 'styleTest', 'likeTest', 'priceCalculation', 'spellgroup', 'agents', 'weiwang', 'card']; $share_type = ['MaterialCase', 'Video', 'Article', 'CompanyStrength', 'MaterialEvidence', 'Building', 'ToolAll', 'CustomerJsAll', 'weiwang', 'card', 'MaterialCase_vr', 'Building_vr', 'EmployeeCard_vr', 'Company_vr']; break; case 'MaterialCase': $clue_type = ['materialCase']; $share_type = ['MaterialCase', 'MaterialCase_vr']; break; case 'Video': $clue_type = ['video']; $share_type = ['Video']; break; case 'Article': $clue_type = ['article']; $share_type = ['Article']; break; case 'CompanyStrength': $clue_type = ['CompanyStrength', 'companyStrength']; $share_type = ['CompanyStrength']; break; case 'MaterialEvidence': $clue_type = ['materialEvidence']; $share_type = ['MaterialEvidence']; break; case 'Building': $clue_type = ['building', 'buildingVr']; $share_type = ['Building', 'Building_vr']; break; case 'ToolAll': $clue_type = ['toolAll', 'companyVr']; $share_type = ['ToolAll', 'Company_vr']; break; case 'CustomerJsAll': $clue_type = ['lottery', 'styleTest', 'likeTest', 'priceCalculation', 'spellgroup', 'agents']; $share_type = ['CustomerJsAll']; break; case 'weiwang': $clue_type = ['weiwang']; $share_type = ['weiwang']; break; case 'card': $clue_type = ['card']; $share_type = ['card', 'EmployeeCard_vr']; break; default: $clue_type = []; $share_type = []; break; } foreach ($sub_org as $k => $v){ // 是否有子部门 $have_sub_org = Org::where('pid', '=', $v['id'])->count(); if ($have_sub_org > 0){ $sub_org[$k]['have_sub_org'] = true; } else { $sub_org[$k]['have_sub_org'] = false; } $v_sub_org = orgSubIds($v['id']); $org_employee_ids = Employee::where([['org_id', 'in', $v_sub_org], ['state', '=', '在职'], ['uid', '<>', 0]])->column('id'); $sub_org[$k]['employee_count'] = count($org_employee_ids); unset($share_where); if(!$accrued){ $share_where[] = ['share_time', 'between', [$start_time, $end_time]]; } $share_where[] = ['type', 'in', $share_type]; $share_where[] = ['employee_id', 'in', $org_employee_ids]; // 已转发员工(筛选为全部时需统计每日发圈转发次数和人数) $shared_employee = ShareLog::where($share_where)->group('employee_id')->column('employee_id'); if($type == 'All'){ //查询每日发圈转发人数 $wechat_where = [ ['employee_id', 'in', $org_employee_ids] ]; if(!$accrued){ $wechat_where[] = ['addtime', 'between', [$start_time, $end_time]]; } $whchat_data = DailyWechatArticleCopy::where($wechat_where)->group('employee_id')->column('employee_id'); $new_data = array_merge($shared_employee, $whchat_data); $shared_employee = array_unique($new_data); } $sub_org[$k]['share_employee_count'] = count($shared_employee); // 未转发员工 $un_share_employee = array_diff($org_employee_ids, $shared_employee); $sub_org[$k]['un_share_employee_count'] = count($un_share_employee); // 转发次数 $share_count = ShareLog::where($share_where)->count(); if($type == 'All'){ //查询每日发圈转发次数 $share_count += DailyWechatArticleCopy::where($wechat_where)->count(); } $sub_org[$k]['share_count'] = $share_count; // 线索 unset($clue_where); $clue_where[] = ['employee_id', 'in', $org_employee_ids]; if($type != 'All'){ $clue_where[] = ['pipe_type', 'in', $clue_type]; } if(!$accrued){ $clue_where[] = ['addtime', 'between', [$start_time, $end_time]]; } $clue_count = CustomerClue::where($clue_where)->count(); $sub_org[$k]['clue_count'] = $clue_count; // 浏览次数 unset($foot_where); $foot_where[] = ['employee_id', 'in', $org_employee_ids]; if($type != 'All'){ $foot_where[] = ['pipe_type', 'in', $clue_type]; } if(!$accrued){ $foot_where[] = ['addtime', 'between', [$start_time, $end_time]]; } $foot_count = Footprints::where($foot_where)->count(); $sub_org[$k]['footprints_count'] = $foot_count; $visit_long = Footprints::where($foot_where)->sum('visit_due_time'); $sub_org[$k]['visit_long'] = round($visit_long/60, 1); /** -----乐尚企业演示,数量进行调整,正式使用系统时删除此代码 ------*/ if($token['root_org'] == 1793) { $sub_org[$k]['employee_count'] = 188; $sub_org[$k]['share_employee_count'] = 120; $sub_org[$k]['un_share_employee_count'] = 68; $sub_org[$k]['share_count'] = $v['id']; $sub_org[$k]['clue_count'] = floor($v['id']/2); $sub_org[$k]['footprints_count'] = $v['id']*2; $sub_org[$k]['visit_long'] = floor($v['id']/3); } /*------------------------------------------------------------------------*/ } $order = input('order', '', 'trim'); if ($order) { $order_arr = explode(' ', $order); $sort_field = $order_arr[0] ?? 'share'; $sort_order = $order_arr[1] ?? 'desc'; switch ($sort_field){ case 'share': $field = 'share_count'; break; case 'clue': $field = 'clue_count'; break; case 'visit': $field = 'footprints_count'; break; case 'long': $field = 'visit_long'; break; default: $field = 'notFound'; break; } if ($sort_order == 'asc'){ $sort = SORT_ASC; } else { $sort = SORT_DESC; } $arr = []; foreach ($sub_org as $v){ if (!isset($v[$field])){ break; } $arr[] = $v[$field]; } if (!empty($arr)){ array_multisort($arr, $sort, $sub_org); } } return json(['code'=> self::success, 'data'=> $sub_org, 'msg'=> '请求成功']); } /** * 员工数据 */ public function employee(){ $token = $this->request->token; $type = input('type', '', 'trim'); $accrued = input('accrued'); if (!in_array($type, ['All', 'MaterialCase', 'Video', 'Article', 'CompanyStrength', 'MaterialEvidence', 'Building', 'ToolAll', 'CustomerJsAll', 'weiwang', 'card'])){ return json(['code'=> self::success, 'data'=> [], 'msg'=> '获取成功']); } $start_time_get = input('start_time', time(), 'strtotime'); $end_time_get = input('end_time', time(), 'strtotime'); $start_time = date('Y-m-d 00:00:00', $start_time_get); $end_time = date('Y-m-d 23:59:59', $end_time_get); // 所选部门 $org_id = input('org_id', $token['org_id'], 'intval'); // 所选部门员工统计数据 $e_where[] = ['org_id', '=', $org_id]; $e_where[] = ['state', '=', '在职']; $e_where[] = ['uid', '<>', 0]; $employee_list = Employee::with(['user'=> function($query){ $query->field('id,headimgurl'); }])->where($e_where)->field('id,name,org_id,root_id,uid')->select()->toArray(); switch ($type){ case 'All': $clue_type = ['materialCase', 'video', 'article', 'CompanyStrength', 'companyStrength', 'materialEvidence', 'building', 'buildingVr', 'toolAll', 'companyVr', 'lottery', 'styleTest', 'likeTest', 'priceCalculation', 'spellgroup', 'agents', 'weiwang', 'card']; $share_type = ['MaterialCase', 'Video', 'Article', 'CompanyStrength', 'MaterialEvidence', 'Building', 'ToolAll', 'CustomerJsAll', 'weiwang', 'card', 'MaterialCase_vr', 'Building_vr', 'EmployeeCard_vr', 'Company_vr']; break; case 'MaterialCase': $clue_type = ['materialCase']; $share_type = ['MaterialCase', 'MaterialCase_vr']; break; case 'Video': $clue_type = ['video']; $share_type = ['Video']; break; case 'Article': $clue_type = ['article']; $share_type = ['Article']; break; case 'CompanyStrength': $clue_type = ['CompanyStrength', 'companyStrength']; $share_type = ['CompanyStrength']; break; case 'MaterialEvidence': $clue_type = ['materialEvidence']; $share_type = ['MaterialEvidence']; break; case 'Building': $clue_type = ['building']; $share_type = ['Building', 'Building_vr']; break; case 'ToolAll': $clue_type = ['toolAll', 'companyVr']; $share_type = ['ToolAll', 'Company_vr']; break; case 'CustomerJsAll': $clue_type = ['lottery', 'styleTest', 'likeTest', 'priceCalculation', 'spellgroup', 'agents']; $share_type = ['CustomerJsAll']; break; case 'weiwang': $clue_type = ['weiwang']; $share_type = ['weiwang']; break; case 'card': $clue_type = ['card']; $share_type = ['card', 'EmployeeCard_vr']; break; default: $clue_type = []; $share_type = []; break; } foreach ($employee_list as $k => $v){ unset($share_where); if(!$accrued){ $share_where[] = ['share_time', 'between', [$start_time, $end_time]]; } $share_where[] = ['type', 'in', $share_type]; $share_where[] = ['employee_id', '=', $v['id']]; // 转发次数(筛选为全部时需统计每日发圈转发次数和人数) $share_count = ShareLog::where($share_where)->count(); if($type == 'All'){ //查询每日发圈转发次数 $wechat_where = [ ['employee_id', '=', $v['id']] ]; if(!$accrued){ $wechat_where[] = ['addtime', 'between', [$start_time, $end_time]]; } $share_count += DailyWechatArticleCopy::where($wechat_where)->count(); } $employee_list[$k]['share_count'] = $share_count; // 线索 unset($clue_where); $clue_where[] = ['employee_id', '=', $v['id']]; if ($type != 'All'){ $clue_where[] = ['pipe_type', 'in', $clue_type]; } if(!$accrued){ $clue_where[] = ['addtime', 'between', [$start_time, $end_time]]; } $clue_count = CustomerClue::where($clue_where)->count(); $employee_list[$k]['clue_count'] = $clue_count; // 浏览次数 unset($foot_where); $foot_where[] = ['employee_id', '=', $v['id']]; if ($type != 'All') { $foot_where[] = ['pipe_type', 'in', $clue_type]; } if(!$accrued){ $foot_where[] = ['addtime', 'between', [$start_time, $end_time]]; } $foot_count = Footprints::where($foot_where)->count(); $employee_list[$k]['footprints_count'] = $foot_count; $visit_long = Footprints::where($foot_where)->sum('visit_due_time'); $employee_list[$k]['visit_long'] = round($visit_long/60, 1); /** -----乐尚企业演示,数量进行调整,正式使用系统时删除此代码 ------*/ if(request()->token['root_org'] == 1793) { $employee_list[$k]['share_count'] = floor($v['id']/12); $employee_list[$k]['clue_count'] = floor($v['id']/20); $employee_list[$k]['footprints_count'] = floor($v['id']/10); $employee_list[$k]['visit_long'] = floor($v['id']/50); } /*------------------------------------------------------------------------*/ } $order = input('order', '', 'trim'); if ($order) { $order_arr = explode(' ', $order); $sort_field = $order_arr[0] ?? 'share'; $sort_order = $order_arr[1] ?? 'desc'; switch ($sort_field){ case 'share': $field = 'share_count'; break; case 'clue': $field = 'clue_count'; break; case 'visit': $field = 'footprints_count'; break; case 'long': $field = 'visit_long'; break; default: $field = 'notFound'; break; } if ($sort_order == 'asc'){ $sort = SORT_ASC; } else { $sort = SORT_DESC; } $arr = []; foreach ($employee_list as $v){ if (!isset($v[$field])){ break; } $arr[] = $v[$field]; } if (!empty($arr)){ array_multisort($arr, $sort, $employee_list); } } $page = input('page', 1, 'intval'); $limit = input('limit', 10, 'intval'); $list = array_slice($employee_list, ($page-1)*$limit, $page*$limit-1); return json(['code'=> self::success, 'data'=> $list, 'msg'=> '请求成功']); } /** * 未分享人 */ public function un_share(){ $token = $this->request->token; $type = input('type', '', 'trim'); $accrued = input('accrued'); if (!in_array($type, ['All', 'MaterialCase', 'Video', 'Article', 'CompanyStrength', 'MaterialEvidence', 'Building', 'ToolAll', 'CustomerJsAll', 'weiwang', 'card'])){ return json(['code'=> self::success, 'data'=> [], 'msg'=> '获取成功']); } $start_time_get = input('start_time', time(), 'strtotime'); $end_time_get = input('end_time', time(), 'strtotime'); $start_time = date('Y-m-d 00:00:00', $start_time_get); $end_time = date('Y-m-d 23:59:59', $end_time_get); // 所选部门 $org_id = input('org_id', $token['org_id'], 'intval'); // 数据总览 //员工数量 $sub_org = orgSubIds($org_id); $sub_employee_ids = Employee::where([['org_id', 'in', $sub_org], ['state', '=', '在职'], ['uid', '<>', 0]])->column('id'); switch ($type){ case 'All': $share_type = ['MaterialCase', 'Video', 'Article', 'CompanyStrength', 'MaterialEvidence', 'Building', 'toolAll', 'companyVr', 'lottery', 'styleTest', 'likeTest', 'priceCalculation', 'spellgroup', 'agents', 'weiwang', 'card', 'MaterialCase_vr', 'Building_vr', 'EmployeeCard_vr', 'Company_vr']; break; case 'MaterialCase': $share_type = ['MaterialCase', 'MaterialCase_vr']; break; case 'Video': $share_type = ['Video']; break; case 'Article': $share_type = ['Article']; break; case 'CompanyStrength': $share_type = ['CompanyStrength']; break; case 'MaterialEvidence': $share_type = ['MaterialEvidence']; break; case 'Building': $share_type = ['Building', 'Building_vr']; break; case 'ToolAll': $share_type = ['ToolAll', 'Company_vr']; break; case 'CustomerJsAll': $share_type = ['CustomerJsAll']; break; case 'weiwang': $share_type = ['weiwang']; break; case 'card': $share_type = ['card', 'EmployeeCard_vr']; break; default: $share_type = []; break; } //转发人数 if(!$accrued){ $t_where[] = ['share_time', 'between', [$start_time, $end_time]]; } $t_where[] = ['type', 'in', $share_type]; $t_where[] = ['employee_id', 'in', $sub_employee_ids]; $shared_employee = ShareLog::where($t_where)->group('employee_id')->column('employee_id'); // 未转发人数 $un_share_employee = array_diff($sub_employee_ids, $shared_employee); $page = input('page', 1, 'intval'); $limit = input('limit', 10, 'intval'); $list = Employee::with(['org'=> function($query){ $query->field('id,name'); }, 'user'=> function($query){ $query->field('id,headimgurl'); }])->where('id', 'in', $un_share_employee)->field('id,name,org_id,uid')->order('org_id asc')->page($page, $limit)->select()->toArray(); return json(['code'=> self::success, 'msg'=> '获取成功', 'data'=> $list]); } /** * 每日发圈数据 */ public function daily_index(){ $token = $this->request->token; $accrued = input('accrued'); $start_time_get = input('start_time', time(), 'strtotime'); $end_time_get = input('end_time', time(), 'strtotime'); $start_time = date('Y-m-d 00:00:00', $start_time_get); $end_time = date('Y-m-d 23:59:59', $end_time_get); if(!$accrued){ $where[] = ['addtime', 'between', [$start_time, $end_time]]; } // 所选部门 $org_id = input('org_id', $token['org_id'], 'intval'); // 部门信息 $data['org_name'] = Org::where('id', '=', $org_id)->value('name'); //员工数量 $sub_org = orgSubIds($org_id); $sub_employee_ids = Employee::where([['org_id', 'in', $sub_org], ['state', '=', '在职'], ['uid', '<>', 0]])->column('id'); $data['employee_count'] = count($sub_employee_ids); //转发人数 $where[] = ['employee_id', 'in', $sub_employee_ids]; $shared_employee = DailyWechatArticleCopy::where($where)->group('employee_id')->column('employee_id'); $data['share_employee_count'] = count($shared_employee); // 转发次数 $share_count = DailyWechatArticleCopy::where($where)->count(); $data['share_count'] = $share_count; // 未转发人数 $un_share_employee = array_diff($sub_employee_ids, $shared_employee); $data['un_share_employee_count'] = count($un_share_employee); // 是否有子部门 $have_sub_org = Org::where('pid', '=', $org_id)->count(); if ($have_sub_org > 0){ $data['have_sub_org'] = true; } else { $data['have_sub_org'] = false; } return json(['code'=> self::success, 'data'=> $data, 'msg'=> '请求成功']); } /** * 每日发圈部门数据 */ public function daily_org(){ $token = $this->request->token; $accrued = input('accrued'); $start_time_get = input('start_time', time(), 'strtotime'); $end_time_get = input('end_time', time(), 'strtotime'); $start_time = date('Y-m-d 00:00:00', $start_time_get); $end_time = date('Y-m-d 23:59:59', $end_time_get); // 所选部门 $org_id = input('org_id', $token['org_id'], 'intval'); $sub_org = Org::where([['pid', '=', $org_id], ['status', '=', 1]])->field('id,name,pid')->select()->toArray(); foreach ($sub_org as $k => $v){ // 是否有子部门 $have_sub_org = Org::where('pid', '=', $v['id'])->count(); if ($have_sub_org > 0){ $sub_org[$k]['have_sub_org'] = true; } else { $sub_org[$k]['have_sub_org'] = false; } $v_sub_org = orgSubIds($v['id']); $org_employee_ids = Employee::where([['org_id', 'in', $v_sub_org], ['state', '=', '在职'], ['uid', '<>', 0]])->column('id'); $sub_org[$k]['employee_count'] = count($org_employee_ids); unset($share_where); if(!$accrued){ $share_where[] = ['addtime', 'between', [$start_time, $end_time]]; } $share_where[] = ['employee_id', 'in', $org_employee_ids]; // 已转发员工 $shared_employee = DailyWechatArticleCopy::where($share_where)->group('employee_id')->column('employee_id'); $sub_org[$k]['share_employee_count'] = count($shared_employee); // 未转发员工 $un_share_employee = array_diff($org_employee_ids, $shared_employee); $sub_org[$k]['un_share_employee_count'] = count($un_share_employee); // 转发次数 $share_count = DailyWechatArticleCopy::where($share_where)->count(); $sub_org[$k]['share_count'] = $share_count; } $order = input('order', 'desc', 'trim'); if ($order == 'asc'){ $sort = SORT_ASC; } else { $sort = SORT_DESC; } $arr = []; foreach ($sub_org as $v){ $arr[] = $v['share_count']; } array_multisort($arr, $sort, $sub_org); return json(['code'=> self::success, 'data'=> $sub_org, 'msg'=> '请求成功']); } /** * 每日发圈员工数据 */ public function daily_employee(){ $token = $this->request->token; $accrued = input('accrued'); $start_time_get = input('start_time', time(), 'strtotime'); $end_time_get = input('end_time', time(), 'strtotime'); $start_time = date('Y-m-d 00:00:00', $start_time_get); $end_time = date('Y-m-d 23:59:59', $end_time_get); // 所选部门 $org_id = input('org_id', $token['org_id'], 'intval'); // 所选部门员工统计数据 $e_where[] = ['org_id', '=', $org_id]; $e_where[] = ['state', '=', '在职']; $e_where[] = ['uid', '<>', '0']; $employee_list = Employee::with(['user'=> function($query){ $query->field('id,headimgurl'); }])->where($e_where)->field('id,name,org_id,root_id,uid')->select()->toArray(); foreach ($employee_list as $k => $v){ unset($share_where); if(!$accrued){ $share_where[] = ['addtime', 'between', [$start_time, $end_time]]; } $share_where[] = ['employee_id', '=', $v['id']]; // 转发次数 $share_count = DailyWechatArticleCopy::where($share_where)->count(); $employee_list[$k]['share_count'] = $share_count; } $order = input('order', 'desc', 'trim'); if ($order == 'asc'){ $sort = SORT_ASC; } else { $sort = SORT_DESC; } $arr = []; foreach ($employee_list as $v){ $arr[] = $v['share_count']; } array_multisort($arr, $sort, $employee_list); $page = input('page', 1, 'intval'); $limit = input('limit', 10, 'intval'); $list = array_slice($employee_list, ($page-1)*$limit, $page*$limit-1); return json(['code'=> self::success, 'data'=> $list, 'msg'=> '请求成功']); } /** * 每日发圈未分享 */ public function daily_un_share() { $token = $this->request->token; $accrued = input('accrued'); $start_time_get = input('start_time', time(), 'strtotime'); $end_time_get = input('end_time', time(), 'strtotime'); $start_time = date('Y-m-d 00:00:00', $start_time_get); $end_time = date('Y-m-d 23:59:59', $end_time_get); if(!$accrued){ $where[] = ['addtime', 'between', [$start_time, $end_time]]; } // 所选部门 $org_id = input('org_id', $token['org_id'], 'intval'); //员工数量 $sub_org = orgSubIds($org_id); $sub_employee_ids = Employee::where([['org_id', 'in', $sub_org], ['state', '=', '在职'], ['uid', '<>', 0]])->column('id'); //转发人数 $where[] = ['employee_id', 'in', $sub_employee_ids]; $shared_employee = DailyWechatArticleCopy::where($where)->group('employee_id')->column('employee_id'); $page = input('page', 1, 'intval'); $limit = input('limit', 10, 'intval'); // 未转发人数 $un_share_employee = array_diff($sub_employee_ids, $shared_employee); $list = Employee::with(['org'=> function($query){ $query->field('id,name'); }, 'user'=> function($query){ $query->field('id,headimgurl'); }])->where('id', 'in', $un_share_employee)->order('org_id asc')->page($page, $limit)->field('id,name,org_id,uid')->select()->toArray(); return json(['code'=> self::success, 'msg'=> '获取成功', 'data'=> $list]); } }