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']]; } }