This commit is contained in:
jeremygan2021
2026-01-29 20:05:53 +08:00
parent 6f49dd2e8f
commit 569c07ecc0

40
main.py
View File

@@ -15,10 +15,13 @@ from config import settings
class SMSRequest(BaseModel):
phone_number: str
code: str
code: Optional[str] = None
template_code: Optional[str] = settings.sms_template_code
sign_name: Optional[str] = settings.sms_sign_name
class Config:
extra = "allow"
import os
@@ -838,8 +841,27 @@ def update_user(phone: str, user_update: UserUpdate, current_user: dict = Depend
async def send_sms(sms_request: SMSRequest):
"""发送短信API"""
sms = SMS()
print(f"Sending SMS with template_code: {sms_request.template_code}, sign_name: {sms_request.sign_name}")
result = sms.main(self=sms, phone_number=sms_request.phone_number, template_param=sms_request.code, template_code=sms_request.template_code, sign_name=sms_request.sign_name)
# 获取所有参数
request_data = sms_request.dict()
# 提取固定参数
phone_number = request_data.pop('phone_number')
template_code = request_data.pop('template_code')
sign_name = request_data.pop('sign_name')
# 过滤掉值为 None 的参数,剩余的作为动态参数
dynamic_params = {k: v for k, v in request_data.items() if v is not None}
print(f"Sending SMS with template_code: {template_code}, sign_name: {sign_name}, params: {dynamic_params}")
result = sms.main(
self=sms,
phone_number=phone_number,
template_code=template_code,
sign_name=sign_name,
**dynamic_params
)
# 保存发送记录到数据库
conn = pool.getconn()
@@ -849,10 +871,20 @@ async def send_sms(sms_request: SMSRequest):
biz_id = result.get('biz_id') if result else None
error_message = result.get('error_message') if result else 'Unknown error'
# 将参数转换为字符串存储
if dynamic_params:
# 如果只有 code 参数,为了保持兼容性,优先尝试只存 code 值(如果这是之前的习惯)
# 但考虑到现在支持多参数,存 JSON 更加通用。
# 这里为了直观,如果有多个参数或没有 code存 JSON。
# 如果只有 code也可以存 JSON因为 sms.py 内部最终是转 JSON 发送的。
saved_param = json.dumps(dynamic_params, ensure_ascii=False)
else:
saved_param = ""
cur.execute("""
INSERT INTO sms_records (phone_number, template_code, template_param, sign_name, status, biz_id, error_message)
VALUES (%s, %s, %s, %s, %s, %s, %s)
""", (sms_request.phone_number, sms_request.template_code, sms_request.code, sms_request.sign_name, status, biz_id, error_message))
""", (phone_number, template_code, saved_param, sign_name, status, biz_id, error_message))
conn.commit()
except Exception as e:
print(f"Error saving SMS record: {e}")