Spaces:
Sleeping
Sleeping
| from fastapi import APIRouter, Depends, HTTPException, status | |
| from sqlalchemy.orm import Session | |
| from typing import List | |
| from database import get_db | |
| from models.membership import Membership | |
| from models.user import User | |
| from schemas.membership import MembershipResponse, MembershipCreate, MembershipUpdate | |
| from routers.auth import get_current_user, get_current_superadmin | |
| router = APIRouter() | |
| # 获取会员充值记录列表 | |
| async def get_membership_records( | |
| skip: int = 0, | |
| limit: int = 100, | |
| current_user: User = Depends(get_current_user), | |
| db: Session = Depends(get_db) | |
| ): | |
| # 普通用户只能查看自己公司的记录 | |
| if not current_user.is_superadmin: | |
| memberships = db.query(Membership).filter( | |
| Membership.company_code == current_user.company_code | |
| ).offset(skip).limit(limit).all() | |
| else: | |
| # 超级管理员可以查看所有记录 | |
| memberships = db.query(Membership).offset(skip).limit(limit).all() | |
| return memberships | |
| # 通过公司编码获取会员充值记录 | |
| async def get_membership_by_company( | |
| company_code: str, | |
| current_user: User = Depends(get_current_user), | |
| db: Session = Depends(get_db) | |
| ): | |
| # 检查用户权限:超级管理员可以访问所有公司,普通用户只能访问自己公司 | |
| if not current_user.is_superadmin and current_user.company_code != company_code: | |
| raise HTTPException( | |
| status_code=status.HTTP_403_FORBIDDEN, | |
| detail="You don't have permission to access this company's membership records" | |
| ) | |
| memberships = db.query(Membership).filter(Membership.company_code == company_code).all() | |
| return memberships | |
| # 创建会员充值记录(仅超级管理员可操作) | |
| async def create_membership( | |
| membership: MembershipCreate, | |
| current_user: User = Depends(get_current_superadmin), | |
| db: Session = Depends(get_db) | |
| ): | |
| db_membership = Membership(**membership.model_dump()) | |
| db.add(db_membership) | |
| db.commit() | |
| db.refresh(db_membership) | |
| return db_membership | |
| # 更新会员充值记录(仅超级管理员可操作) | |
| async def update_membership( | |
| membership_id: int, | |
| membership_update: MembershipUpdate, | |
| current_user: User = Depends(get_current_superadmin), | |
| db: Session = Depends(get_db) | |
| ): | |
| db_membership = db.query(Membership).filter(Membership.id == membership_id).first() | |
| if db_membership is None: | |
| raise HTTPException( | |
| status_code=status.HTTP_404_NOT_FOUND, | |
| detail=f"Membership record with id {membership_id} not found" | |
| ) | |
| # 更新会员充值记录 | |
| update_data = membership_update.model_dump(exclude_unset=True) | |
| for field, value in update_data.items(): | |
| setattr(db_membership, field, value) | |
| db.commit() | |
| db.refresh(db_membership) | |
| return db_membership | |
| # 删除会员充值记录(仅超级管理员可操作) | |
| async def delete_membership( | |
| membership_id: int, | |
| current_user: User = Depends(get_current_superadmin), | |
| db: Session = Depends(get_db) | |
| ): | |
| db_membership = db.query(Membership).filter(Membership.id == membership_id).first() | |
| if db_membership is None: | |
| raise HTTPException( | |
| status_code=status.HTTP_404_NOT_FOUND, | |
| detail=f"Membership record with id {membership_id} not found" | |
| ) | |
| db.delete(db_membership) | |
| db.commit() | |
| return {"message": f"Membership record with id {membership_id} deleted successfully"} |