2023-06-12 10:47:25 +08:00
|
|
|
# 全局使用的服务放到这里初始化,作为项目配置输入的入口
|
|
|
|
from configparser import ConfigParser
|
|
|
|
from logging import getLogger
|
|
|
|
from sqlalchemy.orm import declarative_base
|
|
|
|
from ThirdPartyApi.Tianyancha.Apis import TianyanchaApi
|
|
|
|
from Utils.AuthUtils import AuthUtil, TokenDataModel
|
|
|
|
from Utils.MongoUtils import MongoConnect
|
|
|
|
from Utils.PhoneMsgUtils import PhoneMsgSend
|
|
|
|
from Utils.RedisUtils import RedisPool
|
|
|
|
from Utils.SqlAlchemyUtils import SqlalchemyConnect
|
|
|
|
from Utils.VerifyCodeUtils import EmailCodeVerify, ImageCaptchaVerify, PhoneVerifyCode
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from typing import Optional
|
|
|
|
|
2023-06-12 17:02:26 +08:00
|
|
|
# 权限验证工具类
|
|
|
|
|
|
|
|
# 日志
|
|
|
|
uvicorn_log = getLogger('uvicorn')
|
|
|
|
|
|
|
|
# 配置数据
|
|
|
|
conf = ConfigParser()
|
|
|
|
conf.read("Config/common.ini", encoding='utf-8-sig')
|
|
|
|
|
2023-06-12 10:47:25 +08:00
|
|
|
|
|
|
|
class CompanyUserTokenDataModel(BaseModel):
|
|
|
|
id: Optional[str]
|
|
|
|
company_name: Optional[str]
|
|
|
|
email: Optional[str]
|
|
|
|
phone: Optional[str]
|
|
|
|
|
|
|
|
|
2023-06-12 15:48:07 +08:00
|
|
|
class InstitutionUserTokenDataModel(BaseModel):
|
|
|
|
id: Optional[str]
|
|
|
|
institution_name: Optional[str]
|
|
|
|
email: Optional[str]
|
|
|
|
phone: Optional[str]
|
|
|
|
|
|
|
|
|
2023-06-12 15:57:29 +08:00
|
|
|
class AdminUserTokenDataModel(BaseModel):
|
|
|
|
id: Optional[str]
|
|
|
|
email: Optional[str]
|
|
|
|
phone: Optional[str]
|
|
|
|
|
|
|
|
|
2023-06-12 17:02:26 +08:00
|
|
|
auth_util = AuthUtil[TokenDataModel](secret_key=conf['auth']['jwt_key'], tokenDataModel=TokenDataModel)
|
|
|
|
# 管理端用户权限
|
|
|
|
admin_user_auth_util = AuthUtil[AdminUserTokenDataModel](secret_key=conf['auth']['admin_user_jwt_key'],
|
|
|
|
tokenDataModel=AdminUserTokenDataModel)
|
|
|
|
# 企业用户权限
|
|
|
|
company_user_auth_util = AuthUtil[CompanyUserTokenDataModel](secret_key=conf['auth']['company_user_jwt_key'],
|
|
|
|
tokenDataModel=CompanyUserTokenDataModel)
|
|
|
|
# 协会用户权限
|
|
|
|
institution_user_auth_util = AuthUtil[InstitutionUserTokenDataModel](
|
|
|
|
secret_key=conf['auth']['institution_user_jwt_key'],
|
|
|
|
tokenDataModel=InstitutionUserTokenDataModel)
|
|
|
|
|
|
|
|
##############################################################
|
2023-06-12 10:47:25 +08:00
|
|
|
|
|
|
|
|
|
|
|
# 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'])
|
|
|
|
|
|
|
|
# mongo db
|
|
|
|
mg_db = MongoConnect(conf["mongo"]["host"], int(conf["mongo"]["port"]),
|
|
|
|
conf["mongo"]["db"],
|
|
|
|
conf["mongo"].get('user'),
|
|
|
|
conf["mongo"].get("password"))
|
|
|
|
# 邮箱验证码工具类
|
|
|
|
email_code_verify = EmailCodeVerify(redis_pool, conf['email']['api'], conf['email']['sender'])
|
|
|
|
|
|
|
|
# 图片验证码工具类
|
|
|
|
image_captcha_verify = ImageCaptchaVerify(redis_pool)
|
|
|
|
|
2023-06-12 17:02:26 +08:00
|
|
|
# 短信发送工具
|
2023-06-12 10:47:25 +08:00
|
|
|
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']
|
|
|
|
)
|
2023-06-12 17:02:26 +08:00
|
|
|
|
|
|
|
# 短信验证码工具
|
|
|
|
phone_verify_code = PhoneVerifyCode(redis_pool, phone_msg_send)
|
|
|
|
|
2023-06-12 10:47:25 +08:00
|
|
|
# 天眼查接口
|
|
|
|
tianyancha_api = TianyanchaApi(conf['tianyancha']['token'], mongo_connect=mg_db)
|
|
|
|
|
|
|
|
# 全局配置
|