from typing import Optional from pydantic_settings import BaseSettings class Settings(BaseSettings): DEBUG: bool = True # 开发模式标志 API_V1_STR: str = "/api/v1" PROJECT_NAME: str = "FastAPI 项目" API_BASE_URL: str = "https://api-dev.beefast.co" # 积分别名 POINT_ALIAS: str = "蜂蜜" POINT_RATIO: float = 10.0 # 积分兑换比例 # 订单价格配置 ORDER_BASE_PRICE: float = 3.0 # 基础费用 ORDER_EXTRA_PACKAGE_PRICE: float = 0.5 # 额外包裹费用 ORDER_EXTRA_PACKAGE_THRESHOLD: int = 5 # 额外收费阈值 ORDER_DELIVERYMAN_SHARE_RATIO: float = 0.8 # 配送员分账比例 #订单创建成功文案 ORDER_SUCCESS_TEXT: str = "订单预计今晚前送达,请注意查收" ORDER_PREORDER_PRICE_TEXT: str = "基础费3元 (含5件包裹) 超出部分0.5元/件" # JWT 配置 SECRET_KEY: str = "s10GmiRMmplfYWXYZLSsE3X36Ld4gVZxHgAcdqFGC20v3llv7UdOeWLBEEP3e40p" ACCESS_TOKEN_EXPIRE_MINUTES: Optional[int] = None # None 表示永不过期 REDIS_HOST: str = "101.36.120.145" REDIS_PORT: int = 6379 REDIS_DB: int = 0 REDIS_PASSWORD: str = "redis_rJRMHr" VERIFICATION_CODE_EXPIRE_SECONDS: int = 300 # 验证码5分钟后过期 MYSQL_HOST: str = "gz-cynosdbmysql-grp-2j1cnopr.sql.tencentcdb.com" MYSQL_PORT: int = 27469 MYSQL_USER: str = "root" MYSQL_PASSWORD: str = "Aa#223388" MYSQL_DB: str = "beefastapp" @property def SQLALCHEMY_DATABASE_URL(self) -> str: return f"mysql+pymysql://{self.MYSQL_USER}:{self.MYSQL_PASSWORD}@{self.MYSQL_HOST}:{self.MYSQL_PORT}/{self.MYSQL_DB}?charset=utf8mb4" # 腾讯云短信配置 TENCENT_SECRET_ID: str = "AKIDxnbGj281iHtKallqqzvlV5YxBCrPltnS" TENCENT_SECRET_KEY: str = "ta6PXTMBsX7dzA7IN6uYUFn8F9uTovoU" TENCENT_REGION: str = "ap-guangzhou" # 接口地域 SMS_SDK_APP_ID: str = "1400961527" SMS_SIGN_NAME: str = "蜂快到家公众号" SMS_TEMPLATE_ID: str = "2353143" # 验证码短信模板ID # 腾讯云 COS 配置 COS_REGION: str = "ap-chengdu" COS_BUCKET: str = "dman-1311994147" COS_BASE_URL: str = "dman-1311994147.cos.ap-chengdu.myqcloud.com" # 注册赠券配置 REGISTER_COUPONS: list = [ {"coupon_id": 1, "count": 3, "expire_days": 15}, ] WECHAT_APPID: str = "wx3cc5b7dcb28f2756" WECHAT_SECRET: str = "fdf03e0ff428097c2a264da50b7d804e" WECHAT_MCH_ID: str = "1705259837" WECHAT_PRIVATE_KEY_PATH: str = "app/cert/apiclient_key.pem" WECHAT_CERT_SERIAL_NO: str = "5958C6605B4651122EC364831A3011C047EE549C" WECHAT_API_V3_KEY: str = "OAhAqXqebeT4ZC9VTYFkSWU0CENEahx5" # API v3密钥 WECHAT_PLATFORM_CERT_PATH: str = "app/cert/platform_key.pem" # 平台证书路径 MP_APPID: str = "wxa9db2cc7868dfefd" MP_SECRET: str = "3eed9a717654d6460ba9afda3b0f6be2" MP_TOKEN: str = "yORAT7RL9I3sux7uc4PbMEEHT1xowc6H" # 用于验证服务器配置 MP_AES_KEY: str = "XDc2mG1tWNikTithcSy66oD3fP5XXFasSeRk6ulicye" # 用于解密消息 # 微信模板消息ID #配送订单创建成功 WECHAT_DELIVERY_ORDER_CREATED_TEMPLATE_ID: str = "-aFOuC2dv1E6Opn9auB39bSiU4p0DbKOrUtOFgS-AaA" #配送订单接单 WECHAT_DELIVERY_ORDER_RECEIVED_TEMPLATE_ID: str = "zBdw3OQoZ4RQ9Yau-kpHJ-iGo6cjm7Q-dEh4Luzs2ww" #配送订单完成 WECHAT_DELIVERY_ORDER_COMPLETED_TEMPLATE_ID: str = "Yr4BuHkwUw1LTWYfSz7MTEBWcqaqKGojqHlxt14moCU" #配送订单取消 WECHAT_DELIVERY_ORDER_CANCELLED_TEMPLATE_ID: str = "5sS4wKt7jyoFGYMKQHGweIDB6UHrikF_ith0swd8z5Y" class Config: case_sensitive = True env_file = ".env" extra = "allow" # 允许额外的环境变量 settings = Settings()