payment_qr_service.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. # app/services/payment_qr_service.py
  2. from sqlalchemy.orm import Session
  3. from app.core.biz_exception import NotFoundError, PermissionDeniedError, BizLogicError
  4. from app.models.payment_provider import VasPaymentProvider
  5. from app.models.payment_qr import VasPaymentQR
  6. from app.schemas.payment_qr import VasPaymentQrCreate, VasPaymentQrSetEnableIn
  7. class PaymentQrService:
  8. def create(db: Session, data: VasPaymentQrCreate):
  9. rec = VasPaymentQR(**data.dict())
  10. db.add(rec)
  11. db.commit()
  12. db.refresh(rec)
  13. return rec
  14. def get_by_id(db: Session, id: int):
  15. obj = db.query(VasPaymentQR).filter(VasPaymentQR.id == id).first()
  16. if not obj:
  17. raise NotFoundError("QR not exist")
  18. return obj
  19. def set_enable(db: Session, id: int, payload: VasPaymentQrSetEnableIn):
  20. obj = db.query(VasPaymentQR).filter(VasPaymentQR.id == id).first()
  21. if not obj:
  22. raise NotFoundError("QR not exist")
  23. obj.is_active = payload.is_active
  24. db.commit()
  25. db.refresh(obj)
  26. return obj
  27. def delete(db: Session, id: int):
  28. obj = db.query(VasPaymentQR).filter(VasPaymentQR.id == id).first()
  29. if not obj:
  30. raise NotFoundError("QR not exist")
  31. db.delete(obj)
  32. db.commit()
  33. def get_by_devid(db: Session, devid: str):
  34. return db.query(VasPaymentQR).filter(VasPaymentQR.devid == devid).all()
  35. def get_by_provider(db: Session, provider: str):
  36. return db.query(VasPaymentQR).filter(VasPaymentQR.provider == provider).all()
  37. def list_by_provider(db: Session, provider_id: int):
  38. obj = db.query(VasPaymentProvider).filter(VasPaymentProvider.id==provider_id).first()
  39. if not obj:
  40. raise NotFoundError("Provider not exist")
  41. return db.query(VasPaymentQR).filter(VasPaymentQR.provider==obj.name).all()