This commit is contained in:
aaron 2025-03-09 20:35:55 +08:00
parent 2a49793d39
commit b1b7e05b99
2 changed files with 3 additions and 107 deletions

View File

@ -60,64 +60,7 @@ async def send_verify_code(request: VerifyCodeRequest):
) )
return success_response(message="验证码已发送") return success_response(message="验证码已发送")
# except Exception as e:
# logging.error(f"发送验证码失败: {str(e)}")
# return error_response(message=f"发送验证码失败: {str(e)}")
@router.post("/login")
async def login(
user_login: UserLogin,
db: Session = Depends(get_db),
response: Response = None,
request: Request = None
):
"""用户登录"""
phone = user_login.phone
verify_code = user_login.verify_code
# 验证验证码
stored_code = redis_client.get_client().get(f"verify_code:{phone}")
if not stored_code or stored_code != verify_code:
return error_response(message="验证码错误或已过期")
redis_client.get_client().delete(f"verify_code:{phone}")
# 查找或创建用户
user = db.query(UserDB).filter(UserDB.phone == phone).first()
if not user:
# 生成用户编码
user_code = generate_user_code(db)
user = UserDB(
nickname=f"蜜友{phone[-4:]}",
phone=phone,
user_code=user_code,
referral_code=user_login.referral_code,
password=get_password_hash("123456"),
roles=[UserRole.USER]
)
db.add(user)
db.flush() # 获取用户ID
db.commit()
db.refresh(user)
# 创建访问令牌
access_token = create_access_token(
data={"phone": user.phone}
)
request.session["access_token"] = access_token
return success_response(
message="登录成功",
data={
"user": UserInfo.model_validate(user),
"access_token": access_token,
"token_type": "bearer"
}
)
@router.get("/info", response_model=ResponseModel) @router.get("/info", response_model=ResponseModel)
async def get_user_info( async def get_user_info(
@ -171,53 +114,6 @@ async def get_user_info(
return success_response(data=user_data) return success_response(data=user_data)
@router.post("/phone-login", response_model=ResponseModel)
async def phone_login(
login_data: PhoneLoginRequest,
db: Session = Depends(get_db),
response: Response = None,
request: Request = None
):
""" 手机号登录(测试环境) """
if not settings.DEBUG:
return error_response(code=400, message="测试环境不支持手机号登录")
# 查找或创建用户
user = db.query(UserDB).filter(UserDB.phone == login_data.phone).first()
if not user:
# 生成用户编码
user_code = generate_user_code(db)
user = UserDB(
nickname=f"蜜友{login_data.phone[-4:]}",
phone=login_data.phone,
user_code=user_code,
referral_code=login_data.referral_code,
password=get_password_hash("123456"),
roles=[UserRole.USER]
)
db.add(user)
db.flush()
db.commit()
db.refresh(user)
# 创建访问令牌
access_token = create_access_token(
data={"phone": user.phone}
)
request.session["access_token"] = access_token
return success_response(
message="登录成功",
data={
"user": UserInfo.model_validate(user),
"access_token": access_token,
"token_type": "bearer"
}
)
@router.post("/logout", response_model=ResponseModel) @router.post("/logout", response_model=ResponseModel)
async def logout( async def logout(
response: Response, response: Response,

View File

@ -14,7 +14,7 @@ from app.core.wecombot import WecomBot
from app.api.endpoints import wecom from app.api.endpoints import wecom
from app.api.endpoints import feedback from app.api.endpoints import feedback
from starlette.middleware.sessions import SessionMiddleware from starlette.middleware.sessions import SessionMiddleware
import os
# 创建数据库表 # 创建数据库表
Base.metadata.create_all(bind=engine) Base.metadata.create_all(bind=engine)
@ -26,7 +26,6 @@ app = FastAPI(
docs_url="/docs" if settings.DEBUG else None docs_url="/docs" if settings.DEBUG else None
) )
app.default_response_class = CustomJSONResponse app.default_response_class = CustomJSONResponse
# 配置 CORS # 配置 CORS
@ -94,8 +93,9 @@ async def exception_handler(request, exc):
# 发送企业微信消息 # 发送企业微信消息
wecom_bot = WecomBot(settings.URL_WECOMBOT_SYS_EXCEPTION) wecom_bot = WecomBot(settings.URL_WECOMBOT_SYS_EXCEPTION)
env = os.getenv("APP_ENV", "dev").lower()
exception_log = f"""**API异常** exception_log = f"""{env}环境**API异常**
**请求信息** **请求信息**
> 请求方法{request.method} > 请求方法{request.method}
> 请求URL{request.url} > 请求URL{request.url}