|
|
<?php
namespace App\Service\v3\Implementations;
use App\Constants\v3\OrderState;use App\Constants\v3\OrderType;use App\Constants\v3\SsdbKeys;use App\Model\v3\OrderMain;use App\Model\v3\Order;use App\Model\v3\ShoppingCart;use App\Service\v3\Interfaces\OrderListServiceInterface;use App\TaskWorker\SSDBTask;use Hyperf\Paginator\Paginator;use Hyperf\Utils\ApplicationContext;
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) { // 记录badge
$ssdb = ApplicationContext::getContainer()->get(SSDBTask::class);
$builder = OrderMain::query() ->with(['orderGoods', 'market']) ->where(['user_id' => $userId, 'type' => OrderType::ONLINE]); switch ($tab) { case 'all': $ssdb->exec('hclear', SsdbKeys::USER_ORDER_BADGE.$userId); break; case 'completed': $ssdb->exec('hset', SsdbKeys::USER_ORDER_BADGE.$userId, 'completed', 0); $builder->whereIn('state', OrderState::FINISH); break; case 'unpaid': $ssdb->exec('hset', SsdbKeys::USER_ORDER_BADGE.$userId, 'unpaid', 0); $builder->where(['state' => OrderState::UNPAID]); break; case 'receiving': $builder->whereIn('state', OrderState::RECEIVING); $ssdb->exec('hset', SsdbKeys::USER_ORDER_BADGE.$userId, 'receiving', 0); break; case 'refund': $builder->whereIn('state', OrderState::REFUND); $ssdb->exec('hset', SsdbKeys::USER_ORDER_BADGE.$userId, 'refund', 0); break; }
$paginate = $builder->orderBy('created_at', 'desc')->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.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);
$sw = [ 'all'=>'', 'completed'=> OrderState::FINISH, 'unpaid'=> OrderState::UNPAID, 'receiving' => OrderState::RECEIVING, 'refund' => OrderState::REFUND ]; switch ($tab) { case 'all': break; case 'paid': $builder->where('lanzu_order_main.state', OrderState::PAID); break; case 'delivery': $builder->where(['lanzu_order_main.state' => OrderState::DELIVERY]); break; case 'finish': $builder->whereIn('lanzu_order_main.state', OrderState::FINISH); break; case 'refund': $builder->whereIn('lanzu_order_main.state', OrderState::REFUND); break; }
$paginate = $builder->orderBy('lanzu_order_main.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']]; } 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.id') ->where('store_id', $storeId) ->where('lanzu_order_main.type',4) ->with('user');
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->orderBy('lanzu_order_main.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]);
$paginate = $builder->orderBy('created_at', 'desc')->paginate($pagesize); $orders = $paginate->toArray(); return ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']]; }}
|