master
cody 3 months ago
parent 7a4bbc3736
commit 59e662a355

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

Loading…
Cancel
Save