You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

107 lines
3.5 KiB

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