|
|
@@ -25,15 +25,15 @@ class OrderPackageReceivedSyncService
|
|
|
* 2 如果当前时间小于等于初始化时间,执行初始化脚本,将数据库中全部小于等于初始化时间的数据更新
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
- public function syncLogisticRoute($is_to_init = false)
|
|
|
+ public function syncLogisticRoute($is_to_init=false)
|
|
|
{
|
|
|
ini_set('max_execution_time', 2 * 60 * 60);
|
|
|
ini_set('memory_limit', '1024M');
|
|
|
LogService::log(OrderPackageReceivedSyncService::class, "同步快递信息定时方法", '');
|
|
|
$query = OrderPackage::query()
|
|
|
- ->select(['logistic_number', 'order_id', 'id'])
|
|
|
+ ->select(['logistic_number', 'order_id','id'])
|
|
|
->with(['order' => function ($query) {
|
|
|
- return $query->select(['id', 'logistic_id'])->with('logistic:id,name,code');
|
|
|
+ return $query->select(['id','logistic_id'])->with('logistic:id,name,code');
|
|
|
}]);
|
|
|
if ($is_to_init) {//当前时间小于等于初始化时间
|
|
|
$initDate = Carbon::parse(config('api_logistic.init_date'));
|
|
|
@@ -45,7 +45,7 @@ class OrderPackageReceivedSyncService
|
|
|
->whereNull('received_at');
|
|
|
}
|
|
|
$query->chunkById(1000, function ($orderPackages) {
|
|
|
- LogService::log(OrderPackageReceivedSyncService::class, "同步快递信息定时方法", json_encode(data_get($orderPackages, '*.logistic_number')));
|
|
|
+ LogService::log(OrderPackageReceivedSyncService::class, "同步快递信息定时方法", json_encode(data_get($orderPackages,'*.logistic_number')));
|
|
|
$logisticNumbers = $this->buildData($orderPackages);
|
|
|
//sf
|
|
|
if (array_key_exists('SF', $logisticNumbers)) {
|
|
|
@@ -85,68 +85,45 @@ class OrderPackageReceivedSyncService
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- public function syncLogisticRouteByAliJiSu()
|
|
|
- {
|
|
|
- ini_set('max_execution_time', 2 * 60 * 60);
|
|
|
- $query = OrderPackage::query()
|
|
|
- ->select(['logistic_number', 'order_id'])
|
|
|
- ->whereIn('order_id', function ($query) {
|
|
|
- $query->from('orders')->selectRaw('id')->whereIn('logistic_id', function ($builder) {
|
|
|
- $builder->from('logistics')->selectRaw('id')->where('type', '!=', '物流')->whereNotIn('belong_company', ['顺丰', '中通', '韵达', '圆通', '京东']);
|
|
|
- });
|
|
|
- });
|
|
|
- $query = $query->where('sent_at', '>=', now()->subDays(config('api_logistic.querying_days')))
|
|
|
- ->whereNull('received_at');
|
|
|
-
|
|
|
- $query->chunkById(200, function ($orderPackages) {
|
|
|
- LogService::log(OrderPackageReceivedSyncService::class, "同步快递信息定时方法-阿里公用接口", json_encode($orderPackages));
|
|
|
- foreach ($orderPackages as $orderPackage) {
|
|
|
- if ($orderPackage && $orderPackage->logistic_number) LogisticAliJiSuSync::dispatch($orderPackage->logistic_number);
|
|
|
- }
|
|
|
- });
|
|
|
- $this->syncLogisticRouteJD();
|
|
|
- }
|
|
|
-
|
|
|
- public function syncLogisticRouteJD()
|
|
|
- {
|
|
|
- ini_set('max_execution_time', 60);
|
|
|
- $query = OrderPackage::query()
|
|
|
- ->select(['logistic_number', 'order_id'])
|
|
|
- ->whereIn('order_id', function ($query) {
|
|
|
- $query->from('orders')->selectRaw('id')->whereIn('logistic_id', function ($builder) {
|
|
|
- $builder->from('logistics')->selectRaw('id')->where('type', '!=', '物流')->where('belong_company', '京东');
|
|
|
- });
|
|
|
- });
|
|
|
- $query = $query->where('created_at', '>=', now()->subDays(20))
|
|
|
- ->whereNull('received_at')->where('logistic_number', 'like', 'JD%');
|
|
|
- $query->chunk(200, function ($orderPackages) {
|
|
|
- LogService::log(OrderPackageReceivedSyncService::class, "同步快递信息定时方法-JD", json_encode($orderPackages));
|
|
|
- foreach ($orderPackages as $orderPackage) {
|
|
|
- if ($orderPackage && $orderPackage->logistic_number) LogisticAliJiSuSync::dispatch($orderPackage->logistic_number);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- public function syncLogisticRouteYTO()
|
|
|
- {
|
|
|
- ini_set('max_execution_time', 120);
|
|
|
- $query = OrderPackage::query()
|
|
|
- ->select(['logistic_number', 'order_id'])
|
|
|
- ->whereIn('order_id', function ($query) {
|
|
|
- $query->from('orders')->selectRaw('id')->whereIn('logistic_id', function ($builder) {
|
|
|
- $builder->from('logistics')->selectRaw('id')->where('type', '!=', '物流')->where('belong_company', '圆通');
|
|
|
- });
|
|
|
- });
|
|
|
- $query = $query->where('sent_at', '>=', now()->subDays(20))
|
|
|
- ->whereNull('received_at');
|
|
|
- $query->chunk(1000, function ($orderPackages) {
|
|
|
- LogService::log(OrderPackageReceivedSyncService::class, "同步快递信息定时方法-YTO", json_encode($orderPackages));
|
|
|
- foreach ($orderPackages as $orderPackage) {
|
|
|
- if ($orderPackage && $orderPackage->logistic_number) LogisticYTOSync::dispatch($orderPackage->logistic_number);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
+// public function syncLogisticRouteByAliJiSu()
|
|
|
+// {
|
|
|
+// ini_set('max_execution_time', 2 * 60 * 60);
|
|
|
+// $query = OrderPackage::query()
|
|
|
+// ->select(['logistic_number', 'order_id','id'])
|
|
|
+// ->whereIn('order_id',function ($query){
|
|
|
+// $query->from('orders')->selectRaw('id')->whereIn('logistic_id',function ($builder){
|
|
|
+// $builder->from('logistics')->selectRaw('id')->where('type','!=','物流')->whereNotIn('belong_company',['顺丰','中通','韵达','圆通','京东']);
|
|
|
+// });
|
|
|
+// });
|
|
|
+// $query = $query->where('sent_at', '>=', now()->subDays(config('api_logistic.querying_days')))
|
|
|
+// ->whereNull('received_at');
|
|
|
+//
|
|
|
+// $query->chunkById(200, function ($orderPackages) {
|
|
|
+// LogService::log(OrderPackageReceivedSyncService::class, "同步快递信息定时方法-阿里公用接口", json_encode($orderPackages));
|
|
|
+// foreach ($orderPackages as $orderPackage){
|
|
|
+// if ($orderPackage && $orderPackage->logistic_number)LogisticAliJiSuSync::dispatch($orderPackage->logistic_number);
|
|
|
+// }
|
|
|
+// });
|
|
|
+// $this->syncLogisticRouteJD();
|
|
|
+// }
|
|
|
+// public function syncLogisticRouteJD(){
|
|
|
+// ini_set('max_execution_time', 60);
|
|
|
+// $query = OrderPackage::query()
|
|
|
+// ->select(['logistic_number', 'order_id','id'])
|
|
|
+// ->whereIn('order_id',function ($query){
|
|
|
+// $query->from('orders')->selectRaw('id')->whereIn('logistic_id',function ($builder){
|
|
|
+// $builder->from('logistics')->selectRaw('id')->where('type','!=','物流')->where('belong_company','京东');
|
|
|
+// });
|
|
|
+// });
|
|
|
+// $query = $query->where('created_at', '>=', now()->subDays(config('api_logistic.querying_days')))
|
|
|
+// ->whereNull('received_at')->where('logistic_number','like','JD%');
|
|
|
+// $query->chunkById(200, function ($orderPackages) {
|
|
|
+// LogService::log(OrderPackageReceivedSyncService::class, "同步快递信息定时方法-JD", json_encode($orderPackages));
|
|
|
+// foreach ($orderPackages as $orderPackage){
|
|
|
+// if ($orderPackage && $orderPackage->logistic_number)LogisticAliJiSuSync::dispatch($orderPackage->logistic_number);
|
|
|
+// }
|
|
|
+// });
|
|
|
+// }
|
|
|
/**
|
|
|
* 根据传递的承运商与快递单号更新快递信息
|
|
|
* @param array $logisticNumbers 快递单号
|
|
|
@@ -237,7 +214,7 @@ class OrderPackageReceivedSyncService
|
|
|
try {
|
|
|
$logisticCode = $orderPackage->order->logistic->code;
|
|
|
} catch (Exception $e) {
|
|
|
- LogService::log(OrderPackageReceivedSyncService::class, "快递同步按照承运商分组异常", json_encode($orderPackage ?? []));
|
|
|
+ LogService::log(OrderPackageReceivedSyncService::class, "快递同步按照承运商分组异常", json_encode($orderPackage??[]));
|
|
|
continue;
|
|
|
}
|
|
|
$key = config('api_logistic.logistic.' . $logisticCode);
|