소스 검색

fix(address): 修复地址区域匹配问题

- 将省市区街道名称查询从精确匹配改为模糊匹配
- 使用 whereLike 替代 where 条件提升地址匹配准确性
- 解决因名称不完全匹配导致的区域ID获取失败问题
shichen 2 달 전
부모
커밋
3d35c5edff
1개의 변경된 파일4개의 추가작업 그리고 4개의 파일을 삭제
  1. 4 4
      app/common/repositories/user/UserAddressRepository.php

+ 4 - 4
app/common/repositories/user/UserAddressRepository.php

@@ -234,7 +234,7 @@ class UserAddressRepository extends BaseRepository
234 234
         // 查询省份 id (level = 1),未查到返回 0
235 235
         if (!empty($data['province'])) {
236 236
             $province = \think\facade\Db::name('regions')
237
-                ->where('name', $data['province'])
237
+                ->whereLike('name', '%' . $data['province'] . '%')
238 238
                 ->where('level', 1)
239 239
                 ->find();
240 240
             $provinceId = $province ? (int)$province['id'] : 0;
@@ -244,7 +244,7 @@ class UserAddressRepository extends BaseRepository
244 244
         // 查询城市 id (level = 2),未查到返回 0
245 245
         if (!empty($data['city'])) {
246 246
             $city = \think\facade\Db::name('regions')
247
-                ->where('name', $data['city'])
247
+                ->whereLike('name', '%' . $data['city'] . '%')
248 248
                 ->where('level', 2)
249 249
                 ->find();
250 250
             $cityId = $city ? (int)$city['id'] : 0;
@@ -254,7 +254,7 @@ class UserAddressRepository extends BaseRepository
254 254
         // 查询区/县 id (level = 3),未查到返回 0
255 255
         if (!empty($data['district'])) {
256 256
             $district = \think\facade\Db::name('regions')
257
-                ->where('name', $data['district'])
257
+                ->whereLike('name', '%' . $data['district'] . '%')
258 258
                 ->where('level', 3)
259 259
                 ->find();
260 260
             $districtId = $district ? (int)$district['id'] : 0;
@@ -264,7 +264,7 @@ class UserAddressRepository extends BaseRepository
264 264
         // 查询街道/乡镇 id (level = 4),未查到返回 0
265 265
         if (!empty($data['street'])) {
266 266
             $street = \think\facade\Db::name('regions')
267
-                ->where('name', $data['street'])
267
+                ->whereLike('name', '%' . $data['street'] . '%')
268 268
                 ->where('level', 4)
269 269
                 ->find();
270 270
             $streetId = $street ? (int)$street['id'] : 0;