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.

157 lines
5.4 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  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\OrderMain;
  6. use App\Model\v3\Order;
  7. use App\Model\v3\ShoppingCart;
  8. use App\Service\v3\Interfaces\OrderListServiceInterface;
  9. use Hyperf\Paginator\Paginator;
  10. class OrderListService implements OrderListServiceInterface
  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 onlineByUser($userId, $tab, $page=1, $pagesize=10)
  25. {
  26. $builder = OrderMain::query()
  27. ->with(['orderGoods', 'market'])
  28. ->where(['user_id' => $userId, 'type' => OrderType::ONLINE]);
  29. switch ($tab) {
  30. case 'all':
  31. break;
  32. case 'completed':
  33. $builder->whereIn('state', OrderState::FINISH);
  34. break;
  35. case 'unpaid':
  36. $builder->where(['state' => OrderState::UNPAID]);
  37. break;
  38. case 'receiving':
  39. $builder->whereIn('state', OrderState::RECEIVING);
  40. break;
  41. case 'refund':
  42. $builder->whereIn('state', OrderState::REFUND);
  43. break;
  44. }
  45. $paginate = $builder->orderBy('created_at', 'desc')->paginate($pagesize);
  46. $orders = $paginate->toArray();
  47. return ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']];
  48. }
  49. public function onlineByStore($storeId, $tab, $page=1, $pagesize=10)
  50. {
  51. $builder = Order::join('lanzu_order_main','lanzu_order.order_main_id','lanzu_order_main.id')
  52. ->select(
  53. 'lanzu_order.*',
  54. 'lanzu_order_main.address',
  55. 'lanzu_order_main.name',
  56. 'lanzu_order_main.delivery_time_note',
  57. 'lanzu_order_main.shipping_type',
  58. 'lanzu_order_main.global_order_id'
  59. )
  60. ->with('orderGoods')
  61. ->where('lanzu_order.store_id', $storeId)
  62. ->where('lanzu_order_main.type',1);
  63. $sw = [
  64. 'all'=>'',
  65. 'completed'=> OrderState::FINISH,
  66. 'unpaid'=> OrderState::UNPAID,
  67. 'receiving' => OrderState::RECEIVING,
  68. 'refund' => OrderState::REFUND
  69. ];
  70. switch ($tab) {
  71. case 'all':
  72. break;
  73. case 'completed':
  74. $builder->whereIn('lanzu_order_main.state', OrderState::FINISH);
  75. break;
  76. case 'unpaid':
  77. $builder->where(['lanzu_order_main.state' => OrderState::UNPAID]);
  78. break;
  79. case 'receiving':
  80. $builder->whereIn('lanzu_order_main.state', OrderState::RECEIVING);
  81. break;
  82. case 'refund':
  83. $builder->whereIn('lanzu_order_main.state', OrderState::REFUND);
  84. break;
  85. }
  86. $paginate = $builder->orderBy('created_at', 'desc')->paginate($pagesize);
  87. $orders = $paginate->toArray();
  88. $res = ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']];
  89. foreach ($res['orders'] as &$v){
  90. switch ($v['shipping_type']) {
  91. case 1:
  92. $v['delivery_text'] = '服务站配送';
  93. break;
  94. case 2:
  95. $v['delivery_text'] = '达达配送';
  96. break;
  97. }
  98. }
  99. return $res;
  100. }
  101. public function offlineByStore($storeId, $tab, $page=1, $pagesize=10 ,$start_time = '',$end_time = '')
  102. {
  103. $builder = Order::join('lanzu_order_main','lanzu_order.order_main_id','lanzu_order_main.id')
  104. ->where('store_id', $storeId)
  105. ->where('lanzu_order_main.type',4)
  106. ->with('user');
  107. switch ($tab) {
  108. case 'all':
  109. break;
  110. case 'completed':
  111. $builder->whereIn('lanzu_order_main.state', OrderState::FINISH);
  112. break;
  113. case 'unpaid':
  114. $builder->where(['lanzu_order_main.state' => OrderState::UNPAID]);
  115. break;
  116. case 'receiving':
  117. $builder->whereIn('lanzu_order_main.state', OrderState::RECEIVING);
  118. break;
  119. case 'refund':
  120. $builder->whereIn('lanzu_order_main.state', OrderState::REFUND);
  121. break;
  122. }
  123. if(!empty($start_time) && !empty($end_time)){
  124. $builder->whereBetween('lanzu_order_main.created_at',[strtotime($start_time.' 23:59:59'),strtotime($end_time.' 23:59:59')]);
  125. }
  126. $paginate = $builder->orderBy('created_at', 'desc')->paginate($pagesize);
  127. $orders = $paginate->toArray();
  128. return ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']];
  129. }
  130. public function offlineByUser($userId, $page=1, $pagesize=10)
  131. {
  132. $builder = OrderMain::query()
  133. ->with(['orders' => function($query) {
  134. $query->with('store');
  135. }])
  136. ->where(['user_id' => $userId, 'type' => OrderType::OFFLINE]);
  137. $paginate = $builder->orderBy('created_at', 'desc')->paginate($pagesize);
  138. $orders = $paginate->toArray();
  139. return ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']];
  140. }
  141. }