Esempio n. 1
0
def set_restaurant_activity():
    """
    参加餐厅活动
    """
    args_spec = {
        'restaurant_id': Arg(),
        'activity_id': Arg(),
        'activity_type': Arg()
    }

    args = args_parser.parse(args_spec)
    restaurant_id = args['restaurant_id']
    activity_id = args['activity_id']
    activity_type = args['activity_type']

    if activity_type is not None and activity_id is None:
        TRestaurantActivity = thirdparty_svc.ers.TRestaurantActivity
        with thrift_client('ers') as ers:
            zeus_result = ers.javis_query_restaurant_activity_by_restaurant(
                restaurant_id)
        restaurant_activity_map = {}
        for activity in zeus_result:
            activity_type_value = activity.type
            if activity_type_value in RestaurantActivityConstType._v2n.keys():
                restaurant_activity_map[activity_type_value] = activity
        for activity_type_value in RestaurantActivityConstType._v2n.keys():
            restaurant_activity_map.setdefault(activity_type_value,
                                               TRestaurantActivity())
        restaurant_activity = restaurant_activity_map[activity_type]
        activity_id = restaurant_activity.id
    else:
        # 取消掉activity_type,这样就是参加活动.下面的代码依赖这个来决定调用哪个接口-.-
        activity_type = None
    if activity_id is None:
        raise Exception('activity id is None or quit an unexist activity')
    with thrift_client('ers') as ers:
        if activity_type:
            result = ers.quit_restaurant_activity(restaurant_id, activity_id)
        else:
            result = ers.participate_restaurant_activity(
                restaurant_id, activity_id)
    return ''
Esempio n. 2
0
def query():
    args_spec = {'admin_id': Arg(int, allow_missing=True)}
    args = args_parser.parse(args_spec)
    page_no, page_size = get_paging_params()
    offset = (page_no - 1) * page_size
    limit = page_size

    return coupon_batch_base.query(admin_id=args.get('admin_id',
                                                     current_user.get_id()),
                                   offset=offset,
                                   limit=limit)
Esempio n. 3
0
def update(pk):
    args_spec = {
        'city_id': Arg(int),
        'type_code': Arg(int),
        'area': Arg(dict),
        'name': Arg(unicode),
    }
    args = args_parser.parse(args_spec)

    pk = int(pk)
    if not region_permission(pk):
        raise_auth_exc(AUTH_FAILED_ERROR)

    _check_region_type(args.get('type_code'))
    _check_region_json(args.get('area'))

    if args.get('area', None) is not None:
        args.update(area=json.dumps(args['area']))
    result = region_brand.update(pk, **args)
    return result
Esempio n. 4
0
def bankcard_reject(rst_id, bankcard_id):
    arg_spec = {"comment": Arg()}
    args = args_parser.parse(arg_spec)
    args.update({"status": RstBankCard.STATUS_INVALID})
    bankcard_base.update_bankcard(bankcard_id, **args)
    bankcard_base.add_bankcard_processing_record(
        rst_id=rst_id,
        bankcard_id=bankcard_id,
        process_user_id=current_user.id,
        messages=u'退回该银行卡信息',
        status_to=RstBankCard.STATUS_INVALID,
    )
Esempio n. 5
0
def save():
    args_spec = {
        'batch_type':
        Arg(int,
            required=True,
            validate=lambda t: t in BATCH_TYPE_LIST,
            error='Invalid batch type'),
        'rst_ids':
        Arg(str, allow_missing=True)
    }
    args = args_parser.parse(args_spec)

    # check restaurant ids when the batch bound with restaurant
    if args['batch_type'] in BATCH_TYPE_RST:
        if args.get('rst_ids') is None:
            raise_user_exc(RST_IDS_REQUIRED)

        args['rst_ids'] = [int(rst_id) for rst_id in args['rst_ids'].split()]

    batch_sn = coupon_batch_base.save(args['batch_type'], current_user.id,
                                      current_user.name,
                                      args.get('rst_ids', None))

    return {'batch_sn': batch_sn}
Esempio n. 6
0
def get_building_list_by_area():
    arg_spec = {'_area': Arg(list)}
    args = args_parser.parse(arg_spec)
    points = args['_area']
    buildings = white_collar_base.query_building_by_points(points)
    building_list = []
    total_population = 0
    for building in buildings:
        building_list.append(building_to_dict(building))
        total_population += int(
            building.population) if building.population is not None else 0
    return {
        'total_population': total_population,
        'building_list': building_list
    }
