config.py 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. # -*- coding: utf-8 -*-
  2. from pydantic import BaseSettings, Field
  3. from functools import lru_cache
  4. from typing import Optional
  5. from dotenv.main import DotEnv
  6. from extensions import logger
  7. from contextlib import contextmanager
  8. import os
  9. import io
  10. from io import StringIO
  11. def my_get_stream(self):
  12. if isinstance(self.dotenv_path, StringIO):
  13. yield self.dotenv_path
  14. elif os.path.isfile(self.dotenv_path):
  15. with io.open(self.dotenv_path, encoding='utf-8') as stream:
  16. yield stream
  17. else:
  18. if self.verbose:
  19. logger.warning("File doesn't exist %s", self.dotenv_path)
  20. yield StringIO('')
  21. DotEnv._get_stream = contextmanager(my_get_stream)
  22. class Settings(BaseSettings):
  23. # 系统环境
  24. ENVIRONMENT: Optional[str] = Field(None, env="ENVIRONMENT")
  25. SECRET_KEY: str = "09d25e094faa6ca2556c818166b7a9563b93f7099f6f0f4caa6cf63b88e8d3e7"
  26. ALGORITHM: str = "HS256"
  27. IS_DEV: bool = False
  28. IS_STAGE: bool = False
  29. IS_PROD: bool = False
  30. REDIS_DB_URL = {
  31. 'host': '127.0.0.1',
  32. 'port': 6379,
  33. 'user': 'default',
  34. 'password': 'c0b0Info',
  35. 'db': 0
  36. }
  37. # 粤商通网关配置
  38. YST_PASS_ID = "yst_msxmjmszsjzwfwyygzzh"
  39. YST_PASS_TOKEN = "lYPHgL5z4B2qdzr9Y07uIaQ2ucYb7thX"
  40. # 粤政易
  41. YZY_PASSID = ''
  42. YZY_PASSTOKEN = ''
  43. YZY_CORPSECRET = ''
  44. YZY_CORPID = ''
  45. YZY_AGENTID = ''
  46. YZY_API_ROOT = ''
  47. class Config:
  48. env_file = ".env"
  49. class DevConfig(Settings):
  50. IS_DEV: bool = True
  51. IS_STAGE: bool = False
  52. IS_PROD: bool = False
  53. MYSQL_SERVER: Optional[str] = Field(..., env="DEV_MYSQL_SERVER")
  54. MYSQL_USER: Optional[str] = Field(..., env="DEV_MYSQL_USER")
  55. MYSQL_PASSWORD: Optional[str] = Field(..., env="DEV_MYSQL_PASSWORD")
  56. MYSQL_DB_NAME: Optional[str] = Field(..., env="DEV_MYSQL_DB_NAME")
  57. MYSQL_PORT: Optional[int] = Field(..., env="DEV_MYSQL_PORT")
  58. YJHTGL_WEB_ROOT_PATH: Optional[str] = Field(..., env="DEV_YJHTGL_WEB_ROOT_PATH")
  59. YJXP_WEB_ROOT_PATH: Optional[str] = Field(..., env="DEV_YJXP_WEB_ROOT_PATH")
  60. YJXP_CALLBACK_WEB_PATH: Optional[str] = Field(..., env="DEV_YJXP_CALLBACK_WEB_PATH")
  61. YZY_WEB_ROOT: Optional[str] = Field(..., env="DEV_YZY_WEB_ROOT")
  62. HOME_URL = "http://127.0.0.1:8086"
  63. # 粤政易
  64. #YZY_PASS_ID: Optional[str] = Field(..., env="DEV_YZY_PASS_ID")
  65. #YZY_PASS_TOKEN: Optional[str] = Field(..., env="DEV_YZY_PASS_TOKEN")
  66. #YZY_HOST = "https://xtbg.digitalgd.com.cn"
  67. #YZY_API_ROOT = "http://19.15.0.128:8080"
  68. # 粤商通网关配置
  69. YST_PASS_ID = "yst_mmsyjjzhyjxt"
  70. YST_PASS_TOKEN = "3AtV4BRgyM8OFGJYlJWGQBhCeQwB0MhN"
  71. class ProdConfig(Settings):
  72. IS_DEV: bool = False
  73. IS_STAGE: bool = False
  74. IS_PROD: bool = True
  75. MYSQL_SERVER: Optional[str] = Field(..., env="PROD_MYSQL_SERVER")
  76. MYSQL_USER: Optional[str] = Field(..., env="PROD_MYSQL_USER")
  77. MYSQL_PASSWORD: Optional[str] = Field(..., env="PROD_MYSQL_PASSWORD")
  78. MYSQL_DB_NAME: Optional[str] = Field(..., env="PROD_MYSQL_DB_NAME")
  79. MYSQL_PORT: Optional[int] = Field(..., env="PROD_MYSQL_PORT")
  80. YJHTGL_WEB_ROOT_PATH: Optional[str] = Field(..., env="PROD_YJHTGL_WEB_ROOT_PATH")
  81. YJXP_WEB_ROOT_PATH: Optional[str] = Field(..., env="PROD_YJXP_WEB_ROOT_PATH")
  82. YJXP_CALLBACK_WEB_PATH: Optional[str] = Field(..., env="PROD_YJXP_CALLBACK_WEB_PATH")
  83. YZY_WEB_ROOT: Optional[str] = Field(..., env="PROD_YZY_WEB_ROOT")
  84. # 粤政易
  85. YZY_PASSID: Optional[str] = Field(..., env="PROD_YZY_PASSID")
  86. YZY_PASSTOKEN: Optional[str] = Field(..., env="PROD_YZY_PASSTOKEN")
  87. YZY_CORPSECRET: Optional[str] = Field(..., env="PROD_YZY_CORPSECRET")
  88. YZY_CORPID: Optional[str] = Field(..., env="PROD_YZY_CORPID")
  89. YZY_AGENTID: Optional[str] = Field(..., env="PROD_YZY_AGENTID")
  90. YZY_API_ROOT = "http://19.25.35.23:8080"
  91. # YZY_HOST = "https://xtbg.digitalgd.com.cn"
  92. # 统一认证登录
  93. HOME_URL = "https://yjzp.mmsyjj.cn:8086"
  94. TYRZ_CLIENT_ID: Optional[str] = Field(..., env="PROD_TYRZ_CLIENT_ID")
  95. TYRZ_CLIENT_SECRET: Optional[str] = Field(..., env="PROD_TYRZ_CLIENT_SECRET")
  96. TYRZ_REDIRECT_URI = "https://yjzp.mmsyjj.cn:8086/tyrz/login"
  97. TYRZ_GET_TOKEN = 'https://tyrz.gdgov.cn/zwrz/rz/sso/oauth/token'
  98. TYRZ_GET_TOKEN_INFO = 'https://tyrz.gdgov.cn/zwrz/rz/sso/openapi/user/getuserinfodetail'
  99. TYRZ_LOGOUT = 'https://tyrz.gdgov.cn/zwrz/rz/sso/logout?client_id={}&type=PC&backurl='
  100. REDIS_DB_URL = {
  101. 'host': '127.0.0.1',
  102. 'port': 6379,
  103. 'user': 'default',
  104. 'password': 'c0b0Info',
  105. 'db': 0
  106. }
  107. # 粤商通网关配置
  108. YST_PASS_ID = "yst_mmsyjjzhyjxt"
  109. YST_PASS_TOKEN = "d6t8rljIoEzMzOFIX5Y8FODhKZSmulwB"
  110. class StageConfig(Settings):
  111. IS_DEV: bool = False
  112. IS_STAGE: bool = True
  113. IS_PROD: bool = False
  114. MYSQL_SERVER: Optional[str] = Field(..., env="STAGE_MYSQL_SERVER")
  115. MYSQL_USER: Optional[str] = Field(..., env="STAGE_MYSQL_USER")
  116. MYSQL_PASSWORD: Optional[str] = Field(..., env="STAGE_MYSQL_PASSWORD")
  117. MYSQL_DB_NAME: Optional[str] = Field(..., env="STAGE_MYSQL_DB_NAME")
  118. MYSQL_PORT: Optional[int] = Field(..., env="STAGE_MYSQL_PORT")
  119. YJHTGL_WEB_ROOT_PATH: Optional[str] = Field(..., env="STAGE_YJHTGL_WEB_ROOT_PATH")
  120. YJXP_WEB_ROOT_PATH: Optional[str] = Field(..., env="STAGE_YJXP_WEB_ROOT_PATH")
  121. YJXP_CALLBACK_WEB_PATH: Optional[str] = Field(..., env="STAGE_YJXP_CALLBACK_WEB_PATH")
  122. YZY_WEB_ROOT: Optional[str] = Field(..., env="STAGE_YZY_WEB_ROOT")
  123. # 粤政易
  124. # YZY_PASS_ID: Optional[str] = Field(..., env="STAGE_YZY_PASS_ID")
  125. # YZY_PASS_TOKEN: Optional[str] = Field(..., env="STAGE_YZY_PASS_TOKEN")
  126. # YZY_HOST = "https://xtbg.digitalgd.com.cn"
  127. # YZY_API_ROOT = "http://19.15.0.128:8080"
  128. # 统一认证登录
  129. HOME_URL = "http://19.155.220.206:8086"
  130. TYRZ_CLIENT_ID: Optional[str] = Field(..., env="STAGE_TYRZ_CLIENT_ID")
  131. TYRZ_CLIENT_SECRET: Optional[str] = Field(..., env="STAGE_TYRZ_CLIENT_SECRET")
  132. TYRZ_REDIRECT_URI = "http://19.155.220.206:8086/tyrz/login"
  133. TYRZ_GET_TOKEN = 'https://xtbg.digitalgd.com.cn/zwrz/rz/sso/oauth/token'
  134. TYRZ_GET_TOKEN_INFO = 'https://xtbg.digitalgd.com.cn/zwrz/rz/sso/openapi/user/getuserinfo'
  135. TYRZ_LOGOUT = 'https://xtbg.digitalgd.com.cn/zwrz/rz/sso/logout?client_id={}&backurl='
  136. REDIS_DB_URL = {
  137. 'host': '127.0.0.1',
  138. 'port': 6379,
  139. 'user': 'default',
  140. 'password': 'c0b0Info',
  141. 'db': 0
  142. }
  143. # 粤商通网关配置
  144. YST_PASS_ID = "yst_mmsyjjzhyjxt"
  145. YST_PASS_TOKEN = "3AtV4BRgyM8OFGJYlJWGQBhCeQwB0MhN"
  146. class FactoryConfig:
  147. """Returns a config instance dependending on the ENV_STATE variable."""
  148. def __init__(self, env_state: Optional[str]):
  149. self.env_state = env_state
  150. def __call__(self):
  151. if self.env_state == "development":
  152. return DevConfig()
  153. elif self.env_state == "production":
  154. return ProdConfig()
  155. elif self.env_state == "stage":
  156. return StageConfig()
  157. else:
  158. return DevConfig()
  159. @lru_cache()
  160. def get_configs():
  161. from dotenv import load_dotenv
  162. load_dotenv(encoding='utf-8')
  163. return FactoryConfig(Settings().ENVIRONMENT)()
  164. settings = get_configs()