소스 검색

添加行业分类相关接口:获取行业分类列表、添加行业分类、修改行业分类、删除行业分类、获取职位分类列表

FengR 1 개월 전
부모
커밋
921962996a
2개의 변경된 파일330개의 추가작업 그리고 127개의 파일을 삭제
  1. 289 127
      app/JsonRpc/NewsService.php
  2. 41 0
      app/JsonRpc/NewsServiceInterface.php

+ 289 - 127
app/JsonRpc/NewsService.php

@@ -1541,19 +1541,36 @@ class NewsService implements NewsServiceInterface
     /*
     /*
     * 获取职位
     * 获取职位
     * */
     * */
-    public function getPositionList(array $data): array
-    {
-        if(isset($data['zwpid']) && $data['zwpid']!=null){
-            $result = JobPosition::where('zwpid',$data['zwpid'])->get()->all();
-        }else{
-            $result = JobPosition::where('zwpid',0)->get()->all();
-        }
-        if (empty($result)) {
-            return Result::error("暂无此职位", 0);
-        }
-        return Result::success($result);
+  public function getPositionList(array $data): array
+  {
+    if (isset($data['zwpid']) && $data['zwpid'] != null) {
+      $result = JobPosition::where('zwpid', $data['zwpid'])->get()->all();
+      
+    }else{
+      // 获取所有职位,按 zwpid 分组,pid=0 的为顶级
+      $all = JobPosition::get();
+      // $roots = $all->where('pid', 0)->values();   // 顶级职位集合(对象)
+      // 从已查询出的集合里直接过滤出 zwpid=0 的记录,不再每条重新查库
+      $pid_onejob = $all->filter(function ($item) {
+        return $item->zwpid == 0;
+      })->values();
+      $pid_otherjob = $all->filter(function ($item) {
+        return $item->zwpid != 0;
+      })->values()->all();
+      $other_pid = array_column($pid_otherjob,'zwpid');
+      $result = [];
+      foreach ($pid_onejob as $key => $value) {
+        if(in_array($value['zwid'],$other_pid)){
+          $result[$key] = $value;
+        }
+      }
     }
     }
-    /*
+    if (empty($result)) {
+      return Result::error("暂无此职位", 0);
+    }
+    return Result::success($result);
+  }
+  /*
     * 获取工作性质-菜单
     * 获取工作性质-菜单
     * */
     * */
     public function getJobNature(array $data): array
     public function getJobNature(array $data): array
@@ -1797,120 +1814,265 @@ class NewsService implements NewsServiceInterface
         return Result::success($result);
         return Result::success($result);
     }
     }
     // 20250306 招聘
     // 20250306 招聘
