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})
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
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
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", '')})
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", {})})
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", '')})
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", {})})
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)
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})
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", '')})
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", '')})