false, 'message'=> '', ]; //判断是否参加对应竞猜场次; if(UserGame::where([ 'user_id' => $user->id, 'game_id' => $game->id, ])->exists()){ $res['message'] = '您已参与该场竞猜,请勿重复提交'; return $res; } // if(UserGame::whereDate('created_at', now())->exists()){ $res['message'] = '您今日已参与竞猜,请明天再来'; return $res; } //判断该场竞猜是否还能参加 if($game->state != 1 || $game->game_at <= now()){ $res['message'] = '该场竞猜已结束,请选择其他场次参与'; return $res; } //判断活动是否还能参加 if($game->activity->start_at > now()){ $res['message'] = '活动还未开始,请选择其他活动参与'; return $res; } if($game->activity->end_at < now()){ $res['message'] = '活动已结束,请选择其他活动参与'; return $res; } try{ DB::beginTransaction(); //添加活动参与记录; $userActivity = UserActivity::where([ 'user_id' => $user->id, 'activity_id' => $game->activity_id, ])->first(); if(!$userActivity){ $userActivity = new UserActivity(); $userActivity->user_id = $user->id; $userActivity->activity_id = $game->activity_id; $userActivity->last_join_at = now(); $userActivity->save(); } //添加场次竞猜记录; UserGame::create([ 'user_id' => $user->id, 'activity_id' =>$game->activity_id, 'user_activity_id' =>$userActivity->id, 'game_id'=>$game->id, 'score'=>$score, ]); //更新活动参与记录; $userActivity->update([ 'last_join_at' => now() ]); $userActivity->increment('join_times'); DB::commit(); } catch(Throwable $th){ DB::rollBack(); report($th); $res['message'] = '系统错误,请刷新后重试'; return $res; } $res['status'] = true; return $res; } }