orderId); // 处理订单相关 $this->handleOrder($event->orderId); } public function handleOrder($orderId) { $order = Order::find($orderId); if (!$order) { return; } if ($order->type == OrderType::GENDAN) { $this->sumGendanNum($order->pid); } if ($order->type == OrderType::FADAN) { $this->markCustomerFadan($order); } } public function sumGendanNum($fadanId) { $fadanOrder = Order::where('type', OrderType::FADAN)->find($fadanId); if (!$fadanOrder) { Log::error('sumGendanNum error not found fadanId:' . $fadanId); return; } $gendanNum = Order::where('pid', $fadanId) ->where('id', '<>', $fadanId) ->whereIn('lottery_state', $fadanOrder->gendanLotteryState()) ->count(); $gendanMoney = Order::where('pid', $fadanId) ->where('id', '<>', $fadanId) ->whereIn('lottery_state', $fadanOrder->gendanLotteryState()) ->sum('money'); $fadanOrder->gendan_num = $gendanNum; $fadanOrder->gendan_money = $gendanMoney; $fadanOrder->save(); } public function markCustomerFadan($order) { if ($order->type != OrderType::FADAN) { return; } $customer = Customer::find($order->customer_id); if (!$customer) { return; } $states = [LottState::WAIT, LottState::WIN, LottState::LOSS, LottState::SEND]; $fadanNum = Order::where('customer_id', $customer->id) ->where('type', OrderType::FADAN) ->where('pay_state', 'success') ->whereIn('lottery_state', $states) ->count(); $customer->fadan_num = $fadanNum; $customer->save(); } }