refactor(module_generator): 重构代码生成模块结构

重构代码生成模块,删除冗余文件并优化结构:
1. 删除旧的form、page、table等相关文件
2. 新增gencode模块基础结构
3. 移动jinja2工具类和模板引擎初始化器到utils目录
4. 优化数据库模型关系定义
5. 更新nginx配置支持WebSocket
6. 添加正则验证和加密工具类
7. 修复菜单和部门模型的循环引用问题
8. 优化初始化脚本和配置加载逻辑

调整初始化流程,使用统一会话管理:
1. 修改数据库初始化使用AsyncSessionLocal
2. 优化定时任务初始化逻辑
3. 统一配置和字典服务初始化方式
4. 修复模型关系定义导致的循环导入问题

其他改进:
1. 更新requirements.txt添加依赖
2. 调整IP白名单配置
3. 优化数据库连接日志输出
4. 修复模型继承关系问题
This commit is contained in:
zhangtao
2025-09-12 01:05:07 +08:00
parent 08a9f19923
commit 714896161f
63 changed files with 1928 additions and 2494 deletions
@@ -7,6 +7,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
from app.common.enums import RedisInitKeyConfig
from app.utils.excel_util import ExcelUtil
from app.core.database import AsyncSessionLocal
from app.core.base_schema import BatchSetAvailable
from app.core.redis_crud import RedisCURD
from app.core.exceptions import CustomException
@@ -187,33 +188,33 @@ class DictDataService:
@classmethod
async def init_dict_service(cls, redis: Redis, db: AsyncSession):
"""应用初始化: 获取所有字典类型对应的字典数据信息并缓存service"""
auth = AuthSchema(db=db)
obj_list = await DictTypeCRUD(auth).get_obj_list_crud()
if not obj_list:
logger.warning("未找到任何字典类型数据")
return
for obj in obj_list:
dict_type = obj.dict_type
dict_data_list = await DictDataCRUD(auth).get_obj_list_crud(search={'dict_type': dict_type})
if not dict_data_list:
logger.warning(f"字典类型 {dict_type} 未找到对应的字典数据")
continue
dict_data = [DictDataOutSchema.model_validate(row).model_dump() for row in dict_data_list if row]
# 保存到Redis并设置过期时间
redis_key = f"{RedisInitKeyConfig.SYSTEM_DICT.key}:{dict_type}"
try:
value = json.dumps(dict_data, ensure_ascii=False)
await RedisCURD(redis).set(
key=redis_key,
value=value,
)
except Exception as e:
logger.error(f"初始化字典数据失败: {e}")
raise CustomException(msg=f"初始化字典数据失败 {e}")
async with AsyncSessionLocal() as session:
auth = AuthSchema(db=session)
obj_list = await DictTypeCRUD(auth).get_obj_list_crud()
if not obj_list:
logger.warning("未找到任何字典类型数据")
return
for obj in obj_list:
dict_type = obj.dict_type
dict_data_list = await DictDataCRUD(auth).get_obj_list_crud(search={'dict_type': dict_type})
if not dict_data_list:
logger.warning(f"字典类型 {dict_type} 未找到对应的字典数据")
continue
dict_data = [DictDataOutSchema.model_validate(row).model_dump() for row in dict_data_list if row]
# 保存到Redis并设置过期时间
redis_key = f"{RedisInitKeyConfig.SYSTEM_DICT.key}:{dict_type}"
try:
value = json.dumps(dict_data, ensure_ascii=False)
await RedisCURD(redis).set(
key=redis_key,
value=value,
)
except Exception as e:
logger.error(f"初始化字典数据失败: {e}")
raise CustomException(msg=f"初始化字典数据失败 {e}")
@classmethod
async def get_init_dict_service(cls, redis: Redis, dict_type: str)->List[Dict]: