Skip to content

Commit

Permalink
able to get solved teams
Browse files Browse the repository at this point in the history
  • Loading branch information
Last-Order committed Nov 8, 2017
1 parent 2e64e93 commit 630aa25
Show file tree
Hide file tree
Showing 6 changed files with 97 additions and 35 deletions.
4 changes: 4 additions & 0 deletions app/Challenge.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,8 @@ public function logs()
{
return $this->hasMany('App\Log', 'challenge_id', 'challenge_id');
}

public function level(){
return $this->belongsTo('App\Level', 'level_id', 'level_id');
}
}
23 changes: 11 additions & 12 deletions app/Http/Controllers/BulletinController.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,15 +73,14 @@ public function delete(Request $request)
return APIReturn::error('invalid_parameters', $validator->errors()->all(), 400);
}

try{
try {
$bulletin = Bulletin::find($request->input('bulletinId'));
if (!$bulletin){
if (!$bulletin) {
return APIReturn::error("bulletin_not_found", "该公告不存在", 404);
}
$bulletin->delete();
return APIReturn::success();
}
catch (\Exception $e){
} catch (\Exception $e) {
return APIReturn::error("database_error", "数据库读写错误", 500);
}
}
Expand All @@ -92,28 +91,28 @@ public function delete(Request $request)
* @return \Illuminate\Http\JsonResponse
* @author Eridanus Sora <[email protected]>
*/
public function edit(Request $request){
public function edit(Request $request)
{
$validator = \Validator::make($request->only(['bulletinId', 'title', 'content']), [
'bulletinId' => 'required',
'title' => 'required',
'content' => 'required'
'bulletinId' => 'required',
'title' => 'required',
'content' => 'required'
]);

if ($validator->fails()) {
return APIReturn::error('invalid_parameters', $validator->errors()->all(), 400);
}

try{
try {
$bulletin = Bulletin::find($request->input('bulletinId'));
if (!$bulletin){
if (!$bulletin) {
return APIReturn::error("bulletin_not_found", "该公告不存在", 404);
}
$bulletin->title = $request->input('title');
$bulletin->content = $request->input('content');
$bulletin->save();
return APIReturn::success($bulletin);
}
catch (\Exception $e){
} catch (\Exception $e) {
return APIReturn::error("database_error", "数据库读写错误", 500);
}
}
Expand Down
52 changes: 52 additions & 0 deletions app/Http/Controllers/ChallengeController.php
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,58 @@ public function resetScore(Request $request)
}
}

/**
* 查询已经完成题目的队伍
* @param Request $request
* @return \Illuminate\Http\JsonResponse
* @author Eridanus Sora <[email protected]>
*/
public function getSolvedTeams(Request $request){
$validator = Validator::make($request->only(['challengeId']), [
'challengeId' => 'required'
], [
'challengeId.required' => __('缺少 题目ID 字段')
]);


if ($validator->fails()) {
return APIReturn::error('invalid_parameters', $validator->errors()->all(), 400);
}

try{
$team = JWTAuth::parseToken()->toUser();
$team->load(['logs' => function ($query) {
$query->where('status', 'correct');
}]);
$challenge = Challenge::where('challenge_id',$request->input('challengeId'))->with("level")->first();
if ($challenge->count() == 0){
return APIReturn::error("challenge_not_found", __("问题不存在"), 404);
}
$logs = Log::where([
["challenge_id", '=', $request->input("challengeId")],
["status", "=", "correct"]
])->with(['team'])->orderBy("created_at")->get();
$ruleValidator = new RuleValidator($team->team_id, $challenge->level->rules);
if (!$ruleValidator->check($team->logs)){
// 题目未开放
return APIReturn::error("challenge_not_found", __("问题不存在"), 404);
}
$result = [];

$logs->each(function($log) use(&$result){
array_push($result, [
'teamName' => $log->team->team_name,
'solvedAt' => Carbon::parse($log->created_at)->toIso8601String()
]);
});
return APIReturn::success($result);
}
catch (\Exception $e){
dump($e);
return APIReturn::error("database_error", "数据库读写错误", 500);
}
}

/**
* 获得 Flags 详情
* @param Request $request
Expand Down
4 changes: 4 additions & 0 deletions app/Log.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,8 @@ public function level()
{
return $this->belongsTo('App\Level', 'level_id', 'level_id');
}

public function team(){
return $this->belongsTo('App\Team', 'team_id', 'team_id');
}
}
4 changes: 3 additions & 1 deletion resources/lang/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,7 @@


"数据库读写错误": "Database error",
"操作过于频繁": "Too many requests. Please try again later."
"操作过于频繁": "Too many requests. Please try again later.",
"缺少 题目ID 字段": "Missing Challenge ID",
"问题不存在": "Challenge not found"
}
45 changes: 23 additions & 22 deletions routes/web.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@
Route::get('/', 'IndexController@index');
Route::group(['prefix' => 'User'], function () {
//Route::group(['middleware' => 'throttle:120'], function(){
Route::post('login', 'TeamController@login');
Route::post('register', 'TeamController@register');
Route::get('token', 'TeamController@tokenVerify');
Route::post('login', 'TeamController@login');
Route::post('register', 'TeamController@register');
Route::get('token', 'TeamController@tokenVerify');
//});

//Route::group(['middleware' => 'throttle:100'], function(){
Route::get('select', 'TeamController@publicListTeams');
Route::get('ranking', 'TeamController@getRanking');
Route::get('select', 'TeamController@publicListTeams');
Route::get('ranking', 'TeamController@getRanking');
//});

Route::group(['middleware' => 'jwt.auth.mod'], function () {
Expand Down Expand Up @@ -72,36 +72,37 @@

Route::group(['middleware' => ['jwt.auth.mod', 'TimeCheck']], function () {
Route::get('list', 'ChallengeController@list');
Route::get('solvedTeams', 'ChallengeController@getSolvedTeams');
});

Route::group(['middleware' => ['jwt.auth.mod', 'TimeCheck', 'BlockCheck']], function(){
Route::post('submitFlag', 'ChallengeController@submitFlag');
Route::group(['middleware' => ['jwt.auth.mod', 'TimeCheck', 'BlockCheck']], function () {
Route::post('submitFlag', 'ChallengeController@submitFlag');
});
});

Route::group(['prefix' => 'Flag', 'middleware' => ['jwt.auth.mod', 'AdminCheck']], function(){
Route::post('delete', 'FlagController@deleteFlag');
Route::post('edit', 'FlagController@editFlag');
Route::group(['prefix' => 'Flag', 'middleware' => ['jwt.auth.mod', 'AdminCheck']], function () {
Route::post('delete', 'FlagController@deleteFlag');
Route::post('edit', 'FlagController@editFlag');
});

Route::group(['prefix' => 'SystemLog', 'middleware' => ['jwt.auth.mod', 'AdminCheck']], function(){
Route::get('list', 'SystemLogController@list');
Route::group(['prefix' => 'SystemLog', 'middleware' => ['jwt.auth.mod', 'AdminCheck']], function () {
Route::get('list', 'SystemLogController@list');
});

Route::group(['prefix' => 'System'], function(){
Route::get('meta', 'SystemController@getMetaInfo');
Route::group(['middleware' => ['jwt.auth.mod', 'AdminCheck']], function(){
Route::post('edit', 'SystemController@editMetaInfo');
});
Route::group(['prefix' => 'System'], function () {
Route::get('meta', 'SystemController@getMetaInfo');
Route::group(['middleware' => ['jwt.auth.mod', 'AdminCheck']], function () {
Route::post('edit', 'SystemController@editMetaInfo');
});
});

Route::group(['prefix' => 'Bulletin'], function(){
Route::group(['prefix' => 'Bulletin'], function () {
Route::get('list', 'BulletinController@list');

Route::group(['middleware' => ['jwt.auth.mod', 'AdminCheck']], function(){
Route::post('delete', 'BulletinController@delete');
Route::post('create', 'BulletinController@create');
Route::post('edit', 'BulletinController@edit');
Route::group(['middleware' => ['jwt.auth.mod', 'AdminCheck']], function () {
Route::post('delete', 'BulletinController@delete');
Route::post('create', 'BulletinController@create');
Route::post('edit', 'BulletinController@edit');
});
});
});
Expand Down

0 comments on commit 630aa25

Please sign in to comment.