2026.06.04 frontend építés közben
This commit is contained in:
@@ -2,7 +2,9 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy.exc import SQLAlchemyError
|
||||
from typing import Dict, Any
|
||||
from sqlalchemy import select, or_
|
||||
from typing import Dict, Any, List, Optional
|
||||
from datetime import datetime
|
||||
|
||||
from app.api.deps import get_db, get_current_user
|
||||
from app.schemas.user import UserResponse, UserUpdate, ActiveOrganizationUpdate, UserWithTokenResponse
|
||||
@@ -10,10 +12,27 @@ from app.models.identity import User
|
||||
from app.services.trust_engine import TrustEngine
|
||||
from app.core.security import create_tokens, DEFAULT_RANK_MAP
|
||||
from app.core.config import settings
|
||||
from pydantic import BaseModel
|
||||
|
||||
router = APIRouter()
|
||||
trust_engine = TrustEngine()
|
||||
|
||||
# MLM Hálózat válasz sémák
|
||||
class NetworkMemberL1(BaseModel):
|
||||
email: str
|
||||
referral_code: str
|
||||
folder_slug: Optional[str]
|
||||
joined_at: datetime
|
||||
|
||||
class NetworkMemberL2L3(BaseModel):
|
||||
referral_code: str
|
||||
joined_at: datetime
|
||||
|
||||
class NetworkResponse(BaseModel):
|
||||
level1: List[NetworkMemberL1]
|
||||
level2: List[NetworkMemberL2L3]
|
||||
level3: List[NetworkMemberL2L3]
|
||||
|
||||
@router.get("/me", response_model=UserResponse)
|
||||
async def read_users_me(
|
||||
db: AsyncSession = Depends(get_db),
|
||||
@@ -222,3 +241,67 @@ async def update_active_organization(
|
||||
access_token=access_token,
|
||||
token_type="bearer"
|
||||
)
|
||||
|
||||
@router.get("/me/network", response_model=NetworkResponse)
|
||||
async def get_my_network(
|
||||
db: AsyncSession = Depends(get_db),
|
||||
current_user: User = Depends(get_current_user),
|
||||
):
|
||||
"""
|
||||
Visszaadja a felhasználó MLM hálózatát 3 szinten:
|
||||
- L1: Közvetlen meghívottak (email + kód)
|
||||
- L2: L1 meghívottai (csak kód)
|
||||
- L3: L2 meghívottai (csak kód)
|
||||
"""
|
||||
# L1: Közvetlen meghívottak
|
||||
l1_stmt = select(User).where(User.referred_by_id == current_user.id)
|
||||
l1_result = await db.execute(l1_stmt)
|
||||
l1_users = l1_result.scalars().all()
|
||||
|
||||
level1 = [
|
||||
NetworkMemberL1(
|
||||
email=u.email,
|
||||
referral_code=u.referral_code or "",
|
||||
folder_slug=u.folder_slug,
|
||||
joined_at=u.created_at
|
||||
)
|
||||
for u in l1_users
|
||||
]
|
||||
|
||||
# L2: L1 userek által meghívottak
|
||||
level2 = []
|
||||
if l1_users:
|
||||
l1_ids = [u.id for u in l1_users]
|
||||
l2_stmt = select(User).where(User.referred_by_id.in_(l1_ids))
|
||||
l2_result = await db.execute(l2_stmt)
|
||||
l2_users = l2_result.scalars().all()
|
||||
|
||||
level2 = [
|
||||
NetworkMemberL2L3(
|
||||
referral_code=u.referral_code or "",
|
||||
joined_at=u.created_at
|
||||
)
|
||||
for u in l2_users
|
||||
]
|
||||
|
||||
# L3: L2 userek által meghívottak
|
||||
level3 = []
|
||||
if l2_users:
|
||||
l2_ids = [u.id for u in l2_users]
|
||||
l3_stmt = select(User).where(User.referred_by_id.in_(l2_ids))
|
||||
l3_result = await db.execute(l3_stmt)
|
||||
l3_users = l3_result.scalars().all()
|
||||
|
||||
level3 = [
|
||||
NetworkMemberL2L3(
|
||||
referral_code=u.referral_code or "",
|
||||
joined_at=u.created_at
|
||||
)
|
||||
for u in l3_users
|
||||
]
|
||||
|
||||
return NetworkResponse(
|
||||
level1=level1,
|
||||
level2=level2,
|
||||
level3=level3
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user