|
|
|
|
@ -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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|