scene('list')->validate(); $admin_company_id = request('admin_company_id', '0'); $company_id = request('access_token.company_id', '0'); $is_admin = request('access_token.is_admin', '0'); // 查询条件 $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('department_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_where = [['name', 'like', "%$role_name%"]]; if ($is_admin != 1 && $company_id != 0) { $role_where[] = ['company_id', '=', $company_id]; } else { $role_where[] = ['company_id', '=', $admin_company_id]; } $role_ids = $RolesModel->where($role_where)->pluck('id')->toarray(); } $field = ['id', 'employee_code', 'name', 'mobile','email','department_ids', 'role_id', 'city_ids', 'open_notice', 'insert_time', 'update_time', 'status']; // 查询数据 if (count($role_ids) > 0) { $employee_where = []; if ($is_admin != 1 && $company_id != 0) { $employee_where[] = ['company_id', '=', $company_id]; } else { $employee_where[] = ['company_id', '=', $admin_company_id]; } $EmployeeModel = $EmployeeModel->whereIn('role_id', $role_ids)->where($employee_where); } //多选查询地区 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); $employee_department_where = []; if ($is_admin != 1 && $company_id != 0) { $employee_department_where[] = ['company_id', '=', $company_id]; } else { $employee_department_where[] = ['company_id', '=', $admin_company_id]; } $subQuery = $EmployeeDepartmentModel->whereIn('department_id', $department_ids)->where($employee_department_where)->distinct('employee_id')->select('employee_id'); $EmployeeModel = $EmployeeModel->whereIn('id', function ($query1) use ($subQuery) { $query1->select('employee_id')->fromSub($subQuery, 'sub1'); }); } if ($is_admin != 1 && $company_id != 0) { $map[] = ['company_id', '=', $company_id]; } else { $map[] = ['company_id', '=', $admin_company_id]; } $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_where =['id' => $value['role_id']]; if ($is_admin != 1 && $company_id != 0) { $role_where['company_id'] = $company_id; } else { $role_where['company_id'] = $admin_company_id; } //查询角色信息 $role_info = $RolesModel->where($role_where)->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_ids'] = $value['department_ids'] != '' ? substr($value['department_ids'], 1, strlen($value['department_ids']) - 2) : ''; $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(); $admin_company_id = request('admin_company_id', '0'); $company_id = request('access_token.company_id', '0'); $is_admin = request('access_token.is_admin', '0'); // 查询条件 $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_where = [['name', 'like', "%$role_name%"]]; if ($is_admin != 1 && $company_id != 0) { $role_where[] = ['company_id', '=', $company_id]; } else { $role_where[] = ['company_id', '=', $admin_company_id]; } $role_ids = $RolesModel->where($role_where)->pluck('id')->toarray(); } $field = ['id', 'name']; // 查询数据 if (count($role_ids) > 0) { $employee_where = []; if ($is_admin != 1 && $company_id != 0) { $employee_where[] = ['company_id', '=', $company_id]; } else { $employee_where[] = ['company_id', '=', $admin_company_id]; } $EmployeeModel = $EmployeeModel->whereIn('role_id', $role_ids)->where($employee_where); } //多选查询地区 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); $employee_department_where = []; if ($is_admin != 1 && $company_id != 0) { $employee_department_where[] = ['company_id', '=', $company_id]; } else { $employee_department_where[] = ['company_id', '=', $admin_company_id]; } $subQuery = $EmployeeDepartmentModel->whereIn('department_id', $department_ids)->where($employee_department_where)->distinct('employee_id')->select('employee_id'); $EmployeeModel = $EmployeeModel->whereIn('id', function ($query1) use ($subQuery) { $query1->select('employee_id')->fromSub($subQuery, 'sub1'); }); } if ($is_admin != 1 && $company_id != 0) { $map[] = ['company_id', '=', $company_id]; } else { $map[] = ['company_id', '=', $admin_company_id]; } $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(); $admin_company_id = request('admin_company_id', '0'); $company_id = request('access_token.company_id', '0'); $is_admin = request('access_token.is_admin', '0'); //是否管理员操作 0=是1=否 // 接收参数 $id = request('id', 0); $map = ['id' => $id]; // 权限判断 if ($is_admin != 1 && $company_id != 0) { $map['company_id'] = $company_id; } else { $map['company_id'] = $admin_company_id; } $field = ['id', 'employee_code', 'name', 'mobile','email', 'department_ids', '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_ids = explode(',', $data['department_ids']); $department_info = $DepartmentModel->whereIn('id', $department_ids)->select(['id', 'name'])->get()->toarray(); // 查询角色信息 $role_where = ['id' => $data['role_id']]; // 权限判断 if ($is_admin != 1 && $company_id != 0) { $role_where['company_id'] = $company_id; } else { $role_where['company_id'] = $admin_company_id; } $role_info = $RolesModel->where($role_where)->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_ids'] = $data['department_ids'] != '' ? substr($data['department_ids'], 1, strlen($data['department_ids']) - 2) : ''; $data['department_name'] = isset($department_info) ? array_column($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(); $admin_company_id = request('admin_company_id', '0'); $company_id = request('access_token.company_id', '0'); $is_admin = request('access_token.is_admin', '0'); //是否管理员操作 0=是1=否 // 接收数据 $all_data = request()->all(); $user_company_id = request('access_token.company_id', '0'); $email = request('email', ''); $all_data['email'] = $email; //查询是否存在 $map = ['name' => $all_data['name']]; $department_ids = request('department_ids', ''); $all_data['department_ids'] = $department_ids; $city_ids = request('city_ids', ''); $all_data['city_ids'] = $city_ids; if ($is_admin != 1 && $company_id != 0) { $map['company_id'] = $company_id; } else { $map['company_id'] = $admin_company_id; } $data = $EmployeeModel->where($map)->first(); if ($data) return json_send(['code' => 'error', 'msg' => '员工姓名记录已存在']); $map = ['mobile' => $all_data['mobile']]; if ($is_admin != 1 && $company_id != 0) { $map['company_id'] = $company_id; $all_data['company_id'] = $company_id; } else { $map['company_id'] = $admin_company_id; $all_data['company_id'] = $company_id; } $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' => '新增失败']); // 记录行为 $admin_id = request('access_token.uid', 0); //用户ID $table_name = $EmployeeModel->getTable(); $notes_type = 1; //操作类型,1添加,2修改,3=删除 $this->addAdminHistory('人员信息管理-员工管理', $user_company_id, $admin_id, $is_admin, $table_name, $notes_type, [], $all_data, '新增了员工' . $all_data['name'] . '信息'); // 告知结果 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(); $admin_company_id = request('admin_company_id', '0'); $company_id = request('access_token.company_id', '0'); $is_admin = request('access_token.is_admin', '0'); //是否管理员操作 0=是1=否 // 接收参数 $id = request('id', 0); // 接收数据 $all_data = request()->all(); $email = request('email', ''); $all_data['email'] = $email; $department_ids = request('department_ids', ''); $all_data['department_ids'] = $department_ids; $city_ids = request('city_ids', ''); $all_data['city_ids'] = $city_ids; $all_data['password'] = request('password', ''); $where = ['id' => $id]; // 权限判断 if ($is_admin != 1 && $company_id != 0) { $where['company_id'] = $company_id; } else { $where['company_id'] = $admin_company_id; } $Employee = $EmployeeModel->where($where)->first(); if (!$Employee) return json_send(['code' => 'error', 'msg' => '记录不存在']); $oldData = $Employee->toArray(); //查询是否存在 $map = ['name' => $all_data['name']]; // 权限判断 if ($is_admin != 1 && $company_id != 0) { $map['company_id'] = $company_id; } else { $map['company_id'] = $admin_company_id; } $data = $EmployeeModel->where($map)->where('id', '!=', $id)->first(); if ($data) return json_send(['code' => 'error', 'msg' => '员工姓名记录已存在']); $map = ['mobile' => $all_data['mobile']]; if ($is_admin != 1 && $company_id != 0) { $map['company_id'] = $company_id; $all_data['company_id'] = $company_id; } else { $map['company_id'] = $admin_company_id; $all_data['company_id'] = $admin_company_id; } $data = $EmployeeModel->where($map)->where('id', '!=', $id)->first(); if ($data) return json_send(['code' => 'error', 'msg' => '员工手机号记录已存在']); // 更新数据表 $result = $EmployeeModel->updateEmployee($Employee, $all_data); // 如果操作失败 if (!$result) return json_send(['code' => 'error', 'msg' => '修改失败']); // 记录行为 $admin_id = request('access_token.uid', 0); //用户ID $table_name = $EmployeeModel->getTable(); $notes_type = 2; //操作类型,1添加,2修改,3=删除 $this->addAdminHistory('人员信息管理-员工管理',$company_id, $admin_id, $is_admin, $table_name, $notes_type, $oldData, $all_data, '修改了员工' . $oldData['name'] . '信息'); // 告知结果 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(); $admin_company_id = request('admin_company_id', '0'); $company_id = request('access_token.company_id', '0'); $is_admin = request('access_token.is_admin', '0'); //是否管理员操作 0=是1=否 // 接收数据 $id = request('id', 0); $status = request('status', 0); $admin_id = request('access_token.uid', 0); //用户ID // 查询用户 $where = ['id' => $id]; // 权限判断 if ($is_admin != 1 && $company_id != 0) { $where['company_id'] = $company_id; } else { $where['company_id'] = $admin_company_id; } // 执行修改 $Employee = $EmployeeModel->where($where)->first(); if (!$Employee) { return json_send(['code' => 'error', 'msg' => '记录不存在']); } if ($is_admin == 1 && $admin_id == $Employee->id) { return json_send(['code' => 'error', 'msg' => '不能修改自己的状态']); } $Employee->status = $status; $Employee->update_time = time(); $result = $Employee->save(); // 提示新增失败 if (!$result) return json_send(['code' => 'error', 'msg' => '设置失败']); // 记录行为 $table_name = $EmployeeModel->getTable(); $notes_type = 2; //操作类型,1添加,2修改,3=删除 $this->addAdminHistory('人员信息管理-员工管理', $company_id, $admin_id, $is_admin, $table_name, $notes_type, [], ['status' => $status], '修改了员工' . $Employee->name . '状态'); // 告知结果 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(); $admin_company_id = request('admin_company_id', '0'); $company_id = request('access_token.company_id', '0'); $is_admin = request('access_token.is_admin', '0'); //是否管理员操作 0=是1=否 // 接收数据 $id = request('id', 0); $admin_id = request('access_token.uid', 0); //用户ID // 查询用户 $where = ['id' => $id]; $is_admin = request('access_token.is_admin', '0'); // 权限判断 if ($is_admin != 1 && $company_id != 0) { $where['company_id'] = $company_id; } else { $where['company_id'] = $admin_company_id; } // 执行删除 $Employee = $EmployeeModel->where($where)->first(); if (!$Employee) { return json_send(['code' => 'error', 'msg' => '记录不存在']); } if ($is_admin == 1 && $admin_id == $Employee->id) { return json_send(['code' => 'error', 'msg' => '不能删除自己']); } $result = $Employee->delete(); // 提示删除失败 if (!$result) return json_send(['code' => 'error', 'msg' => '删除失败']); // 记录行为 $table_name = $EmployeeModel->getTable(); $notes_type = 3; //操作类型,1添加,2修改,3=删除 $this->addAdminHistory('人员信息管理-员工管理', $admin_id, $is_admin, $table_name, $notes_type, $Employee->toarray(), [], '删除了员工' . $Employee->name . '信息'); // 告知结果 return json_send(['code' => 'success', 'msg' => '删除成功']); } }