public async Task SearchNoGroupUser(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.TeamLeader); if (userSession == null) { return; } var requestJson = request.Json <SearchNoGroupUserRequest>(); //判断请求是否有效 if (!Validation.Valid(requestJson, out string reason)) { await response.BadRequest(reason); return; } var keyword = requestJson.kw_uname.ToLower(); //读入roleid == 1(没有组队)的用户列表 var userDb = DbFactory.Get <User>(); var userList = await userDb.SelectAllFromCache(); var res = userList.Where(it => it.roleid == 1 && (string.IsNullOrEmpty(keyword) || it.username.ToLower().Contains(keyword))) .Select(it => new SearchNoGroupUserResponse.UserSearchResult(it)).ToList(); await response.JsonResponse(200, new SearchNoGroupUserResponse { status = 1, result = res }); }
public async Task SetReadMessage(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Organizer); if (userSession == null) { return; } var requestJson = request.Json <MessageAdminRequest>(); //判断请求是否有效 if (!Validation.Valid(requestJson, out string reason)) { await response.BadRequest(reason); return; } var messageDb = DbFactory.Get <Message>(); await messageDb.SimpleDb.AsUpdateable(new message { mid = requestJson.mid, is_read = 1 }).UpdateColumns(it => new { it.is_read }).WhereColumns(it => it.mid).ExecuteCommandAsync(); await response.OK(); }
public async Task EditPuzzleGroup(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Organizer); if (userSession == null) { return; } var requestJson = request.Json <EditPuzzleGroupRequest>(); //判断请求是否有效 if (!Validation.Valid(requestJson, out string reason)) { await response.BadRequest(reason); return; } //生成修改后对象 var updatePg = new puzzle_group { pgid = requestJson.pgid, pg_name = requestJson.pg_name, pg_desc = requestJson.pg_desc, is_hide = (byte)(requestJson.is_hide == 1 ? 1 : 0) }; var pgDb = DbFactory.Get <PuzzleGroup>(); await pgDb.SimpleDb.AsUpdateable(updatePg).ExecuteCommandAsync(); await pgDb.InvalidateCache(); await response.OK(); }
public async Task HeartBeat(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Normal); if (userSession == null) { return; } var newMessage = 0; //新消息数目 //取得该用户GID var groupBindDb = DbFactory.Get <UserGroupBind>(); var groupBindList = await groupBindDb.SelectAllFromCache(); var groupBindItem = groupBindList.FirstOrDefault(it => it.uid == userSession.uid); if (groupBindItem != null) { var gid = groupBindItem.gid; var messageDb = DbFactory.Get <Message>(); newMessage = await messageDb.SimpleDb.AsQueryable() .Where(it => it.gid == gid && it.direction == 1 && it.is_read == 0).CountAsync(); } await response.JsonResponse(200, new { status = 1, new_message = newMessage }); }
public async Task UploadPrepare(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Member); if (userSession == null) { return; } var cache = DbFactory.GetCache(); var imageUploadToken = Guid.NewGuid().ToString("n"); var imageUploadCacheKey = cache.GetDataKey($"upload_prepare_{imageUploadToken}"); await cache.Put(imageUploadCacheKey, new ImagePrepareData { token = imageUploadToken }, 300000); await response.JsonResponse(200, new ImagePrepareResponse { status = 1, message = "成功获取上传Token,请在300秒完成上传", upload_token = imageUploadToken }); }
public async Task EditAnnouncement(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Organizer); if (userSession == null) { return; } var requestJson = request.Json <EditAnnoRequest>(); //判断请求是否有效 if (!Validation.Valid(requestJson, out string reason)) { await response.BadRequest(reason); return; } //生成修改后对象 var updateAnno = new announcement { aid = requestJson.aid, content = requestJson.content, update_time = DateTime.Now }; var annoDb = DbFactory.Get <Announcement>(); await annoDb.SimpleDb.AsUpdateable(updateAnno).IgnoreColumns(it => new { it.create_time }).ExecuteCommandAsync(); await annoDb.InvalidateCache(); await response.OK(); }
public async Task DeletePuzzle(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Organizer); if (userSession == null) { return; } var requestJson = request.Json <DeletePuzzleRequest>(); //判断请求是否有效 if (!Validation.Valid(requestJson, out string reason)) { await response.BadRequest(reason); return; } //删除它 var puzzleDb = DbFactory.Get <Puzzle>(); await puzzleDb.SimpleDb.AsDeleteable().Where(it => it.pid == requestJson.pid).ExecuteCommandAsync(); await puzzleDb.InvalidateCache(); await response.OK(); }
public async Task ListMyInvite(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Normal); if (userSession == null) { return; } //读取基础数据 var groupDb = DbFactory.Get <UserGroup>(); var groupNameDict = (await groupDb.SelectAllFromCache()).ToDictionary(it => it.gid, it => it.groupname); //读取仍然为有效状态的邀请 var inviteDb = DbFactory.Get <Invite>(); var result = await inviteDb.SimpleDb.AsQueryable().Where(it => it.to_uid == userSession.uid && it.valid == 1).ToListAsync(); var res = result.Select(it => { var r = new ListSentResponse.InviteView(it); if (groupNameDict.ContainsKey(r.from_gid)) { r.from_groupname = groupNameDict[r.from_gid]; } return(r); }).ToList(); await response.JsonResponse(200, new ListSentResponse { status = 1, result = res }); }
public async Task SendMail(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Member, true); if (userSession == null) { return; } var requestJson = request.Json <SendMailRequest>(); //判断请求是否有效 if (!Validation.Valid(requestJson, out string reason)) { await response.BadRequest(reason); return; } //取得该用户GID var groupBindDb = DbFactory.Get <UserGroupBind>(); var groupBindList = await groupBindDb.SelectAllFromCache(); var groupBindItem = groupBindList.FirstOrDefault(it => it.uid == userSession.uid); if (groupBindItem == null) { await response.BadRequest("未确定组队?"); return; } var gid = groupBindItem.gid; var content = requestJson.content; const string regExStyle = "<style[^>]*?>[\\s\\S]*?<\\/style>"; const string regExScript = "<script[^>]*?>[\\s\\S]*?<\\/script>"; const string regExHtml = "<[^>]+>"; content = Regex.Replace(content, regExStyle, "", RegexOptions.IgnoreCase); content = Regex.Replace(content, regExScript, "", RegexOptions.IgnoreCase); content = Regex.Replace(content, regExHtml, ""); //写入新消息 var newMessage = new message { content = content, update_time = DateTime.Now, create_time = DateTime.Now, gid = gid, uid = userSession.uid, is_read = 0, direction = 0 }; var messageDb = DbFactory.Get <Message>(); await messageDb.SimpleDb.AsInsertable(newMessage).ExecuteCommandAsync(); await response.OK(); }
public async Task GetPrologue(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Member, true); if (userSession == null) { return; } //取得该用户GID var groupBindDb = DbFactory.Get <UserGroupBind>(); var groupBindList = await groupBindDb.SelectAllFromCache(); var groupBindItem = groupBindList.FirstOrDefault(it => it.uid == userSession.uid); if (groupBindItem == null) { await response.BadRequest("未确定组队?"); return; } var gid = groupBindItem.gid; //取得进度 var progressDb = DbFactory.Get <Progress>(); var progress = await progressDb.SimpleDb.AsQueryable().Where(it => it.gid == gid).FirstAsync(); if (progress == null) { await response.BadRequest("没有进度,请返回首页重新开始。"); return; } var progressData = progress.data; if (progressData == null) { await response.BadRequest("未找到可用存档,请联系管理员。"); return; } var groupDb = DbFactory.Get <PuzzleGroup>(); var prologueGroup = (await groupDb.SelectAllFromCache()).First(it => it.pg_name == "prologue"); var prologueResult = ""; if (prologueGroup != null) { prologueResult = prologueGroup.pg_desc; } await response.JsonResponse(200, new BasicResponse { status = 1, message = prologueResult }); }
public async Task InvalidateInvite(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.TeamLeader); if (userSession == null) { return; } var requestJson = request.Json <IidInviteRequest>(); //判断请求是否有效 if (!Validation.Valid(requestJson, out string reason)) { await response.BadRequest(reason); return; } //取得该用户GID var groupBindDb = DbFactory.Get <UserGroupBind>(); var groupBindList = await groupBindDb.SelectAllFromCache(); var groupBindItem = groupBindList.FirstOrDefault(it => it.uid == userSession.uid); if (groupBindItem == null) { await response.BadRequest("未确定组队?"); return; } var gid = groupBindItem.gid; //读取目标iid var inviteDb = DbFactory.Get <Invite>(); var inviteItem = inviteDb.SimpleDb.GetById(requestJson.iid); if (inviteItem == null) { await response.BadRequest("无效邀请"); return; } if (inviteItem.from_gid != gid) { await response.BadRequest("无修改权限"); } //将目标置为无效 inviteItem.valid = 0; await inviteDb.SimpleDb.AsUpdateable(inviteItem).ExecuteCommandAsync(); await inviteDb.InvalidateCache(); await response.OK(); }
public async Task GetGameInfo(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Member, true); if (userSession == null) { return; } //取得该用户GID var groupBindDb = DbFactory.Get <UserGroupBind>(); var groupBindList = await groupBindDb.SelectAllFromCache(); var groupBindItem = groupBindList.FirstOrDefault(it => it.uid == userSession.uid); if (groupBindItem == null) { await response.BadRequest("未确定组队?"); return; } var gid = groupBindItem.gid; //取得进度 var progressDb = DbFactory.Get <Progress>(); var progress = await progressDb.SimpleDb.AsQueryable().Where(it => it.gid == gid).FirstAsync(); if (progress == null) { await response.BadRequest("没有进度,请返回首页重新开始。"); return; } var progressData = progress.data; if (progressData == null) { await response.BadRequest("未找到可用存档,请联系管理员。"); return; } var res = new GetGameInfoResponse { status = 1, open_group_count = progressData.NowOpenPuzzleGroups.Count, finished_puzzle_count = progressData.FinishedPuzzles.Count, is_open_next_group = progressData.IsOpenNextGroup ? 1 : 0, score = progress.score, penalty = progress.penalty }; await response.JsonResponse(200, res); }
public async Task ModifyPassword(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Normal); if (userSession == null) { return; } var requestJson = request.Json <ModifyPasswordRequest>(); //判断请求是否有效 if (!Validation.Valid(requestJson, out string reason)) { await response.BadRequest(reason); return; } //取出当前用户信息 var userDb = DbFactory.Get <User>(); var user = await userDb.SimpleDb.AsQueryable().Where(it => it.uid == userSession.uid).FirstAsync(); if (user == null || user.roleid < 1) { await response.Unauthorized("用户不存在或不允许当前用户进行操作。"); return; } //验证原密码 var oldPass = CryptoUtils.GetLoginHash(requestJson.old_pass); if (oldPass != user.password) { await response.BadRequest("原密码不正确。"); return; } //新密码写入数据库 user.password = CryptoUtils.GetLoginHash(requestJson.pass); user.update_time = DateTime.Now; await userDb.SimpleDb.AsUpdateable(user).ExecuteCommandAsync(); await userDb.InvalidateCache(); await response.OK(); }
public async Task RemoveBanUser(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Organizer); if (userSession == null) { return; } var requestJson = request.Json <AdminUidRequest>(); //判断请求是否有效 if (!Validation.Valid(requestJson, out var reason)) { await response.BadRequest(reason); return; } var userDb = DbFactory.Get <User>(); var userDict = (await userDb.SelectAllFromCache()).ToDictionary(it => it.uid, it => it); if (!userDict.ContainsKey(requestJson.uid)) { await response.BadRequest("请求的UID不存在"); return; } var groupBindDb = DbFactory.Get <UserGroupBind>(); var userLeaderDict = (await groupBindDb.SelectAllFromCache()).ToDictionary(it => it.uid, it => it.is_leader); //修改用户 var user = userDict[requestJson.uid]; if (userLeaderDict.ContainsKey(user.uid)) { var isLeader = userLeaderDict[user.uid]; user.roleid = isLeader == 1 ? 3 : 2; } else { user.roleid = 1; } await userDb.SimpleDb.AsUpdateable(user).ExecuteCommandAsync(); await userDb.InvalidateCache(); await response.OK(); }
public async Task Overview(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Organizer); if (userSession == null) { return; } var result = new List <string> { $"服务器时间:{DateTime.Now:yyyy-MM-dd HH:mm:ss}" }; var userDb = DbFactory.Get <User>(); var userList = await userDb.SelectAllFromCache(); result.Add($"注册用户数:{userList.Count}"); var groupBindDb = DbFactory.Get <UserGroupBind>(); var groupBindList = await groupBindDb.SelectAllFromCache(); result.Add($"有效报名人数:{groupBindList.Count}"); var groupDb = DbFactory.Get <UserGroup>(); var groupList = await groupDb.SelectAllFromCache(); result.Add($"报名队伍数:{groupList.Count}"); var cache = DbFactory.GetCache(); //登录成功 var keyPattern = cache.GetUserSessionKey("*"); var sessions = cache.FindKeys(keyPattern); var lastActionList = (await Task.WhenAll(sessions.Select(async it => await cache.Get <UserSession>(it)))) .Where(it => it != null && it.is_active == 1) .GroupBy(it => it.uid) .Select(it => it.First() == null ? DateTime.MinValue : it.First().last_update) .Where(it => Math.Abs((DateTime.Now - it).TotalMinutes) < 1.1); result.Add($"在线人数:{lastActionList.Count()}"); var resultString = string.Join("", result.Select(it => "<p>" + it + "</p>")); await response.JsonResponse(200, new { status = 1, result = resultString }); }
public async Task UserLogout(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Normal); if (userSession == null) { return; } var cache = DbFactory.GetCache(); var sessionKey = cache.GetUserSessionKey(userSession.token); await cache.Delete(sessionKey); await response.OK(); }
public async Task ListSentInvites(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.TeamLeader); if (userSession == null) { return; } //取得该用户GID var groupBindDb = DbFactory.Get <UserGroupBind>(); var groupBindList = await groupBindDb.SelectAllFromCache(); var groupBindItem = groupBindList.FirstOrDefault(it => it.uid == userSession.uid); if (groupBindItem == null) { await response.BadRequest("未确定组队?"); return; } var gid = groupBindItem.gid; //读取基础数据 var userDb = DbFactory.Get <User>(); var userNameDict = (await userDb.SelectAllFromCache()).ToDictionary(it => it.uid, it => it.username); //读取仍然为有效状态的邀请 var inviteDb = DbFactory.Get <Invite>(); var result = await inviteDb.SimpleDb.AsQueryable().Where(it => it.from_gid == gid && it.valid == 1).ToListAsync(); var res = result.Select(it => { var r = new ListSentResponse.InviteView(it); if (userNameDict.ContainsKey(r.to_uid)) { r.to_username = userNameDict[r.to_uid]; } return(r); }).ToList(); await response.JsonResponse(200, new ListSentResponse { status = 1, result = res }); }
public async Task GetAnnouncement(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Organizer); if (userSession == null) { return; } var pgDb = DbFactory.Get <PuzzleGroup>(); var pgList = (await pgDb.SelectAllFromCache()).OrderBy(it => it.pgid); await response.JsonResponse(200, new GetPuzzleGroupResponse { status = 1, puzzle_group = pgList.ToList() }); }
public async Task GetPuzzle(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Organizer); if (userSession == null) { return; } var puzzleDb = DbFactory.Get <Puzzle>(); var puzzleList = (await puzzleDb.SelectAllFromCache()).OrderBy(it => it.pgid).ThenBy(it => it.pid); await response.JsonResponse(200, new GetPuzzleResponse { status = 1, puzzle = puzzleList.ToList() }); }
public async Task DeclineInvite(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Normal); if (userSession == null) { return; } var requestJson = request.Json <IidInviteRequest>(); //判断请求是否有效 if (!Validation.Valid(requestJson, out string reason)) { await response.BadRequest(reason); return; } //读取目标iid var inviteDb = DbFactory.Get <Invite>(); var inviteItem = inviteDb.SimpleDb.GetById(requestJson.iid); if (inviteItem == null) { await response.BadRequest("无效邀请"); return; } if (inviteItem.to_uid != userSession.uid) { await response.BadRequest("无修改权限"); } //将目标置为无效 inviteItem.valid = 2; await inviteDb.SimpleDb.AsUpdateable(inviteItem).ExecuteCommandAsync(); await inviteDb.InvalidateCache(); await response.OK(); }
public async Task AddMessage(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Organizer); if (userSession == null) { return; } var requestJson = request.Json <AddMessageRequest>(); //判断请求是否有效 if (!Validation.Valid(requestJson, out string reason)) { await response.BadRequest(reason); return; } if (requestJson.gid <= 0) { await response.BadRequest("发送目标不正确"); return; } //写入新消息 var newMessage = new message { content = requestJson.content, update_time = DateTime.Now, create_time = DateTime.Now, gid = requestJson.gid, uid = userSession.uid, is_read = 0, direction = 1 }; var messageDb = DbFactory.Get <Message>(); await messageDb.SimpleDb.AsInsertable(newMessage).ExecuteCommandAsync(); await response.OK(); }
public async Task EditPuzzle(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Organizer); if (userSession == null) { return; } var requestJson = request.Json <EditPuzzleRequest>(); //判断请求是否有效 if (!Validation.Valid(requestJson, out string reason)) { await response.BadRequest(reason); return; } //生成修改后对象 var updatePuzzle = new puzzle { pid = requestJson.pid, pgid = requestJson.pgid, type = requestJson.type, title = requestJson.title, content = requestJson.content, image = requestJson.image, html = requestJson.html, answer_type = requestJson.answer_type, answer = requestJson.answer, jump_keyword = requestJson.jump_keyword, extend_content = requestJson.extend_content }; var puzzleDb = DbFactory.Get <Puzzle>(); await puzzleDb.SimpleDb.AsUpdateable(updatePuzzle).ExecuteCommandAsync(); await puzzleDb.InvalidateCache(); await response.OK(); }
public async Task SetBetaUser(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Organizer); if (userSession == null) { return; } var requestJson = request.Json <AdminUidRequest>(); //判断请求是否有效 if (!Validation.Valid(requestJson, out var reason)) { await response.BadRequest(reason); return; } var userDb = DbFactory.Get <User>(); var userDict = (await userDb.SelectAllFromCache()).ToDictionary(it => it.uid, it => it); if (!userDict.ContainsKey(requestJson.uid)) { await response.BadRequest("请求的UID不存在"); return; } //修改用户 var user = userDict[requestJson.uid]; user.info_key = "beta_user"; await userDb.SimpleDb.AsUpdateable(user).ExecuteCommandAsync(); await userDb.InvalidateCache(); await response.OK(); }
public async Task GetGroupDetail(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Organizer); if (userSession == null) { return; } var requestJson = request.Json <GroupAdminRequest>(); //判断请求是否有效 if (!Validation.Valid(requestJson, out string reason)) { await response.BadRequest(reason); return; } var groupBindDb = DbFactory.Get <UserGroupBind>(); var groupBindUsers = new HashSet <int>((await groupBindDb.SelectAllFromCache()) .Where(it => it.gid == requestJson.gid) .Select(it => it.uid)); var userDb = DbFactory.Get <User>(); var userList = (await userDb.SelectAllFromCache()).Where(it => groupBindUsers.Contains(it.uid)) .Select(it => new UserNameInfoItem(it)).ToList(); var progressDb = DbFactory.Get <Progress>(); var progress = await progressDb.SimpleDb.AsQueryable().Where(it => it.gid == requestJson.gid).FirstAsync(); var res = new AdminGroupDetailResponse { status = 1, users = userList, progress = progress }; await response.JsonResponse(200, res); }
public async Task GetUserList(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Organizer); if (userSession == null) { return; } var userDb = DbFactory.Get <User>(); var uidItems = (await userDb.SelectAllFromCache()).Select(it => new UidItem { uid = it.uid, user_name = it.username }).OrderBy(it => it.uid).ToList(); var groupDb = DbFactory.Get <UserGroup>(); var gidItems = (await groupDb.SelectAllFromCache()).Select(it => new GidItem { gid = it.gid, group_name = it.groupname }).OrderBy(it => it.gid).ToList(); var puzzleDb = DbFactory.Get <Puzzle>(); var pidItems = (await puzzleDb.SelectAllFromCache()).Select(it => new PidItem { pid = it.pid, pgid = it.pgid, title = it.title }).OrderBy(it => it.pgid).ThenBy(it => it.pid).ToList(); await response.JsonResponse(200, new GetUserListResponse { status = 1, uid_item = uidItems, gid_item = gidItems, pid_item = pidItems }); }
public async Task GetLUserList(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Organizer); if (userSession == null) { return; } var userDb = DbFactory.Get <User>(); var uidItems = (await userDb.SelectAllFromCache()).Select(it => new UidItem { uid = it.uid, user_name = it.username }).OrderBy(it => it.uid).ToList(); await response.JsonResponse(200, new GetUserListResponse { status = 1, uid_item = uidItems }); }
public async Task ListGroupName(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Organizer); if (userSession == null) { return; } var userGroupDb = DbFactory.Get <UserGroup>(); var groupList = (await userGroupDb.SelectAllFromCache()).Select(it => new UserGroupNameInfo { gid = it.gid, groupname = it.groupname }).ToList(); await response.JsonResponse(200, new UserGroupNameListResponse { status = 1, group_name_list = groupList }); }
public async Task GetUser(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Organizer); if (userSession == null) { return; } var cache = DbFactory.GetCache(); //登录成功 var keyPattern = cache.GetUserSessionKey("*"); var sessions = cache.FindKeys(keyPattern); var lastActionDict = (await Task.WhenAll(sessions.Select(async it => await cache.Get <UserSession>(it)))) .Where(it => it != null && it.is_active == 1) .GroupBy(it => it.uid) .ToDictionary(it => it.Key, it => it.First() == null ? DateTime.MinValue : it.First().last_update); var userDb = DbFactory.Get <User>(); var userData = (await userDb.SelectAllFromCache()).Select(it => { var ret = new UserView(it); if (lastActionDict.ContainsKey(it.uid)) { ret.last_action_time = lastActionDict[it.uid]; } ret.is_beta_user = (it.info_key == "beta_user") ? 1 : 0; return(ret); }).OrderBy(it => it.uid); await response.JsonResponse(200, new GetAllUserResponse { status = 1, users = userData.ToList() }); }
public async Task DelPenalty(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Organizer); if (userSession == null) { return; } var requestJson = request.Json <GroupAdminRequest>(); //判断请求是否有效 if (!Validation.Valid(requestJson, out string reason)) { await response.BadRequest(reason); return; } var penaltyDecrement = Config.Config.Options.PenaltyDefault; var progressDb = DbFactory.Get <Progress>(); var groupProgress = await progressDb.SimpleDb.AsQueryable().Where(it => it.gid == requestJson.gid).FirstAsync(); if (groupProgress == null) { await response.BadRequest("找不到指定队伍"); return; } groupProgress.penalty -= penaltyDecrement; await progressDb.SimpleDb.AsUpdateable(groupProgress).UpdateColumns(it => new { it.penalty }) .ExecuteCommandAsync(); await response.OK(); }
public async Task GetPenalty(Request request, Response response) { var userSession = await CheckAuth.Check(request, response, AuthLevel.Organizer); if (userSession == null) { return; } var requestJson = request.Json <GroupAdminRequest>(); //判断请求是否有效 if (!Validation.Valid(requestJson, out string reason)) { await response.BadRequest(reason); return; } var progressDb = DbFactory.Get <Progress>(); var groupProgress = await progressDb.SimpleDb.AsQueryable().Where(it => it.gid == requestJson.gid).FirstAsync(); if (groupProgress == null) { await response.BadRequest("找不到指定队伍"); return; } await response.JsonResponse(200, new GetPenaltyResponse { status = 1, penalty = groupProgress.penalty }); }