from fastapi import FastAPI, Request import uvicorn from fastapi.exceptions import HTTPException from fastapi.middleware.cors import CORSMiddleware from module_admin.controller.login_controller import loginController from module_admin.controller.captcha_controller import captchaController from module_admin.controller.user_controller import userController from module_admin.controller.menu_controller import menuController from module_admin.controller.dept_controller import deptController from module_admin.controller.role_controller import roleController from module_admin.controller.post_controler import postController from module_admin.controller.newtest_controler import newtestController from module_admin.controller.dict_controller import dictController from module_admin.controller.config_controller import configController from module_admin.controller.notice_controller import noticeController from module_admin.controller.log_controller import logController from module_admin.controller.online_controller import onlineController from module_admin.controller.job_controller import jobController from module_admin.controller.server_controller import serverController from module_admin.controller.cache_controller import cacheController from module_admin.controller.common_controller import commonController from module_admin.controller.dasset_controller import dassetController from module_admin.controller.dscatalog_controller import dscatalogController from module_admin.controller.dassetdict_controller import dassetdictController from module_admin.controller.fddict_controller import fddictController from module_admin.controller.nddict_controller import nddictController from module_admin.controller.ndstand_controller import ndstandController from module_admin.controller.vecset_controller import vecsetController from module_admin.controller.sscf_controller import sscfController from module_admin.controller.modmak_controller import modmakController from module_admin.controller.tsmcb_controller import tsmcbController from module_admin.controller.fccbd_controller import fccbdController from module_admin.controller.cdplb_controller import cdplbController from module_admin.controller.aichat_controller import aichatController from config.env import AppConfig from config.get_redis import RedisUtil from config.get_db import init_create_table from config.get_scheduler import SchedulerUtil from utils.response_util import * from utils.log_util import logger from utils.common_util import worship app = FastAPI( title=AppConfig.app_name, description=f'{AppConfig.app_name}接口文档', version=AppConfig.app_version, root_path=AppConfig.app_root_path, ) # 前端页面url origins = [ "http://localhost:8088", "http://127.0.0.1:8088", ] # 后台api允许跨域 allow_origins=origins, app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) @app.on_event("startup") async def startup_event(): logger.info(f"{AppConfig.app_name}开始启动") worship() await init_create_table() app.state.redis = await RedisUtil.create_redis_pool() await RedisUtil.init_sys_dict(app.state.redis) await RedisUtil.init_sys_config(app.state.redis) await SchedulerUtil.init_system_scheduler() logger.info(f"{AppConfig.app_name}启动成功") @app.on_event("shutdown") async def shutdown_event(): await RedisUtil.close_redis_pool(app) await SchedulerUtil.close_system_scheduler() # 自定义token检验异常 @app.exception_handler(AuthException) async def auth_exception_handler(request: Request, exc: AuthException): return response_401(data=exc.data, message=exc.message) # 自定义权限检验异常 @app.exception_handler(PermissionException) async def permission_exception_handler(request: Request, exc: PermissionException): return response_403(data=exc.data, message=exc.message) @app.exception_handler(HTTPException) async def http_exception_handler(request: Request, exc: HTTPException): return JSONResponse( content=jsonable_encoder({"message": exc.detail, "code": exc.status_code}), status_code=exc.status_code ) app.include_router(loginController, prefix="/login", tags=['登录模块']) app.include_router(captchaController, prefix="/captcha", tags=['验证码模块']) app.include_router(dassetdictController, prefix="/dasset/mates", tags=['数据资产-元数据标准']) app.include_router(fddictController, prefix="/dasset", tags=['数据资产-代码管理']) app.include_router(ndstandController, prefix="/dasset", tags=['数据资产-数据标准']) app.include_router(nddictController, prefix="/dasset", tags=['数据资产-数据字典']) app.include_router(modmakController, prefix="/modmag", tags=['模型管理-模型市场']) app.include_router(vecsetController, prefix="/dataint", tags=['智能数据-全句配置']) app.include_router(tsmcbController, prefix="/dataint/cypz", tags=['智能数据-特殊名词补充']) app.include_router(fccbdController, prefix="/dataint/cypz", tags=['智能数据-分词词典补充']) app.include_router(cdplbController, prefix="/dataint/cypz", tags=['智能数据-词典批量补充']) app.include_router(sscfController, prefix="/dataint", tags=['智能数据-短句配置']) app.include_router(userController, prefix="/system", tags=['系统管理-用户管理']) app.include_router(menuController, prefix="/system", tags=['系统管理-菜单管理']) app.include_router(deptController, prefix="/system", tags=['系统管理-部门管理']) app.include_router(roleController, prefix="/system", tags=['系统管理-角色管理']) app.include_router(postController, prefix="/system", tags=['系统管理-岗位管理']) app.include_router(newtestController, prefix="/system", tags=['系统管理-新测试项目']) app.include_router(dassetController, prefix="/system", tags=['系统管理-数据资产管理']) app.include_router(dscatalogController, prefix="/system", tags=['系统管理-数据标准管理']) app.include_router(dictController, prefix="/system", tags=['系统管理-字典管理']) app.include_router(configController, prefix="/system", tags=['系统管理-参数管理']) app.include_router(noticeController, prefix="/system", tags=['系统管理-通知公告管理']) app.include_router(logController, prefix="/system", tags=['系统管理-日志管理']) app.include_router(onlineController, prefix="/monitor", tags=['系统监控-在线用户']) app.include_router(jobController, prefix="/monitor", tags=['系统监控-定时任务']) app.include_router(serverController, prefix="/monitor", tags=['系统监控-服务监控']) app.include_router(cacheController, prefix="/monitor", tags=['系统监控-缓存监控']) app.include_router(commonController, prefix="/common", tags=['通用模块']) app.include_router(aichatController, prefix="/aichat", tags=['智能聊天模块']) if __name__ == '__main__': uvicorn.run( app='app:app', host=AppConfig.app_host, port=AppConfig.app_port, reload=AppConfig.app_reload )