rbac/wwwroot/gen_sms_code.dspy

59 lines
1.6 KiB
Plaintext

phone = params_kw.cellphone
if phone is None:
return {
"status": "error",
"data": {
"message": "没有收到手机号"
}
}
try:
result = await sms_engine.generate_sms_code(phone)
if result is None:
return {
"status": "error",
"data": {
"message": "短信发送失败,请稍后重试"
}
}
code_id, code = result
debug(f'sms sent: code_id={code_id}, phone={phone}')
return {
"status": "ok",
"data": {
"message": "验证码已发送",
"key": code_id
}
}
except AttributeError:
# sms_engine is None or missing generate_sms_code — environment not configured
code = '123456'
code_id = getID()
from datetime import datetime, timedelta
expire_time = datetime.now() + timedelta(minutes=5)
env = request._run_ns
async with get_sor_context(env, 'smssend') as sor:
await sor.C('validatecode', {
'id': code_id,
'vcode': code,
'expire_time': expire_time,
'del_flg': '0',
'create_at': datetime.now()
})
debug(f'TEST MODE: code_id={code_id}, code={code}, phone={phone} (sms_engine unavailable)')
return {
"status": "ok",
"data": {
"message": f"测试模式: 验证码 {code}",
"key": code_id
}
}
except Exception as e:
debug(f'gen_sms_code error: {e}')
exception(f'gen_sms_code error for {phone}: {e}')
return {
"status": "error",
"data": {
"message": f"发送验证码出错: {e}"
}
}