|
|
@ -4,7 +4,10 @@ |
|
|
namespace App\Service\v3\Implementations; |
|
|
namespace App\Service\v3\Implementations; |
|
|
use App\Constants\v3\OrderState; |
|
|
use App\Constants\v3\OrderState; |
|
|
use App\Model\v3\Order; |
|
|
use App\Model\v3\Order; |
|
|
|
|
|
use App\Model\v3\OrderGoods; |
|
|
|
|
|
use App\Model\v3\OrderMain; |
|
|
use \App\Service\v3\Interfaces\OrderStatisticsServiceInterface; |
|
|
use \App\Service\v3\Interfaces\OrderStatisticsServiceInterface; |
|
|
|
|
|
use Hyperf\Utils\ApplicationContext; |
|
|
|
|
|
|
|
|
class OrderStatisticsService implements OrderStatisticsServiceInterface |
|
|
class OrderStatisticsService implements OrderStatisticsServiceInterface |
|
|
{ |
|
|
{ |
|
|
@ -26,14 +29,35 @@ class OrderStatisticsService implements OrderStatisticsServiceInterface |
|
|
|
|
|
|
|
|
public function countOrder($storeId,$type,$startTime = '',$endTime = '') |
|
|
public function countOrder($storeId,$type,$startTime = '',$endTime = '') |
|
|
{ |
|
|
{ |
|
|
$builder = Order::join('lanzu_order_main','lanzu_order_main.global_order_id','lanzu_order.order_main_id') |
|
|
|
|
|
->where('lanzu_order.store_id',$storeId); |
|
|
|
|
|
if(!empty($startTime) && !empty($endTime)){ |
|
|
|
|
|
$builder->whereBetween('lanzu_order_main.created_at',[$startTime,$endTime]); |
|
|
|
|
|
|
|
|
$childTable = ApplicationContext::getContainer()->get(Order::class)->getTable(); |
|
|
|
|
|
$mainTable = ApplicationContext::getContainer()->get(OrderMain::class)->getTable(); |
|
|
|
|
|
$goodsTable = ApplicationContext::getContainer()->get(OrderGoods::class)->getTable(); |
|
|
|
|
|
|
|
|
|
|
|
$builder = OrderMain::query() |
|
|
|
|
|
->join($childTable, ''.$childTable.'.order_main_id', '=', ''.$mainTable.'.global_order_id') |
|
|
|
|
|
->join($goodsTable, ''.$goodsTable.'.order_id', '=', ''.$childTable.'.id') |
|
|
|
|
|
->where([''.$childTable.'.store_id' => $storeId, ''.$mainTable.'.type' => $type]) |
|
|
|
|
|
->whereIn(''.$mainTable.'.state', array_merge(OrderState::FINISH, [OrderState::REFUNDED,OrderState::REFUND_REFUSE])) |
|
|
|
|
|
->whereIn(''.$goodsTable.'.status', [1,2]); |
|
|
|
|
|
|
|
|
|
|
|
if ($startTime) { |
|
|
|
|
|
$builder = $builder->where(''.$mainTable.'.created_at', '>=', $startTime); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if ($endTime) { |
|
|
|
|
|
$builder = $builder->where(''.$mainTable.'.created_at', '<=', $endTime); |
|
|
} |
|
|
} |
|
|
$count = $builder->whereIn('lanzu_order_main.state', OrderState::FINISH) |
|
|
|
|
|
->where('type',$type) |
|
|
|
|
|
->count(); |
|
|
|
|
|
return $count; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return $builder->groupBy(''.$mainTable.'.id')->count(); |
|
|
|
|
|
|
|
|
|
|
|
// $builder = Order::join('lanzu_order_main','lanzu_order_main.global_order_id','lanzu_order.order_main_id')
|
|
|
|
|
|
// ->where('lanzu_order.store_id',$storeId);
|
|
|
|
|
|
// if(!empty($startTime) && !empty($endTime)){
|
|
|
|
|
|
// $builder->whereBetween('lanzu_order_main.created_at',[$startTime,$endTime]);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// $count = $builder->whereIn('lanzu_order_main.state', OrderState::FINISH)
|
|
|
|
|
|
// ->where('type',$type)
|
|
|
|
|
|
// ->count();
|
|
|
|
|
|
// return $count;
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |