You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
2.3 KiB

  1. <?php
  2. namespace App\Service\v3\Implementations;
  3. use App\Constants\v3\OrderState;
  4. use App\Constants\v3\OrderType;
  5. use App\Model\v3\Order;
  6. use App\Model\v3\OrderGoods;
  7. use App\Model\v3\OrderMain;
  8. use \App\Service\v3\Interfaces\OrderStatisticsServiceInterface;
  9. use Hyperf\Utils\ApplicationContext;
  10. class OrderStatisticsService implements OrderStatisticsServiceInterface
  11. {
  12. public function do()
  13. {
  14. // TODO: Implement do() method.
  15. }
  16. public function check()
  17. {
  18. // TODO: Implement check() method.
  19. }
  20. public function undo()
  21. {
  22. // TODO: Implement undo() method.
  23. }
  24. public function countOrder($storeId,$type,$startTime = '',$endTime = '')
  25. {
  26. $childTable = ApplicationContext::getContainer()->get(Order::class)->getTable();
  27. $mainTable = ApplicationContext::getContainer()->get(OrderMain::class)->getTable();
  28. $goodsTable = ApplicationContext::getContainer()->get(OrderGoods::class)->getTable();
  29. $builder = OrderMain::query()
  30. ->join($childTable, ''.$childTable.'.order_main_id', '=', ''.$mainTable.'.global_order_id')
  31. ->where([''.$childTable.'.store_id' => $storeId, ''.$mainTable.'.type' => $type])
  32. ->whereIn(''.$mainTable.'.state', array_merge(OrderState::FINISH, [OrderState::REFUNDED,OrderState::REFUND_REFUSE]));
  33. if ($type == OrderType::ONLINE) {
  34. $builder = $builder->join($goodsTable, ''.$goodsTable.'.order_id', '=', ''.$childTable.'.id')
  35. ->whereIn(''.$goodsTable.'.status', [1,2]);
  36. }
  37. if ($startTime) {
  38. $builder = $builder->where(''.$mainTable.'.created_at', '>=', $startTime);
  39. }
  40. if ($endTime) {
  41. $builder = $builder->where(''.$mainTable.'.created_at', '<=', $endTime);
  42. }
  43. return $builder->count();
  44. // $builder = Order::join('lanzu_order_main','lanzu_order_main.global_order_id','lanzu_order.order_main_id')
  45. // ->where('lanzu_order.store_id',$storeId);
  46. // if(!empty($startTime) && !empty($endTime)){
  47. // $builder->whereBetween('lanzu_order_main.created_at',[$startTime,$endTime]);
  48. // }
  49. // $count = $builder->whereIn('lanzu_order_main.state', OrderState::FINISH)
  50. // ->where('type',$type)
  51. // ->count();
  52. // return $count;
  53. }
  54. }