feat: 完成源晶权限与经验系统并优化 me/admin 交互

这个提交包含在:
cryptocommuniums-afk
2026-02-23 20:02:46 +08:00
父节点 2b6def2560
当前提交 43cbd38bac
修改 104 个文件,包含 13348 行新增776 行删除

查看文件

@@ -154,12 +154,15 @@ void SubmissionController::listSubmissions(
const auto user_id = ParseOptionalInt64(req->getParameter("user_id"));
const auto problem_id = ParseOptionalInt64(req->getParameter("problem_id"));
const auto contest_id = ParseOptionalInt64(req->getParameter("contest_id"));
const auto created_from = ParseOptionalInt64(req->getParameter("created_from"));
const auto created_to = ParseOptionalInt64(req->getParameter("created_to"));
const int page = ParseClampedInt(req->getParameter("page"), 1, 1, 100000);
const int page_size =
ParseClampedInt(req->getParameter("page_size"), 20, 1, 200);
services::SubmissionService svc(csp::AppState::Instance().db());
const auto rows = svc.List(user_id, problem_id, contest_id, page, page_size);
const auto rows =
svc.List(user_id, problem_id, contest_id, created_from, created_to, page, page_size);
Json::Value arr(Json::arrayValue);
for (const auto& s : rows) arr.append(domain::ToJson(s));
@@ -191,6 +194,13 @@ void SubmissionController::getSubmission(
}
Json::Value payload = domain::ToJson(*s);
payload["code"] = s->code;
const auto siblings = svc.GetSiblingIds(s->user_id, s->id);
payload["same_user_prev_submission_id"] =
siblings.prev_id.has_value() ? Json::Value(Json::Int64(*siblings.prev_id))
: Json::Value(Json::nullValue);
payload["same_user_next_submission_id"] =
siblings.next_id.has_value() ? Json::Value(Json::Int64(*siblings.next_id))
: Json::Value(Json::nullValue);
// Attach problem title for frontend linking.
{