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.

173 lines
6.0 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
5 years ago
5 years ago
6 years ago
6 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.state',
  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->orderBy('created_at', 'desc')->paginate($pagesize);
  88. $orders = $paginate->toArray();
  89. $stateTxet = [
  90. OrderState::UNPAID => '待付款',
  91. OrderState::PAID => '待接单',
  92. OrderState::DELIVERY => '待送达',
  93. OrderState::COMPLETED => '已完成',
  94. OrderState::EVALUATED => '已评价',
  95. OrderState::CANCELED => '已取消',
  96. OrderState::REJECTION => '已拒单',
  97. OrderState::REFUNDING => '退款中',
  98. OrderState::REFUNDED => '已退款',
  99. OrderState::REFUND_REFUSE => '拒绝退款'
  100. ];
  101. $res = ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']];
  102. foreach ($res['orders'] as &$v){
  103. switch ($v['shipping_type']) {
  104. case 1:
  105. $v['delivery_text'] = '服务站配送';
  106. break;
  107. case 2:
  108. $v['delivery_text'] = '达达配送';
  109. break;
  110. }
  111. $v['state_text'] = $stateTxet[$v['state']];
  112. }
  113. return $res;
  114. }
  115. public function offlineByStore($storeId, $tab, $page=1, $pagesize=10 ,$start_time = '',$end_time = '')
  116. {
  117. $builder = Order::join('lanzu_order_main','lanzu_order.order_main_id','lanzu_order_main.id')
  118. ->where('store_id', $storeId)
  119. ->where('lanzu_order_main.type',4)
  120. ->with('user');
  121. switch ($tab) {
  122. case 'all':
  123. break;
  124. case 'completed':
  125. $builder->whereIn('lanzu_order_main.state', OrderState::FINISH);
  126. break;
  127. case 'unpaid':
  128. $builder->where(['lanzu_order_main.state' => OrderState::UNPAID]);
  129. break;
  130. case 'receiving':
  131. $builder->whereIn('lanzu_order_main.state', OrderState::RECEIVING);
  132. break;
  133. case 'refund':
  134. $builder->whereIn('lanzu_order_main.state', OrderState::REFUND);
  135. break;
  136. }
  137. if(!empty($start_time) && !empty($end_time)){
  138. $builder->whereBetween('lanzu_order_main.created_at',[strtotime($start_time.' 23:59:59'),strtotime($end_time.' 23:59:59')]);
  139. }
  140. $paginate = $builder->orderBy('created_at', 'desc')->paginate($pagesize);
  141. $orders = $paginate->toArray();
  142. return ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']];
  143. }
  144. public function offlineByUser($userId, $page=1, $pagesize=10)
  145. {
  146. $builder = OrderMain::query()
  147. ->with(['orders' => function($query) {
  148. $query->with('store');
  149. }])
  150. ->where(['user_id' => $userId, 'type' => OrderType::OFFLINE]);
  151. $paginate = $builder->orderBy('created_at', 'desc')->paginate($pagesize);
  152. $orders = $paginate->toArray();
  153. return ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']];
  154. }
  155. }