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.
199 lines
7.4 KiB
199 lines
7.4 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\Service\v3\Interfaces\BadgeServiceInterface;
|
|
use App\Service\v3\Interfaces\OrderListServiceInterface;
|
|
use App\Service\v3\Interfaces\OrderOnlineServiceInterface;
|
|
use Hyperf\Di\Annotation\Inject;
|
|
use Hyperf\Utils\ApplicationContext;
|
|
|
|
class OrderListService implements OrderListServiceInterface
|
|
{
|
|
|
|
/**
|
|
* @Inject
|
|
* @var BadgeServiceInterface
|
|
*/
|
|
protected $badgeService;
|
|
|
|
/**
|
|
* @Inject
|
|
* @var OrderOnlineServiceInterface
|
|
*/
|
|
protected $orderOnlineService;
|
|
|
|
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 'finish':
|
|
$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;
|
|
}
|
|
|
|
// 清除badge
|
|
$this->badgeService->clearUserOrder($userId, $tab);
|
|
|
|
$paginate = $builder->orderBy('created_at', 'desc')->paginate($pagesize);
|
|
$orders = $paginate->toArray();
|
|
return ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data'], 'note' => '待付款订单10分钟后将自动取消,请尽快支付!'];
|
|
}
|
|
|
|
public function onlineByStore($storeId, $tab, $page=1, $pagesize=10)
|
|
{
|
|
// $builder = Order::join('lanzu_order_main','lanzu_order.order_main_id','lanzu_order_main.global_order_id')
|
|
// ->select(
|
|
// 'lanzu_order.*',
|
|
// 'lanzu_order_main.state',
|
|
// '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',
|
|
// 'lanzu_order_main.lat',
|
|
// 'lanzu_order_main.lng'
|
|
// )
|
|
// ->with('orderGoods')
|
|
// ->where('lanzu_order.store_id', $storeId)
|
|
// ->where('lanzu_order_main.type',1);
|
|
|
|
$mainTable = ApplicationContext::getContainer()->get(OrderMain::class)->getTable();
|
|
$childTable = ApplicationContext::getContainer()->get(Order::class)->getTable();
|
|
$builder = Order::query()
|
|
->select(''.$childTable.'.*')
|
|
->join($mainTable, ''.$childTable.'.order_main_id', '=', ''.$mainTable.'.global_order_id')
|
|
->with(['orderMain', 'orderGoods'])
|
|
->where(['store_id' => $storeId, ''.$mainTable.'.type' => OrderType::ONLINE])
|
|
->whereNull($mainTable.'.deleted_at');
|
|
switch ($tab) {
|
|
case 'all':
|
|
break;
|
|
case 'paid':
|
|
$builder->where(''.$mainTable.'.state', OrderState::PAID);
|
|
break;
|
|
case 'delivery':
|
|
$builder->where([''.$mainTable.'.state' => OrderState::DELIVERY]);
|
|
break;
|
|
case 'finish':
|
|
$builder->whereIn(''.$mainTable.'.state', OrderState::FINISH);
|
|
break;
|
|
case 'refund':
|
|
$builder->whereIn(''.$mainTable.'.state', OrderState::REFUND);
|
|
break;
|
|
}
|
|
|
|
$paginate = $builder->orderBy(''.$mainTable.'.created_at', 'desc')->paginate($pagesize);
|
|
$orders = $paginate->toArray();
|
|
|
|
// $stateTxet = [
|
|
// OrderState::UNPAID => '待付款',
|
|
// OrderState::PAID => '待接单',
|
|
// OrderState::DELIVERY => '待送达',
|
|
// OrderState::COMPLETED => '已完成',
|
|
// OrderState::EVALUATED => '已评价',
|
|
// OrderState::CANCELED => '已取消',
|
|
// OrderState::REJECTION => '已拒单',
|
|
// OrderState::REFUNDING => '退款中',
|
|
// OrderState::REFUNDED => '已退款',
|
|
// OrderState::REFUND_REFUSE => '拒绝退款'
|
|
// ];
|
|
|
|
$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;
|
|
// }
|
|
// $v['state_text'] = $stateTxet[$v['state']];
|
|
// }
|
|
|
|
$this->badgeService->clearStoreOrder($storeId, $tab);
|
|
|
|
return $res;
|
|
}
|
|
|
|
public function offlineByStore($storeId, $page=1, $pagesize=10 ,$start_time = '',$end_time = '')
|
|
{
|
|
// $builder = Order::join('lanzu_order_main','lanzu_order.order_main_id','lanzu_order_main.global_order_id')
|
|
// ->where('store_id', $storeId)
|
|
// ->where('lanzu_order_main.type',4)
|
|
// ->with('user');
|
|
|
|
$mainTable = ApplicationContext::getContainer()->get(OrderMain::class)->getTable();
|
|
$childTable = ApplicationContext::getContainer()->get(Order::class)->getTable();
|
|
$builder = OrderMain::query()
|
|
->select(''.$mainTable.'.*', ''.$childTable.'.order_num')
|
|
->join($childTable, ''.$childTable.'.order_main_id', '=', ''.$mainTable.'.global_order_id')
|
|
->where([''.$childTable.'.store_id' => $storeId, ''.$mainTable.'.type' => OrderType::OFFLINE])
|
|
->whereNull($mainTable.'.deleted_at')
|
|
->with('user');
|
|
|
|
// if(!empty($start_time) && !empty($end_time)){
|
|
// $builder->whereBetween(''.$mainTable.'.created_at',[strtotime($start_time.' 00:00:00'),strtotime($end_time.' 23:59:59')]);
|
|
// }
|
|
|
|
if (!empty($start_time)) {
|
|
$builder->where(''.$mainTable.'.created_at', '>=', strtotime($start_time.' 00:00:00'));
|
|
}
|
|
|
|
if (!empty($end_time)) {
|
|
$builder->where(''.$mainTable.'.created_at', '<=', strtotime($end_time.' 23:59:59'));
|
|
}
|
|
|
|
$paginate = $builder->orderBy(''.$mainTable.'.created_at', 'desc')->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])
|
|
->whereIn('state', [OrderState::PAID,OrderState::DELIVERY,OrderState::COMPLETED]);
|
|
|
|
$paginate = $builder->orderBy('created_at', 'desc')->paginate($pagesize);
|
|
$orders = $paginate->toArray();
|
|
return ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']];
|
|
}
|
|
}
|