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.
 
 

60 lines
1.8 KiB

<?php
namespace App\Service\v3\Implementations;
use App\Constants\v3\OrderState;
use App\Model\v3\OrderMain;
use App\Service\v3\Interfaces\OrderListServiceInterface;
use Hyperf\Paginator\Paginator;
class OrderListService implements OrderListServiceInterface
{
public function do()
{
// TODO: Implement do() method.
}
public function check()
{
// TODO: Implement check() method.
}
public function undo()
{
// TODO: Implement undo() method.
}
public function onlineByUser($userId, $tab, $page=1, $pagesize=10)
{
$builder = OrderMain::query()
->select('id', 'global_order_id', 'money', 'state', 'market_id', 'created_at')
->with(['orderGoods' => function($query) {
$query->select(['lanzu_order_goods.id', 'lanzu_order_goods.name', 'lanzu_order_goods.cover_img']);
}])
->with(['market' => function($query) {
$query->select(['lanzu_market.id', 'lanzu_market.name', 'lanzu_market.tel']);
}])
->where(['user_id' => $userId]);
switch ($tab) {
case 'all':
break;
case 'completed':
$builder->whereIn('state', OrderState::FINISH);
break;
case 'unpaid':
$builder->where(['state' => OrderState::UNPAID]);
break;
case 'receiving':
$builder->whereIn('state', OrderState::RECEIVING);
break;
case 'refund':
$builder->whereIn('state', OrderState::REFUND);
break;
}
$paginate = $builder->paginate($pagesize);
$orders = $paginate->toArray();
return ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']];
}
}