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.

172 lines
5.9 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
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\Service\v3\Interfaces\BadgeServiceInterface;
  8. use App\Service\v3\Interfaces\OrderListServiceInterface;
  9. use Hyperf\Di\Annotation\Inject;
  10. class OrderListService implements OrderListServiceInterface
  11. {
  12. /**
  13. * @Inject
  14. * @var BadgeServiceInterface
  15. */
  16. protected $badgeService;
  17. public function do()
  18. {
  19. // TODO: Implement do() method.
  20. }
  21. public function check()
  22. {
  23. // TODO: Implement check() method.
  24. }
  25. public function undo()
  26. {
  27. // TODO: Implement undo() method.
  28. }
  29. public function onlineByUser($userId, $tab, $page=1, $pagesize=10)
  30. {
  31. $builder = OrderMain::query()
  32. ->with(['orderGoods', 'market'])
  33. ->where(['user_id' => $userId, 'type' => OrderType::ONLINE]);
  34. switch ($tab) {
  35. case 'all':
  36. break;
  37. case 'finish':
  38. $builder->whereIn('state', OrderState::FINISH);
  39. break;
  40. case 'unpaid':
  41. $builder->where(['state' => OrderState::UNPAID]);
  42. break;
  43. case 'receiving':
  44. $builder->whereIn('state', OrderState::RECEIVING);
  45. break;
  46. case 'refund':
  47. $builder->whereIn('state', OrderState::REFUND);
  48. break;
  49. }
  50. // 清除badge
  51. $this->badgeService->clearUserOrder($userId, $tab);
  52. $paginate = $builder->orderBy('created_at', 'desc')->paginate($pagesize);
  53. $orders = $paginate->toArray();
  54. return ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']];
  55. }
  56. public function onlineByStore($storeId, $tab, $page=1, $pagesize=10)
  57. {
  58. $builder = Order::join('lanzu_order_main','lanzu_order.order_main_id','lanzu_order_main.global_order_id')
  59. ->select(
  60. 'lanzu_order.*',
  61. 'lanzu_order_main.state',
  62. 'lanzu_order_main.address',
  63. 'lanzu_order_main.name',
  64. 'lanzu_order_main.delivery_time_note',
  65. 'lanzu_order_main.shipping_type',
  66. 'lanzu_order_main.global_order_id',
  67. 'lanzu_order_main.lat',
  68. 'lanzu_order_main.lng'
  69. )
  70. ->with('orderGoods')
  71. ->where('lanzu_order.store_id', $storeId)
  72. ->where('lanzu_order_main.type',1);
  73. $sw = [
  74. 'all'=>'',
  75. 'completed'=> OrderState::FINISH,
  76. 'unpaid'=> OrderState::UNPAID,
  77. 'receiving' => OrderState::RECEIVING,
  78. 'refund' => OrderState::REFUND
  79. ];
  80. switch ($tab) {
  81. case 'all':
  82. break;
  83. case 'paid':
  84. $builder->where('lanzu_order_main.state', OrderState::PAID);
  85. break;
  86. case 'delivery':
  87. $builder->where(['lanzu_order_main.state' => OrderState::DELIVERY]);
  88. break;
  89. case 'finish':
  90. $builder->whereIn('lanzu_order_main.state', OrderState::FINISH);
  91. break;
  92. case 'refund':
  93. $builder->whereIn('lanzu_order_main.state', OrderState::REFUND);
  94. break;
  95. }
  96. $paginate = $builder->orderBy('lanzu_order_main.created_at', 'desc')->paginate($pagesize);
  97. $orders = $paginate->toArray();
  98. $stateTxet = [
  99. OrderState::UNPAID => '待付款',
  100. OrderState::PAID => '待接单',
  101. OrderState::DELIVERY => '待送达',
  102. OrderState::COMPLETED => '已完成',
  103. OrderState::EVALUATED => '已评价',
  104. OrderState::CANCELED => '已取消',
  105. OrderState::REJECTION => '已拒单',
  106. OrderState::REFUNDING => '退款中',
  107. OrderState::REFUNDED => '已退款',
  108. OrderState::REFUND_REFUSE => '拒绝退款'
  109. ];
  110. $res = ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']];
  111. foreach ($res['orders'] as &$v){
  112. switch ($v['shipping_type']) {
  113. case 1:
  114. $v['delivery_text'] = '服务站配送';
  115. break;
  116. case 2:
  117. $v['delivery_text'] = '达达配送';
  118. break;
  119. }
  120. $v['state_text'] = $stateTxet[$v['state']];
  121. }
  122. $this->badgeService->clearStoreOrder($storeId, $tab);
  123. return $res;
  124. }
  125. public function offlineByStore($storeId, $page=1, $pagesize=10 ,$start_time = '',$end_time = '')
  126. {
  127. $builder = Order::join('lanzu_order_main','lanzu_order.order_main_id','lanzu_order_main.global_order_id')
  128. ->where('store_id', $storeId)
  129. ->where('lanzu_order_main.type',4)
  130. ->with('user');
  131. if(!empty($start_time) && !empty($end_time)){
  132. $builder->whereBetween('lanzu_order_main.created_at',[strtotime($start_time.' 23:59:59'),strtotime($end_time.' 23:59:59')]);
  133. }
  134. $paginate = $builder->orderBy('lanzu_order_main.created_at', 'desc')->paginate($pagesize);
  135. $orders = $paginate->toArray();
  136. return ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']];
  137. }
  138. public function offlineByUser($userId, $page=1, $pagesize=10)
  139. {
  140. $builder = OrderMain::query()
  141. ->with(['orders' => function($query) {
  142. $query->with('store');
  143. }])
  144. ->where(['user_id' => $userId, 'type' => OrderType::OFFLINE])
  145. ->whereIn('state', [OrderState::PAID,OrderState::DELIVERY,OrderState::COMPLETED]);
  146. $paginate = $builder->orderBy('created_at', 'desc')->paginate($pagesize);
  147. $orders = $paginate->toArray();
  148. return ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']];
  149. }
  150. }