new
This commit is contained in:
40
main.py
40
main.py
@@ -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}")
|
||||
|
||||
Reference in New Issue
Block a user