diff --git a/packages/hydrooj/locales/zh.yaml b/packages/hydrooj/locales/zh.yaml index 23183fde2..cad1fc3b6 100644 --- a/packages/hydrooj/locales/zh.yaml +++ b/packages/hydrooj/locales/zh.yaml @@ -116,7 +116,6 @@ Click here to chat with me: 点击这里与我聊天 click to add: 点击添加 CLOSE: 关闭 Code blocks: 代码区块 -Code copied to clipboard!: 代码已复制到剪贴板! Code language: 代码语言 Code: 代码 collapse: 收缩 diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 9cabad2b9..9c28c8fcb 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.17.15", + "version": "2.17.16", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/judge.ts b/packages/hydrooj/src/handler/judge.ts index 3fd261ca4..acc50dee9 100644 --- a/packages/hydrooj/src/handler/judge.ts +++ b/packages/hydrooj/src/handler/judge.ts @@ -18,22 +18,14 @@ const logger = new Logger('judge'); async function _postJudge(rdoc: Rdoc) { if (typeof rdoc.input === 'string') return; const accept = rdoc.status === builtin.STATUS.STATUS_ACCEPTED; - const tasks = []; - tasks.push( - problem.inc(rdoc.domainId, rdoc.pid, 'nAccept', 1), - problem.updateStatus(rdoc.domainId, rdoc.pid, rdoc.uid, rdoc._id, rdoc.status), - ); + const updated = await problem.updateStatus(rdoc.domainId, rdoc.pid, rdoc.uid, rdoc._id, rdoc.status); if (rdoc.contest) { - tasks.push( - contest.updateStatus( - rdoc.domainId, rdoc.contest.tid, rdoc.uid, - rdoc._id, rdoc.pid, accept, rdoc.score, rdoc.contest.type, - ), + await contest.updateStatus( + rdoc.domainId, rdoc.contest.tid, rdoc.uid, + rdoc._id, rdoc.pid, accept, rdoc.score, rdoc.contest.type, ); - } else { - tasks.push(domain.incUserInDomain(rdoc.domainId, rdoc.uid, 'nAccept', 1)); - } - await Promise.all(tasks); + } else if (updated) await domain.incUserInDomain(rdoc.domainId, rdoc.uid, 'nAccept', 1); + if (accept && updated) await problem.inc(rdoc.domainId, rdoc.pid, 'nAccept', 1); } export async function next(body: JudgeResultBody) { diff --git a/packages/hydrooj/src/model/document.ts b/packages/hydrooj/src/model/document.ts index 901d7a342..5331286d5 100644 --- a/packages/hydrooj/src/model/document.ts +++ b/packages/hydrooj/src/model/document.ts @@ -306,7 +306,7 @@ export async function setIfNotStatus, ): Promise { const current = await collStatus.findOne({ domainId, docType, docId, uid }) || {}; - if (current[key] === ifNot) return current; + if (current[key] === ifNot) return null; const res = await collStatus.findOneAndUpdate( { domainId, docType, docId, uid }, { $set: { [key]: value, ...args } },