diff --git a/app/Domains/Real/Services/OrderService.php b/app/Domains/Real/Services/OrderService.php index 74b01a9f..24f07e87 100644 --- a/app/Domains/Real/Services/OrderService.php +++ b/app/Domains/Real/Services/OrderService.php @@ -42,8 +42,9 @@ class OrderService extends Service $res = $this->orderRepository->withConditions($conditions)->applyConditions()->paginate($limit); if (!$res->isEmpty()) { - $cards = $this->orderCardPartitionRepository->selectRaw('order_id,SUM(counts) as counts') - ->withConditions(['order_id', $res->pluck('id')->toArray()])->where('virtual_order_id', '<>', 0)->groupBy('order_id')->get()->pluck('counts', 'order_id')->toArray(); + $cards = $this->orderCardPartitionRepository->selectRaw('order_id,SUM(counts) as counts, SUM(CASE virtual_order_id WHEN 0 THEN 0 ELSE counts END) as shipments') + ->withConditions(['order_id', $res->pluck('id')->toArray()]) + ->groupBy('order_id')->get()->keyBy('order_id')->toArray(); } $res->map(function ($item) use ($carrierOperators, $cards) { @@ -55,7 +56,8 @@ class OrderService extends Service $item->carrier_operator_name = $carrierOperators[$item->carrier_operator]; $item->unit_price = sprintf('%.02f', $item->unit_price/100); $item->total_price = sprintf('%.02f', $item->total_price/100); - $item->shipments = $cards[$item->id] ?? 0; + $item->shipments = $cards[$item->id]['shipments'] ?? 0; + $item->counts = $cards[$item->id]['counts'] ?? 0; }); return $res->sortByDesc('order_at')->values(); @@ -73,10 +75,10 @@ class OrderService extends Service ini_set('memory_limit', '4096m'); ini_set('default_socket_timeout', -1); - $counts = $this->orderCardPartitionRepository->withConditions($conditions)->count(); + $counts = $this->orderCardPartitionRepository->withConditions($conditions)->sum('counts'); - if ($counts > 100000) { - throw new NotAllowedException("当前请求总卡量为{$counts}张,数据量过大,请筛选过滤后查询"); + if ($counts > 50000) { + throw new NotAllowedException("当前请求数据量过大,请筛选过滤后查询"); } $cards = $this->orderCardPartitionRepository->withVirtual($conditions)->get(); diff --git a/app/Domains/Virtual/Http/Controllers/OrderController.php b/app/Domains/Virtual/Http/Controllers/OrderController.php index 77562042..78e9a1e9 100644 --- a/app/Domains/Virtual/Http/Controllers/OrderController.php +++ b/app/Domains/Virtual/Http/Controllers/OrderController.php @@ -165,4 +165,18 @@ class OrderController extends Controller return res(true, '重置成功'); } + + /** + * 卡清单. + * + * @return \Illuminate\Http\Response + */ + public function cards() + { + $conditions = $this->request->all(); + + $cards = $this->orderService->cards($conditions); + + return res($cards, '卡清单'); + } } diff --git a/app/Domains/Virtual/Routes/api.php b/app/Domains/Virtual/Routes/api.php index 06863759..ad50d86b 100644 --- a/app/Domains/Virtual/Routes/api.php +++ b/app/Domains/Virtual/Routes/api.php @@ -49,6 +49,7 @@ $router->group(['prefix' => 'virtual', 'as' => 'virtual', 'middleware' => ['admi $router->post('/orders/update/{id}', ['as' => 'orders.update', 'uses' => 'OrderController@update']); $router->post('/orders/destroy', ['as' => 'orders.destroy', 'uses' => 'OrderController@destroy']); $router->post('/orders/reset', ['as' => 'orders.reset', 'uses' => 'OrderController@reset']); + $router->get('/orders/cards', ['as' => 'orders.cards', 'uses' => 'OrderController@cards']); // 客户管理 $router->get('/cards/index', ['as' => 'cards.index', 'uses' => 'CardController@index']); diff --git a/app/Domains/Virtual/Services/OrderService.php b/app/Domains/Virtual/Services/OrderService.php index f4368bd4..4d706de7 100644 --- a/app/Domains/Virtual/Services/OrderService.php +++ b/app/Domains/Virtual/Services/OrderService.php @@ -424,4 +424,19 @@ class OrderService extends Service return intval($transactionNo); } + + /** + * 订单卡查询 + * + * @param array $conditions + * @return void + */ + public function cards(array $conditions = []) + { + $conditions['limit'] = $conditions['limit'] ?? 20; + + $cards = $this->orderCardPartitionRepository->select(['sim'])->withConditions($conditions)->orderBy('sim')->paginate($conditions['limit']); + + return $cards; + } } diff --git a/frontend/src/api/virtual/orders.js b/frontend/src/api/virtual/orders.js index f4ffd933..d42f80e0 100644 --- a/frontend/src/api/virtual/orders.js +++ b/frontend/src/api/virtual/orders.js @@ -22,6 +22,16 @@ export function show(id) { return service.get(`api/virtual/orders/show/${id}`); } +/** + * [cards 卡清单列表] + * @param {[type]} data [description] + * @return {[type]} [description] + */ +export function cards(data) { + return service.get('api/virtual/orders/cards', { + params: data + }); +} /** * [create 创建订单] * @param {[type]} data [description] diff --git a/frontend/src/views/virtual/orders/detail.vue b/frontend/src/views/virtual/orders/detail.vue index dfd2677d..6a76e585 100644 --- a/frontend/src/views/virtual/orders/detail.vue +++ b/frontend/src/views/virtual/orders/detail.vue @@ -146,6 +146,22 @@