1
This commit is contained in:
parent
2cdb8f60ae
commit
b7c9cbdc89
@ -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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 导播选定场次
|
||||
/// </summary>
|
||||
[Route("api/v1/anchor")]
|
||||
[HttpPost]
|
||||
[Authorize]
|
||||
public async Task<ActionResult<string>> 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 = "报名成功"}); ;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除导播选择的比赛
|
||||
/// </summary>
|
||||
[Route("api/v1/anchor")]
|
||||
[HttpDelete]
|
||||
[Authorize]
|
||||
public async Task<ActionResult<string>> 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
|
||||
{
|
||||
/// <summary>
|
||||
@ -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]
|
||||
|
@ -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<ActionResult<List<T_events>>> 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<ActionResult<List<T_events>>> putevent(string event_name, [FromBody] T_events_debug events)
|
||||
public async Task<ActionResult<List<T_events>>> 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 = "无权访问" });
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -97,12 +128,12 @@ namespace asg_form.Controllers
|
||||
[Authorize]
|
||||
[Route("api/v1/admin/Events")]
|
||||
[HttpDelete]
|
||||
public async Task<ActionResult<List<T_events>>> Delevent(string event_name)
|
||||
public async Task<ActionResult<List<T_events>>> 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<ActionResult<List<T_events>>> event_rule(string event_name, [FromBody] string rule_markdown)
|
||||
public async Task<ActionResult<List<T_events>>> 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<ActionResult<List<T_events>>> event_poem(string event_name, [FromBody] string poem_json)
|
||||
public async Task<ActionResult<List<T_events>>> 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<form>? forms { get; set; }
|
||||
public Uri? events_rule_uri { get; set; }
|
||||
public string? promChart { get; set; }
|
||||
public string status { get; set; } = "0";
|
||||
|
||||
}
|
||||
|
||||
@ -196,6 +229,7 @@ namespace asg_form.Controllers
|
||||
public List<form>? forms { get; set; }
|
||||
public Uri? events_rule_uri { get; set; }
|
||||
public string? promChart { get; set; }
|
||||
|
||||
public string status { get; set; }
|
||||
public string rule_markdown { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -213,6 +213,12 @@ namespace asg_form.Controllers.Team
|
||||
public int? roleRank { get; set; }
|
||||
public string? commonRoles { get; set; }
|
||||
public string? roleLin { get; set; }
|
||||
public string? roleId { get; set; }
|
||||
public string? gameName { get; set; }
|
||||
public string? idCard { get; set; }
|
||||
public string? phoneNumber { get; set; }
|
||||
public string? idCardName { get; set; }
|
||||
|
||||
}
|
||||
|
||||
public class TeamFind
|
||||
@ -229,13 +235,15 @@ namespace asg_form.Controllers.Team
|
||||
public form? form { get; set; }
|
||||
public List<tmpRole>? roles { get; set; }= new List<tmpRole>();
|
||||
}
|
||||
private static List<tmpRole> findRolesByFormId(long formId)
|
||||
private static List<tmpRole> findRolesByFormId(long formId,int y)
|
||||
{
|
||||
var roles = new List<tmpRole>();
|
||||
var db = new TestDbContext();
|
||||
try
|
||||
{
|
||||
var query = db.Roles.Where(x => x.form.Id == formId);
|
||||
if (y == 1)
|
||||
{
|
||||
roles = query
|
||||
.Select(f => new tmpRole
|
||||
{
|
||||
@ -245,6 +253,24 @@ namespace asg_form.Controllers.Team
|
||||
roleLin = f.role_lin
|
||||
})
|
||||
.ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
roles = query
|
||||
.Select(f => new tmpRole
|
||||
{
|
||||
roleName = f.role_name,
|
||||
roleRank = f.Historical_Ranks,
|
||||
commonRoles = f.Common_Roles,
|
||||
roleLin = f.role_lin,
|
||||
roleId = f.role_id,
|
||||
gameName =f.Game_Name,
|
||||
idCard = f.Id_Card,
|
||||
phoneNumber = f.Phone_Number,
|
||||
idCardName = f.Id_Card_Name
|
||||
})
|
||||
.ToList();
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
@ -282,7 +308,7 @@ namespace asg_form.Controllers.Team
|
||||
.Select(f => new AdminTeamFind
|
||||
{
|
||||
form = f,
|
||||
roles = findRolesByFormId(f.Id)
|
||||
roles = findRolesByFormId(f.Id,0)
|
||||
})
|
||||
.ToListAsync();
|
||||
int total = await query.CountAsync();
|
||||
@ -307,7 +333,7 @@ namespace asg_form.Controllers.Team
|
||||
team_name = f.team_name,
|
||||
piaoshu = f.piaoshu,
|
||||
},
|
||||
roles = findRolesByFormId(f.Id)
|
||||
roles = findRolesByFormId(f.Id,1)
|
||||
})
|
||||
.ToListAsync();
|
||||
int total = await query.CountAsync();
|
||||
|
@ -411,7 +411,7 @@ namespace asg_form.Controllers
|
||||
/// <summary>
|
||||
/// 裁判的名字
|
||||
/// </summary>
|
||||
public string referee { get; set; }
|
||||
public string? referee { get; set; }
|
||||
public int? referee_Id { get; set; }
|
||||
/// <summary>
|
||||
/// bilibili录屏路径
|
||||
|
Loading…
x
Reference in New Issue
Block a user