Explorar el Código

fix: 补全 expense/quota 和 expense/rule 缺失的 model.py 和 crud.py

alphah hace 2 semanas
padre
commit
bdde78f7f6

+ 23 - 0
backend/app/plugin/module_payment/expense/quota/crud.py

@@ -0,0 +1,23 @@
+from app.api.v1.module_system.auth.schema import AuthSchema
+from app.core.base_crud import CRUDBase
+
+from .model import QuotaModel
+from .schema import QuotaCreateSchema, QuotaUpdateSchema
+
+
+class QuotaCRUD(CRUDBase[QuotaModel, QuotaCreateSchema, QuotaUpdateSchema]):
+    """额度 CRUD 操作"""
+
+    def __init__(self, auth: AuthSchema) -> None:
+        self.auth = auth
+        super().__init__(model=QuotaModel, auth=auth)
+
+    async def get_by_out_biz_no(
+        self, out_biz_no: str
+    ) -> QuotaModel | None:
+        return await self.get(out_biz_no=out_biz_no)
+
+    async def get_by_employee_id(
+        self, employee_id: str
+    ) -> QuotaModel | None:
+        return await self.get(employee_id=employee_id)

+ 48 - 0
backend/app/plugin/module_payment/expense/quota/model.py

@@ -0,0 +1,48 @@
+from datetime import datetime
+from decimal import Decimal
+
+from sqlalchemy import DateTime, Numeric, String, Text
+from sqlalchemy.orm import Mapped, mapped_column
+
+from app.common.enums import PermissionFilterStrategy
+from app.core.base_model import PaymentModelMixin, TenantMixin, EnterpriseMixin
+
+from .enums import QuotaStatusEnum
+
+
+class QuotaModel(PaymentModelMixin, TenantMixin, EnterpriseMixin):
+    """额度模型"""
+
+    __tablename__ = "pay_expense_quota"
+    __table_args__ = {"comment": "额度表"}
+    __permission_strategy__ = PermissionFilterStrategy.ENTERPRISE_BASED
+
+    employee_id: Mapped[str] = mapped_column(
+        String(64), index=True, comment="员工ID"
+    )
+    institution_id: Mapped[str] = mapped_column(
+        String(64), index=True, comment="制度ID"
+    )
+    out_biz_no: Mapped[str | None] = mapped_column(
+        String(64), unique=True, index=True, comment="外部业务编号"
+    )
+    quota_id: Mapped[str | None] = mapped_column(
+        String(64), comment="额度ID(支付宝返回)"
+    )
+    total_amount: Mapped[Decimal | None] = mapped_column(
+        Numeric(12, 2), default=0, comment="总金额"
+    )
+    available_amount: Mapped[Decimal | None] = mapped_column(
+        Numeric(12, 2), default=0, comment="可用金额"
+    )
+    valid_from: Mapped[datetime | None] = mapped_column(
+        DateTime, comment="有效期开始"
+    )
+    valid_to: Mapped[datetime | None] = mapped_column(
+        DateTime, comment="有效期结束"
+    )
+    status: Mapped[str] = mapped_column(
+        String(32),
+        default=QuotaStatusEnum.QUOTA_ACTIVE.value,
+        comment="状态: QUOTA_ACTIVE/QUOTA_FROZEN/QUOTA_EXHAUSTED/QUOTA_EXPIRED"
+    )