|
|
@@ -12,6 +12,7 @@ use App\Order;
|
|
|
use App\OrderIssue;
|
|
|
use App\Owner;
|
|
|
use App\OwnerFeeDetail;
|
|
|
+use App\Province;
|
|
|
use App\RejectedBill;
|
|
|
use App\Services\common\BatchUpdateService;
|
|
|
use App\Services\common\DataHandlerService;
|
|
|
@@ -607,10 +608,7 @@ class OrderService
|
|
|
}
|
|
|
|
|
|
public function pushQueue($orderHeaders){
|
|
|
- $orders = Order::query()->with(["logistic","packages.commodities.commodity"])
|
|
|
- ->where('wms_status','订单完成')
|
|
|
- ->whereIn('code',data_get($orderHeaders,'*.orderno'))
|
|
|
- ->get();
|
|
|
+ $orders = Order::query()->with(["logistic","packages.commodities.commodity"])->where('wms_status','订单完成')->whereIn('code',data_get($orderHeaders,'*.orderno'))->get();
|
|
|
$orders->each(function($order){
|
|
|
dispatch(new OrderCreateInstantBill($order));
|
|
|
});
|
|
|
@@ -661,8 +659,9 @@ class OrderService
|
|
|
|
|
|
unset($owners,$logistics,$shops,$warehouses,$batches);
|
|
|
// 转换插入 3s
|
|
|
+ $this->pushOrderCreatedCountCache($created_params);
|
|
|
if(count($created_params) > 0){
|
|
|
- collect($created_params)->chunk(3500)->each(function($inner_params){
|
|
|
+ collect($created_params)->chunk(1000)->each(function($inner_params){
|
|
|
$arr = $inner_params->toArray();
|
|
|
$this->insert($arr);
|
|
|
dispatch(new OrderFreeze($arr));
|
|
|
@@ -677,6 +676,7 @@ class OrderService
|
|
|
});
|
|
|
unset($update_order);
|
|
|
if(count($update_params)==0)return;
|
|
|
+ $this->pushOrderUpdatedCountCache($orders,$update_params);
|
|
|
$this->batchUpdate($update_params);
|
|
|
dispatch(new OrderFreeze($update_params));
|
|
|
unset($update_params);
|
|
|
@@ -1047,10 +1047,10 @@ class OrderService
|
|
|
$commodities = array_merge($commodities,$package->commodities->toArray());
|
|
|
|
|
|
if ($logistic_fee!==null){
|
|
|
- $provinceName = $order->province;
|
|
|
+ $provinceName = mb_substr($order->province,0,2);
|
|
|
$province = app(CacheService::class)->getOrExecute("province_".$provinceName,function ()use($provinceName){
|
|
|
- return app("ProvinceService")->first(["name"=>$provinceName]);
|
|
|
- },60);
|
|
|
+ return Province::query()->where("name","like",$provinceName."%")->first();
|
|
|
+ },86400);
|
|
|
if (!$province)$logistic_fee = null;
|
|
|
|
|
|
$fee = $service->matching($package->weight, $order->owner_id, $order->logistic_id, $province->id);
|
|
|
@@ -1104,4 +1104,68 @@ class OrderService
|
|
|
return $count->c;
|
|
|
}
|
|
|
|
|
|
+ public function pushOrderUpdatedCountCache($orders,$update_params)
|
|
|
+ {
|
|
|
+ /** @var DataHandlerService $dataHandlerService */
|
|
|
+ $dataHandlerService = app(DataHandlerService::class);
|
|
|
+ $order_map = $dataHandlerService->dataHeader(['code'],$orders);
|
|
|
+ $owner_map = [];
|
|
|
+ $month_begin =date('Y-m-01 00:00:00');
|
|
|
+ foreach ($update_params as $update_param) {
|
|
|
+ if(!($update_param['wms_status'] ?? false) || $update_param['wms_status']!='订单完成')continue;
|
|
|
+ $wms_EditTime = \Illuminate\Support\Carbon::parse($update_param['wms_edittime']);
|
|
|
+ if($wms_EditTime->isBefore($month_begin))continue;
|
|
|
+ $owner_id = $update_param['owner_id'] ?? false;
|
|
|
+ if(!$owner_id)continue;
|
|
|
+ $order = $dataHandlerService->getKeyValue(['code'=>$update_param['code']],$order_map);
|
|
|
+ if(!$order)continue;
|
|
|
+ if($order['wms_status'] ==='订单完成')continue;
|
|
|
+ if(!array_key_exists($owner_id,$owner_map))$owner_map[$owner_id]=1;
|
|
|
+ else $owner_map[$owner_id]+=1;
|
|
|
+ }
|
|
|
+ foreach ($owner_map as $owner_id=>$count) {
|
|
|
+ $this->setCurrentFinishedOrders_byOwnerId($owner_id,$count);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function pushOrderCreatedCountCache($created_params)
|
|
|
+ {
|
|
|
+ $owner_map=[];
|
|
|
+ $month_begin =date('Y-m-01 00:00:00');
|
|
|
+ foreach ($created_params as $created_param) {
|
|
|
+ $owner_id = $created_param['owner_id'] ?? false;
|
|
|
+ $wms_EditTime = \Illuminate\Support\Carbon::parse($created_param['wms_edittime']);
|
|
|
+ if($wms_EditTime->isBefore($month_begin))continue;
|
|
|
+ if(!$owner_id)continue;
|
|
|
+ if($created_param['wms_status']!=='订单完成')continue;
|
|
|
+ if(!array_key_exists($owner_id,$owner_map)) $owner_map[$owner_id]=1;
|
|
|
+ else $owner_map[$owner_id]+=1;
|
|
|
+ }
|
|
|
+ foreach ($owner_map as $owner_id=>$count) {
|
|
|
+ $this->setCurrentFinishedOrders_byOwnerId($owner_id,$count);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private function setCurrentFinishedOrders_byOwnerId($id,$count,$cancelCount = 0)
|
|
|
+ {
|
|
|
+ $sum = Cache::get("order_count_ownerId_{$id}",function()use($id){
|
|
|
+ return Order::query()
|
|
|
+ ->where('owner_id',$id)
|
|
|
+ ->where('wms_status','订单完成')
|
|
|
+ ->where('wms_edittime','>=',date('Y-m-01 00:00:00'))->count();
|
|
|
+ });
|
|
|
+ $sum += $count;
|
|
|
+ $sum -= $cancelCount;
|
|
|
+ Cache::put("order_count_ownerId_{$id}",$sum,date('Y-m-t 23:59:59'));
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getCurrentFinishedOrders_byOwnerId($id): int
|
|
|
+ {
|
|
|
+ return Cache::get("order_count_ownerId_{$id}",function()use($id){
|
|
|
+ return Order::query()->where('owner_id',$id)
|
|
|
+ ->where('wms_status','订单完成')
|
|
|
+ ->where('wms_edittime','>=',date('Y-m-01 00:00:00'))
|
|
|
+ ->count();
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|