diff --git a/asg_form/Controllers/Com.cs b/asg_form/Controllers/Com.cs
index 926ae6a..fbf7e90 100644
--- a/asg_form/Controllers/Com.cs
+++ b/asg_form/Controllers/Com.cs
@@ -10,6 +10,8 @@ using Mirai.Net.Sessions.Http.Managers;
using Newtonsoft.Json;
using System.Security.Claims;
using static asg_form.Controllers.InviteReferee;
+using Manganese.Array;
+using static asg_form.Controllers.schedule;
namespace asg_form.Controllers
{
@@ -71,7 +73,7 @@ namespace asg_form.Controllers
com.Add(new com_json { id = id.ToInt32(), chinaname = chinaname });
teamgame.commentary = JsonConvert.SerializeObject(com);
await testDb.SaveChangesAsync();
- user.Integral = user.Integral+10;
+ user.Integral = user.Integral+5;
await userManager.UpdateAsync(user);
try
{
@@ -89,6 +91,125 @@ namespace asg_form.Controllers
return BadRequest(new error_mb { code = 400, message = $"你是{user.officium},你不是解说,无法操作" });
}
+ public static int[] ConvertStringToIntArray(string input)
+ {
+ var cleanedInput = input.Trim('[', ']').Replace("'", "");
+ int[] result = cleanedInput.Split(',')
+ .Select(int.Parse)
+ .ToArray();
+
+ return result;
+ }
+
+ ///
+ /// 导播选定场次
+ ///
+ [Route("api/v1/anchor")]
+ [HttpPost]
+ [Authorize]
+ public async Task> anchorPost(string gameIds)
+ {
+ string id = this.User.FindFirst(ClaimTypes.NameIdentifier)!.Value;
+ var user = await userManager.FindByIdAsync(id);
+
+ if (user.officium != "Anchor")
+ {
+ return BadRequest(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 != null)
+ {
+ teamgame.referee = chinaname;
+ teamgame.referee_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/anchor")]
+ [HttpDelete]
+ [Authorize]
+ public async Task> DeleteSelectedGame(int gameId,string reason)
+ {
+ string userId = this.User.FindFirst(ClaimTypes.NameIdentifier)!.Value;
+ var user = await userManager.FindByIdAsync(userId);
+
+ if (user.officium != "Anchor")
+ {
+ return BadRequest(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.referee = null;
+ teamGame.referee_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("删除成功");
+
+ }
+
+
public class com_json
{
///
@@ -154,6 +275,7 @@ namespace asg_form.Controllers
}
return BadRequest(new error_mb { code = 400, message = $"你是{user.officium},你不是解说,无法操作" });
}
+
[Route("api/v1/com/search_ok_regist")]
[HttpPost]
[Authorize]
diff --git a/asg_form/Controllers/Events.cs b/asg_form/Controllers/Events.cs
index 54418d0..35bfd88 100644
--- a/asg_form/Controllers/Events.cs
+++ b/asg_form/Controllers/Events.cs
@@ -2,6 +2,8 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
+using NPOI.SS.Formula.Functions;
+using System.Reflection.Metadata;
using System.Security.Claims;
using static asg_form.Controllers.excel;
@@ -34,12 +36,12 @@ namespace asg_form.Controllers
object Event = new object();
if (get_poem)
{
- Event = testDbContext.events.Select(a => new { a.Id, a.is_over, a.opentime, a.name, a.promChart }).ToList();
+ Event = testDbContext.events.Select(a => new { a.Id, a.is_over, a.opentime, a.name, a.promChart ,a.status}).ToList();
}
else
{
- Event = testDbContext.events.Select(a => new { a.Id, a.is_over, a.opentime, a.name }).ToList();
+ Event = testDbContext.events.Select(a => new { a.Id, a.is_over, a.opentime, a.name,a.status }).ToList();
}
return Event;
@@ -55,7 +57,7 @@ namespace asg_form.Controllers
public async Task>> Postevent([FromBody] events_get events)
{
TestDbContext testDbContext = new TestDbContext();
- await testDbContext.events.AddAsync(new T_events { name = events.name, is_over = events.is_over, opentime = events.opentime, events_rule_uri = new Uri($"https://124.223.35.239/doc/rule/{events.name}.md") });
+ await testDbContext.events.AddAsync(new T_events { name = events.name, is_over = events.is_over, opentime = events.opentime, events_rule_uri = new Uri($"https://124.223.35.239/doc/rule/{events.name}.md"),status =events.status });
System.IO.Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + $"loge/{events.name}");
System.IO.File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + $"doc/rule/{events.name}.md", events.rule_markdown);
await testDbContext.SaveChangesAsync();
@@ -71,23 +73,52 @@ namespace asg_form.Controllers
[Authorize]
[Route("api/v1/admin/Events")]
[HttpPut]
- public async Task>> putevent(string event_name, [FromBody] T_events_debug events)
+ public async Task>> putevent(int eventId, [FromBody] T_events_debug events)
{
if (this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin"))
{
TestDbContext testDb = new TestDbContext();
- var eve = testDb.events.FirstOrDefault(a => a.name == event_name);
+ var eve = testDb.events.FirstOrDefault(a => a.Id == eventId);
+ if(eve==null) return BadRequest(new error_mb { code = 404, message = "没有找到对应信息" });
eve.name = events.name;
eve.opentime = events.opentime;
eve.is_over = events.is_over;
eve.events_rule_uri = events.events_rule_uri;
+ eve.status = events.status;
+ if (!string.IsNullOrEmpty(events.rule_markdown))
+ {
+ var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "doc", "rule", $"{eventId}.md");
+
+ // 如果文件存在,删除旧文件
+ if (System.IO.File.Exists(filePath))
+ {
+ System.IO.File.Delete(filePath);
+ }
+
+ // 创建目录(如果不存在的话)
+ var directoryPath = Path.GetDirectoryName(filePath);
+ if (!Directory.Exists(directoryPath))
+ {
+ Directory.CreateDirectory(directoryPath);
+ }
+
+ // 写入新的规则内容
+ try
+ {
+ await System.IO.File.WriteAllTextAsync(filePath, events.rule_markdown);
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, new error_mb { code = 500, message = "文件操作失败: " + ex.Message });
+ }
+ }
await testDb.SaveChangesAsync();
return Ok(eve);
}
- return BadRequest(new error_mb { code = 400, message = "没管理员改个P!" });
+ return BadRequest(new error_mb { code = 401, message = "无权访问" });
}
///
@@ -97,12 +128,12 @@ namespace asg_form.Controllers
[Authorize]
[Route("api/v1/admin/Events")]
[HttpDelete]
- public async Task>> Delevent(string event_name)
+ public async Task>> Delevent(int eventId)
{
if (this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin"))
{
TestDbContext test = new TestDbContext();
- var evernt = test.events.FirstOrDefault(a => a.name == event_name);
+ var evernt = test.events.FirstOrDefault(a => a.Id == eventId);
test.Remove(evernt);
await test.SaveChangesAsync();
return Ok("删除");
@@ -121,19 +152,19 @@ namespace asg_form.Controllers
[Authorize]
[Route("api/v1/admin/Events_rule")]
[HttpDelete]
- public async Task>> event_rule(string event_name, [FromBody] string rule_markdown)
+ public async Task>> event_rule(int eventId, [FromBody] string rule_markdown)
{
if (this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin"))
{
TestDbContext test = new TestDbContext();
- var evernt = test.events.FirstOrDefault(a => a.name == event_name);
- System.IO.File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + $"doc/rule/{event_name}.md", rule_markdown);
+ var evernt = test.events.FirstOrDefault(a => a.Id == eventId);
+ System.IO.File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + $"doc/rule/{eventId}.md", rule_markdown);
- return Ok("修改了呢");
+ return Ok("修改成功");
}
else
{
- return BadRequest(new error_mb { code = 400, message = "没管理员就别调用,嘻嘻" });
+ return BadRequest(new error_mb { code = 401, message = "无权访问" });
}
}
@@ -145,19 +176,20 @@ namespace asg_form.Controllers
[Authorize]
[Route("api/v1/admin/poem")]
[HttpPost]
- public async Task>> event_poem(string event_name, [FromBody] string poem_json)
+ public async Task>> event_poem(int eventId, [FromBody] string poem_json)
{
if (this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin"))
{
TestDbContext test = new TestDbContext();
- var evernt = test.events.FirstOrDefault(a => a.name == event_name);
+ var evernt = test.events.FirstOrDefault(a => a.Id == eventId);
+ if (evernt == null) return BadRequest(new error_mb { code = 404, message = "没有找到对应信息" });
evernt.promChart = poem_json;
await test.SaveChangesAsync();
- return Ok("修改了呢");
+ return Ok(new error_mb { code = 200, message = "修改成功" });
}
else
{
- return BadRequest(new error_mb { code = 400, message = "没P管理员隔着装尼玛呢" });
+ return BadRequest(new error_mb { code = 401, message = "无权访问" });
}
}
@@ -171,7 +203,7 @@ namespace asg_form.Controllers
public bool? is_over { get; set; }
public DateTime? opentime { get; set; }
public string rule_markdown { get; set; }
-
+ public string status { get; set; }
}
}
public class T_events
@@ -184,6 +216,7 @@ namespace asg_form.Controllers
public List