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:
1 parent
148e4a21c2
commit
6416fb4651
1 file changed
+32
-41
@@ -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()
|
||||
|
||||
Reference in new issue
Block a user