update
This commit is contained in:
parent
2a49793d39
commit
b1b7e05b99
@ -61,63 +61,6 @@ 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,
|
||||||
|
|||||||
@ -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}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user