ymt-python / routers /membership.py
hsailorj's picture
Add application file
551658a
Raw
History Blame Contribute Delete
3.78 kB
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()
# 获取会员充值记录列表
@router.get("/", response_model=List[MembershipResponse])
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
# 通过公司编码获取会员充值记录
@router.get("/{company_code}", response_model=List[MembershipResponse])
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
# 创建会员充值记录(仅超级管理员可操作)
@router.post("/", response_model=MembershipResponse)
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
# 更新会员充值记录(仅超级管理员可操作)
@router.put("/{membership_id}", response_model=MembershipResponse)
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
# 删除会员充值记录(仅超级管理员可操作)
@router.delete("/{membership_id}")
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"}