|
|
<?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','employees']) ->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']]; }}
|