'{"mobiel": "18811111111", "image_code": "AAAA", "image_code_id": "u23jksdhjfkjh2jh4jhdsj"}'
# 1. 獲取參數:手機號,圖片驗證碼內容,圖片驗證碼的編號 (隨機值)
# params_dict = json.loads(request.data)
params_dict = request.json
mobile = params_dict.get("mobile")
image_code = params_dict.get("image_code")
image_code_id = params_dict.get("image_code_id")
# 2. 校驗參數(參數是否符合規則,判斷是否有值)
# 判斷參數是否有值
if not all([mobile, image_code, image_code_id]):
# {"errno": "4100", "errmsg": "參數有誤"}
return jsonify(errno=RET.PARAMERR, errmsg="參數有誤")
# 校驗手機號是否正確
if not re.match('1[35678]\\d{9}', mobile):
return jsonify(errno=RET.PARAMERR, errmsg="手機號格式不正確")
# 3. 先從redis中取出真實的驗證碼內容
try:
real_image_code = redis_store.get("ImageCodeId_" + image_code_id)
except Exception as e:
current_app.logger.error(e)
return jsonify(errno=RET.DBERR, errmsg="數據查詢失敗")
if not real_image_code:
return jsonify(errno=RET.NODATA, errmsg="圖片驗證碼已過期")
# 4. 與用戶的驗證碼內容進行對比,如果對比不一致,那么返回驗證碼輸入錯誤
if real_image_code.upper() != image_code.upper():
return jsonify(errno=RET.DATAERR, errmsg="驗證碼輸入錯誤")
# 5. 如果一致,生成短信驗證碼的內容(隨機數據)
# 隨機數字 ,保證數字長度為6位,不夠在前面補上0
sms_code_str = "%06d" % random.randint(0, 999999)
current_app.logger.debug("短信驗證碼內容是:%s" % sms_code_str)
# 6. 發送短信驗證碼
# result = CCP().send_template_sms(mobile, [sms_code_str, constants.SMS_CODE_REDIS_EXPIRES / 5], "1")
# if result != 0:
# # 代表發送不成功
# return jsonify(errno=RET.THIRDERR, errmsg="發送短信失敗")
# 保存驗證碼內容到redis
try:
redis_store.set("SMS_" + mobile, sms_code_str, constants.SMS_CODE_REDIS_EXPIRES)
except Exception as e:
current_app.logger.error(e)
return jsonify(errno=RET.DBERR, errmsg="數據保存失敗")
# 7. 告知發送結果
return jsonify(errno=RET.OK, errmsg="發送成功")