# myapp/services/user_service.py import os from typing import Tuple from flask import current_app, session def _username_from_session() -> str: """通过 session['user_id'] -> username""" user_uuid = session.get("user_uuid") if not user_uuid: return None uuid2username = current_app.extensions["uuid2username"] return uuid2username.get(user_uuid) def get_or_load_current_user(): """ 返回当前用户对象(如 user_uuid2UserClass 中没有则从 JSON 载入并缓存) """ user_uuid = session.get("user_uuid") if not user_uuid: return None username = _username_from_session() if not username: return None user_map = current_app.extensions["user_uuid2UserClass"] if user_uuid not in user_map: users_list = current_app.extensions["users_list"] user_map[user_uuid] = users_list.get_user_by_name( username ) return user_map[user_uuid] def add_course_for_current_user(course_id: str, course_data): user_obj = get_or_load_current_user() if user_obj is None: return False # 你的 UserClass 应该有 select_new_course 接口 user_obj.select_new_course(course_id, course_data) return True