diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index aa63728..907e6b0 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -337,9 +337,9 @@ class OtherController extends CommonController $list['company_ganbu_total'] = CourseSign::ganbu($start_date, $end_date, $course_ids); // 苏州头部企业 $list['cover_head_total'] = CourseSign::toubuqiye($start_date, $end_date, $course_ids); - // 高层次人才 + // 苏州高层次人才 $list['cover_rencai_total'] = CourseSign::rencai($start_date, $end_date, $course_ids); - // 重点上市公司 + // 苏州重点上市公司 $list['cover_stock_total'] = CourseSign::shangshi($start_date, $end_date, $course_ids); diff --git a/app/Models/CourseSign.php b/app/Models/CourseSign.php index fbbcfab..4bd5c41 100755 --- a/app/Models/CourseSign.php +++ b/app/Models/CourseSign.php @@ -684,6 +684,27 @@ class CourseSign extends SoftDeletesModel } } + /** + * 判断是否为苏州地区 + * @param \App\Models\User|null $user 用户对象 + * @param \App\Models\Company|null $company 公司对象 + * @return bool + */ + public static function isSuzhou($user = null, $company = null) + { + // 判断是否为苏州地区:user表的company_address包含"苏州",或关联公司的company_address包含"苏州",或company_city包含"苏州" + if ($user && $user->company_address && strpos($user->company_address, '苏州') !== false) { + return true; + } + if ($company && $company->company_address && strpos($company->company_address, '苏州') !== false) { + return true; + } + if ($company && $company->company_city && strpos($company->company_city, '苏州') !== false) { + return true; + } + return false; + } + /** * 头部企业(统计或列表) * @param string $start_date 开始日期 @@ -725,17 +746,8 @@ class CourseSign extends SoftDeletesModel $user = $courseSign->user; $company = $user->company; - // 判断是否为苏州地区:user表的company_address包含"苏州",或关联公司的company_address包含"苏州",或company_city包含"苏州" - $isSuzhou = false; - if ($user->company_address && strpos($user->company_address, '苏州') !== false) { - $isSuzhou = true; - } elseif ($company->company_address && strpos($company->company_address, '苏州') !== false) { - $isSuzhou = true; - } elseif ($company->company_city && strpos($company->company_city, '苏州') !== false) { - $isSuzhou = true; - } - - if ($isSuzhou) { + // 使用通用方法判断是否为苏州地区 + if (self::isSuzhou($user, $company)) { $suzhouCompanyIds[$companyId] = true; } } @@ -807,17 +819,8 @@ class CourseSign extends SoftDeletesModel $user = $courseSign->user; $company = $user->company; - // 判断是否为苏州地区:user表的company_address包含"苏州",或关联公司的company_address包含"苏州",或company_city包含"苏州" - $isSuzhou = false; - if ($user->company_address && strpos($user->company_address, '苏州') !== false) { - $isSuzhou = true; - } elseif ($company && $company->company_address && strpos($company->company_address, '苏州') !== false) { - $isSuzhou = true; - } elseif ($company && $company->company_city && strpos($company->company_city, '苏州') !== false) { - $isSuzhou = true; - } - - if ($isSuzhou) { + // 使用通用方法判断是否为苏州地区 + if (self::isSuzhou($user, $company)) { $suzhouUserIds[$userId] = true; } } @@ -857,6 +860,33 @@ class CourseSign extends SoftDeletesModel ->get() ->keyBy('id'); + // 筛选苏州地区的公司 + $suzhouCompanyIds = []; + foreach ($courseSigns as $courseSign) { + if (!$courseSign->user || !$courseSign->user->company) { + continue; + } + + $companyId = $courseSign->user->company->id; + // 只处理上市公司的记录 + if (!isset($companies[$companyId])) { + continue; + } + + $user = $courseSign->user; + $company = $user->company; + + // 使用通用方法判断是否为苏州地区 + if (self::isSuzhou($user, $company)) { + $suzhouCompanyIds[$companyId] = true; + } + } + + // 只保留苏州地区的上市公司 + $suzhouCompanies = $companies->filter(function ($company) use ($suzhouCompanyIds) { + return isset($suzhouCompanyIds[$company->id]); + }); + if ($retList) { // 返回详细列表:主表是公司,子数据是学员信息 $result = []; @@ -866,12 +896,12 @@ class CourseSign extends SoftDeletesModel } $companyId = $courseSign->user->company->id; - // 只处理上市公司的记录 - if (!isset($companies[$companyId])) { + // 只处理苏州上市公司的记录 + if (!isset($suzhouCompanyIds[$companyId])) { continue; } - $company = $companies[$companyId]; + $company = $suzhouCompanies[$companyId] ?? $courseSign->user->company; // 如果公司还没有在结果中,初始化 if (!isset($result[$companyId])) { @@ -909,7 +939,7 @@ class CourseSign extends SoftDeletesModel return array_values($result); } else { // 返回统计数据 - return $companies->count(); + return count($suzhouCompanyIds); } }