new
This commit is contained in:
40
main.py
40
main.py
@@ -15,10 +15,13 @@ from config import settings
|
|||||||
|
|
||||||
class SMSRequest(BaseModel):
|
class SMSRequest(BaseModel):
|
||||||
phone_number: str
|
phone_number: str
|
||||||
code: str
|
code: Optional[str] = None
|
||||||
template_code: Optional[str] = settings.sms_template_code
|
template_code: Optional[str] = settings.sms_template_code
|
||||||
sign_name: Optional[str] = settings.sms_sign_name
|
sign_name: Optional[str] = settings.sms_sign_name
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
extra = "allow"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import os
|
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):
|
async def send_sms(sms_request: SMSRequest):
|
||||||
"""发送短信API"""
|
"""发送短信API"""
|
||||||
sms = SMS()
|
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()
|
conn = pool.getconn()
|
||||||
@@ -849,10 +871,20 @@ async def send_sms(sms_request: SMSRequest):
|
|||||||
biz_id = result.get('biz_id') if result else None
|
biz_id = result.get('biz_id') if result else None
|
||||||
error_message = result.get('error_message') if result else 'Unknown error'
|
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("""
|
cur.execute("""
|
||||||
INSERT INTO sms_records (phone_number, template_code, template_param, sign_name, status, biz_id, error_message)
|
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)
|
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()
|
conn.commit()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Error saving SMS record: {e}")
|
print(f"Error saving SMS record: {e}")
|
||||||
|
|||||||
Reference in New Issue
Block a user