Пример #1
0
def grid_login_api():
    '''
    user login to get session_key to decrypt userdata
    诗词九宫格,进入后获取用户当前的闯关信息
    TODO: 拆分用户信息的获取与登录
    '''
    params = request.get_json()
    appid = params.get("appid")
    code = params.get("code")
    encrypted_data = params.get("encrypte")
    padding = params.get("iv")
    session_id = params.get("session_id")
    if session_id is None and not code:
        return jsonify({"sta": -1, "msg": u"缺少必要参数"})
    data = {}
    if session_id:
        session_data = check_session(session_id)
        if not session_data:
            return jsonify({'sta': 10000, "msg": u"invalid session"})
        data = login_by_session(session_data, encrypted_data, padding)
    elif code:
        data = login_by_code(code, encrypted_data, padding, appid=appid)
    if 'errmsg' in data:
        return jsonify({'sta': -1, 'msg': data['errmsg']})
    return jsonify({"sta": 0, "msg": "ok", "data": data})
Пример #2
0
def check_order(session_id, order_id):
    session_data = check_session(session_id)
    res = {'errcode': -1}
    if not session_data:
        res.update({'errcode': 10000, 'errmsg': 'invalidate session'})
        return res
    order_instance = Order(out_trade_no=order_id)
    order_data = order_instance.find_one_order()
    if not order_data:
        res.update({'errmsg': u"数据错误,请重试"})
        return res
    status = order_data.get("status")
    if status != OrderStatus.OK.value:
        added_credit = 0
    else:
        added_credit = 0
        detail_instance = OrderDetail(out_trade_no=order_id)
        details = detail_instance.get_detail()
        for detail in details:
            goods_id = detail['goods_id']
            count = detail['count']
            g_instance = Goods(id=goods_id)
            goods_data = g_instance.find_by_id()
            if not goods_data:
                continue
            added_credit += (goods_data['count'] * count)
    res.update({
        'errcode': 0,
        'data': {
            'status': status,
            'added_credit': added_credit
        }
    })
    return res
Пример #3
0
def pay_goods_id(gid, count, session, pay_type):
    '''
    pay by the count and the id the goods;
    input:
    gid       ---   the id of the goods;
    count     ---   the count of the goods;
    session   ---   the login session of the user;
    pay_type  ---   payment type;
    '''
    user_session = check_session(session)
    if not user_session:
        return 10000, u'login expire'
    LOG.info(user_session)
    user_openid = user_session['openid']
    order_obj, data = place_order_by_gid(gid, count, user_openid, pay_type)
    if not order_obj:
        return -1, data
    total_fee = order_obj.total_fee
    out_trade_no = order_obj.out_trade_no
    desc = order_obj.body
    place_order_ret, ret_msg = unified_order(total_fee, pay_type, out_trade_no,
                                             user_openid, desc)
    if not place_order_ret:
        return -1, u'place order to wx error: %s' % ret_msg
    return 0, ret_msg
Пример #4
0
def goods_list_api():
    params = request.args
    session_id = params.get("session_id")
    session_data = check_session(session_id)
    if not session_data:
        return jsonify({'sta': 10000, 'msg': 'invalid session'})
    res = get_goods_list(session_data)
    if res['errcode'] == 0:
        return jsonify({'sta': 0, 'msg': 'ok', 'data': res['data']})
    return jsonify({'sta': res['errcode'], 'msg': res.get("errmsg", '')})
Пример #5
0
def upload_formid_api_grid():
    params = request.get_json()
    session_id = params.get("session_id")
    form_id = params.get("form_id")
    if not session_id or not form_id:
        return jsonify({'sta': 0, 'msg': "no data found"})
    session_data = check_session(session_id)
    if not session_data:
        return jsonify({'sta': 10000, 'msg': 'invalid session'})
    res = save_formid_grid(session_data, form_id)
    return jsonify({'sta': 0, 'msg': "OK", "data": res.get("data", {})})
Пример #6
0
def get_level_data(level):
    params = request.args
    session_id = params.get("session_id")
    if session_id is None:
        return jsonify({'sta': -1, 'msg': u"缺少必要参数"})
    session_data = check_session(session_id)
    if not session_data:
        return jsonify({'sta': 10000, 'msg': u"invalid session"})
    is_helper = params.get("is_help")
    res = level_data(level, is_helper, session_data)
    if res['errcode'] == 0:
        return jsonify({'sta': 0, 'msg': 'ok', 'data': res['data']})
    return jsonify({'sta': -1, 'msg': res.get("errmsg", '')})
