Browse Source

订单导入,解析地址优化

wufeng 2 years ago
parent
commit
41b8db98e0
1 changed files with 25 additions and 4 deletions
  1. 25 4
      app/command/ImportOrderFromCAnalysisData.php

+ 25 - 4
app/command/ImportOrderFromCAnalysisData.php

@@ -274,11 +274,32 @@ class ImportOrderFromCAnalysisData extends Command
             if ($rs['addr']) {
                 $p_c_a = get_address($rs['addr']);
 
-                $province = Db::name('province')->where('name', $p_c_a['province'])->value('province_code', '');
-                $city = Db::name('city')->where(['name' => $p_c_a['city'], 'province_code' => $province])->value('city_code', '');
-                $area = Db::name('area')->where(['name' => $p_c_a['district'], 'city_code' => $city])->value('area_code', '');
+                $province = Db::name('province')
+                    ->field('province_code,name')
+                    ->where('name', $p_c_a['province'])
+                    ->findOrEmpty();
+
+                $city = Db::name('city')
+                    ->field('city_code,name')
+                    ->where(['name' => $p_c_a['city'], 'province_code' => $province['province_code'] ?? ''])
+                    ->findOrEmpty();
+                $area = Db::name('area')
+                    ->field('area_code,name')
+                    ->where(['name' => $p_c_a['district'], 'city_code' => $city['city_code'] ?? ''])
+                    ->findOrEmpty();
+
+                $extend_insert_data['addr_code'] = implode([$province['province_code'] ?? '', $city['city_code'] ?? '', $area['area_code'] ?? ''], ',');
+
+                //将地址中省市区部分替换掉
+                if (!empty($province) && $province['name'] !== '') {
+                    $extend_insert_data['addr'] = str_replace($province['name'], '', $extend_insert_data['addr']);
+                    if (!empty($city) && $city['name'] !== '') {
+                        $extend_insert_data['addr'] = str_replace($city['name'], '', $extend_insert_data['addr']);
+                        if (!empty($area) && $area['name'] != '') $extend_insert_data['addr'] = str_replace($area['name'], '', $extend_insert_data['addr']);
 
-                $extend_insert_data['addr_code'] = implode([$province, $city, $area], ',');
+                    }
+
+                }
 
 //                地址非必填,能解析就解析,解析不出来就不管了
 //                if (is_null($province) || is_null($city) || is_null($area)) {