ticket_service.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. # app/services/ticket_service.py
  2. from sqlalchemy.orm import Session
  3. from app.core.biz_exception import NotFoundError, PermissionDeniedError, BizLogicError
  4. from app.models.ticket import VasTicket
  5. from app.schemas.ticket import VasTicketCreate
  6. from datetime import datetime
  7. class TicketService:
  8. def create(db: Session, data: VasTicketCreate):
  9. rec = VasTicket(**data.dict(), status='pending', created_at=datetime.utcnow())
  10. db.add(rec)
  11. db.commit()
  12. db.refresh(rec)
  13. return rec
  14. def set_refund_approve(db: Session, id:int, admin_comment:str):
  15. rec = db.query(VasTicket).filter_by(id=id).first()
  16. if not rec:
  17. raise NotFoundError("Ticket not exist")
  18. rec.status = 'resolved'
  19. rec.admin_comment = admin_comment
  20. db.commit()
  21. db.refresh(rec)
  22. return rec
  23. def set_refund_need_info(db: Session, id:int, admin_comment:str):
  24. rec = db.query(VasTicket).filter_by(id=id).first()
  25. if not rec:
  26. raise NotFoundError("Ticket not exist")
  27. rec.status = 'info_required'
  28. rec.admin_comment = admin_comment
  29. db.commit()
  30. db.refresh(rec)
  31. return rec
  32. def submit_refund_extra(db: Session, ticket_id:int, extra:dict):
  33. rec = db.query(VasTicket).filter_by(id=ticket_id).first()
  34. if not rec:
  35. raise NotFoundError("Ticket not exist")
  36. rec.extra_fields = extra
  37. db.commit()
  38. db.refresh(rec)
  39. return rec
  40. def reject_refund(db: Session, id:int, admin_comment:str):
  41. rec = db.query(VasTicket).filter_by(id=id).first()
  42. if not rec:
  43. raise NotFoundError("Ticket not exist")
  44. rec.status = 'rejected'
  45. rec.admin_comment = admin_comment
  46. db.commit()
  47. db.refresh(rec)
  48. return rec