班级号 3~4 位并存,按用户名前缀/包含匹配时 ks251 会捞到 ks2510~ks2519。 新增 classPrefixCondition:ks + 3 位以上数字按具体班级匹配(后面不能再跟数字), 1~2 位仍是年级前缀。后台首页的用户排名、随机抽签,以及题单的学生进度筛选 (只填数字时补上 ks)都改用它。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
41cd141769
commit
23844ae301
4 files changed
+46
-9
No files matched your search
@@ -33,7 +33,13 @@ import {
|
||||
import { db, schema } from "../db"
|
||||
import { failure, parseBody, success } from "../http"
|
||||
import { computeProgress } from "../services/problemset"
|
||||
import { asFilterValue, asRecord, queryInteger, sampleUser } from "./helpers"
|
||||
import {
|
||||
asFilterValue,
|
||||
asRecord,
|
||||
classPrefixCondition,
|
||||
queryInteger,
|
||||
sampleUser,
|
||||
} from "./helpers"
|
||||
|
||||
export const problemsetRoutes = new Hono<AppEnv>()
|
||||
|
||||
@@ -499,7 +505,15 @@ problemsetRoutes.get(
|
||||
const className = c.req.query("className")?.trim()
|
||||
const completion = c.req.query("completionStatus")?.trim()
|
||||
const filters = [eq(schema.problemsetProgress.problemsetId, id)]
|
||||
if (className) filters.push(ilike(schema.user.username, `%${className}%`))
|
||||
// 只填数字(251)当班级号补上 ks;班级按 classPrefixCondition 匹配,
|
||||
// 否则 251 会把 2511 班也算进来。别的输入照旧按用户名包含
|
||||
if (className) {
|
||||
const classPrefix = /^\d+$/.test(className) ? `ks${className}` : className
|
||||
filters.push(
|
||||
classPrefixCondition(classPrefix) ??
|
||||
ilike(schema.user.username, `%${className}%`),
|
||||
)
|
||||
}
|
||||
if (completion === "completed")
|
||||
filters.push(eq(schema.problemsetProgress.isCompleted, true))
|
||||
else if (completion === "in_progress")
|
||||
|
||||
Reference in new issue
Block a user