# 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