Browse Source

finished the api to get phone code

dev
qiancj 9 months ago
parent
commit
626fc4babe
  1. 64
      backend/main.py

64
backend/main.py

@ -0,0 +1,64 @@
# encoding: utf-8
"""
@author: Qiancj
@contact: qiancj@risenenergy.com
@file: main
@create-time: 2023-08-21 13:52
@description: The new python script
"""
import random
import uuid
import uvicorn
from fastapi import FastAPI
from pydantic import BaseModel
from aliyunsdkcore.request import RpcRequest
from aliyunsdkcore.client import AcsClient
# 注意:不要更改
REGION = "cn-hangzhou"
ACCESS_KEY_ID = ""
ACCESS_KEY_SECRET = ""
acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)
app = FastAPI()
class PhoneCode(BaseModel):
phone: str
class SendPhoneCode:
@classmethod
def gen_phone_code(cls, out=""):
out += str(random.randint(0, 9))
return out if len(out) == 6 else cls.gen_phone_code(out)
@classmethod
def send_sms(cls, phone_numbers, sign_name, template_code, business_id=uuid.uuid1()):
sms_request = RpcRequest('Dysmsapi', '2017-05-25', 'SendSms')
# 申请的短信模板编码,必填
sms_request.add_query_param('TemplateCode', template_code)
# 短信模板变量参数
template_param = {"code": cls.gen_phone_code()}
sms_request.add_query_param('TemplateParam', template_param)
# 设置业务请求流水号,必填。
sms_request.add_query_param('OutId', business_id)
# 短信签名
sms_request.add_query_param('SignName', sign_name)
# 短信发送的号码列表,必填。
sms_request.add_query_param('PhoneNumbers', phone_numbers)
# 调用短信发送接口,返回json
sms_response = acs_client.do_action_with_exception(sms_request).decode(encoding="utf-8")
return sms_response
@app.post('/get_phone_code/')
async def hello(phone: PhoneCode):
ph_num = phone.phone
return {'message': SendPhoneCode.send_sms(ph_num, "秋城夜话", "SMS_462680310")}
if __name__ == '__main__':
uvicorn.run("main:app", host="0.0.0.0", port=8080, log_level="info", reload=True)
Loading…
Cancel
Save