feat: 拆分project model与project service

This commit is contained in:
martsforever
2025-08-24 02:18:27 +08:00
parent 4fc252be38
commit 7a30b179e8
3 changed files with 89 additions and 13 deletions
+24 -12
View File
@@ -1,12 +1,11 @@
from decimal import Decimal
from typing import Optional
from pydantic import computed_field
from sqlalchemy.orm import selectinload
from sqlmodel import Field, Relationship, select
from pydantic import computed_field, PrivateAttr
from sqlmodel import Field, Relationship
from app.model.BasicModel import BasicModel
from app.model.UserModel import UserServiceModel
from app.utils.create_module_service import create_model_service
class ProjectModel(BasicModel, table=True):
@@ -17,6 +16,27 @@ class ProjectModel(BasicModel, table=True):
budget: float = Field(default=None, description="项目预算金额")
version: int = Field(default=None, description="项目版本号")
# 使用 PrivateAttr 声明私有属性
_spent: Optional[Decimal] = PrivateAttr(default=None)
_balance: Optional[Decimal] = PrivateAttr(default=None)
# 属性访问器
@property
def spent(self) -> Optional[Decimal]:
return self._spent
@spent.setter
def spent(self, value: Optional[Decimal]) -> None:
self._spent = value
@property
def balance(self) -> Optional[Decimal]:
return self._balance
@balance.setter
def balance(self, value: Optional[Decimal]) -> None:
self._balance = value
# /*---------------------------------------leader_id-------------------------------------------*/
leader_id: str = Field(
@@ -42,11 +62,3 @@ class ProjectModel(BasicModel, table=True):
@leader_name.setter
def leader_name(self, value: Optional[str]) -> None:
pass
ProjectService = create_model_service(
Cls=ProjectModel,
custom_query=lambda: select(ProjectModel).options(
selectinload(ProjectModel.leader),
),
)