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.

59 lines
1.8 KiB

  1. <?php
  2. namespace App\Service\v3\Implementations;
  3. use App\Constants\v3\OrderState;
  4. use App\Model\v3\OrderMain;
  5. use App\Service\v3\Interfaces\OrderListServiceInterface;
  6. use Hyperf\Paginator\Paginator;
  7. class OrderListService implements OrderListServiceInterface
  8. {
  9. public function do()
  10. {
  11. // TODO: Implement do() method.
  12. }
  13. public function check()
  14. {
  15. // TODO: Implement check() method.
  16. }
  17. public function undo()
  18. {
  19. // TODO: Implement undo() method.
  20. }
  21. public function onlineByUser($userId, $tab, $page=1, $pagesize=10)
  22. {
  23. $builder = OrderMain::query()
  24. ->select('id', 'global_order_id', 'money', 'state', 'market_id', 'created_at')
  25. ->with(['orderGoods' => function($query) {
  26. $query->select(['lanzu_order_goods.id', 'lanzu_order_goods.name', 'lanzu_order_goods.cover_img']);
  27. }])
  28. ->with(['market' => function($query) {
  29. $query->select(['lanzu_market.id', 'lanzu_market.name', 'lanzu_market.tel']);
  30. }])
  31. ->where(['user_id' => $userId]);
  32. switch ($tab) {
  33. case 'all':
  34. break;
  35. case 'completed':
  36. $builder->whereIn('state', OrderState::FINISH);
  37. break;
  38. case 'unpaid':
  39. $builder->where(['state' => OrderState::UNPAID]);
  40. break;
  41. case 'receiving':
  42. $builder->whereIn('state', OrderState::RECEIVING);
  43. break;
  44. case 'refund':
  45. $builder->whereIn('state', OrderState::REFUND);
  46. break;
  47. }
  48. $paginate = $builder->paginate($pagesize);
  49. $orders = $paginate->toArray();
  50. return ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']];
  51. }
  52. }