diff --git a/packages/hydrooj/src/handler/record.ts b/packages/hydrooj/src/handler/record.ts index a25e421c..2e13ab43 100644 --- a/packages/hydrooj/src/handler/record.ts +++ b/packages/hydrooj/src/handler/record.ts @@ -3,7 +3,7 @@ import { } from 'lodash'; import { Filter, ObjectId } from 'mongodb'; import { - ContestNotAttendedError, ContestNotFoundError, HackRejudgeFailedError, + ContestNotFoundError, HackRejudgeFailedError, PermissionError, ProblemConfigError, ProblemNotFoundError, RecordNotFoundError, UserNotFoundError, } from '../error'; diff --git a/packages/hydrooj/src/model/record.ts b/packages/hydrooj/src/model/record.ts index 30f906e4..5fb4abaa 100644 --- a/packages/hydrooj/src/model/record.ts +++ b/packages/hydrooj/src/model/record.ts @@ -28,11 +28,12 @@ export default class RecordModel { static async submissionPriority(uid: number, base: number = 0) { const timeRecent = await RecordModel.coll - .find({ _id: { $gte: Time.getObjectID(moment().add(-30, 'minutes')) }, uid }).project({ time: 1, status: 1 }).toArray(); + .find({ _id: { $gte: Time.getObjectID(moment().add(-30, 'minutes')) }, uid, rejudged: { $ne: true } }) + .project({ time: 1, status: 1 }).toArray(); const pending = timeRecent.filter((i) => [ STATUS.STATUS_WAITING, STATUS.STATUS_FETCHED, STATUS.STATUS_COMPILING, STATUS.STATUS_JUDGING, ].includes(i.status)).length; - return base - (pending * 1000 + 1) * (sum(timeRecent.map((i) => i.time || 0)) / 10000 + 1); + return Math.max(base - 10000, base - (pending * 1000 + 1) * (sum(timeRecent.map((i) => i.time || 0)) / 10000 + 1)); } static async get(_id: ObjectId): Promise;