pythonを使用してユーザー登録ロジックを実現します.参照のみです.

2615 ワード

1.基本的な登録ロジックの実現
2.ここでコードが与えられたのはユーザーがページに入って、画像認証コードを入力しました.前のコード論理が簡単なため、コードが使えなくなりました.論理的には、ユーザーは登録ページに入り、携帯電話番号を入力し、画像検証コードを入力し、フロントエンドは検証コードの唯一コードを生成します.通常はuuid、汎用一意識別子を使用します.Linuxタイムスタンプを使用して、バックグラウンドに検証コード画像を要求し、バックグラウンドで検証コードを生成し、検証コードコードコードコードをデータベースに保存する(一般的にメモリレベルデータベースを使用する).
3.次にユーザが携帯番号を入力し、ショートメッセージの検証コードを取得するためにクリックし、ここで第三者プラットフォームを使用し、第三者が提供するSDKをさらにカプセル化して使用する.
4.ここに預け入れたのはRedisデータベースです.データベースにデータフォーマットを保存します.具体的な分析があります.
#           
#     get    ,    ,    ,     ,        
#   127.0.0.1:5000/api/v1.0/sms_codes?image_code_id=&image_code=
@api.route('/sms_codes/')
def get_sms_code(mobile):
    """       """
    #     
    image_code = request.args.get('image_code')
    image_code_id = request.args.get('image_code_id')

    #     
    if not all([image_code, image_code_id]):
        #      
        return jsonify(errno=RET.PARAMERR, errmsg='     ')

    #     : redis        
    #            
    try:
        real_image_code = redis_store.get('image_code_%s' % image_code_id)

    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='redis     ')

    #          
    if real_image_code is None:
        #          
        return jsonify(errno=RET.NODATA, errmsg='        ')

    #           (     )
    if real_image_code.lower() != image_code.lower():
        #       
        return jsonify(errno=RET.DATAERR, errmsg='     ')

    #          
    try:
        #        none
        user = User.query.filter_by(mobile=mobile).first()
    except Exception as e:
        current_app.logger.error(e)  #            ,         ,                
    else:
        #       ,user     ,           ,      
        if user is not None:
        #          
            return jsonify(errno=RET.DATAEXIST, errmsg='       ')

    #         ,         

    sms_code = '%06d' % random.randint(0, 999999)
    #      redis ,       ,       300 
    try:
        redis_store.setex('sms_code_%s' % mobile, SMS_CODE_REDIS_EXPIRES, sms_code)
    except Exception as e:
        current_app.logger.error(e)
        #     
        return jsonify(errno=RET.DBERR, errmsg='       ')

    #        
    ccp = CCP()  #      
    result = ccp.sendTemplateSMS(mobile, [sms_code, SMS_CODE_REDIS_EXPIRES / 60], 1)

    #     
    if result == 0:
        #     
        return jsonify(errno=RET.OK, errmsg='    ')
    else:
        return jsonify(errno=RET.THIRDERR, errmsg='    ')