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.
 
 

158 lines
5.3 KiB

<?php
namespace App\Service\v3\Implementations;
use App\Constants\v3\OrderState;
use App\Constants\v3\OrderType;
use App\Model\v3\OrderMain;
use App\Model\v3\Order;
use App\Model\v3\ShoppingCart;
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()
->with(['orderGoods', 'market'])
->where(['user_id' => $userId, 'type' => OrderType::ONLINE]);
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']];
}
public function onlineByStore($storeId, $tab, $page=1, $pagesize=10)
{
$builder = Order::Join('lanzu_order_main','lanzu_order.order_main_id','lanzu_order_main.id')
->select(
'lanzu_order.*',
'lanzu_order_main.address',
'lanzu_order_main.name',
'lanzu_order_main.delivery_time_note',
'lanzu_order_main.shipping_type',
'lanzu_order_main.global_order_id'
)
->with('orderGoods')
->where('lanzu_order.store_id', $storeId)
->where('lanzu_order_main.type',1);
$sw = [
'all'=>'',
'completed'=> OrderState::FINISH,
'unpaid'=> OrderState::UNPAID,
'receiving' => OrderState::RECEIVING,
'refund' => OrderState::REFUND
];
switch ($tab) {
case 'all':
break;
case 'completed':
$builder->whereIn('lanzu_order_main.state', OrderState::FINISH);
break;
case 'unpaid':
$builder->where(['lanzu_order_main.state' => OrderState::UNPAID]);
break;
case 'receiving':
$builder->whereIn('lanzu_order_main.state', OrderState::RECEIVING);
break;
case 'refund':
$builder->whereIn('lanzu_order_main.state', OrderState::REFUND);
break;
}
$paginate = $builder->paginate($pagesize);
$orders = $paginate->toArray();
$res = ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']];
foreach ($res['orders'] as &$v){
switch ($v['shipping_type']) {
case 1:
$v['delivery_text'] = '服务站配送';
break;
case 2:
$v['delivery_text'] = '达达配送';
break;
}
}
return $res;
}
public function offlineByStore($storeId, $tab, $page=1, $pagesize=10 ,$start_time = '',$end_time = '')
{
$builder = Order::Join('lanzu_order_main','lanzu_order.order_main_id','lanzu_order_main.id')
->where('store_id', $storeId)
->where('lanzu_order_main.type',4)
->with('user');
switch ($tab) {
case 'all':
break;
case 'completed':
$builder->whereIn('lanzu_order_main.state', OrderState::FINISH);
break;
case 'unpaid':
$builder->where(['lanzu_order_main.state' => OrderState::UNPAID]);
break;
case 'receiving':
$builder->whereIn('lanzu_order_main.state', OrderState::RECEIVING);
break;
case 'refund':
$builder->whereIn('lanzu_order_main.state', OrderState::REFUND);
break;
}
if(!empty($start_time) && !empty($end_time)){
$builder->whereBetween('lanzu_order_main.created_at',[strtotime($start_time.' 23:59:59'),strtotime($end_time.' 23:59:59')]);
}
$paginate = $builder->paginate($pagesize);
$orders = $paginate->toArray();
return ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']];
}
public function offlineByUser($userId, $page=1, $pagesize=10)
{
$builder = OrderMain::query()
->with(['orders' => function($query) {
$query->with('store');
}])
->where(['user_id' => $userId, 'type' => OrderType::OFFLINE]);
$paginate = $builder->paginate($pagesize);
$orders = $paginate->toArray();
return ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']];
}
}