feat(model): 添加status字段表示启用状态

- 在myapp模块的ApplicationModel中新增status字段,标识应用是否启用
- 在demo模块的DemoModel中新增status字段,标识示例条目是否启用
- 修改代码生成模块相关模型,替换BaseMixin为CreatorMixin
- 删除代码生成模块中Python模板相关文件与Vue前端代码模板,优化代码结构和清理无用模板文件
This commit is contained in:
zhangtao
2025-09-17 01:33:53 +08:00
parent d36b86e446
commit 700d76ad5a
41 changed files with 1463 additions and 91 deletions
@@ -15,7 +15,7 @@ from .service import VersionService
from .schema import VersionCreateSchema, VersionUpdateSchema
VersionRouter = APIRouter(route_class=OperationLogRoute, prefix="/versions", tags=["版本管理"])
VersionRouter = APIRouter(route_class=OperationLogRoute, prefix="/version", tags=["版本管理"])
@VersionRouter.get("/detail/{id}", summary="获取版本详情", description="获取版本详情")
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from typing import Dict, List, Optional, Sequence
from datetime import datetime
from app.core.base_crud import CRUDBase
from app.api.v1.module_system.auth.schema import AuthSchema
@@ -39,7 +40,16 @@ class VersionCRUD(CRUDBase[VersionModel, VersionCreateSchema, VersionUpdateSchem
:param data: 版本创建数据
:return: 创建的版本
"""
return await self.create(data=data)
# 处理 released_at 字段,确保字符串转换为 datetime 对象
data_dict = data.model_dump()
if data_dict.get('released_at') and isinstance(data_dict['released_at'], str):
try:
data_dict['released_at'] = datetime.strptime(data_dict['released_at'], '%Y-%m-%d %H:%M:%S')
except ValueError:
# 如果格式不正确,让数据库层处理错误
pass
return await self.create(data=data_dict)
async def update_crud(self, id: int, data: VersionUpdateSchema) -> Optional[VersionModel]:
"""更新版本
@@ -48,7 +58,16 @@ class VersionCRUD(CRUDBase[VersionModel, VersionCreateSchema, VersionUpdateSchem
:param data: 版本更新数据
:return: 更新的版本
"""
return await self.update(id=id, data=data)
# 处理 released_at 字段,确保字符串转换为 datetime 对象
data_dict = data.model_dump(exclude_unset=True, exclude={"id"})
if data_dict.get('released_at') and isinstance(data_dict['released_at'], str):
try:
data_dict['released_at'] = datetime.strptime(data_dict['released_at'], '%Y-%m-%d %H:%M:%S')
except ValueError:
# 如果格式不正确,让数据库层处理错误
pass
return await self.update(id=id, data=data_dict)
async def delete_crud(self, ids: List[int]) -> None:
"""批量删除版本
@@ -65,15 +84,13 @@ class VersionCRUD(CRUDBase[VersionModel, VersionCreateSchema, VersionUpdateSchem
"""
return await self.get(version_number=version_number)
async def get_by_status_crud(self, status: str, search: Optional[Dict] = None, order_by: Optional[List[Dict[str, str]]] = None) -> Sequence[VersionModel]:
async def get_by_status_crud(self, search: Optional[Dict] = None, order_by: Optional[List[Dict[str, str]]] = None) -> Sequence[VersionModel]:
"""根据状态获取版本列表
:param status: 版本状态
:param search: 搜索条件
:param order_by: 排序字段
:return: 版本列表
"""
if search is None:
search = {}
search['version_status'] = status
return await self.list(search=search, order_by=order_by or [])
@@ -19,6 +19,6 @@ class VersionModel(CreatorMixin):
version_number: Mapped[str] = mapped_column(String(50), nullable=False, comment='版本号')
title: Mapped[str] = mapped_column(String(255), nullable=False, comment='版本标题')
release_notes: Mapped[Optional[str]] = mapped_column(Text, comment='发布说明')
version_status: Mapped[str] = mapped_column(String(50), default='draft', comment='版本状态(draft, released, archived)')
status: Mapped[str] = mapped_column(String(50), default='draft', comment='版本状态(draft: 草稿, released: 已发布, archived: 已归档)')
project: Mapped[Optional[str]] = mapped_column(String(100), comment='所属项目')
released_at: Mapped[Optional[datetime]] = mapped_column(DateTime, comment='发布时间')
@@ -13,8 +13,7 @@ class VersionQueryParams:
def __init__(
self,
title: Optional[str] = Query(None, description="版本标题"),
status: Optional[bool] = Query(None, description="状态"),
version_status: Optional[str] = Query(None, description="版本状态"),
status: Optional[str] = Query(None, description="版本状态"),
creator: Optional[int] = Query(None, description="创建人"),
start_time: Optional[DateTimeStr] = Query(None, description="开始时间", example="2023-01-01 00:00:00"),
end_time: Optional[DateTimeStr] = Query(None, description="结束时间", example="2023-12-31 23:59:59"),
@@ -26,9 +25,7 @@ class VersionQueryParams:
# 精确查询字段
self.creator_id = creator
self.status = status
self.version_status = version_status # 使用 version_status 而不是 status
# 时间范围查询
if start_time and end_time:
@@ -5,6 +5,7 @@ from pydantic import BaseModel, ConfigDict, Field
from datetime import datetime
from app.core.base_schema import BaseSchema
from app.core.validator import DateTimeStr
class VersionCreateSchema(BaseModel):
@@ -13,10 +14,9 @@ class VersionCreateSchema(BaseModel):
title: str = Field(..., max_length=255, description='版本标题')
release_notes: Optional[str] = Field(default=None, description='发布说明')
description: Optional[str] = Field(default=None, description='工单描述')
status: Optional[bool] = Field(default=True, description='1、启动 2、停止')
version_status: Optional[str] = Field(default='draft', description='版本状态(draft, released, archived)')
status: Optional[str] = Field(default='draft', description='版本状态(draft: 草稿, released: 已发布, archived: 已归档)')
project: Optional[str] = Field(default=None, max_length=100, description='所属项目')
released_at: Optional[datetime] = Field(default=None, description='发布时间')
released_at: Optional[DateTimeStr] = Field(default=None, description='发布时间')
class VersionUpdateSchema(VersionCreateSchema):
@@ -70,7 +70,7 @@ class VersionService:
await VersionCRUD(auth).delete_crud(ids=ids)
@classmethod
async def get_version_by_status_service(cls, auth: AuthSchema, status: str, search: Optional[VersionQueryParams] = None, order_by: Optional[Union[str, List[Dict[str, str]]]] = None) -> List[Dict]:
async def get_version_by_status_service(cls, auth: AuthSchema, search: Optional[VersionQueryParams] = None, order_by: Optional[Union[str, List[Dict[str, str]]]] = None) -> List[Dict]:
"""根据状态获取版本列表"""
# 处理排序参数
processed_order_by = None
@@ -81,7 +81,6 @@ class VersionService:
processed_order_by = order_by
obj_list = await VersionCRUD(auth).get_by_status_crud(
status=status,
search=search.__dict__ if search else None,
order_by=processed_order_by
)