Esempio n. 7
0
def get_regions_by_city_id():
    args_spec = {
        'city_id': Arg(int),
    }
    if not check_get_regions_by_city_id():
        raise_auth_exc(AUTH_FAILED_ERROR)
    args = args_parser.parse(args_spec)
    city_id = args['city_id']
    result = region_base.get_regions_by_city_id(city_id)
    for region in result:
        region['_area'] = back_area_to_front_area(region['area'])
        if region['type_code'] == WHITE_COLLAR_TYPE_CODE:
            region['buildings'] = _get_building_by_region_id(region['id'])
        dic_fields_process(region, excludes=['has_geohash', 'color'])
    return result
Esempio n. 8
0
def query():
    args_spec = {
        'city_id': Arg(int),
    }
    args = args_parser.parse(args_spec)

    result = []
    rbs = region_brand.query(**args)
    for rb in rbs:
        result.append({
            'id': rb.id,
            'name': rb.name,
            'type_code': rb.type_code,
            'city_id': rb.city_id,
            'area': rb.area,
            'created_at': rb.created_at
        })
    return result
Esempio n. 9
0
def save():
    args_spec = {
        'coupon_type':
        Arg(int,
            required=True,
            validate=lambda t: t in COUPON_TYPE,
            error='Invalid coupon type'),
        'batch_sn':
        Arg(str, required=True),
        'deadline':
        Arg(str, required=True),
        'sn':
        Arg(str),
        'remain':
        Arg(int),
        'count':
        Arg(int),
    }
    args = args_parser.parse(args_spec)

    if args['coupon_type'] == GENERIC_COUPON:
        if args.get('sn') is None:
            raise_user_exc(COUPON_SN_REQUIRED)

        if not _check_sn_length(args['sn']):
            raise_user_exc(COUPON_SN_INVALID)

        remain = args.get('remain') or GENERAL_COUPON_DEFAULT_REMAIN

        result = coupon_base.save_generic_coupon(batch_sn=args['batch_sn'],
                                                 deadline=args['deadline'],
                                                 sn=args['sn'],
                                                 remain=remain)
        result = [
            result.get('sn'),
        ]
    else:
        if args.get('count') is None:
            raise_user_exc(COUPON_COUNT_REQUIRED)

        if int(args.get('count')) > 500:
            raise_user_exc(COUPON_COUNT_INVALID)

        result = coupon_base.save_onetime_coupon(batch_sn=args['batch_sn'],
                                                 remain=1,
                                                 deadline=args['deadline'],
                                                 remarks=u"后台生成",
                                                 count=args['count'])

    return result
Esempio n. 10
0
def get_processing_record(rst_id, bankcard_id):
    arg_spec = {
        "limit": Arg(int, allow_missing=True),
    }
    args = args_parser.parse(arg_spec)
    limit = args.get("limit", DEFAULT_RECORD_LIMIT)
    processing_record_list = bankcard_base \
        .query_processing_record(rst_id, bankcard_id, limit)
    if not processing_record_list:
        return []
    process_user_ids = []
    for m in processing_record_list:
        process_user_ids.append(m.process_user_id)
    process_user_list = user_base.mget_users(process_user_ids)
    process_user_dict = {user.id: user.username for user in process_user_list}
    processing_record_list_new = []
    for processing_record in processing_record_list:
        pr_dict = model2dict(processing_record)
        pr_dict['process_user_username'] = \
            process_user_dict.get(pr_dict['process_user_id'])
        processing_record_list_new.append(pr_dict)
    return processing_record_list_new
Esempio n. 11
0
def parse_args1():
    args_spec = {
            'restaurant_ids':Arg(default=[]),
            'restaurant_id':Arg(int,default=None),
            'category_ids':Arg(default=[]),
            'category_id':Arg(int,default=None),
            'food_ids':Arg(default=[]),
            'food_id':Arg(int,default=None),
    }
    args = args_parser.parse(args_spec)
    restaurant_ids = args.get('restaurant_ids', [])
    category_ids = args.get('category_ids', [])
    food_ids = args.get('food_ids', [])
    restaurant_id = args.get('restaurant_id', None)
    category_id = args.get('category_id', None)
    food_id = args.get('food_id', None)
    if restaurant_id:
        restaurant_ids.append(restaurant_id)
    if category_id:
        category_ids.append(category_id)
    if food_id:
        food_ids.append(food_id)
    return restaurant_ids, category_ids, food_ids, restaurant_id, category_id, food_id
