feat: 优化代码生成器功能并修复多个问题

- 前端表格列添加溢出提示工具
- 后端登录IP归属地查询与设置统一处理
- 分页服务明确仅用于非SQL数据源场景
- 代码生成器添加字段筛选和帮助面板
- 修复菜单高亮和布局切换问题
- 更新文档中的BUG状态和解决方案
- 优化AI聊天界面样式和交互
- 添加数据库分页支持到多个模块
- 代码生成器表单校验和流程优化
- 修复PostgreSQL日期类型问题
This commit is contained in:
zhangtao
2026-03-30 00:37:16 +08:00
parent c5ec09f06f
commit 837d8a5aa7
56 changed files with 1931 additions and 663 deletions
@@ -5,7 +5,6 @@ from fastapi.responses import JSONResponse, StreamingResponse
from redis.asyncio.client import Redis
from app.api.v1.module_system.auth.schema import AuthSchema
from app.common.request import PaginationService
from app.common.response import ResponseSchema, StreamResponse, SuccessResponse
from app.core.base_params import PaginationQueryParam
from app.core.base_schema import BatchSetAvailable
@@ -82,13 +81,12 @@ async def get_type_list_controller(
异常:
- CustomException: 查询字典类型失败时抛出异常。
"""
result_dict_list = await DictTypeService.get_obj_list_service(
auth=auth, search=search, order_by=page.order_by
)
result_dict = await PaginationService.paginate(
data_list=result_dict_list,
result_dict = await DictTypeService.get_obj_page_service(
auth=auth,
page_no=page.page_no,
page_size=page.page_size,
search=search,
order_by=page.order_by,
)
log.info("查询字典类型列表成功")
return SuccessResponse(data=result_dict, msg="查询字典类型列表成功")
@@ -331,13 +329,12 @@ async def get_data_list_controller(
order_by = [{"order": "asc"}]
if page.order_by:
order_by = page.order_by
result_dict_list = await DictDataService.get_obj_list_service(
auth=auth, search=search, order_by=order_by
)
result_dict = await PaginationService.paginate(
data_list=result_dict_list,
result_dict = await DictDataService.get_obj_page_service(
auth=auth,
page_no=page.page_no,
page_size=page.page_size,
search=search,
order_by=order_by,
)
log.info("查询字典数据列表成功")
return SuccessResponse(data=result_dict, msg="查询字典数据列表成功")
@@ -67,6 +67,25 @@ class DictTypeService:
)
return [DictTypeOutSchema.model_validate(obj).model_dump() for obj in obj_list]
@classmethod
async def get_obj_page_service(
cls,
auth: AuthSchema,
page_no: int,
page_size: int,
search: DictTypeQueryParam | None = None,
order_by: list[dict] | None = None,
) -> dict:
"""分页查询字典类型(数据库 OFFSET/LIMIT)。"""
offset = (page_no - 1) * page_size
return await DictTypeCRUD(auth).page(
offset=offset,
limit=page_size,
order_by=order_by or [{"id": "asc"}],
search=search.__dict__ if search else {},
out_schema=DictTypeOutSchema,
)
@classmethod
async def create_obj_service(
cls, auth: AuthSchema, redis: Redis, data: DictTypeCreateSchema
@@ -308,6 +327,25 @@ class DictDataService:
)
return [DictDataOutSchema.model_validate(obj).model_dump() for obj in obj_list]
@classmethod
async def get_obj_page_service(
cls,
auth: AuthSchema,
page_no: int,
page_size: int,
search: DictDataQueryParam | None = None,
order_by: list[dict] | None = None,
) -> dict:
"""分页查询字典数据(数据库 OFFSET/LIMIT)。"""
offset = (page_no - 1) * page_size
return await DictDataCRUD(auth).page(
offset=offset,
limit=page_size,
order_by=order_by or [{"id": "asc"}],
search=search.__dict__ if search else {},
out_schema=DictDataOutSchema,
)
@classmethod
async def init_dict_service(cls, redis: Redis) -> None:
"""