# 全局使用的服务放到这里初始化,作为项目配置输入的入口 import sys from configparser import ConfigParser from logging import getLogger from sqlalchemy.orm import declarative_base from utils.api_data_utils import TianyanchaApi from utils.auth_utils import AuthUtil, TokenDataModel from utils.mongo_utils import MongoConnect from utils.phone_msg_utils import PhoneMsgSend from utils.redis_utils import RedisPool from utils.sqlalchemy_common_utils import SqlalchemyConnect from utils.verify_code_utils import EmailVerifyCode, ImageCaptchaVerify, PhoneVerifyCode from pydantic import BaseModel from typing import Optional, List from pathlib import Path # 权限验证工具类 # 日志 uvicorn_log = getLogger('uvicorn') # 配置数据 conf = ConfigParser() start_model = "dev" if 'prod' in sys.argv: start_model = 'prod' print("start_model",start_model) conf.read(Path(__file__).parent.parent / 'config' / f'common{"." + start_model if start_model else ""}.ini', encoding='utf-8-sig') class CompanyUserTokenDataModel(BaseModel): id: Optional[str] company_name: Optional[str] email: Optional[str] phone: Optional[str] class InstitutionUserTokenDataModel(BaseModel): id: Optional[str] institution_name: Optional[str] email: Optional[str] phone: Optional[str] class AdminUserTokenDataModel(BaseModel): id: Optional[str] email: Optional[str] phone: Optional[str] departments: List[int] posts: List[int] auth_util = AuthUtil[AdminUserTokenDataModel](secret_key=conf['auth']['jwt_key'], tokenDataModel=AdminUserTokenDataModel) company_user_auth_util = AuthUtil[CompanyUserTokenDataModel](secret_key=conf['auth']['company_user_jwt_key'], tokenDataModel=CompanyUserTokenDataModel) ############################################################## # redis连接池 redis_pool = RedisPool(host=conf['redis']['host'], port=int(conf['redis']['port'])) redis_pool.connect() # 共用mysql数据库 common_db_base = declarative_base() # common_db = SqlalchemyConnect(common_db_base, host=conf['mysql']['host'], # user=conf['mysql']['user'], # password=conf['mysql']['password'], # db=conf['mysql']['db']) common_db = SqlalchemyConnect(common_db_base, host=conf['postgresql']['host'], user=conf['postgresql']['user'], password=conf['postgresql']['password'], db=conf['postgresql']['db'], db_type='postgresql') # mongo db mg_db = MongoConnect(conf["mongo"]["host"], int(conf["mongo"]["port"]), conf["mongo"]["db"], conf["mongo"].get('user'), conf["mongo"].get("password")) # 邮箱验证码工具类 email_verify_code = EmailVerifyCode(redis_pool, conf['email']['api'], conf['email']['sender']) # 图片验证码工具类 image_captcha_verify = ImageCaptchaVerify(redis_pool) # 短信发送工具 phone_msg_send = PhoneMsgSend(conf['hw_msg']['url'], conf['hw_msg']['app_key'], conf['hw_msg']['app_secret'], conf['hw_msg']['sender'], conf['hw_msg']['template_id'], conf['hw_msg']['signature'] ) # 短信验证码工具 phone_verify_code = PhoneVerifyCode(redis_pool, phone_msg_send) tianyancha_api = TianyanchaApi(conf['tianyancha']['token'], mongo_connect=mg_db) # 全局配置