-     // 封装处理由问题
-     function processJob($job, $data)
-     {
-         return $job->map(function ($job) use ($data) {
-             $category = $job->cat_arr_id ?? '';
-             $cityid = $job->city_arr_id ?? '';
-             $city = json_decode($cityid, true);
-             $pinyin = '';
-             $level = json_decode($category, true);
-             // 路由
-             if (!empty($level) && is_array($level)) {
-                 $pinyin = WebsiteCategory::whereIn('category_id', $level)
-                     ->where('website_id', $data['website_id']) // 添加网站ID条件 
-                     ->orderByRaw('FIELD(category_id, ' . implode(',', $level) . ')')
-                     ->get(['aLIas_pinyin'])
-                     ->pluck('aLIas_pinyin')
-                     ->implode('/');
-                 if (empty($pinyin)) {
-                     $pinyin = $pinyin->aLIas_pinyin ?? '';
-                 }
-                 $job->pinyin = $pinyin;
-             }
-             // 取职位城市-市??省
-             if (!empty($city) && is_array($city)) {
-                 if (isset($city[1]) && !empty($city[1])) {
-                     $city = District::where('id', $city[1])->first(['name']);
-                     $job->city_name = $city->name ?? '';
-                 } else if (isset($city[0]) && !empty($city[0])) {
-                     $city = District::where('id', $city[0])->first(['name']);
-                     $job->city_name = $city->name ?? '';
-                 } else {
-                     $job->city_name = '全国';
-                 }
-             }
-             // 取公司详细地址拼接
-             if (isset($job->address_arr_id) && !empty($job->address_arr_id)) {
-                 $address_id = json_decode($job->address_arr_id, true) ?? [];
-                 if (is_array($address_id) && !empty($address_id)) {
-                     $address = District::whereIn('id', $address_id)
-                         ->orderBy('level', 'asc')
-                         ->get(['name'])
-                         ->pluck('name')
-                         ->implode('');
-                     // $job->address_name = $address ?? '';
-                     $job->address_name = ($address ?? '') . ($job->address ?? '');
-                 }
-             }
-            //  获取简历地址最后一级
-            if(isset($job->city_id) &&!empty($job->city_id)){
-                $city_name = District::where('id', $job->city_id)->first(['name']);
-                $job->hunt_cityname = $city_name->name?? '';
+    // 封装处理由问题
+    function processJob($job, $data)
+    {
+      return $job->map(function ($job) use ($data) {
+          $category = $job->cat_arr_id ?? '';
+          $cityid = $job->city_arr_id ?? '';
+          $city = json_decode($cityid, true);
+          $pinyin = '';
+          $level = json_decode($category, true);
+          // 路由
+          if (!empty($level) && is_array($level)) {
+              $pinyin = WebsiteCategory::whereIn('category_id', $level)
+                  ->where('website_id', $data['website_id']) // 添加网站ID条件 
+                  ->orderByRaw('FIELD(category_id, ' . implode(',', $level) . ')')
+                  ->get(['aLIas_pinyin'])
+                  ->pluck('aLIas_pinyin')
+                  ->implode('/');
+              if (empty($pinyin)) {
+                  $pinyin = $pinyin->aLIas_pinyin ?? '';
+              }
+              $job->pinyin = $pinyin;
+          }
+          // 取职位城市-市??省
+          if (!empty($city) && is_array($city)) {
+              if (isset($city[1]) && !empty($city[1])) {
+                  $city = District::where('id', $city[1])->first(['name']);
+                  $job->city_name = $city->name ?? '';
+              } else if (isset($city[0]) && !empty($city[0])) {
+                  $city = District::where('id', $city[0])->first(['name']);
+                  $job->city_name = $city->name ?? '';
+              } else {
+                  $job->city_name = '全国';
+              }
+          }
+          // 取公司详细地址拼接
+          if (isset($job->address_arr_id) && !empty($job->address_arr_id)) {
+              $address_id = json_decode($job->address_arr_id, true) ?? [];
+              if (is_array($address_id) && !empty($address_id)) {
+                  $address = District::whereIn('id', $address_id)
+                      ->orderBy('level', 'asc')
+                      ->get(['name'])
+                      ->pluck('name')
+                      ->implode('');
+                  // $job->address_name = $address ?? '';
+                  $job->address_name = ($address ?? '') . ($job->address ?? '');
+              }
+          }
+        //  获取简历地址最后一级
+        if(isset($job->city_id) &&!empty($job->city_id)){
+            $city_name = District::where('id', $job->city_id)->first(['name']);
+            $job->hunt_cityname = $city_name->name?? '';
+        }
+          // 取行业
+          if (!empty($job->hy_id) || !empty($job->industry) || !empty($job->company_hy_id)) {
+              $hy_name = JobIndustry::when($job, function ($query) use ($job) {
+                  if (!empty($job->industry)) {
+                      $query->where('hyid', $job->industry);
+                  } else if (!empty($job->hy_id)) {
+                      $query->where('hyid', $job->hy_id);
+                  } else {
+                      $query->where('hyid', $job->company_hy_id);
+                  }
+              })->first(['hyname']);
+              $job->hy_name = $hy_name->hyname ?? '';
+          }
+          // 取职位
+          if ((isset($job->zw_id) && !empty($job->zw_id)) || (isset($job->job) && !empty($job->job))) {
+              $zwid = $job->job ?? $job->zw_id;
+              $zw_name = JobPosition::where('zwid', $zwid)->first(['zwname']);
+              $job->zw_name = $zw_name->zwname ?? '';
+          }
+          // 取具体职位
+          if ((isset($job->jtzw_id) && !empty($job->jtzw_id)) || (isset($job->job_name_get) && !empty($job->job_name_get))) {
+              $jtzwid = $job->job_name_get ?? $job->jtzw_id;
+              $jtzw_name = JobPosition::where('zwid', $jtzwid)->first(['zwname']);
+              $job->jtzw_name = $jtzw_name->zwname ?? '';
+          }
+          // 取工作经验
+          if (isset($job->experience) && !empty($job->experience)) {
+              $experience = JobEnum::where('egroup', 'years')->where('evalue', $job->experience)->first(['ename']);
+              $job->experience_name = $experience->ename ?? '';
+          }
+          // 取学历
+          if (isset($job->educational) && !empty($job->educational)) {
+              $education = JobEnum::where('egroup', 'education')->where('evalue', $job->educational)->first(['ename']);
+              $job->education_name = $education->ename ?? '';
+          }
+          // 语言
+          if (isset($job->language) && !empty($job->language)) {
+              $language = JobEnum::where('egroup', 'language')->where('evalue', $job->language)->first(['ename']);
+              $job->language_name = $language->ename ?? '';
+          }
+          // 薪资
+          if (isset($job->salary) && !empty($job->salary)) {
+              $salary = JobEnum::where('egroup', 'income')->where('evalue', $job->salary)->first(['ename']);
+              $job->salary_name = $salary->ename ?? '';
+          }
+          // 职位性质
+          if (isset($job->nature_id) && !empty($job->nature_id)) {
+              $job_nature = JobEnum::where('egroup', 'nature')->where('evalue', $job->nature_id)->first(['ename']);
+              $job->job_nature_name = $job_nature->ename ?? '';
+          }
+          // 公司规模
+          if (isset($job->company_size) && !empty($job->company_size)) {
+              $company_size = JobEnum::where('egroup', 'cosize')->where('evalue', $job->company_size)->first(['ename']);
+              $job->company_size_name = $company_size->ename ?? '';
+          }
+          // 公司性质
+          if (isset($job->company_nature) && !empty($job->company_nature)) {
+              $company_nature = JobNature::where('id', $job->company_nature)->first(['nature_name']);
+              $job->company_nature_name = $company_nature->nature_name ?? '';
+          }
+          // $job->pinyin = $pinyin;
+          return $job;
+      });
+    }
+    /**
+     * 行业分类管理  ------1121
+     * @param array $data
+     * @return array
+    */
+    public function getJobIndustryList(array $data):array
+    {
+      $page = $data['page'] ?? 1;
+      $page_size = $data['page_size'] ?? 10;
+      if(isset($data['hyname']) && !empty($data['hyname'])){
+        $where = ['hyname', 'like', '%' . $data['hyname'] . '%'];
+      }else{
+        $where = [];
+      }
+      $rs_query = JobIndustry::when(!empty($where), function ($query) use ($where) {
+        $query->where([$where]); // 修复:将条件包装成二维数组
+      })
+      ->orderBy('updated_at', 'desc');
+      $count = $rs_query->count();
+      $hy = $rs_query->offset(($page - 1) * $page_size)->limit($page_size)->get()->all();
+      $result = [
+        'count' => $count,
+        'list' => $hy,
+      ];
+      if(empty($hy)){
+        return Result::success('暂无数据');
+      }
+      return Result::success($result);
+    }
+    /**
+     * 添加行业分类
+     * @param array $data
+     * @return array
+    */
+    public function addJobIndustry(array $data):array
+    {
+        $hy_name = JobIndustry::where('hyname', $data['hyname'])->first(['hyid']);
+        if(!empty($hy_name)){
+            return Result::error('行业分类已存在');
+        }
+        $hy = JobIndustry::insertGetId($data);
+        if(empty($hy)){
+            return Result::error('添加失败');
+        }
+        return Result::success($hy);
+    }
+    /**
+     * 更新行业分类
+     * @param array $data
+     * @return array
+    */
+    public function upJobIndustry(array $data):array
+    {
+        $hy_query = JobIndustry::get();
+        $hy_ids = $hy_query->pluck('hyid')->toArray();
+        $hy_names = $hy_query->pluck('hyname')->toArray();
+        if(!in_array($data['hyid'], $hy_ids)){
+            return Result::error('行业分类不存在');
+        }
+        if(isset($data['hyname']) && !empty($data['hyname'])){
+            $other_key_hy = array_search($data['hyid'], $hy_ids);
+            // return Result::success($other_key_hy);
+            unset($hy_names[$other_key_hy]);
+            if(in_array($data['hyname'], $hy_names)){
+                return Result::error('行业分类名称已存在');
             }
             }
-             // 取行业
-             if (!empty($job->hy_id) || !empty($job->industry) || !empty($job->company_hy_id)) {
-                 $hy_name = JobIndustry::when($job, function ($query) use ($job) {
-                     if (!empty($job->industry)) {
-                         $query->where('hyid', $job->industry);
-                     } else if (!empty($job->hy_id)) {
-                         $query->where('hyid', $job->hy_id);
-                     } else {
-                         $query->where('hyid', $job->company_hy_id);
-                     }
-                 })->first(['hyname']);
-                 $job->hy_name = $hy_name->hyname ?? '';
-             }
-             // 取职位
-             if ((isset($job->zw_id) && !empty($job->zw_id)) || (isset($job->job) && !empty($job->job))) {
-                 $zwid = $job->job ?? $job->zw_id;
-                 $zw_name = JobPosition::where('zwid', $zwid)->first(['zwname']);
-                 $job->zw_name = $zw_name->zwname ?? '';
-             }
-             // 取具体职位
-             if ((isset($job->jtzw_id) && !empty($job->jtzw_id)) || (isset($job->job_name_get) && !empty($job->job_name_get))) {
-                 $jtzwid = $job->job_name_get ?? $job->jtzw_id;
-                 $jtzw_name = JobPosition::where('zwid', $jtzwid)->first(['zwname']);
-                 $job->jtzw_name = $jtzw_name->zwname ?? '';
-             }
-             // 取工作经验
-             if (isset($job->experience) && !empty($job->experience)) {
-                 $experience = JobEnum::where('egroup', 'years')->where('evalue', $job->experience)->first(['ename']);
-                 $job->experience_name = $experience->ename ?? '';
-             }
-             // 取学历
-             if (isset($job->educational) && !empty($job->educational)) {
-                 $education = JobEnum::where('egroup', 'education')->where('evalue', $job->educational)->first(['ename']);
-                 $job->education_name = $education->ename ?? '';
-             }
-             // 语言
-             if (isset($job->language) && !empty($job->language)) {
-                 $language = JobEnum::where('egroup', 'language')->where('evalue', $job->language)->first(['ename']);
-                 $job->language_name = $language->ename ?? '';
-             }
-             // 薪资
-             if (isset($job->salary) && !empty($job->salary)) {
-                 $salary = JobEnum::where('egroup', 'income')->where('evalue', $job->salary)->first(['ename']);
-                 $job->salary_name = $salary->ename ?? '';
-             }
-             // 职位性质
-             if (isset($job->nature_id) && !empty($job->nature_id)) {
-                 $job_nature = JobEnum::where('egroup', 'nature')->where('evalue', $job->nature_id)->first(['ename']);
-                 $job->job_nature_name = $job_nature->ename ?? '';
-             }
-             // 公司规模
-             if (isset($job->company_size) && !empty($job->company_size)) {
-                 $company_size = JobEnum::where('egroup', 'cosize')->where('evalue', $job->company_size)->first(['ename']);
-                 $job->company_size_name = $company_size->ename ?? '';
-             }
-             // 公司性质
-             if (isset($job->company_nature) && !empty($job->company_nature)) {
-                 $company_nature = JobNature::where('id', $job->company_nature)->first(['nature_name']);
-                 $job->company_nature_name = $company_nature->nature_name ?? '';
-             }
-             // $job->pinyin = $pinyin;
-             return $job;
-         });
-     }
+        }
+        $hy = JobIndustry::where('hyid', $data['hyid'])->update($data);
+        if(empty($hy)){
+            return Result::error('更新失败');
+        }
+        return Result::success($hy);
+    }
+    /**
+     * 删除行业分类
+     * @param array $data
+     * @return array
+    */
+    public function delJobIndustry(array $data):array
+    {
+        $hy_id = JobIndustry::where('hyid', $data['hyid'])->first(['hyid']);
+        if(empty($hy_id)){
+            return Result::error('行业分类不存在');
+        }
+        $hy = JobIndustry::where('hyid', $data['hyid'])->delete();
+        if(empty($hy)){
+            return Result::error('删除失败');
+        }
+        return Result::success($hy);
+    }
+    /**
+     * 职位分类-列表
+     * @param array $data
+     * @return array
+    */
+    public function getJobPositionList(array $data):array
+    {
+        $page = $data['page'] ?? 1;
+        $page_size = $data['page_size'] ?? 10;
+        if(isset($data['zwname']) && !empty($data['zwname'])){
+            $where = ['zwname', 'like', '%' . $data['zwname'] . '%'];
+        }else{
+            $where = [];
+        }
+        if($data['is_pid'] == 0){
+            $zwids = JobPosition::where('zwpid', 0)
+            ->when(!empty($where), function ($query) use ($where) {
+                $query->where([$where]); // 修复:将条件包装成二维数组
+            })
+            ->orderBy('updated_at', 'desc')
+            ->pluck('zwid');
+        }else{
+            $zwids = JobPosition::where('zwpid', '!=', 0)
+            ->when(!empty($where), function ($query) use ($where) {
+                $query->where([$where]); // 修复:将条件包装成二维数组
+            })
+            ->orderBy('updated_at', 'desc')
+            ->pluck('zwpid');
+            $zwids = array_values(array_unique($zwids->toArray()));
+        }
+        // return Result::success($rs_query);
+        $count =  JobPosition::whereIn('zwid', $zwids)->count();
+        $position =  JobPosition::whereIn('zwid', $zwids)
+        ->offset(($page - 1) * $page_size)
+        ->limit($page_size)->get()
+        ->map(function ($item) use ($data, $where) {
+            $item->children = $item->where('zwpid', $item->zwid)
+            ->when(!empty($where) && $data['is_pid'] == 1, function ($query) use ($where) {
+                $query->where([$where]); // 修复:将条件包装成二维数组
+            })
+            ->get();
+            return $item;
+        })
+        ->all();
+        $result = [
+            'count' => $count,
+            'list' => $position,
+        ];
+        if(empty($result)){
+            return Result::success('暂无数据');
+        }
+        return Result::success($result);
+    }
+
+
 }
 }

+ 41 - 0
app/JsonRpc/NewsServiceInterface.php

@@ -250,4 +250,45 @@ interface NewsServiceInterface
      * @return array
      * @return array
      */
      */
     public function getJobResumeList(array $data):array;
     public function getJobResumeList(array $data):array;
+    /**
+     * @param array $data
+     * @return array
+     */
+    // public function getJobApplyList(array $data):array;
+    /**
+     * @param array $data
+     * @return array
+     */
+    // public function getNoticeList(array $data):array;
+    /**
+     * @param array $data
+     * @return array
+     */
+    // public function getNoticeInfo(array $data):array;
+    // 行业分类管理  ------1121
+     /**
+     * @param array $data
+     * @return array
+     */
+    public function getJobIndustryList(array $data):array;
+    /**
+     * @param array $data
+     * @return array
+     */
+    public function addJobIndustry(array $data):array;
+    /**
+     * @param array $data
+     * @return array
+     */
+    public function upJobIndustry(array $data):array;
+    /**
+     * @param array $data
+     * @return array
+     */
+    public function delJobIndustry(array $data):array;
+    /**
+     * @param array $data
+     * @return array
+     */
+    public function getJobPositionList(array $data):array;
 }
 }