Пример #7
0
def free_credit_api():
    params = request.data
    try:
        params = json.loads(params)
    except Exception:
        pass
    session_id = params.get("session_id")
    session_data = check_session(session_id)
    if not session_data:
        return jsonify({'sta': 10000, 'msg': 'invalid session'})
    res = jump_to_diandi_free(session_data)
    if 'errcode' in res and res['errcode'] != 0:
        return jsonify({"sta": -1, 'msg': res.get("errmsg", '')})
    return jsonify({'sta': 0, 'msg': 'ok', 'data': res.get("data", {})})
Пример #8
0
 def wrapper(*args, **kwargs):
     from weixin.cache.session import check_session
     method = request.method.lower()
     if method == 'get':
         params = request.args
     elif method in ['put', 'delete', 'post']:
         get_params = request.args
         if method == 'post':
             params = request.get_json()
         elif method == 'put':
             params = request.data or '{}'
             params = json.loads(params)
         if not params:
             params = request.form
             params = params.to_dict()
         if get_params:
             params.update(get_params.to_dict())
     else:
         kwargs['__error__'] = {
             "errcode": -1,
             "errmsg": "not support method: %s" % method
         }
         return func(*args, **kwargs)
     must_params = filter(lambda x: parameter_handlers[x] != 0,
                          parameter_handlers)
     diff = set(must_params) - set(params)
     if diff:
         kwargs['__error__'] = {
             'errcode': -1,
             'errmsg': "缺少必要参数{}".format(list(diff)[0])
         }
         return func(*args, **kwargs)
     for param, value in params.items():
         handler = parameter_handlers.get(param)
         if handler and callable(handler):
             value = handler(value)
         if param == 'session_id' and handler != 0:
             value = check_session(value)
             if not value:
                 kwargs['__error__'] = {
                     'errcode': 10000,
                     'errmsg': "invalid session"
                 }
                 break
             param = 'session'
         kwargs[param] = value
     return func(*args, **kwargs)
Пример #9
0
def grid_share_api():
    '''get weapp share infomation, openGId'''
    params = request.get_json()
    session_id = params.get("session_id")
    encrypted_data = params.get("encrypte")
    padding = params.get("iv")
    page = params.get("page")
    share = params.get('share', '')
    if not session_id:
        return jsonify({'sta': -1, 'msg': u"缺少必要参数"})
    session_data = check_session(session_id)
    if not session_data:
        return jsonify({'sta': 10000, 'msg': 'invalid session'})
    if encrypted_data and padding:
        data = share_group_info(session_data, encrypted_data, padding, page,
                                share)
    else:
        data = share_friend_info(session_data, page, share)
    return jsonify({'sta': 0, 'msg': 'ok', 'data': data})
Пример #10
0
def hint_poetry_api():
    params = request.data
    try:
        params = json.loads(params)
    except Exception:
        return jsonify({'sta': -1, 'msg': "data error"})
    session_id = params.get("session_id")
    level = params.get("level")
    is_helper = params.get("is_help")
    if session_id is None or not level:
        return jsonify({'sta': -1, 'msg': u"缺少必要参数"})
    session_data = check_session(session_id)
    if not session_data:
        return jsonify({'sta': 10000, 'msg': u"invalid session"})
    try:
        level = int(level)
    except Exception:
        return jsonify({'sta': -1, 'msg': u"参数格式错误"})
    res = hint_poetry(session_data, level, is_helper)
    if res['errcode'] == 0:
        return jsonify({'sta': 0, 'msg': 'ok', 'data': res['data']})
    return jsonify({'sta': res['errcode'], 'msg': res.get("errmsg", '')})
Пример #11
0
def validate_answer_api():
    params = request.data
    try:
        params = json.loads(params)
    except Exception:
        return jsonify({'sta': -1, 'msg': "data error"})
    session_id = params.get("session_id")
    level = params.get("level")
    answer = params.get("answer")
    if not session_id or not level or not answer:
        return jsonify({'sta': -1, 'msg': u"缺少必要参数"})
    session_data = check_session(session_id)
    if not session_data:
        return jsonify({'sta': 10000, 'msg': u"invalid session"})
    try:
        level = int(level)
    except Exception:
        return jsonify({'sta': -1, 'msg': u"参数格式错误"})
    res = validate_answer(params, session_data)
    if res['errcode'] == 0:
        return jsonify({'sta': 0, 'msg': 'ok', 'data': res['data']})
    return jsonify({'sta': -1, 'msg': res.get("errmsg", '')})