orderId = $orderId; $this->queue = config('queue.names.compute_order_prize'); } public function handle() { Log::info('ComputeCtzqSfc14OrderPrize::start, orderId:' . $this->orderId); $order = Order::find($this->orderId); if (!$order) { Log::error('ComputeCtzqBqcOrderPrize 订单状不存在, orderId:' . $this->orderId); return; } if ($order->lottery_state != LottState::WAIT) { Log::error('ComputeCtzqSfc14OrderPrize 订单状态不是待开奖状态, orderId:' . $this->orderId); return; } $unPublishes = OrderCtzqSfcResult::where('order_id', $this->orderId) ->where('lottery_type', LottType::CTZQ_SFC14) ->where('published', BoolEnum::NO) ->count(); if ($unPublishes > 0) { Log::error('ComputeCtzqSfc14OrderPrize has no publish match, orderId:' . $this->orderId); return; } $orderResults = OrderCtzqSfcResult::where('order_id', $this->orderId) ->where('lottery_type', LottType::CTZQ_SFC14) ->get(); if (!$orderResults || count($orderResults) != 14) { Log::error('ComputeCtzqSfc14OrderPrize 不够14场比赛数据, orderId:' . $this->orderId); return; } $ctzqSfcId = 0; $winNum = 0; foreach ($orderResults as $orderResult) { $ctzqSfcId = $orderResult->ctzq_sfc_id; if ($orderResult->result == '*' || in_array($orderResult->result, $orderResult->odds)) { $winNum ++; } } $win = false; $winPrize = 0; if ($winNum == 14 || $winNum == 13) { $ctzqSfc = CtzqSfc::find($ctzqSfcId); if ($winNum == 14 ) { $win = true; $winPrize = $ctzqSfc->first_prize_val_frtn; } if ($winNum == 13) { $win = true; $winPrize = $ctzqSfc->second_prize_val_frtn; } } $winTaxPrize = Config::getAfterTaxPrize($winPrize); $winPrize = $winPrize * $order->bets_num; $winTaxPrize = $winTaxPrize * $order->bets_num; $order->lottery_state = $win ? LottState::WIN : LottState::LOSS; $order->lottery_prize = $winPrize; $order->lottery_tax_prize = $winTaxPrize; $order->lottery_should_send_prize = $winTaxPrize; if ($win) { $order->win_date = date('Ymd'); } $order->save(); $order->updateUnionOrderState($order->lottery_state); if ($win) { OrderWinedEvent::dispatch($order->id); } } }