feat(score): support osu-rx & osu-ap & all beatmap leaderboard like osu.ppy.sb
This commit is contained in:
@@ -159,14 +159,22 @@ async def register_user(
|
||||
country_code="CN", # 默认国家
|
||||
join_date=datetime.now(UTC),
|
||||
last_visit=datetime.now(UTC),
|
||||
is_supporter=settings.enable_supporter_for_all_users,
|
||||
support_level=int(settings.enable_supporter_for_all_users),
|
||||
)
|
||||
db.add(new_user)
|
||||
await db.commit()
|
||||
await db.refresh(new_user)
|
||||
assert new_user.id is not None, "New user ID should not be None"
|
||||
for i in GameMode:
|
||||
for i in [GameMode.OSU, GameMode.TAIKO, GameMode.FRUITS, GameMode.MANIA]:
|
||||
statistics = UserStatistics(mode=i, user_id=new_user.id)
|
||||
db.add(statistics)
|
||||
if settings.enable_osu_rx:
|
||||
statistics_rx = UserStatistics(mode=GameMode.OSURX, user_id=new_user.id)
|
||||
db.add(statistics_rx)
|
||||
if settings.enable_osu_ap:
|
||||
statistics_ap = UserStatistics(mode=GameMode.OSUAP, user_id=new_user.id)
|
||||
db.add(statistics_ap)
|
||||
daily_challenge_user_stats = DailyChallengeStats(user_id=new_user.id)
|
||||
db.add(daily_challenge_user_stats)
|
||||
await db.commit()
|
||||
|
||||
@@ -4,6 +4,7 @@ from datetime import UTC, datetime
|
||||
import time
|
||||
|
||||
from app.calculator import clamp
|
||||
from app.config import settings
|
||||
from app.database import (
|
||||
Beatmap,
|
||||
Playlist,
|
||||
@@ -31,7 +32,6 @@ from app.dependencies.database import get_db, get_redis
|
||||
from app.dependencies.fetcher import get_fetcher
|
||||
from app.dependencies.user import get_current_user
|
||||
from app.fetcher import Fetcher
|
||||
from app.models.beatmap import BeatmapRankStatus
|
||||
from app.models.room import RoomCategory
|
||||
from app.models.score import (
|
||||
INT_TO_MODE,
|
||||
@@ -92,10 +92,9 @@ async def submit_score(
|
||||
db_beatmap = await Beatmap.get_or_fetch(db, fetcher, bid=beatmap)
|
||||
except HTTPError:
|
||||
raise HTTPException(status_code=404, detail="Beatmap not found")
|
||||
ranked = db_beatmap.beatmap_status in {
|
||||
BeatmapRankStatus.RANKED,
|
||||
BeatmapRankStatus.APPROVED,
|
||||
}
|
||||
ranked = (
|
||||
db_beatmap.beatmap_status.has_pp() | settings.enable_all_beatmap_leaderboard
|
||||
)
|
||||
score = await process_score(
|
||||
current_user,
|
||||
beatmap,
|
||||
|
||||
Reference in New Issue
Block a user