فهرست منبع

同步开始时间不能大于现在,往前3分钟进行同步,可修改同步时间

dong025 1 هفته پیش
والد
کامیت
33254089ad

+ 29 - 30
app/admin/command/FengSu.php

@@ -65,6 +65,7 @@ class FengSu extends Command
         if ($resquet['code'] == 0) {
             $fengsu=[];
             $fengsu=Cache::get('fengsu');
+
             if (count($resquet['data']) > 0&&$resquet['data']['list']!=null&&!empty($resquet['data']['list'])) {
 
                 $fengsu_pageNum=$fengsu['pageNum'];
@@ -79,7 +80,7 @@ class FengSu extends Command
 
 
                 $list = $resquet['data']['list'];
-                
+                // dump($list);
                 // return;
                 $this->insertOrder($list);
                 //dump($resquet);
@@ -148,44 +149,42 @@ class FengSu extends Command
         }
         $fengsu=Cache::get('fengsu');
         
+        // 无数据时,获取数据的开始时间会大于现在的时间,这是一个错误的,会导致一直无法获取数据,开始时间一直往后
+        //当开始时间大于现在时间,将开始时间向前调整3分钟
+        $now_time = time();
+        if ($fengsu['startTime']>=$now_time||($now_time - $fengsu['startTime']) < ($start_end_space_time - $next_time_space)) {
+            $pre_time_stamp = $start_end_space_time - $next_time_space;
+            
+            $startTime_stamp = $now_time - $pre_time_stamp;
+            $endTime_stamp = $startTime_stamp + $start_end_space_time;
+            $fengsu = [
+                'startTime' => $startTime_stamp,
+                'endTime' => $endTime_stamp,
+                'pageNum' => 1,
+                'next_time_space' => $next_time_space
+            ];
+        }
+
         $startTime = date('Y-m-d H:i:s', $fengsu['startTime']);
         $endTime = date('Y-m-d H:i:s', $fengsu['endTime']);
         $pageNum=(int)$fengsu['pageNum'];
         
-        // $body = [
-        //     'startTime'    => $startTime,//时间区间
-        //     'endTime'    => $endTime,
-        //     'sort'         => 'CONSIGN_TIME',
-        //     'sortAsc'      => false,
-        //     'current'      => $pageNum,//页数
-        //     'size'         => 50,//每页多少条
-        //     'tradeStatus'  => 4,
-        //     'fromAccountId' => [],
-        //     'goodType'     => 2,
-        //     'goodsFlag'    => 2
-        // ];
-        $body=[
-            "goodType"=> 2,
-            "current"=> $pageNum,
-            "size"=>50,
-            "sort"=> "CONSIGN_TIME",
-            "sortAsc"=> false,
-            "tradeStatus"=> 4,
-            "timeType"=>2,
-            "skuOuterIdExact"=> false,
-            "skuPropExact"=> false,
-            "startTime"=>$startTime,
-            "endTime"=> $endTime,
-            "goodsFlag"=> 1,
-            "tradeSources"=> [],
-            "prepareShip"=>0
+        $body = [
+            'startTime'    => $startTime,//时间区间
+            'endTime'    => $endTime,
+            'sort'         => 'CONSIGN_TIME',
+            'sortAsc'      => true,
+            'current'      => $pageNum,//页数
+            'size'         => 50,//每页多少条
+            'tradeStatus'  => 2,
+            'fromAccountId' => [],
+            'goodType'     => 2,
+            'goodsFlag'    => 2
         ];
             // 'waybillNos'   => ['73589756512463']
         $body = json_encode($body);
         
         $request = new Request('POST', 'https://fsdy2.fengsutb.com/amount/ship-list-new', $headers, $body);
-        // $request = new Request('POST', 'https://fsdy2.fengsutb.com/trade/print-list', $headers, $body);
-        
         $res = $client->sendAsync($request)->wait();
         $json = [];
         if ($res->getStatusCode() == 200) {

+ 63 - 48
app/admin/command/JuShuiTan.php

@@ -59,36 +59,36 @@ class JuShuiTan extends Command
         $output->writeln('开始同步聚水潭订单');
         $resquet = $this->getOrderList('dy');
         if ($resquet['success']) {
-            $jushuitan=[];
-            $jushuitan=Cache::get('jushuitan');
+            $jushuitan = [];
+            $jushuitan = Cache::get('jushuitan');
 
             if (count($resquet['data']) > 0&&$resquet['data']!=null&&!empty($resquet['data'])) {
 
-                
 
-                $jushuitan_pageNum=$jushuitan['pageNum'];
-                $jushuitan_pageNum=$jushuitan_pageNum+1;
-                $jushuitan=[
-                    'startTime'=>$jushuitan['startTime'],
-                    'endTime'=>$jushuitan['endTime'],
-                    'pageNum'=>$jushuitan_pageNum,
-                    'next_time_space'=>$jushuitan['next_time_space']
+
+                $jushuitan_pageNum = $jushuitan['pageNum'];
+                $jushuitan_pageNum = $jushuitan_pageNum + 1;
+                $jushuitan = [
+                    'startTime' => $jushuitan['startTime'],
+                    'endTime' => $jushuitan['endTime'],
+                    'pageNum' => $jushuitan_pageNum,
+                    'next_time_space' => $jushuitan['next_time_space']
                 ];
-                Cache::set('jushuitan',$jushuitan);
-                
+                Cache::set('jushuitan', $jushuitan);
+
                 $list = $resquet['data'];
                 // dump($list);
                 // return;
                 $this->insertOrder($list);
                 //dump($resquet);
             } else {
-                $jushuitan=[
-                    'startTime'=>$jushuitan['startTime']+$jushuitan['next_time_space'],
-                    'endTime'=>$jushuitan['endTime']+$jushuitan['next_time_space'],
-                    'pageNum'=>1,
-                    'next_time_space'=>$jushuitan['next_time_space']
+                $jushuitan = [
+                    'startTime' => $jushuitan['startTime'] + $jushuitan['next_time_space'],
+                    'endTime' => $jushuitan['endTime'] + $jushuitan['next_time_space'],
+                    'pageNum' => 1,
+                    'next_time_space' => $jushuitan['next_time_space']
                 ];
-                Cache::set('jushuitan',$jushuitan);
+                Cache::set('jushuitan', $jushuitan);
 
                 $output->writeln('没有数据');
             }
@@ -112,11 +112,11 @@ class JuShuiTan extends Command
             'Authorization' => site_config('addonsd.ju_shui_tan_authorization_toke'),
             'Content-Type' => ' application/json'
         ];
-        
+
         //时间间隔
-        $start_end_space_time=10*60;
+        $start_end_space_time = 10 * 60;
         //下一次时间间隔
-        $next_time_space=7*60;
+        $next_time_space = 7 * 60;
 
 
         //将查询分为,"2026-01-05 00:00:00~2026-01-05 00:05:00",查询该区间的订单,但是该时间区间单独数量可能超过50条,为了性能又不能一次性查询太多,从而进行分页查询,
@@ -125,27 +125,43 @@ class JuShuiTan extends Command
 
         $startTime_stamp = strtotime($todayTime . ' 00:00:00');
         // $startTime_stamp = strtotime($todayTime . ' 07:20:00');
-        $endTime_stamp=$startTime_stamp+$start_end_space_time;
-        $pageNum=1;
-
-        $jushuitan=[
-            'startTime'=>$startTime_stamp,
-            'endTime'=>$endTime_stamp,
-            'pageNum'=>$pageNum,
-            'next_time_space'=>$next_time_space
+        $endTime_stamp = $startTime_stamp + $start_end_space_time;
+        $pageNum = 1;
+
+        $jushuitan = [
+            'startTime' => $startTime_stamp,
+            'endTime' => $endTime_stamp,
+            'pageNum' => $pageNum,
+            'next_time_space' => $next_time_space
         ];
 
-        $jushuitan_cache_data=Cache::get('jushuitan');
+        $jushuitan_cache_data = Cache::get('jushuitan');
+
+        if (empty($jushuitan_cache_data) || $jushuitan_cache_data == null) {
+            Cache::set('jushuitan', $jushuitan);
+        }
+        $jushuitan = Cache::get('jushuitan');
         
-        if(empty($jushuitan_cache_data)||$jushuitan_cache_data==null){
-            Cache::set('jushuitan',$jushuitan);
+        // 无数据时,获取数据的开始时间会大于现在的时间,这是一个错误的,会导致一直无法获取数据,开始时间一直往后
+        //当开始时间大于现在时间,将开始时间向前调整3分钟
+        $now_time = time();
+        if ($jushuitan['startTime']>=$now_time||($now_time - $jushuitan['startTime']) < ($start_end_space_time - $next_time_space)) {
+            // dump("超时了");
+            $pre_time_stamp = $start_end_space_time - $next_time_space;
+            
+            $startTime_stamp = $now_time - $pre_time_stamp;
+            $endTime_stamp = $startTime_stamp + $start_end_space_time;
+            $jushuitan = [
+                'startTime' => $startTime_stamp,
+                'endTime' => $endTime_stamp,
+                'pageNum' => 1,
+                'next_time_space' => $next_time_space
+            ];
         }
-        $jushuitan=Cache::get('jushuitan');
-
         $startTime = date('Y-m-d H:i:s', $jushuitan['startTime']);
         $endTime = date('Y-m-d H:i:s', $jushuitan['endTime']);
-        $pageNum=(int)$jushuitan['pageNum'];
-
+        $pageNum = (int)$jushuitan['pageNum'];
+        // dump($startTime);
         $body = [
             'startTime'     => $startTime,     // 动态时间变量
             'endTime'       => $endTime,       // 动态时间变量
@@ -155,12 +171,12 @@ class JuShuiTan extends Command
             'upSendFailed'  => false,          // 布尔值保持原始类型
             'isExceptAddress' => 'Except',
             'pageNum'       => (int)$pageNum,  //当前页数
-            'pageSize'      => 50,//每页数据多少
-            'searchType'    => 1,       
-            'orderStatus'   => ['Sent'] 
+            'pageSize'      => 50, //每页数据多少
+            'searchType'    => 1,
+            'orderStatus'   => ['Sent']
         ];
         $body = json_encode($body);
-        
+
         // "orderStatus": [
         //         "Sent"
         //     ]
@@ -199,25 +215,25 @@ class JuShuiTan extends Command
             // 升序排序(从旧到新)可改为:
             return $timeA - $timeB;
         });
-        $shopDelivery_list=[];
+        $shopDelivery_list = [];
         foreach ($order_list as $item) {
-            if (substr($item['trackNo'], 0, 1) === '@') continue;//同风速的,带@直接跳过
+            if (substr($item['trackNo'], 0, 1) === '@') continue; //同风速的,带@直接跳过
             // dump($item['shopId'], '店铺id');
             // 防止重复记录,订单号+快递单号
             $goods_id = $item['disInnerOrderGoodsViewList'][0]['shopIid'];
 
             $oid = $item['oid'];
-            $sku_id=$item['disInnerOrderGoodsViewList'][0]['shopSkuId'];
+            $sku_id = $item['disInnerOrderGoodsViewList'][0]['shopSkuId'];
             // $waybill_no = ltrim($item['trackNo'], '@');
-            $waybill_no=$item['trackNo'];
+            $waybill_no = $item['trackNo'];
             if (empty($waybill_no)) continue;
             $add_status = JuShuiTanService::prevent_duplicate_additions($sku_id, $waybill_no);
             if ($add_status) continue;
             // $status = JuShuiTanService::getAdditionalPrice($shopList, $importSku, $productConfig, $shopDelivery, $customerSpec, $item);
             $res = JuShuiTanService::getAdditionalPrice($shopList, $importSku, $productConfig, $shopDelivery, $customerSpec, $item);
-           
-            $status=$res['status'];
-            $shopDelivery_list[]=$res['shopDelivery'];
+
+            $status = $res['status'];
+            $shopDelivery_list[] = $res['shopDelivery'];
 
             $getPackSpecsFee = JuShuiTanService::getPackSpecsFee($importSku, $item['shopId'], $item['disInnerOrderGoodsViewList'][0]['shopSkuId'], $item['receiverState']);
 
@@ -246,7 +262,6 @@ class JuShuiTan extends Command
                 'two_surcharge_money'        => $getPackSpecsFee['two_surcharge_money'],
                 'order_status'   => $item['disInnerOrderGoodsViewList'][0]['status'],
             ];
-            
         }
         // 保存到数据库
         $shopDelivery->saveAll($shopDelivery_list);

+ 6 - 0
app/admin/controller/goods/ImportList.php

@@ -406,6 +406,9 @@ class ImportList extends Backend
         //查询不到数据,就往下一个时间区间查询
 
         $startTime_stamp = strtotime($params['startTime']);
+        if((time()-$startTime_stamp)<=3*60){
+             $this->error(__('开始时间3分钟之前'));
+        }
         $endTime_stamp=$startTime_stamp+$start_end_space_time;
         $pageNum=1;
 
@@ -458,6 +461,9 @@ class ImportList extends Backend
         //查询不到数据,就往下一个时间区间查询
 
         $startTime_stamp = strtotime($params['startTime']);
+        if((time()-$startTime_stamp)<=3*60){
+             $this->error(__('开始时间3分钟之前'));
+        }
         $endTime_stamp=$startTime_stamp+$start_end_space_time;
         $pageNum=1;
 

+ 1 - 1
app/admin/view/goods/import_list/index.html

@@ -88,7 +88,7 @@
                 { field: "one_surcharge_money", title: "单层保温金额", operate: false },
                 { field: "two_surcharge_money", title: "双层保温金额", operate: false },
                 // {field:"weight",title:"重量(斤)",operate: false},
-                { field: "consign_time", title: "发货时间", operate: "daterange", formatter: Yunqi.formatter.datetime },
+                { field: "consign_time", title: "发货时间", operate: "daterange", formatter: Yunqi.formatter.datetime,sortable: true },
 
                 // {field:"user_id",title:"录入人",operate: false},
                 { field: "createtime", title: "创建时间", operate: false, formatter: Yunqi.formatter.datetime },

+ 11 - 0
app/admin/view/goods/import_list/set_fengsu.html

@@ -52,6 +52,17 @@
                     })
                     return;
                 }
+                let startTime_tamp = new Date(this.startTime); 
+                startTime_tamp=startTime_tamp.getTime()/ 1000
+
+                let now_tamp = Math.floor(Date.now() / 1000);
+                if((now_tamp-startTime_tamp)<=3*60){
+                    ElementPlus.ElMessage({
+                        type: 'warning',
+                        message: '开始时间3分钟之前',
+                    })
+                    return;
+                }
                 ElementPlus.ElMessageBox.confirm(
                     '请确认开始同步的时间!',
                     '提示',

+ 18 - 7
app/admin/view/goods/import_list/set_jushuitan.html

@@ -4,7 +4,7 @@
             <template #default>
 
                 <div class="el-form-item__label">
-                    <label for="" style="width: 140px;">请选择开始同步时间:</label>
+                    <label for="" style="width: 140px;">请选择开始同步时间(3分钟之前):</label>
                     <el-date-picker v-model="startTime" type="datetime" format="YYYY-MM-DD HH:mm:ss"
                         value-format="YYYY-MM-DD HH:mm:ss" />
                 </div>
@@ -52,6 +52,17 @@
                     })
                     return;
                 }
+                let startTime_tamp = new Date(this.startTime); 
+                startTime_tamp=startTime_tamp.getTime()/ 1000
+
+                let now_tamp = Math.floor(Date.now() / 1000);
+                if((now_tamp-startTime_tamp)<=3*60){
+                    ElementPlus.ElMessage({
+                        type: 'warning',
+                        message: '开始时间3分钟之前',
+                    })
+                    return;
+                }
                 ElementPlus.ElMessageBox.confirm(
                     '请确认开始同步的时间!',
                     '提示',
@@ -66,21 +77,21 @@
                             startTime: this.startTime
                         }
                         Yunqi.ajax.post('goods/import_list/set_jushuitan', data, false, false, true).then(res => {
-                          
+
                             if (res.code == 200) {
                                 ElementPlus.ElMessage.success(res.msg)
-                            }else{
+                            } else {
                                 ElementPlus.ElMessage.error(res.msg)
                             }
                             setTimeout(() => {
-                            Yunqi.api.closelayer(Yunqi.app.window.id, true);
-                            
-                        }, 1000);
+                                Yunqi.api.closelayer(Yunqi.app.window.id, true);
+
+                            }, 1000);
                         })
 
                     })
                     .catch(() => {
-                        
+
                     })
 
             },