scene('list')->validate(); // 查询条件 $map = []; $limit = request('limit', config('page_num', 10)); $status = request('status', ''); $start_time = request('start_time', ''); $end_time = request('end_time', ''); $name = request('name', ''); $mobile = request('mobile', ''); $role_id = request('role_id', ''); $open_notice = request('open_notice', ''); $employee_code = request('employee_code', ''); $role_name = request('role_name', ''); $role_ids = []; $city_id = request('city_id', ''); $city_ids = request('city_ids', ''); $department_ids = request('city_ids', ''); // 时间条件 if ($start_time) $map[] = ['insert_time', '>=', strtotime($start_time)]; if ($end_time) $map[] = ['insert_time', '<=', strtotime($end_time)]; // 其他条件 if (is_numeric($status)) $map[] = ['status', '=', $status]; if ($name) $map[] = ['name', 'like', "%$name%"]; if ($mobile) $map[] = ['mobile', 'like', "%$mobile%"]; if ($role_id) $map[] = ['role_id', '=', $role_id]; if (is_numeric($open_notice)) $map[] = ['open_notice', '=', $open_notice]; if ($employee_code) $map[] = ['employee_code', 'like', "%$employee_code%"]; if ($city_id) $map[] = ['city_ids', 'like', "%,$city_id,%"]; if ($role_name) { $role_ids = $RolesModel->where('name', 'like', "%$role_name%")->pluck('id')->toarray(); } $field = ['id', 'employee_code', 'name', 'mobile', 'department_ids', 'role_id', 'city_ids', 'open_notice', 'insert_time', 'update_time', 'status']; // 查询数据 if ($role_name) { $EmployeeModel = $EmployeeModel->whereIn('role_id', $role_ids); } //多选查询地区 if ($city_ids && is_string($city_ids)) { $city_ids = explode(',', $city_ids); $subQuery = $EmployeeAreaModel->whereIn('city_id', $city_ids)->distinct('employee_id')->select('employee_id'); $EmployeeModel = $EmployeeModel->whereIn('id', function ($query1) use ($subQuery) { $query1->select('employee_id')->fromSub($subQuery, 'sub1'); }); } //多选部门查询 if ($department_ids && is_string($department_ids)) { $department_ids = explode(',', $department_ids); $subQuery = $EmployeeDepartmentModel->whereIn('department_id', $department_ids)->distinct('employee_id')->select('employee_id'); $EmployeeModel = $EmployeeModel->whereIn('id', function ($query1) use ($subQuery) { $query1->select('employee_id')->fromSub($subQuery, 'sub1'); }); } $result = $EmployeeModel ->where($map) ->select($field) ->orderByDesc('id') ->paginate($limit)->toarray(); // 分配数据 if (!$result) return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => []]); if (isset($result['data']) && count($result['data']) > 0) { foreach ($result['data'] as $key => $value) { //查询部门信息 $department_ids = $value['department_ids'] !='' ? explode(',',$value['department_ids']):''; $department_name = $department_ids ? $DepartmentModel->whereIn('id',$department_ids)->pluck('name')->toarray():''; //查询角色信息 $role_info = $RolesModel->where(['id' => $value['role_id']])->first(); //查询城市信息 $city_ids = explode(',', $value['city_ids']); $city_info = []; if (count($city_ids) > 0) { $city_info = $CitysModel->whereIn('id', $city_ids)->pluck('name'); } $result['data'][$key]['department_name'] = $department_name; $result['data'][$key]['role_name'] = isset($role_info['name']) ? $role_info['name'] : ''; $result['data'][$key]['city_info'] = $city_info; } } // 加载模板 return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $result]); } /** * 全部 * @author 唐远望 * @version 1.0 * @date 2025-12-12 * */ public function all(Request $request, EmployeeModel $EmployeeModel,RolesModel $RolesModel,EmployeeAreaModel $EmployeeAreaModel, EmployeeDepartmentModel $EmployeeDepartmentModel) { $request->scene('all')->validate(); // 查询条件 $map = []; $limit = request('limit', config('page_num', 10)); $status = request('status', '0'); $start_time = request('start_time', ''); $end_time = request('end_time', ''); $name = request('name', ''); $mobile = request('mobile', ''); $role_id = request('role_id', ''); $open_notice = request('open_notice', ''); $employee_code = request('employee_code', ''); $role_name = request('role_name', ''); $role_ids = []; $city_id = request('city_id', ''); $city_ids = request('city_ids', ''); $department_ids = request('city_ids', ''); // 时间条件 if ($start_time) $map[] = ['insert_time', '>=', strtotime($start_time)]; if ($end_time) $map[] = ['insert_time', '<=', strtotime($end_time)]; // 其他条件 if (is_numeric($status)) $map[] = ['status', '=', $status]; if ($name) $map[] = ['name', 'like', "%$name%"]; if ($mobile) $map[] = ['mobile', 'like', "%$mobile%"]; if ($role_id) $map[] = ['role_id', '=', $role_id]; if (is_numeric($open_notice)) $map[] = ['open_notice', '=', $open_notice]; if ($employee_code) $map[] = ['employee_code', 'like', "%$employee_code%"]; if ($city_id) $map[] = ['city_ids', 'like', "%,$city_id,%"]; if ($role_name) { $role_ids = $RolesModel->where('name', 'like', "%$role_name%")->pluck('id')->toarray(); } $field = ['id','name']; // 查询数据 if ($role_name) { $EmployeeModel = $EmployeeModel->whereIn('role_id', $role_ids); } //多选查询地区 if ($city_ids && is_string($city_ids)) { $city_ids = explode(',', $city_ids); $subQuery = $EmployeeAreaModel->whereIn('city_id', $city_ids)->distinct('employee_id')->select('employee_id'); $EmployeeModel = $EmployeeModel->whereIn('id', function ($query1) use ($subQuery) { $query1->select('employee_id')->fromSub($subQuery, 'sub1'); }); } //多选部门查询 if ($department_ids && is_string($department_ids)) { $department_ids = explode(',', $department_ids); $subQuery = $EmployeeDepartmentModel->whereIn('department_id', $department_ids)->distinct('employee_id')->select('employee_id'); $EmployeeModel = $EmployeeModel->whereIn('id', function ($query1) use ($subQuery) { $query1->select('employee_id')->fromSub($subQuery, 'sub1'); }); } $result = $EmployeeModel ->where($map) ->select($field) ->orderByDesc('id') ->get()->toarray(); // 分配数据 if (!$result) json_send(['code' => 'success', 'msg' => '获取成功', 'data' => []]); // 加载模板 return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $result]); } /** * 详情 * @author 唐远望 * @version 1.0 * @date 2025-12-04 */ public function detail(Request $request, EmployeeModel $EmployeeModel, DepartmentModel $DepartmentModel, RolesModel $RolesModel, CitysModel $CitysModel) { $request->scene('detail')->validate(); // 接收参数 $id = request('id', 0); $map = ['id' => $id]; $field = ['id', 'employee_code', 'name', 'mobile', 'department_id', 'duty_type', 'role_id', 'city_ids', 'open_notice', 'insert_time', 'update_time', 'status']; $data = $EmployeeModel->where($map)->select($field)->first(); if (!$data) return json_send(['code' => 'error', 'msg' => '记录不存在']); // 查询部门信息 $department_info = $DepartmentModel->where(['id' => $data['department_id']])->first(); // 查询角色信息 $role_info = $RolesModel->where(['id' => $data['role_id']])->first(); // 查询城市信息 $city_ids = explode(',', $data['city_ids']); $city_info = []; if (count($city_ids) > 0) { $city_info = $CitysModel->whereIn('id', $city_ids)->pluck('name'); } $data['department_name'] = isset($department_info['name']) ? $department_info['name'] : ''; $data['role_name'] = isset($role_info['name']) ? $role_info['name'] : ''; $data['city_info'] = $city_info; // 加载模板 return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $data]); } /** * 添加 * @author 唐远望 * @version 1.0 * @date 2025-12-04 * */ public function add(Request $request, EmployeeModel $EmployeeModel) { $request->scene('add')->validate(); // 接收数据 $all_data = request()->all(); //查询是否存在 $map = ['name' => $all_data['name']]; $department_ids = request('department_id', ''); $all_data['department_ids'] = $department_ids; $city_ids = request('city_ids', ''); $all_data['city_ids'] = $city_ids; $data = $EmployeeModel->where($map)->first(); if ($data) return json_send(['code' => 'error', 'msg' => '员工姓名记录已存在']); $map = ['mobile' => $all_data['mobile']]; $data = $EmployeeModel->where($map)->first(); if ($data) return json_send(['code' => 'error', 'msg' => '员工手机号记录已存在']); // 写入数据表 $result = $EmployeeModel->addEmployee($all_data); // 如果操作失败 if (!$result) return json_send(['code' => 'error', 'msg' => '新增失败']); // 告知结果 return json_send(['code' => 'success', 'msg' => '新增成功']); } /** * 修改 * @author 唐远望 * @version 1.0 * @date 2025-12-04 * */ public function edit(Request $request, EmployeeModel $EmployeeModel) { $request->scene('edit')->validate(); // 接收参数 $id = request('id', 0); // 接收数据 $all_data = request()->all(); $department_ids = request('department_id', ''); $all_data['department_ids'] = $department_ids; $city_ids = request('city_ids', ''); $all_data['city_ids'] = $city_ids; $all_data['password'] = request('password', ''); //查询是否存在 $map = ['name' => $all_data['name']]; $data = $EmployeeModel->where($map)->where('id', '!=', $id)->first(); if ($data) return json_send(['code' => 'error', 'msg' => '员工姓名记录已存在']); $map = ['mobile' => $all_data['mobile']]; $data = $EmployeeModel->where($map)->where('id', '!=', $id)->first(); if ($data) return json_send(['code' => 'error', 'msg' => '员工手机号记录已存在']); // 更新数据表 $where = ['id' => $id]; $result = $EmployeeModel->updateEmployee($where, $all_data); // 如果操作失败 if (!$result) return json_send(['code' => 'error', 'msg' => '修改失败']); // 告知结果 return json_send(['code' => 'success', 'msg' => '修改成功']); } /** * 修改状态 * @author 唐远望 * @version 1.0 * @date 2025-12-04 * */ public function set_status(Request $request, EmployeeModel $EmployeeModel) { // 验证参数 $request->scene('set_status')->validate(); // 接收数据 $id = request('id', 0); $status = request('status', 0); // 查询用户 $where = ['id' => $id]; // 执行修改 $result = $EmployeeModel->changeStatus($where, $status); // 提示新增失败 if (!$result) return json_send(['code' => 'error', 'msg' => '设置失败']); // 告知结果 return json_send(['code' => 'success', 'msg' => '设置成功']); } /** * 删除 * @author 唐远望 * @version 1.0 * @date 2025-12-04 * */ public function delete(Request $request, EmployeeModel $EmployeeModel) { // 验证参数 $request->scene('delete')->validate(); // 接收数据 $id = request('id', 0); // 查询用户 $where = ['id' => $id]; // 执行删除 $result = $EmployeeModel->deleteEmployee($where); // 提示删除失败 if (!$result) return json_send(['code' => 'error', 'msg' => '删除失败']); // 告知结果 return json_send(['code' => 'success', 'msg' => '删除成功']); } }