Browse Source

订单同步到卖家云之前查询收货人所在城市天气状况并更新到卖家备注当中

shensong 5 years ago
parent
commit
a7a822c7f9

+ 3 - 0
app/Console/Commands/SyncOrderToMj.php

@@ -46,6 +46,9 @@ class SyncOrderToMj extends Command {
46 46
             if(empty($thisOrder)){
47 47
                 continue;
48 48
             }
49
+            #新加逻辑 查询收件人所在城市天气情况并更新
50
+            Order::updateWeather($id);
51
+
49 52
             $res = $this->syncOrderToMj($id);
50 53
             if(!$res){
51 54
                 echo "\n订单ID:".$id." 同步失败";

+ 6 - 0
app/Http/Controllers/Admin/FxOrderController.php

@@ -1007,6 +1007,9 @@ class FxOrderController extends Controller
1007 1007
                 if($mjFlag == 1){    
1008 1008
                     //其他仓变C仓           
1009 1009
                     if(empty($mjOrder)){
1010
+                        #新加逻辑 查询收件人所在城市天气情况并更新
1011
+                        Order::updateWeather($id);
1012
+
1010 1013
                         $mj_in = $this->syncOrderToMj($id, $orderSkus);
1011 1014
                         if( $mj_in == false ){
1012 1015
                             throw new Exception("订单同步到卖家云失败");
@@ -1272,6 +1275,9 @@ class FxOrderController extends Controller
1272 1275
                 $today_date = date('Y-m-d');
1273 1276
                 #如果审核通过,c仓, 并且到预发货时间,同步卖家云
1274 1277
                 if($order->status == 2 && $order->warehouse == 3 && $order->delivery_date <= $today_date){
1278
+                    #新加逻辑 查询收件人所在城市天气情况并更新
1279
+                    Order::updateWeather($id);
1280
+
1275 1281
                     $syncMj = $this->syncOrderToMj($id);
1276 1282
                     if( $syncMj == false ){
1277 1283
                         throw new Exception("订单同步到卖家云失败");

+ 6 - 0
app/Http/Controllers/Admin/OrderController.php

@@ -1271,6 +1271,9 @@ class OrderController extends Controller
1271 1271
                 if($mjFlag == 1){    
1272 1272
                     //其他仓变C仓           
1273 1273
                     if(empty($mjOrder)){
1274
+                        #新加逻辑 查询收件人所在城市天气情况并更新
1275
+                        Order::updateWeather($id);
1276
+
1274 1277
                         $mj_in = $this->syncOrderToMj($id, $orderSkus);
1275 1278
                         if( $mj_in == false ){
1276 1279
                             throw new Exception("订单同步到卖家云失败");
@@ -1764,6 +1767,9 @@ class OrderController extends Controller
1764 1767
                 $today_date = date('Y-m-d');
1765 1768
                 #如果审核通过,c仓, 并且到预发货时间,同步卖家云
1766 1769
                 if($order->status == 2 && $order->warehouse == 3 && $order->delivery_date <= $today_date){
1770
+                    #新加逻辑 查询收件人所在城市天气情况并更新
1771
+                    Order::updateWeather($id);
1772
+
1767 1773
                     $syncMj = $this->syncOrderToMj($id);
1768 1774
                     if( $syncMj == false ){
1769 1775
                         throw new Exception("订单同步到卖家云失败");

+ 3 - 0
app/Http/Controllers/Api/OrderController.php

@@ -841,6 +841,9 @@ class OrderController extends Controller {
841 841
                 $today_date = date('Y-m-d');
842 842
                 #如果审核通过,c仓, 并且到预发货时间,同步卖家云
843 843
                 if($order->status == 2 && $order->warehouse == 3 && $order->delivery_date <= $today_date){
844
+                    #新加逻辑 查询收件人所在城市天气情况并更新
845
+                    Order::updateWeather($id);
846
+
844 847
                     $syncMj = $this->syncOrderToMj($id);
845 848
                     if( $syncMj == false ){
846 849
                         throw new Exception("订单同步到卖家云失败");

+ 48 - 0
app/Order.php

@@ -306,4 +306,52 @@ class Order extends Model
306 306
         $objWriter->save('php://output');  
307 307
         exit();
308 308
     }
309
+
310
+    /*更新城市天气信息*/
311
+    public static function updateWeather($order_id) {
312
+        $redisKey = 'seafood_order_city_weather';
313
+        $appKey = '32c8f844f8055f70f702fc28ec930e52';
314
+        //查询订单收件人所在的城市(过滤关键字 市)
315
+        $city = self::where('id', $order_id)->pluck('receiverCity');
316
+        $city = str_replace('市','',$city);
317
+        $specialCity = array('朝阳区','嘉定区','海淀区','昌平区','密云区','大兴区','房山区','通州区','普陀区',);
318
+        if(in_array($city, $specialCity)) {
319
+            $city = str_replace('区','',$city);
320
+        }
321
+        //查询redis中是否有该键,若没有则查询
322
+        $weather = RedisModel::get($redisKey.'_'.$city);
323
+        if($weather) {
324
+            $sellerMemo = self::where('id', $order_id)->pluck('sellerMemo');
325
+            $sellerMemo = $sellerMemo.'  '.$city.'天气状况:'.$weather;
326
+            self::where('id', $order_id)->update(['sellerMemo'=>$sellerMemo]);
327
+        } else {
328
+            $url = 'http://apis.juhe.cn/simpleWeather/query?city='.urlencode($city).'&key='.$appKey;
329
+            $result = file_get_contents($url);
330
+            $result = json_decode($result, true);
331
+            if($result['error_code'] == '0') {
332
+                //将数据缓存到redis里
333
+                $today = date('Y-m-d',time());
334
+                $tomorrow = date('Y-m-d',strtotime('+1 days'));
335
+                $weather = '';
336
+                foreach ($result['result']['future'] as $value) {
337
+                    if($value['date'] == $today) {
338
+                        $weather .= $today.'日气温:'.$value['temperature'].';  ';
339
+                    }
340
+                    if($value['date'] == $tomorrow) {
341
+                        $weather .= $tomorrow.'日气温:'.$value['temperature'];
342
+                    }
343
+                }
344
+
345
+                RedisModel::set($redisKey.'_'.$city, $weather);
346
+                $endTime = strtotime(date('Y-m-d 00:00:00',strtotime('+1 days'))) -1;
347
+                $expire = $endTime - time();
348
+                RedisModel::expire($redisKey.'_'.$city, $expire);
349
+                $sellerMemo = self::where('id', $order_id)->pluck('sellerMemo');
350
+                $sellerMemo = $sellerMemo.'  '.$city.'天气状况:'.$weather;
351
+                self::where('id', $order_id)->update(['sellerMemo'=>$sellerMemo]);
352
+            }
353
+        }
354
+
355
+        return true;
356
+    }
309 357
 }