diff --git a/asg_form/Controllers/Com.cs b/asg_form/Controllers/Com.cs index 1064c3f..f87ebb9 100644 --- a/asg_form/Controllers/Com.cs +++ b/asg_form/Controllers/Com.cs @@ -178,6 +178,7 @@ namespace asg_form.Controllers if (teamgame.isAllowChoose == 0) return Ok(new error_mb { code = 401, message = "存在无法选择的比赛" }); if (teamgame != null) { + teamgame.referee = chinaname; teamgame.referee_Id = (int)(user.Id); await testDb.SaveChangesAsync(); @@ -250,6 +251,119 @@ namespace asg_form.Controllers } + /// + /// 导播选定场次 + /// + [Route("api/v1/judge")] + [HttpPost] + [Authorize] + public async Task> judgePost(string gameIds) + { + string id = this.User.FindFirst(ClaimTypes.NameIdentifier)!.Value; + var user = await userManager.FindByIdAsync(id); + + if (user.officium != "Judge") + { + return Ok(new error_mb { code = 401, message = $"你是{user.officium},你不是裁判,无法操作" }); + } + + else + { + if (user.Integral == null) + { + user.Integral = 0; + await userManager.UpdateAsync(user); + } + + TestDbContext testDb = new TestDbContext(); + string chinaname = user.chinaname; + int[] gameIdArray = ConvertStringToIntArray(gameIds); + + var message = $"导播:\r\n{chinaname}\r\n选择了比赛:"; + + foreach (var gameId in gameIdArray) + { + var teamgame = await testDb.team_Games.FirstOrDefaultAsync(a => a.id == gameId); + if (teamgame.isAllowChoose == 0) return Ok(new error_mb { code = 401, message = "存在无法选择的比赛" }); + if (teamgame != null) + { + + teamgame.judge = chinaname; + teamgame.judge_Id = (int)(user.Id); + await testDb.SaveChangesAsync(); + user.Integral += 5; + await userManager.UpdateAsync(user); + message += $"\r\n{teamgame.team1_name} VS {teamgame.team2_name}"; + } + } + try + { + var msg = new MessageBuilder().Add(new AtSegment(user.qqnumber ?? "2667210109")).Text(message).Build(); + await runbot.runbotr.SendMessageAsync(MessageEnvironment.Channel, "925510646", null, msg, "925510646"); + + } + catch (Exception ex) + { + return Ok(new { code = 500, message = "服务器错误", ex }); + } + + return Ok(new { code = 200, message = "报名成功" }); ; + } + + } + + /// + /// 删除导播选择的比赛 + /// + [Route("api/v1/judge")] + [HttpDelete] + [Authorize] + public async Task> DeletejudgeSelectedGame(int gameId, string reason) + { + string userId = this.User.FindFirst(ClaimTypes.NameIdentifier)!.Value; + var user = await userManager.FindByIdAsync(userId); + + if (user.officium != "Judge") + { + return Ok(new error_mb { code = 401, message = $"你是{user.officium},你不是裁判,无法操作" }); + } + + TestDbContext testDb = new TestDbContext(); + + var teamGame = await testDb.team_Games.FirstOrDefaultAsync(a => a.id == gameId); + if (teamGame == null) + { + return NotFound(new { code = 404, message = "比赛未找到" }); + } + + teamGame.judge = null; + teamGame.judge_Id = null; + await testDb.SaveChangesAsync(); + + user.Integral = user.Integral - 5 > 0 ? user.Integral - 5 : 0; // 确保积分不会减少到负数 + await userManager.UpdateAsync(user); + + try + { + var message = new MessageBuilder() + .Add(new AtSegment(user.qqnumber ?? "2667210109")) + .Text($"裁判 {user.chinaname} 已取消比赛 {teamGame.team1_name} VS {teamGame.team2_name} 的选择,\n原因是{reason}") + .Build(); + + await runbot.runbotr.SendMessageAsync(MessageEnvironment.Channel, "925510646", null, message, "925510646"); + } + catch (Exception ex) + { + return StatusCode(500, new { code = 500, message = "服务器错误", ex }); + } + return Ok(new { code = 200, message = "删除成功" }); + } + + + + + + public class com_json { ///