|
|
@@ -656,8 +656,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(3000)->each(function($inner_params){
|
|
|
$arr = $inner_params->toArray();
|
|
|
$this->insert($arr);
|
|
|
dispatch(new OrderFreeze($arr));
|
|
|
@@ -672,6 +673,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);
|
|
|
@@ -1079,4 +1081,87 @@ class OrderService
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ public function pushOrderUpdatedCountCache($orders,$update_params)
|
|
|
+ {
|
|
|
+ /**
|
|
|
+ * @var DataHandlerService $dataHandlerService
|
|
|
+ * @var OwnerService $ownerService
|
|
|
+ */
|
|
|
+ if(!$orders||!$update_params)return;
|
|
|
+ $dataHandlerService = app('DataHandlerService');
|
|
|
+ $order_map = $dataHandlerService->dataHeader(['code'],$orders);
|
|
|
+ $owner_map = [];
|
|
|
+ $month_begin = Carbon::parse(date(date('Y-m-01 00:00:00')));
|
|
|
+ foreach ($update_params as $key=>$params) {
|
|
|
+ if(!($params['code'] ?? false))continue;
|
|
|
+ if($params['wms_status'] !== '订单完成')continue;
|
|
|
+ $order = $dataHandlerService->getKeyValue(['code' => $params['code']],$order_map);
|
|
|
+ if(!$order || $order['wms_status'] === '订单完成')continue;
|
|
|
+ if($month_begin->isAfter(Carbon::parse($order['wms_edittime'])))continue;
|
|
|
+ $owner_id = $params['owner_id'];
|
|
|
+ if(!array_key_exists($owner_id,$owner_map))$owner_map[$owner_id] = 0;
|
|
|
+ $owner_map[$owner_id]+=1;
|
|
|
+ }
|
|
|
+ $cancelCount = [];
|
|
|
+ foreach ($update_params as $key=>$params) {
|
|
|
+ if($key==1||!($params['code'] ?? false))continue;
|
|
|
+ if($params['wms_status'] == '订单完成' || $params['wms_status'] !== '订单取消')continue;
|
|
|
+ $order = $dataHandlerService->getKeyValue(['code' => $params['code']],$order_map);
|
|
|
+ if($month_begin->isAfter(Carbon::parse($order['wms_edittime'])))continue;
|
|
|
+ if(!$order || $order['wms_status'] == '订单完成') continue;
|
|
|
+ $owner_id = $params['owner_id'];
|
|
|
+ if(!array_key_exists($owner_id,$cancelCount))$cancelCount[$owner_id] = 0;
|
|
|
+ $cancelCount[$owner_id]+=1;
|
|
|
+ }
|
|
|
+ foreach ($owner_map as $key => $value) {
|
|
|
+ if($value==0)continue;
|
|
|
+ $cancelCount = $cancelCount[$key] ?? 0;
|
|
|
+ $this->setCurrentFinishedOrders_byOwnerId($key,$value,$cancelCount);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function pushOrderCreatedCountCache($created_params)
|
|
|
+ {
|
|
|
+ /**
|
|
|
+ * @var OwnerService $ownerService
|
|
|
+ */
|
|
|
+ if(!$created_params)return;
|
|
|
+ $owner_map = [];
|
|
|
+ $month_begin = Carbon::parse(date(date('Y-m-01 00:00:00')));
|
|
|
+ foreach ($created_params as $params) {
|
|
|
+ if($params['wms_status'] != '订单完成')continue;
|
|
|
+ if($month_begin->isAfter(Carbon::parse($params['created_at'])))continue;
|
|
|
+ $owner_id = $params['owner_id'] ?? false;
|
|
|
+ if(!$owner_id)continue;
|
|
|
+ if(!array_key_exists($owner_id,$owner_map))$owner_map[$owner_id] = 0;
|
|
|
+ $owner_map[$owner_id]=$owner_map[$owner_id]+1;
|
|
|
+ }
|
|
|
+ foreach ($owner_map as $key => $value) {
|
|
|
+ if($value==0)continue;
|
|
|
+ $this->setCurrentFinishedOrders_byOwnerId($key,$value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ 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();
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|