59 lines
1.6 KiB
Plaintext
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}"
|
|
}
|
|
}
|