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.

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