Esempio n. 12
0
def done(pk):
    user_args = {
        'image_hash': Arg(str, required=True)
    }
    args = args_parser.parse(user_args)
    return refund_service.save_payment_proof(pk=pk, **args)
Esempio n. 13
0
def query_suspicous():
    args_spec = {
        'start_datetime':
        Arg(unicode, default=arrow.now().replace(days=-1).__str__()),
        'end_datetime':
        Arg(unicode, default=arrow.now().__str__()),
        'restaurant_id':
        Arg(int),
        'offset':
        Arg(int, default=0),
        'limit':
        Arg(int, default=100),
    }
    args = args_parser.parse(args_spec)
    if not args['restaurant_id']:
        return {
            'total': 0,
            'objects': [],
        }
    client = pymongo.MongoClient(config.EYES_MONGO)
    collection = client.evileye.suspicious_order
    # db.tickets.find({"date":{$lt:ISODate("2013-01-17T01:16:33.303Z")}}).limit (5);
    start_datetime = args['start_datetime'].split('+')[0]
    end_datetime = args['end_datetime'].split('+')[0]

    start_datetime = arrow.get(start_datetime).to('local').datetime
    end_datetime = arrow.get(end_datetime).to('local').datetime
    restaurant_id = args['restaurant_id']
    offset = args['offset']
    limit = args['limit']
    query = {
        'created_at': {
            '$lte': end_datetime,
            '$gte': start_datetime
        },
    }
    if restaurant_id:
        query.update({'restaurant_id': restaurant_id})
    docs = collection.find(query)
    total = docs.count()
    result_docs = list(docs.limit(limit).skip(offset))
    time_fields = ['deliver_time', 'settled_at']
    with thrift_client('eos') as eos:
        for doc in result_docs:
            order_id = doc['_id']
            order = eos.get(int(order_id))
            order = getresult_to_raw(order)
            for k, v in order.items():
                doc.setdefault(k, v)
            doc['detail_json'] = json.loads(doc['detail_json'])
            doc['_order_id'] = doc['_id']
            for field in time_fields:
                new_value = arrow.get(doc[field]).__str__()
                doc[field] = new_value
            doc['phone'] = [doc['phone']]
            with thrift_client('eus') as eus_client:
                chaos = eus_client.get_order_payment_constitution_map(
                    [int(order_id)])
                payment_constituion = chaos.get(order['id'], [])
                doc['payment_constituion'] = order_query_helper.whatzfvcksay(
                    payment_constituion, doc['total'])
            doc['order_id'] = unicode(doc['_id'])
    order_ids = [doc['id'] for doc in result_docs]
    with thrift_client('eyes') as eyes_client:
        suspicious_orders = eyes_client.walle_get_suspicious_order_detail(
            order_ids)
        suspicious_orders = getresult_to_raw(suspicious_orders)
        suspicious_orders_map = {
            order.id: order
            for order in suspicious_orders
        }
    for _object in result_docs:
        suspicious = suspicious_orders_map.get(_object['id'], {})
        _object['_order_suspicious_reason'] = suspicious.get('reasons', [])
    restaurant_ids = list(set([o['restaurant_id'] for o in result_docs]))
    restaurants = rst_base.get(restaurant_ids)
    for r in restaurants:
        r['_image_url'] = image_hash_to_url(r['image_hash'])
    restaurant_map = {r.id: r for r in restaurants}
    for order in result_docs:
        order['_restaurant'] = restaurant_map[order['restaurant_id']]
    result = {
        'total': total,
        'objects': result_docs,
    }
    return result
Esempio n. 14
0
def _get_bankcard_args():
    arg_spec = {
        'type_code': Arg(int),
        'status': Arg(int, allow_missing=True),
        'username': Arg(),
        'mobile': Arg(str),
        'card_id': Arg(str),
        'bank_id': Arg(int),
        'cardholder_name': Arg(),
        'bankcard_image_front': Arg(allow_missing=True),
        'identity_card_image_front': Arg(allow_missing=True),
        'identity_card_image_back': Arg(allow_missing=True),
        'ol_pay_contract_image': Arg(allow_missing=True),
        'misc_image': Arg(allow_missing=True),
        'comment': Arg(allow_missing=True),
    }
    return args_parser.parse(arg_spec)