|
|
<?php
|
|
|
|
|
|
namespace App\Http\Controllers\Web;
|
|
|
|
|
|
use App\Http\Controllers\Controller;
|
|
|
use App\Models\User;
|
|
|
use Illuminate\Http\Request;
|
|
|
use Illuminate\Support\Facades\Validator;
|
|
|
|
|
|
class CompanyController extends Controller
|
|
|
{
|
|
|
/**
|
|
|
* 显示用户列表页面(有公司名称并且报名审核通过的用户)
|
|
|
*/
|
|
|
public function search()
|
|
|
{
|
|
|
// 查询有公司名称并且报名审核通过的用户,排除已匹配到公司的用户(company_id > 0)
|
|
|
$users = User::whereNotNull('company_name')
|
|
|
->where('company_name', '!=', '')
|
|
|
->where(function ($query) {
|
|
|
$query->whereNull('company_id')
|
|
|
->orWhere('company_id', '<=', 0);
|
|
|
})
|
|
|
->whereHas('courseSigns', function ($query) {
|
|
|
$query->where('status', 1); // 审核通过
|
|
|
})
|
|
|
->select('id', 'username', 'company_name', 'company_id')
|
|
|
->orderBy('id', 'desc')
|
|
|
->get();
|
|
|
|
|
|
$totalCount = $users->count();
|
|
|
|
|
|
return view('company_search', compact('users', 'totalCount'));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 更新用户公司信息
|
|
|
*/
|
|
|
public function updateUserCompany(Request $request)
|
|
|
{
|
|
|
$validator = Validator::make($request->all(), [
|
|
|
'user_id' => 'required|integer|exists:users,id',
|
|
|
'company_name' => 'required|string',
|
|
|
]);
|
|
|
|
|
|
if ($validator->fails()) {
|
|
|
return response()->json([
|
|
|
'code' => 400,
|
|
|
'msg' => $validator->errors()->first()
|
|
|
], 400);
|
|
|
}
|
|
|
|
|
|
try {
|
|
|
$user = User::find($request->user_id);
|
|
|
if (!$user) {
|
|
|
return response()->json([
|
|
|
'code' => 404,
|
|
|
'msg' => '用户不存在'
|
|
|
], 404);
|
|
|
}
|
|
|
|
|
|
// 获取当前用户的公司名称(更新前的)
|
|
|
$oldCompanyName = $user->company_name;
|
|
|
|
|
|
// 更新当前用户
|
|
|
$user->company_name = $request->company_name;
|
|
|
$user->company_id = null; // 设置 company_id 为 null
|
|
|
$user->save();
|
|
|
|
|
|
// 查找所有具有相同公司名称的用户(排除已匹配到公司的,即 company_id > 0)
|
|
|
$sameCompanyUsers = User::where('company_name', $oldCompanyName)
|
|
|
->where(function ($query) {
|
|
|
$query->whereNull('company_id')
|
|
|
->orWhere('company_id', '<=', 0);
|
|
|
})
|
|
|
->whereHas('courseSigns', function ($query) {
|
|
|
$query->where('status', 1); // 审核通过
|
|
|
})
|
|
|
->get();
|
|
|
|
|
|
// 批量更新所有相同公司名称的用户
|
|
|
$updateCount = 0;
|
|
|
foreach ($sameCompanyUsers as $sameUser) {
|
|
|
$sameUser->company_name = $request->company_name;
|
|
|
$sameUser->company_id = null;
|
|
|
$sameUser->save();
|
|
|
$updateCount++;
|
|
|
}
|
|
|
|
|
|
return response()->json([
|
|
|
'code' => 200,
|
|
|
'msg' => '更新成功,共更新 ' . $updateCount . ' 条记录',
|
|
|
'data' => [
|
|
|
'user' => $user,
|
|
|
'updated_count' => $updateCount
|
|
|
]
|
|
|
]);
|
|
|
} catch (\Exception $e) {
|
|
|
return response()->json([
|
|
|
'code' => 500,
|
|
|
'msg' => '更新失败: ' . $e->getMessage()
|
|
|
], 500);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|