| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- # app/services/ticket_service.py
- from sqlalchemy.orm import Session
- from app.core.biz_exception import NotFoundError, PermissionDeniedError, BizLogicError
- from app.models.ticket import VasTicket
- from app.schemas.ticket import VasTicketCreate
- from datetime import datetime
- class TicketService:
- def create(db: Session, data: VasTicketCreate):
- rec = VasTicket(**data.dict(), status='pending', created_at=datetime.utcnow())
- db.add(rec)
- db.commit()
- db.refresh(rec)
- return rec
- def set_refund_approve(db: Session, id:int, admin_comment:str):
- rec = db.query(VasTicket).filter_by(id=id).first()
- if not rec:
- raise NotFoundError("Ticket not exist")
- rec.status = 'resolved'
- rec.admin_comment = admin_comment
- db.commit()
- db.refresh(rec)
- return rec
- def set_refund_need_info(db: Session, id:int, admin_comment:str):
- rec = db.query(VasTicket).filter_by(id=id).first()
- if not rec:
- raise NotFoundError("Ticket not exist")
- rec.status = 'info_required'
- rec.admin_comment = admin_comment
- db.commit()
- db.refresh(rec)
- return rec
- def submit_refund_extra(db: Session, ticket_id:int, extra:dict):
- rec = db.query(VasTicket).filter_by(id=ticket_id).first()
- if not rec:
- raise NotFoundError("Ticket not exist")
- rec.extra_fields = extra
- db.commit()
- db.refresh(rec)
- return rec
- def reject_refund(db: Session, id:int, admin_comment:str):
- rec = db.query(VasTicket).filter_by(id=id).first()
- if not rec:
- raise NotFoundError("Ticket not exist")
- rec.status = 'rejected'
- rec.admin_comment = admin_comment
- db.commit()
- db.refresh(rec)
- return rec
|