- sql/schema.sql: users/authorizations/auth_scenes/usage_logs + sessions 建表 - db.py: aiomysql 连接池,lifespan 内初始化与释放 - wechat_api.py: access_token 缓存 + 临时二维码创建 - auth.py: /auth/create_scene、/auth/status,handle_scan 事务内幂等处理扫码 - wechat.py: 接入 DB 生命周期,处理 subscribe/SCAN 事件;移除多余的 openid query 参数 - 首次关注赠送 7 天免费授权,has_claimed_free 条件更新保证幂等 - config.py/.env.example: 新增 FREE_AUTH_DAYS/SCENE_TTL_SECONDS/SESSION_TTL_HOURS
33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
"""
|
|
配置管理 - 从 .env 文件读取敏感信息
|
|
.env 文件不进 Git(已在 .gitignore 中排除)
|
|
"""
|
|
|
|
import os
|
|
from dotenv import load_dotenv
|
|
|
|
# 加载 .env 文件
|
|
load_dotenv()
|
|
|
|
# 微信测试号配置
|
|
WECHAT_TOKEN = os.getenv("WECHAT_TOKEN", "")
|
|
WECHAT_APPID = os.getenv("WECHAT_APPID", "")
|
|
WECHAT_SECRET = os.getenv("WECHAT_SECRET", "")
|
|
|
|
# MySQL 配置
|
|
MYSQL_HOST = os.getenv("MYSQL_HOST", "127.0.0.1")
|
|
MYSQL_PORT = int(os.getenv("MYSQL_PORT", "3306"))
|
|
MYSQL_USER = os.getenv("MYSQL_USER", "root")
|
|
MYSQL_PASSWORD = os.getenv("MYSQL_PASSWORD", "")
|
|
MYSQL_DB = os.getenv("MYSQL_DB", "wechat_api")
|
|
|
|
# Redis 配置
|
|
REDIS_HOST = os.getenv("REDIS_HOST", "127.0.0.1")
|
|
REDIS_PORT = int(os.getenv("REDIS_PORT", "6379"))
|
|
REDIS_PASSWORD = os.getenv("REDIS_PASSWORD", "")
|
|
|
|
# 业务配置
|
|
FREE_AUTH_DAYS = int(os.getenv("FREE_AUTH_DAYS", "7")) # 首次关注赠送天数
|
|
SCENE_TTL_SECONDS = int(os.getenv("SCENE_TTL_SECONDS", "300")) # 二维码/scene 有效期(秒)
|
|
SESSION_TTL_HOURS = int(os.getenv("SESSION_TTL_HOURS", "24")) # session_token 有效期(小时)
|