fix(admin): 修复注册设置PUT接口——由独立query参数改为接收JSON body

根因:PUT /admin/users/register-settings 参数定义为 phone_required: bool = None 等独立query参数,
但前端发送的是 JSON body {"phone_required":true,"email_required":true}。
FastAPI无法把JSON body映射到独立参数 → 全部收到None → 循环跳过 → DB无更新(提示成功但无效)。
修复:参数改为 body: dict 统一接收JSON,用 body.get() 取值更新 RegisterSetting 表。
This commit is contained in:
deploy committed 2026-07-15 18:50:36 +08:00
1 parent 148e4a21c2
commit 6416fb4651
1 file changed
+32 -41
+32 -41
View File
@@ -121,57 +121,48 @@ async def get_register_settings(
@router.put("/register-settings")
async def update_register_settings(
phone_required: bool = None,
phone_sms_required: bool = None,
email_required: bool = None,
email_verify_required: bool = None,
real_name_required: bool = None,
aliyun_access_key: str = None,
aliyun_secret_key: str = None,
aliyun_endpoint: str = None,
sms_sign_name: str = None,
sms_template_code: str = None,
body: dict,
admin_user=Depends(get_current_admin),
db: Session = Depends(get_db),
):
"""更新注册设置"""
"""更新注册设置(接收 JSON Body)"""
setting = db.query(RegisterSetting).first()
if not setting:
setting = RegisterSetting(
id=str(uuid.uuid4()),
phone_required=phone_required if phone_required is not None else True,
phone_sms_required=phone_sms_required if phone_sms_required is not None else True,
email_required=email_required if email_required is not None else True,
email_verify_required=email_verify_required if email_verify_required is not None else True,
real_name_required=real_name_required or False,
aliyun_access_key=aliyun_access_key,
aliyun_secret_key=aliyun_secret_key,
aliyun_endpoint=aliyun_endpoint,
sms_sign_name=sms_sign_name,
sms_template_code=sms_template_code,
phone_required=body.get("phone_required", True),
phone_sms_required=body.get("phone_sms_required", True),
email_required=body.get("email_required", True),
email_verify_required=body.get("email_verify_required", True),
real_name_required=body.get("real_name_required", False),
aliyun_access_key=body.get("aliyun_access_key"),
aliyun_secret_key=body.get("aliyun_secret_key"),
aliyun_endpoint=body.get("aliyun_endpoint"),
sms_sign_name=body.get("sms_sign_name"),
sms_template_code=body.get("sms_template_code"),
)
db.add(setting)
else:
if phone_required is not None:
setting.phone_required = phone_required
if phone_sms_required is not None:
setting.phone_sms_required = phone_sms_required
if email_required is not None:
setting.email_required = email_required
if email_verify_required is not None:
setting.email_verify_required = email_verify_required
if real_name_required is not None:
setting.real_name_required = real_name_required
if aliyun_access_key is not None:
setting.aliyun_access_key = aliyun_access_key
if aliyun_secret_key is not None:
setting.aliyun_secret_key = aliyun_secret_key
if aliyun_endpoint is not None:
setting.aliyun_endpoint = aliyun_endpoint
if sms_sign_name is not None:
setting.sms_sign_name = sms_sign_name
if sms_template_code is not None:
setting.sms_template_code = sms_template_code
if "phone_required" in body:
setting.phone_required = body["phone_required"]
if "phone_sms_required" in body:
setting.phone_sms_required = body["phone_sms_required"]
if "email_required" in body:
setting.email_required = body["email_required"]
if "email_verify_required" in body:
setting.email_verify_required = body["email_verify_required"]
if "real_name_required" in body:
setting.real_name_required = body["real_name_required"]
if "aliyun_access_key" in body:
setting.aliyun_access_key = body["aliyun_access_key"]
if "aliyun_secret_key" in body:
setting.aliyun_secret_key = body["aliyun_secret_key"]
if "aliyun_endpoint" in body:
setting.aliyun_endpoint = body["aliyun_endpoint"]
if "sms_sign_name" in body:
setting.sms_sign_name = body["sms_sign_name"]
if "sms_template_code" in body:
setting.sms_template_code = body["sms_template_code"]
setting.updated_at = datetime.now()
db.commit()