WIN-2308041133\Administrator 1 天之前
父节点
当前提交
b30f257057
共有 1 个文件被更改,包括 98 次插入107 次删除
  1. 98 107
      app/model/api/User.php

+ 98 - 107
app/model/api/User.php

@@ -264,67 +264,116 @@ class User extends BaseModel
     {
     {
         $post["pageSize"] = $post["pageSize"] > 50 ? 50 : (int)$post["pageSize"];
         $post["pageSize"] = $post["pageSize"] > 50 ? 50 : (int)$post["pageSize"];
         $post["page"] = $post["page"] <= 0 ? 1 : (int)$post["page"];
         $post["page"] = $post["page"] <= 0 ? 1 : (int)$post["page"];
+
+        // 判断是否使用了新搜索条件
+        $hasNewCondition = !empty($post['servicePrice'])
+            || !empty($post['timetype'])
+            || $post['is_china'] !== ''
+            || (!empty($post["service_area"]) && is_array($post["service_area"]));
+
         $where = [];
         $where = [];
         $where[] = ["u.work_type_id", ">", 0];
         $where[] = ["u.work_type_id", ">", 0];
         $where[] = ["u.status", "=", 1];
         $where[] = ["u.status", "=", 1];
         if (!empty($post['work_type_id'])) {
         if (!empty($post['work_type_id'])) {
             $where[] = ["u.work_type_id", "=", $post['work_type_id']];
             $where[] = ["u.work_type_id", "=", $post['work_type_id']];
         }
         }
-        if ($post['servicePrice'] > 0) {
-            $where[] = ["a.service_min_price", "<=", $post['servicePrice']];
-        }
-        if (!empty($post['timetype'])) {
-            $where[] = ["a.service_type", "=", $post['timetype']];
-        }
-        if ($post['is_china'] != '') {
-            $where[] = ["a.is_china", '=', $post['is_china']];
-        }
 
 
-        $cityModel = new CityModel();
-        $serviceAreaWhere = null;
-        if (!empty($post["service_area"]) && is_array($post["service_area"])) {
-            $cityIds = [];
-            foreach ($post["service_area"] as $v) {
-                $stc = str_replace(['省', '市', '区', '县'], ['', '', '', ''], $v);
-                $str = str_replace(['辖'], ['市辖'], $stc);
-                $arr = explode(",", $str);
-                $city_id = $cityModel->where('merger_name', 'like', "%" . $arr[1] . "," . $arr[2])->value('id');
-                if (!$city_id) $city_id = $cityModel->where('merger_name', 'like', "%" . $arr[0] . "," . $arr[1])->value('id');
-                if ($city_id) $cityIds[] = $city_id;
+        if ($hasNewCondition) {
+            // 使用新搜索条件的逻辑
+            if ($post['servicePrice'] > 0) {
+                $where[] = ["a.service_min_price", "<=", $post['servicePrice']];
             }
             }
-            if (!empty($cityIds)) {
-                $cityIdStr = implode(',', $cityIds);
-                $serviceAreaWhere = function ($query) use ($cityIdStr) {
-                    foreach (explode(',', $cityIdStr) as $cid) {
-                        $query->whereOr('find_in_set(' . intval($cid) . ',a.service_area)');
-                    }
-                };
+            if (!empty($post['timetype'])) {
+                $where[] = ["a.service_type", "=", $post['timetype']];
+            }
+            if ($post['is_china'] != '') {
+                $where[] = ["a.is_china", '=', $post['is_china']];
             }
             }
-        }
 
 
-        $totalModel = $this->alias("u")->leftJoin("info_audit a", "u.uid=a.uid")->where($where);
-        if ($serviceAreaWhere) {
-            $totalModel->where($serviceAreaWhere);
-        }
-        $totalCount = $totalModel->count();
+            $cityModel = new CityModel();
+            $serviceAreaWhere = null;
+            if (!empty($post["service_area"]) && is_array($post["service_area"])) {
+                $cityIds = [];
+                foreach ($post["service_area"] as $v) {
+                    $stc = str_replace(['省', '市', '区', '县'], ['', '', '', ''], $v);
+                    $str = str_replace(['辖'], ['市辖'], $stc);
+                    $arr = explode(",", $str);
+                    $city_id = $cityModel->where('merger_name', 'like', "%" . $arr[1] . "," . $arr[2])->value('id');
+                    if (!$city_id) $city_id = $cityModel->where('merger_name', 'like', "%" . $arr[0] . "," . $arr[1])->value('id');
+                    if ($city_id) $cityIds[] = $city_id;
+                }
+                if (!empty($cityIds)) {
+                    $cityIdStr = implode(',', $cityIds);
+                    $serviceAreaWhere = function ($query) use ($cityIdStr) {
+                        foreach (explode(',', $cityIdStr) as $cid) {
+                            $query->whereOr('find_in_set(' . intval($cid) . ',a.service_area)');
+                        }
+                    };
+                }
+            }
 
 
-        $data = null;
-        if ($totalCount > 0) {
-            $dataModel = $this
-                ->alias("u")
-                ->field("u.uid,IFNULL(u.longitude,0) as longitude,IFNULL(u.latitude,0) as latitude,ut.show_template_id,a.ancestral_place,a.status as is_type_audit,a.name,a.avatar,a.birthday,a.service_project")
-                ->leftJoin("info_audit a", "u.uid=a.uid and a.status = 1 and a.is_show = 1")
-                ->leftJoin("user_show_template ut", "ut.uid  = u.uid and ut.is_default = 1")
-                ->where($where);
+            $totalModel = $this->alias("u")->leftJoin("info_audit a", "u.uid=a.uid")->where($where);
             if ($serviceAreaWhere) {
             if ($serviceAreaWhere) {
-                $dataModel->where($serviceAreaWhere);
+                $totalModel->where($serviceAreaWhere);
+            }
+            $totalCount = $totalModel->count();
+
+            $data = null;
+            if ($totalCount > 0) {
+                $dataModel = $this
+                    ->alias("u")
+                    ->field("u.uid,IFNULL(u.longitude,0) as longitude,IFNULL(u.latitude,0) as latitude,ut.show_template_id,a.ancestral_place,a.status as is_type_audit,a.name,a.avatar,a.birthday,a.service_project")
+                    ->leftJoin("info_audit a", "u.uid=a.uid and a.status = 1 and a.is_show = 1")
+                    ->leftJoin("user_show_template ut", "ut.uid  = u.uid and ut.is_default = 1")
+                    ->where($where);
+                if ($serviceAreaWhere) {
+                    $dataModel->where($serviceAreaWhere);
+                }
+                $data = $dataModel->order("u.show_temp_seq", "desc")
+                    ->order("u.uid", "desc")
+                    ->page($post["page"], $post["pageSize"])
+                    ->select();
+                if (!empty($data)) {
+                    $data = $data->toArray();
+                    $infoAuditDb = new InfoAudit();
+                    foreach ($data as $k => $v) {
+                        $item = [
+                            "name" => "",
+                            "avatar" => "",
+                            "age" => "",
+                            "service_project_ar" => [],
+                            "user_work_type_title" => "",
+                            "service_area_all" => [],
+                            "birthday" => ""
+                        ];
+                        $infoData = $infoAuditDb->getItem(["status" => 1, "uid" => $v["uid"]]);
+                        if (!empty($infoData)) {
+                            foreach ($item as $k2 => $v2) {
+                                $item[$k2] = $infoData[$k2];
+                            }
+                        }
+                        $data[$k] = array_merge($v, $item);
+                    }
+                }
             }
             }
-            $data = $dataModel->order("u.show_temp_seq", "desc")
-                ->order("u.uid", "desc")
-                ->page($post["page"], $post["pageSize"])
-                ->select();
-            if (!empty($data)) {
-                $data = $data->toArray();
+        } else {
+            // 老代码逻辑,无新搜索条件时使用
+            $totalCount = $this->alias("u")->where($where)->count();
+            $data = null;
+            if ($totalCount > 0) {
+                $data = $this
+                    ->alias("u")
+                    ->field("u.uid,IFNULL(u.longitude,0) as longitude,IFNULL(u.latitude,0) as latitude,ut.show_template_id,a.ancestral_place,a.status as is_type_audit")
+                    ->leftJoin("info_audit a", "u.uid=a.uid")
+                    ->leftJoin("user_show_template ut", "ut.uid  = u.uid and ut.is_default = 1")
+                    ->where($where)
+                    ->order("u.show_temp_seq", "desc")
+                    ->order("u.uid", "desc")
+                    ->page($post["page"], $post["pageSize"])
+                    ->select();
+                if (!empty($data)) {
+                    $data = $data->toArray();
+                }
                 $infoAuditDb = new InfoAudit();
                 $infoAuditDb = new InfoAudit();
                 foreach ($data as $k => $v) {
                 foreach ($data as $k => $v) {
                     $item = [
                     $item = [
@@ -346,68 +395,10 @@ class User extends BaseModel
                 }
                 }
             }
             }
         }
         }
+
         $data = empty($data) ? [] : $data;
         $data = empty($data) ? [] : $data;
         return ["list" => $data, "pageSize" => $post["pageSize"], "page" => $post["page"], "totalCount" => $totalCount];
         return ["list" => $data, "pageSize" => $post["pageSize"], "page" => $post["page"], "totalCount" => $totalCount];
     }
     }
-//    /**
-//     * 获取小程序在职展示列表
-//     * @return type
-//     */
-//    public function getApiWorkerList($post)
-//    {
-//        $post["pageSize"] = $post["pageSize"] > 50 ? 50 : (int)$post["pageSize"];
-//        $post["page"] = $post["page"] <= 0 ? 1 : (int)$post["page"];
-//        $where = [];
-//        $where[] = ["u.work_type_id", ">", 0];
-//        $where[] = ["u.status", "=", 1];
-//        if (!empty($post['work_type_id'])) {
-//            $where[] = ["u.work_type_id", "=", $post['work_type_id']];
-//        }
-//        $totalCount = $this->alias("u")->where($where)->count();
-//        $data = null;
-//        if ($totalCount > 0) {
-//            $data = $this
-//                ->alias("u")
-//                ->field("u.uid,IFNULL(u.longitude,0) as longitude,IFNULL(u.latitude,0) as latitude,ut.show_template_id,a.ancestral_place,a.status as is_type_audit")
-//                ->leftJoin("info_audit a", "u.uid=a.uid")
-//                ->leftJoin("user_show_template ut", "ut.uid  = u.uid and ut.is_default = 1")//默认模板
-//                ->where($where)
-//                ->order("u.show_temp_seq", "desc")
-//                ->order("u.uid", "desc")
-//                ->page($post["page"], $post["pageSize"])
-//                ->select();
-//            if (!empty($data)) {
-//                $data = $data->toArray();
-//            }
-//            $infoAuditDb = new InfoAudit();
-//            foreach ($data as $k => $v) {
-//                $item = [
-//                    "name" => "",
-//                    "avatar" => "",
-//                    "age" => "",
-//                    "service_project_ar" => [],
-//                    "user_work_type_title" => "",
-//                    "service_area_all" => [],
-//                    "birthday" => ""
-//                ];
-//                $infoData = $infoAuditDb->getItem(["status" => 1, "uid" => $v["uid"]]);
-//                if (!empty($infoData)) {
-//                    foreach ($item as $k2 => $v2) {
-//                        $item[$k2] = $infoData[$k2];
-//                    }
-//                }
-//                $data[$k] = array_merge($v, $item);
-//            }
-//        }
-////        $datatwo = [];
-////        foreach($data as $v){
-////            if($v['is_show'] == 1){
-////                $datatwo[] = $v;
-////            }
-////        }
-//        $data = empty($data) ? [] : $data;
-//        return ["list" => $data, "pageSize" => $post["pageSize"], "page" => $post["page"], "totalCount" => $totalCount];
-//    }
 
 
     /**
     /**
      * 获取小程序在职展示列表
      * 获取小程序在职展示列表