feat: initialize aivideo project
This commit is contained in:
42
backend/app/modules/payments/service.py
Normal file
42
backend/app/modules/payments/service.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.common.errors.app_error import NotFoundAppError
|
||||
from app.modules.payments.repository import PaymentsRepository
|
||||
from app.modules.wallets.service import WalletService
|
||||
|
||||
|
||||
class PaymentsService:
|
||||
def __init__(self, db: Session) -> None:
|
||||
self.db = db
|
||||
self.repository = PaymentsRepository(db)
|
||||
self.wallet_service = WalletService(db)
|
||||
|
||||
def repair_order(self, order_id: int) -> dict:
|
||||
order = self.repository.get_order_by_id(order_id)
|
||||
if not order:
|
||||
raise NotFoundAppError("order not found", code=30001)
|
||||
return self.wallet_service.handle_mock_payment(order.order_no)
|
||||
|
||||
def list_orders(self) -> list[dict]:
|
||||
rows = self.repository.list_orders().limit(200).all()
|
||||
return [self.serialize_order(item) for item in rows]
|
||||
|
||||
def get_order_detail(self, order_id: int) -> dict:
|
||||
order = self.repository.get_order_by_id(order_id)
|
||||
if not order:
|
||||
raise NotFoundAppError("order not found", code=30001)
|
||||
return self.serialize_order(order)
|
||||
|
||||
@staticmethod
|
||||
def serialize_order(order) -> dict:
|
||||
return {
|
||||
"id": order.id,
|
||||
"orderNo": order.order_no,
|
||||
"userId": order.user_id,
|
||||
"payAmount": f"{order.pay_amount:.2f}",
|
||||
"arrivalPoints": order.arrival_points,
|
||||
"status": order.status,
|
||||
"paymentChannelCode": order.payment_channel_code,
|
||||
"paidAt": order.paid_at.isoformat() if order.paid_at else None,
|
||||
"createdAt": order.created_at.isoformat(),
|
||||
}
|
||||
Reference in New Issue
Block a user