Przeglądaj źródła

/get_esign_templates 接口完成

mengqiankang 2 miesięcy temu
rodzic
commit
450b7ea42e

+ 1 - 1
alien_gateway/config.py

@@ -16,7 +16,7 @@ class Settings(BaseSettings):
     DB_PASSWORD: str = "Alien123456"
     DB_HOST: str = "120.26.186.130"
     DB_PORT: int = 30001
-    DB_NAME: str = "alien"
+    DB_NAME: str = "alien_sit"
 
     @property
     def SQLALCHEMY_DATABASE_URI(self) -> str:

+ 2 - 2
alien_store/api/deps.py

@@ -1,8 +1,8 @@
 from fastapi import Depends
-from sqlalchemy.orm import Session
+from sqlalchemy.ext.asyncio import AsyncSession
 from alien_database.session import get_db
 from alien_store.services.contract_server import ContractServer
 
 
-def get_contract_service(db: Session = Depends(get_db)) -> ContractServer:
+def get_contract_service(db: AsyncSession = Depends(get_db)) -> ContractServer:
     return ContractServer(db)

+ 1 - 1
alien_store/api/router.py

@@ -29,4 +29,4 @@ async def create_esign_templates(templates_data: TemplatesCreate, templates_serv
 
     # pydantic v2 使用 model_copy 更新字段
     data_with_url = templates_data.model_copy(update={"contract_url": contract_url, "seal_url": None})
-    return templates_server.create_template(data_with_url)
+    return await templates_server.create_template(data_with_url)

+ 3 - 2
alien_store/db/models/contract_store.py

@@ -1,6 +1,7 @@
 from datetime import datetime
 from typing import Optional
 from sqlalchemy import String, DateTime, BigInteger
+from sqlalchemy.dialects.mysql import LONGTEXT
 from sqlalchemy.orm import Mapped, mapped_column
 
 from alien_snowflake.generator import next_id
@@ -16,6 +17,6 @@ class ContractStore(Base, AuditMixin):
     merchant_name: Mapped[str] = mapped_column(String(100), comment="商家姓名")
     contact_phone: Mapped[str] = mapped_column(String(20), comment="联系电话")
     signing_status: Mapped[str] = mapped_column(String(20), default="未签署", comment="签署状态(已签署,未签署,已到期)")
-    contract_url: Mapped[str] = mapped_column(String(255), comment='合同URL')
-    seal_url: Mapped[str] = mapped_column(String(255), comment='印章URL')
+    contract_url: Mapped[str] = mapped_column(LONGTEXT, comment='合同URL')
+    seal_url: Mapped[str] = mapped_column(LONGTEXT, comment='印章URL')
 

+ 17 - 15
alien_store/repositories/contract_repo.py

@@ -1,31 +1,33 @@
-from sqlalchemy.orm import Session
-from sqlalchemy import or_
-from typing import List, Optional
+from sqlalchemy.ext.asyncio import AsyncSession
 from alien_store.db.models.contract_store import ContractStore
 
+
 class ContractRepository:
     """合同数据访问层"""
 
-
-    def __init__(self, db: Session):
+    def __init__(self, db: AsyncSession):
         self.db = db
 
-    def get_by_id(self, store_id: int):
+    async def get_by_id(self, store_id: int):
         """根据店铺id查询所有合同"""
-        return self.db.query(ContractStore).filter(ContractStore.id == store_id).all()
+        result = await self.db.execute(
+            ContractStore.__table__.select().where(ContractStore.id == store_id)
+        )
+        return result.fetchall()
 
-    def create(self, user_data):
+    async def create(self, user_data):
         """创建未签署合同模板"""
         db_templates = ContractStore(
-            store_id = user_data.store_id,
-            merchant_name = user_data.merchant_name,
-            contact_phone = user_data.contact_phone,
-            contract_url = user_data.contract_url,
-            seal_url = user_data.seal_url
+            store_id=user_data.store_id,
+            merchant_name=user_data.merchant_name,
+            business_segment=user_data.business_segment,
+            contact_phone=user_data.contact_phone,
+            contract_url=user_data.contract_url,
+            seal_url='0.0',
         )
         self.db.add(db_templates)
-        self.db.commit()
-        self.db.refresh(db_templates)
+        await self.db.commit()
+        await self.db.refresh(db_templates)
         return db_templates
 
 

+ 5 - 4
alien_store/services/contract_server.py

@@ -1,12 +1,13 @@
-from sqlalchemy.orm import Session
+from sqlalchemy.ext.asyncio import AsyncSession
 from alien_store.repositories.contract_repo import ContractRepository
 from alien_store.schemas.request.contract_store import TemplatesCreate
 
+
 class ContractServer:
-    def __init__(self, db: Session):
+    def __init__(self, db: AsyncSession):
         self.db = db
         self.esign_repo = ContractRepository(db)
 
-    def create_template(self, template_data: TemplatesCreate):
-        template = self.esign_repo.create(template_data)
+    async def create_template(self, template_data: TemplatesCreate):
+        await self.esign_repo.create(template_data)
         return {"message": "模板创建成功"}