|
|
|
|
@ -226,13 +226,16 @@ class CompanyController extends BaseController
|
|
|
|
|
}
|
|
|
|
|
})->orderBy($all['sort_name'] ?? 'id', $all['sort_type'] ?? 'desc');
|
|
|
|
|
if (isset($all['is_export']) && !empty($all['is_export'])) {
|
|
|
|
|
$list = $list->get()->toArray();
|
|
|
|
|
// 为每个公司添加"是否校友企业"字段(导出时)
|
|
|
|
|
$this->addIsSchoolmateCompanyField($list);
|
|
|
|
|
$list = $list->get();
|
|
|
|
|
// 为每个公司添加"是否校友企业"字段(导出时,在模型对象上添加)
|
|
|
|
|
$this->addIsSchoolmateCompanyFieldToModels($list);
|
|
|
|
|
$list = $list->toArray();
|
|
|
|
|
return Excel::download(new CommonExport($list, $all['export_fields'] ?? ''), $all['file_name'] ?? '' . date('YmdHis') . '.xlsx');
|
|
|
|
|
} else {
|
|
|
|
|
// 输出
|
|
|
|
|
$list = $list->paginate($all['page_size'] ?? 20);
|
|
|
|
|
// 为每个公司添加"是否校友企业"字段(在模型对象上添加)
|
|
|
|
|
$this->addIsSchoolmateCompanyFieldToModels($list->items());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 计算统计数据(如果提供了开始和结束年份)
|
|
|
|
|
@ -273,16 +276,6 @@ class CompanyController extends BaseController
|
|
|
|
|
|
|
|
|
|
// 将统计数据添加到返回结果中
|
|
|
|
|
$result = $list->toArray();
|
|
|
|
|
|
|
|
|
|
// 为每个公司添加"是否校友企业"字段
|
|
|
|
|
if (isset($result['data']) && is_array($result['data'])) {
|
|
|
|
|
// 分页数据,处理 data 数组
|
|
|
|
|
$this->addIsSchoolmateCompanyField($result['data']);
|
|
|
|
|
} elseif (is_array($result) && !isset($result['data'])) {
|
|
|
|
|
// 如果不是分页数据,直接处理数组
|
|
|
|
|
$this->addIsSchoolmateCompanyField($result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$result['statistics'] = $statistics;
|
|
|
|
|
return $this->success($result);
|
|
|
|
|
}
|
|
|
|
|
@ -411,7 +404,43 @@ class CompanyController extends BaseController
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 为公司数组添加"是否校友企业"字段
|
|
|
|
|
* 为公司模型集合添加"是否校友企业"字段
|
|
|
|
|
* @param array|\Illuminate\Support\Collection $companies 公司模型集合
|
|
|
|
|
*/
|
|
|
|
|
private function addIsSchoolmateCompanyFieldToModels($companies)
|
|
|
|
|
{
|
|
|
|
|
foreach ($companies as $company) {
|
|
|
|
|
if (!is_object($company)) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
$isSchoolmateCompany = 0;
|
|
|
|
|
// 获取关联的 users(确保关联已加载)
|
|
|
|
|
if ($company->relationLoaded('users')) {
|
|
|
|
|
$users = $company->users;
|
|
|
|
|
if ($users && (is_array($users) || $users instanceof \Illuminate\Support\Collection)) {
|
|
|
|
|
// 检查该企业下的用户中是否有校友(is_schoolmate = 1)
|
|
|
|
|
foreach ($users as $user) {
|
|
|
|
|
$isSchoolmate = is_object($user) ? ($user->is_schoolmate ?? 0) : ($user['is_schoolmate'] ?? 0);
|
|
|
|
|
if ($isSchoolmate == 1) {
|
|
|
|
|
$isSchoolmateCompany = 1;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 如果关联未加载,尝试直接查询
|
|
|
|
|
$hasSchoolmate = \App\Models\User::where('company_id', $company->id)
|
|
|
|
|
->where('is_schoolmate', 1)
|
|
|
|
|
->exists();
|
|
|
|
|
$isSchoolmateCompany = $hasSchoolmate ? 1 : 0;
|
|
|
|
|
}
|
|
|
|
|
// 使用 setAttribute 确保属性被正确设置
|
|
|
|
|
$company->setAttribute('is_schoolmate_company', $isSchoolmateCompany);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 为公司数组添加"是否校友企业"字段(用于数组数据)
|
|
|
|
|
* @param array $companies 公司数组(引用传递)
|
|
|
|
|
*/
|
|
|
|
|
private function addIsSchoolmateCompanyField(&$companies)
|
|
|
|
|
|