public static function cronRunTheWheel() { $now = Tools::getNow(); $auction = Auction::join('event_items', function ($q) { $q->on('event_items.e_id', '=', 'auctions.e_id'); })->where('event_items.e_end_at', '<', $now)->where('auctions.a_status', '=', 1)->orderBy('event_items.e_start_at')->first(); if (empty($auction)) { throw new Exception("没有需要处理的竞拍", 2000); } $auction->load(['eventItem']); $list = AuctionBid::where('a_id', '=', $auction->a_id)->orderBy('b_price', 'DESC')->get(); if ($list->count() <= 0) { throw new Exception("无人出价", 2000); } $win = $list->first(); if ($win->is_win) { throw new Exception("中奖信息已处理", 2000); } $user = User::find($win->u_id); $auction->a_win_username = $user->u_nickname; $auction->a_win_id = $win->b_id; $auction->a_win_price = $win->b_price; $auction->a_status = 2; foreach ($list as $key => $bid) { if ($bid->u_id == $win->u_id) { continue; } else { $msg = new MessageDispatcher($bid->u_id); $msg->fireTextToUser('非常抱歉您参与的' . $auction->eventItem->e_title . '没有拍到'); } } $price = number_format($auction->a_win_price); $msg = new MessageDispatcher($win->u_id, 1, 1, 1); $msg->setMessage(['phone' => $user->u_mobile]); $msg->fireTextToUser('恭喜您以' . $price . '元成功拍得 ' . $auction->eventItem->e_title . ' 产品。请于48小时之内在我的竞拍里完成付款,逾期视为放弃,感谢您的参与'); $win->is_win = 1; $win->is_pay = 0; $auction->save(); $win->save(); return true; }