示例#1
0
    def get(request):
        """
		响应GET
		"""
        webapp_owner_id = request.webapp_owner_id
        member_id = request.member.id

        product_reviews = app_models.ProductEvaluates.objects.filter(
            owner_id=webapp_owner_id, member_id=member_id).order_by('-id')

        # 构造所需商品信息
        product_id_list = set(
            [review.product_id for review in product_reviews])
        products = mall_models.Product.objects.filter(id__in=product_id_list)
        review_products = {product.id: product for product in products}

        #构造订单信息
        order_ids = [review.order_id for review in product_reviews]
        orders = mall_models.Order.objects.filter(order_id__in=order_ids)
        order_id2order = {order.order_id: order for order in orders}

        product_review_list = []
        for review in product_reviews:
            order_id = review.order_id
            order = order_id2order.get(order_id, None)
            # 根据订单获取商品
            products = mall_api.get_order_products(order)
            #根据商品评价的product_id拿到products中的所属商品信息
            product_dic = {}
            product_name = review_products[review.product_id].name
            for product in products:
                if product['name'] == product_name:
                    product_dic = product

            is_common_template = True
            review_detail = review.detail
            if isinstance(review_detail, dict):
                is_common_template = False
                # 组织自定义模板用户评价数据结构
                review_detail = get_evaluate_detail(review_detail)

            product_review_list.append({
                'detail': review_detail,
                'created_at': review.created_at,
                'pics': review.pics,
                'product': product_dic,
                'shop_reply': review.shop_reply,
                'is_common_template': is_common_template
            })

        c = RequestContext(
            request,
            {
                'page_title': "我的评价",
                'hide_non_member_cover': True,  #非会员也可使用该页面
                'reviewed_products': product_review_list
            })

        return render_to_response(
            'evaluate/templates/webapp/m_my_evaluates.html', c)
示例#2
0
文件: views.py 项目: chengdg/weizoom
def show_order(request):
    order_id = request.GET.get('order_id', None)
    order = None
    coupon = None
    if order_id is not None:
        order = Order.objects.get(order_id=order_id)
        order_has_products = OrderHasProduct.objects.filter(order=order)

        # 商品总数量
        order_product_total_number = 0
        for order_has_product in order_has_products:
            order_product_total_number += order_has_product.number
        order.number = order_product_total_number

        #处理订单关联的优惠券
        coupon = None
        coupons = Coupon.objects.filter(id=order.coupon_id)
        if coupons.count() > 0:
            coupon = coupons[0]

        #获得订单关联的商品集合
        # product_ids = []
        # product_infos = []
        # order_product_relations = list(OrderHasProduct.objects.filter(order_id=order.id))
        # for relation in order_product_relations:
        # 	product_ids.append(relation.product_id)
        # 	product_infos.append({
        # 		'count': relation.number, #商品数量
        # 		'id': relation.product_id, #商品id
        # 		'total_price': relation.total_price #商品总价
        # 	})
        # id2product = dict([(product.id, product) for product in Product.objects.filter(id__in=product_ids)])

        # product_items = []
        # for product_info in product_infos:
        # 	product_id = product_info['id']
        # 	product = id2product[product_id]
        # 	product_items.append({
        # 		'name': product.name,
        # 		'thumbnails_url': product.thumbnails_url,
        # 		'count': product_info['count'],
        # 		'total_price': '%.2f' % product_info['total_price']
        # 	})
        order.products = mall_api.get_order_products(order.id)

        order.area = get_str_value_by_string_ids(order.area)

    c = RequestContext(
        request, {
            'nav_name': FREIGHT_NAV_NAME,
            'order': order,
            'is_order_not_payed': (order.status == ORDER_STATUS_NOT),
            'coupon': coupon,
            'freight_user': request.freight_user
        })
    return render_to_response('detail_waybill.html', c)
示例#3
0
 def api_get(request):
     order_id = request.GET['order_id']
     webapp_id = request.user_profile.webapp_id
     order = Order.objects.get(id=order_id, webapp_id=webapp_id)
     response = create_response(200)
     response.data = {
         'products': mall_api.get_order_products(order),
         'postage': '%.2f' % order.postage,
         'final_price': '%.2f' % order.final_price,
         'ship_name': order.ship_name,
         'ship_tel': order.ship_tel,
         'ship_address': order.ship_address,
         'area_str': order.get_str_area
     }
     return response.get_response()
示例#4
0
def order(request, id):
    order = Order.objects.get(id=id)
    order_has_products = OrderHasProduct.objects.filter(order=order)
    number = 0
    for order_has_product in order_has_products:
        number += order_has_product.number
    order.number = number
    order.statu = get_order_status_text(order.status)
    order.products = mall_api.get_order_products(order.id)
    pressed_link = "order"
    c = RequestContext(request, {
        'order': order,
        "pressed_link": pressed_link,
    })
    return render_to_response('mobile_app/order_detail.html', c)
示例#5
0
def get_order(request):
    id = request.GET.get('id')
    order = Order.objects.get(id=id)
    order_has_products = OrderHasProduct.objects.filter(order=order)

    number = 0
    cur_order = JsonResponse()
    for order_has_product in order_has_products:
        number += order_has_product.number

    cur_order.number = number
    cur_order.statu = get_order_status_text(order.status)
    cur_order.express_company_name = get_name_by_value(
        order.express_company_name)
    cur_order.type = order.type
    cur_order.express_number = order.express_number
    cur_order.leader_name = order.leader_name
    cur_order.integral = order.integral
    cur_order.bill_type = order.bill_type
    cur_order.bill = order.bill
    cur_order.order_id = order.order_id
    cur_order.final_price = '%.2f' % order.final_price
    cur_order.postage = '%.2f' % order.postage
    cur_order.ship_name = order.ship_name
    cur_order.ship_tel = order.ship_tel
    cur_order.area = regional_util.get_str_value_by_string_ids(order.area)
    cur_order.ship_address = order.ship_address
    cur_order.customer_message = order.customer_message
    cur_order.created_at = __data_format(order.created_at)
    cur_order.action = get_order_actions(order)
    cur_order.reason = order.reason
    #关联的优惠券
    coupon = order.get_coupon()
    if coupon:
        cur_coupon = JsonResponse()
        cur_coupon.coupon_id = coupon.coupon_id
        cur_coupon.coupon_rule_name = coupon.coupon_rule.name
        cur_coupon.money = str(coupon.money)
        cur_order.coupon = cur_coupon
    else:
        cur_order.coupon = None

    products = mall_api.get_order_products(order)
    #商品
    cur_product_json = []
    for product in products:
        cur_product = JsonResponse()
        cur_product.name = product['name']
        cur_product.count = product['count']
        cur_product.total_price = product['total_price']
        cur_product.thumbnails_url = product['thumbnails_url']
        cur_product.is_deleted = product['is_deleted']
        properties = product['custom_model_properties']
        if properties:
            for product_property in properties:
                cur_product.property_name = product_property['name']
                cur_product.property_value = product_property['property_value']

        cur_product_json.append(cur_product)

    response = create_response(200)
    response.data.order = cur_order
    response.data.products = cur_product_json
    return response.get_jsonp_response(request)
示例#6
0
    def get_order_items(user,
                        order_id,
                        cur_page,
                        order_status=None,
                        found_begin_time=None,
                        found_end_time=None,
                        pay_begin_time=None,
                        pay_end_time=None):
        if order_id != '':
            order_list = models.Order.objects.filter(
                order_id=order_id.strip().split('-')[0])

        else:
            webapp_id = user.get_profile().webapp_id
            order_list = models.Order.objects.belong_to(webapp_id).order_by(
                '-id')
            if order_status != '':
                order_list = order_list.filter(status=order_status)
            # 1 下单时间,2 付款时间
            if found_begin_time != '' and found_end_time != '':
                order_list = order_list.filter(
                    created_at__gte=found_begin_time,
                    created_at__lt=found_end_time)
            if pay_begin_time != '' and pay_end_time != '':
                order_list = order_list.filter(
                    payment_time__gte=pay_begin_time,
                    payment_time__lt=pay_end_time)
        # 返回订单的数目
        order_return_count = order_list.count()

        pageinfo, order_list = paginator.paginate(order_list, cur_page, 10)

        if order_return_count == 0:
            items = []
            return items, pageinfo, order_return_count
        # 获取order对应的会员
        webapp_user_ids = set([order.webapp_user_id for order in order_list])
        from modules.member.models import Member
        webappuser2member = Member.members_from_webapp_user_ids(
            webapp_user_ids)

        # 获得order对应的商品数量
        order_ids = [order.id for order in order_list]

        order2productcount = {}
        for relation in models.OrderHasProduct.objects.filter(
                order_id__in=order_ids).order_by('id'):
            order_id = relation.order_id
            if order_id in order2productcount:
                order2productcount[order_id] = order2productcount[order_id] + 1
            else:
                order2productcount[order_id] = 1
        # 构造返回的order数据
        for order in order_list:
            # 获取order对应的member的显示名
            member = webappuser2member.get(order.webapp_user_id, None)
            if member:
                order.buyer_name = member.username_for_html
                #过滤掉表情
                if '<span' in order.buyer_name:
                    order.buyer_name = u'未知'

            else:
                order.buyer_name = u'未知'

            if order.payment_time is None:
                payment_time = ''
            elif datetime.strftime(order.payment_time,
                                   '%Y-%m-%d %H:%M:%S') == DEFAULT_CREATE_TIME:
                payment_time = ''
            else:
                payment_time = datetime.strftime(order.payment_time,
                                                 '%Y-%m-%d %H:%M:%S')

            order.product_count = order2productcount.get(order.id, 0)
            order.payment_time = payment_time

        # 构造返回的order数据
        items = []
        for order in order_list:
            products = mall_api.get_order_products(order)
            products_result = []
            for inner_product in products:
                product_model_properties = []
                if 'custom_model_properties' in inner_product and inner_product[
                        'custom_model_properties']:
                    for model in inner_product['custom_model_properties']:
                        return_model = {}
                        return_model['property_value'] = model[
                            'property_value']
                        return_model['name'] = model['name']
                        product_model_properties.append(return_model)
                product = {
                    'total_price':
                    inner_product['total_price'] if 'total_price'
                    in inner_product else inner_product['price'] *
                    inner_product['count'],
                    'goods_pic':
                    inner_product['thumbnails_url'],
                    'count':
                    inner_product['count'],
                    'unit_price':
                    inner_product['price'],
                    'goods_name':
                    inner_product['name'],
                    'goods_number':
                    inner_product['user_code'],
                    'custom_model_properties':
                    product_model_properties
                }
                products_result.append(product)
            regions = regional_util.get_str_value_by_string_ids(
                order.area).split(" ")
            items.append({
                'order_id':
                order.order_id,
                'order_status':
                order.status,
                'order_price':
                float('%.2f' % order.final_price)
                if order.pay_interface_type != 9 or order.status == 5 else 0,
                "express_info": {
                    "logistics_number": order.express_number,
                    "buyer_message": order.customer_message,
                    "buyer_name": order.buyer_name,
                    "receiver_name": order.ship_name,
                    "receiver_mobile": order.ship_tel,
                    "receiver_province":
                    regions[0] if len(regions) == 3 else "未知",
                    "receiver_city": regions[1] if len(regions) == 3 else "未知",
                    "receiver_district":
                    regions[2] if len(regions) == 3 else "未知",
                    "receiver_address": order.ship_address,
                    "logistics_name": order.express_company_name
                },
                'invoice_title':
                order.bill,
                'found_time':
                datetime.strftime(order.created_at, '%Y-%m-%d %H:%M:%S'),
                'num':
                order.product_count,
                'payment_time':
                order.payment_time,
                'pay_mode':
                order.pay_interface_type,
                'store_message':
                order.remark,
                'freight':
                '%.2f' % order.postage,
                'p_price':
                float(models.Order.get_order_has_price_number(order)) +
                float(order.postage) - float(order.final_price) -
                float(order.weizoom_card_money),
                'weizoom_card_money':
                float('%.2f' % order.weizoom_card_money),
                'cash':
                '%.2f' % (order.final_price + order.weizoom_card_money),
                'products':
                products_result
            })
        return items, pageinfo, order_return_count
示例#7
0
    def api_get(request):
        #将省份处理成dict
        id2province = {}
        provinces = Province.objects.all()
        for province in provinces:
            id2province[province.id] = province.name
        #将省份处理成dict

        result = []

        days = int(request.GET.get("days", "30"))
        today = datetime.now()
        pre_date = date2string(get_date_after_days(today, -days))
        webapp_id = request.GET.get('webapp_id', None)

        orders = Order.objects.filter(webapp_id=webapp_id,
                                      payment_time__gte=pre_date,
                                      status__in=[3, 4,
                                                  5]).order_by('-payment_time')
        webapp_user_ids = set([order.webapp_user_id for order in orders])
        from modules.member.models import Member
        webappuser2member = Member.members_from_webapp_user_ids(
            webapp_user_ids)

        for order in orders:
            # 获取order对应的member的显示名
            member = webappuser2member.get(order.webapp_user_id, None)
            if member:
                order.buyer_name = member.username_for_html
                order.member_id = member.id
            else:
                order.buyer_name = u'未知'
                order.member_id = 0
            order.province_id = order.area.split('_')[0]
            #根据订单获取商品
            products = mall_api.get_order_products(order)
            order.province_id = order.area.split('_')[0]
            if len(order.province_id) > 0:
                order.province_name = id2province[int(order.province_id)]

                infor_dict = {}
                infor_dict["province_name"] = order.province_name
                infor_dict["username"] = order.buyer_name
                infor_dict["products"] = []
                for product in products:
                    if product["promotion"] and product["promotion"].has_key(
                            "type") and product["promotion"][
                                "type"] == "premium_sale:premium_product":
                        infor_dict["products"].append({
                            "promotion_name":
                            product["name"],
                            "count":
                            product["count"]
                        })
                    else:
                        infor_dict["products"].append({
                            "name": product["name"],
                            "count": product["count"]
                        })
                result.append(infor_dict)

        response = create_response(200)
        response.data = {'items': result}
        #return response.get_response()
        return response.get_jsonp_response(request)
示例#8
0
    def api_get(request):
        store_name = UserProfile.objects.get(
            user_id=request.manager.id).store_name
        qrcode_url = get_mp_qrcode_img(request.manager.id)

        order_ids = json.loads(request.GET.get('order_ids', '[]'))
        #order_ids = request.GET.get('order_ids', '')
        orders = Order.objects.filter(id__in=[int(id) for id in order_ids])
        webapp_user_ids = set([order.webapp_user_id for order in orders])
        from modules.member.models import Member
        webappuser2member = Member.members_from_webapp_user_ids(
            webapp_user_ids)

        order_ids = [order.id for order in orders]
        # 获得order对应的商品数量
        order2productcount = {}
        for relation in OrderHasProduct.objects.filter(
                order_id__in=order_ids).order_by('id'):
            order_id = relation.order_id
            if order_id in order2productcount:
                order2productcount[order_id] = order2productcount[order_id] + 1
            else:
                order2productcount[order_id] = 1

        # 构造返回的order数据
        for order in orders:
            # 获取order对应的member的显示名
            member = webappuser2member.get(order.webapp_user_id, None)
            if member:
                order.buyer_name = member.username_for_print
            else:
                order.buyer_name = u'未知'
            order.product_count = order2productcount.get(order.id, 0)

        # 构造返回的order数据
        items = []
        for order in orders:
            products = mall_api.get_order_products(order)

            for product in products:
                property_values = []

                if product['promotion']:
                    if product['promotion']['type'] == "flash_sale":
                        product['name'] = u"【限时抢购】" + product['name']
                    elif product['promotion'][
                            'type'] == "premium_sale:premium_product":
                        product['name'] = u"【赠品】" + product['name']
                if product.has_key('grade_discounted_money'
                                   ) and product['grade_discounted_money']:
                    product['name'] = u"【会员优惠】" + product['name']

                if product.has_key('custom_model_properties'
                                   ) and product['custom_model_properties']:
                    for model in product['custom_model_properties']:
                        property_values.append(model['property_value'])
                product['property_values'] = '/'.join(property_values)

                if order.supplier_user_id:
                    product['price'] = product['purchase_price']
                    product['total_price'] = product[
                        'purchase_price'] * product['count']

            items.append({
                'id':
                order.id,
                'order_id':
                order.order_id,
                'supplier_user_id':
                order.supplier_user_id,
                'products':
                products,
                'total_price':
                order.total_purchase_price if order.supplier_user_id else
                Order.get_order_has_price_number(order),
                'order_total_price':
                float('%.2f' % order.get_total_price()),
                'ship_name':
                order.ship_name,
                'ship_address':
                '%s %s' % (regional_util.get_str_value_by_string_ids(
                    order.area), order.ship_address),
                'ship_tel':
                order.ship_tel,
                'buyer_name':
                order.buyer_name,
                'created_at':
                datetime.strftime(order.created_at, '%Y-%m-%d %H:%M:%S'),
                'product_count':
                order.product_count,
                'postage':
                0 if order.supplier_user_id else '%.2f' % order.postage,
                'save_money':
                0 if order.supplier_user_id else
                float(Order.get_order_has_price_number(order)) +
                float(order.postage) - float(order.final_price) -
                float(order.weizoom_card_money),
                'pay_money':
                order.total_purchase_price if order.supplier_user_id else
                order.final_price + order.weizoom_card_money,
            })

        response = create_response(200)
        response.data = {
            'items': items,
            'store_name': store_name,
            'qrcode_url': qrcode_url,
            'order_count': len(order_ids)
        }
        return response.get_response()
示例#9
0
    def api_get(request):
        from mall import module_api as mall_api
        from mall.models import *
        channel_qrcode_id = request.GET.get('qrcode_id', None)
        start_date = request.GET.get('start_date', '')
        end_date = request.GET.get('end_date', '')
        is_show = request.GET.get('is_show', '0')

        filter_data_args = {}

        if start_date:
            filter_data_args['created_at__gte'] = start_date

        if end_date:
            filter_data_args['created_at__lte'] = end_date
        filter_data_args['status__in'] = (ORDER_STATUS_PAYED_SUCCESSED,
                                          ORDER_STATUS_PAYED_NOT_SHIP,
                                          ORDER_STATUS_PAYED_SHIPED,
                                          ORDER_STATUS_SUCCESSED)

        relations = MemberChannelQrcodeHasMember.objects.filter(
            member_channel_qrcode_id=channel_qrcode_id)
        setting_id2count = {}
        member_id2setting_id = {}
        member_ids = []

        old_member_id2_create_at = {}
        new_member_id2_create_at = {}
        for r in relations:
            member_ids.append(r.member_id)
            member_id2setting_id[r.member_id] = r.member_channel_qrcode_id
            if r.member_channel_qrcode_id in setting_id2count:
                setting_id2count[r.member_channel_qrcode_id] += 1
            else:
                setting_id2count[r.member_channel_qrcode_id] = 1
            if r.is_new:
                new_member_id2_create_at[r.member_id] = r.created_at
            else:
                old_member_id2_create_at[r.member_id] = r.created_at

        if is_show == '1':
            #获取新会员的webapp_user
            new_webapp_users = member_model.WebAppUser.objects.filter(
                member_id__in=new_member_id2_create_at.keys())
            new_webapp_user_ids = [u.id for u in new_webapp_users]

            #获取old会员的webapp_user
            old_webapp_users = member_model.WebAppUser.objects.filter(
                member_id__in=old_member_id2_create_at.keys())
            old_member_order_ids = []
            for webapp_user in old_webapp_users:
                created_at = old_member_id2_create_at[webapp_user.member_id]
                for order in Order.by_webapp_user_id(
                        webapp_user.id).filter(created_at__gte=created_at):
                    old_member_order_ids.append(order.id)

            if new_webapp_user_ids and old_member_order_ids:
                orders = Order.by_webapp_user_id(
                    new_webapp_user_ids, order_id=old_member_order_ids).filter(
                        **filter_data_args).order_by('-created_at')
            elif new_webapp_user_ids:
                orders = Order.by_webapp_user_id(new_webapp_user_ids).filter(
                    **filter_data_args).order_by('-created_at')
            elif old_member_order_ids:
                filter_data_args['id__in'] = old_member_order_ids
                orders = Order.objects.filter(
                    **filter_data_args).order_by('-created_at')
            else:
                orders = []
        else:
            webapp_users = member_model.WebAppUser.objects.filter(
                member_id__in=member_ids)
            webapp_user_id2member_id = dict([(u.id, u.member_id)
                                             for u in webapp_users])
            webapp_user_ids = set(webapp_user_id2member_id.keys())
            if webapp_user_ids:
                orders = Order.by_webapp_user_id(webapp_user_ids).filter(
                    **filter_data_args).order_by('-created_at')
            else:
                orders = []

        #add by duhao 2015-06-29 统计微众卡支付总金额和现金支付总金额
        final_price = 0
        weizoom_card_money = 0
        for order in orders:
            final_price += order.final_price
            weizoom_card_money += order.weizoom_card_money

        #进行分页
        count_per_page = int(request.GET.get('count_per_page', 15))
        cur_page = int(request.GET.get('page', '1'))
        pageinfo, orders = paginator.paginate(
            orders,
            cur_page,
            count_per_page,
            query_string=request.META['QUERY_STRING'])

        #获取order对应的会员
        webapp_user_ids = set([order.webapp_user_id for order in orders])
        webappuser2member = member_model.Member.members_from_webapp_user_ids(
            webapp_user_ids)

        #获得order对应的商品数量
        order_ids = [order.id for order in orders]
        order2productcount = {}
        for relation in OrderHasProduct.objects.filter(order_id__in=order_ids):
            order_id = relation.order_id
            if order_id in order2productcount:
                order2productcount[order_id] = order2productcount[order_id] + 1
            else:
                order2productcount[order_id] = 1
        #构造返回的order数据
        items = []
        today = datetime.today()
        for order in orders:
            #获取order对应的member的显示名
            member = webappuser2member.get(order.webapp_user_id, None)
            if member:
                order.buyer_name = member.username_for_html
                order.buyer_id = member.id
            else:
                order.buyer_name = u'未知'

            items.append({
                'id':
                order.id,
                'source':
                order.order_source,
                'order_id':
                order.order_id,
                'status':
                get_order_status_text(order.status),
                'total_price':
                order.final_price,
                'ship_name':
                order.ship_name,
                'buyer_name':
                order.buyer_name,
                'buyer_id':
                order.buyer_id,
                'pay_interface_name':
                PAYTYPE2NAME.get(order.pay_interface_type, u''),
                'created_at':
                datetime.strftime(order.created_at, '%Y-%m-%d %H:%M'),
                'payment_time':
                datetime.strftime(order.created_at, '%Y-%m-%d %H:%M'),
                'product_count':
                order2productcount.get(order.id, 0),
                'products':
                mall_api.get_order_products(order),
                'customer_message':
                order.customer_message,
                'order_status':
                order.status,
                'express_company_name':
                order.express_company_name,
                'express_number':
                order.express_number,
                'leader_name':
                order.leader_name,
                'remark':
                order.remark,
                'postage':
                '%.2f' % order.postage,
                'save_money':
                '%.2f' % (float(Order.get_order_has_price_number(order)) +
                          float(order.postage) - float(order.final_price) -
                          float(order.weizoom_card_money)),
                'weizoom_card_money':
                float('%.2f' % order.weizoom_card_money),
                'pay_money':
                '%.2f' % (order.final_price + order.weizoom_card_money)
            })

        response = create_response(200)
        response.data = {
            'items': items,
            'final_price': '%.2f' % final_price,
            'weizoom_card_money': '%.2f' % weizoom_card_money,
            'sortAttr': request.GET.get('sort_attr', '-created_at'),
            'pageinfo': paginator.to_dict(pageinfo),
            'data': {}
        }
        return response.get_response()
示例#10
0
	def get_datas(request,export_id=0):
		webapp_id = request.user_profile.webapp_id
		record_id = request.GET.get('record_id', 0)
		is_show = int(request.GET.get('is_show', 0))

		records = app_models.Rebate.objects(id=record_id)
		rebate_start_time = records[0].start_time
		rebate_end_time = records[0].end_time

		# member_id2scan_time = {}
		# if is_show:
		# 	rebate_participances = app_models.RebateParticipance.objects(belong_to=record_id)
		# 	member_id2scan_time = {p.member_id: p.created_at for p in rebate_participances}

		webapp_user_id_belong_to_member_id, id2record, member_id2records, member_id2order_ids, all_orders, member_id2participations = export.get_target_orders(records, is_show)
		webapp_user_ids = webapp_user_id_belong_to_member_id.keys()

		params = {'webapp_user_id__in': webapp_user_ids}
		start_date = request.GET.get('start_date', '')
		end_date = request.GET.get('end_date', '')
		start_money = request.GET.get('start_money', 0)
		end_money = request.GET.get('end_money', 0)
		is_first_order = int(request.GET.get('is_first_order', 0))
		not_first_order = int(request.GET.get('not_first_order', 0))

		if is_show:
			all_orders = all_orders.filter(created_at__gte=rebate_start_time, created_at__lte=rebate_end_time)
		else:
			all_orders = all_orders.filter(created_at__lte=rebate_end_time)

		if start_date:
			params['created_at__gte'] = start_date
		if end_date:
			params['created_at__lte'] = end_date
		if start_money:
			params['final_price__gte'] = start_money
		if end_money:
			params['final_price__lte'] = end_money
		if not (is_first_order and not_first_order):
			if is_first_order:
				params['is_first_order'] = 1
			if not_first_order:
				params['is_first_order'] = 0

		orders = all_orders.filter(**params)
		#统计微众卡支付总金额和现金支付总金额(退款成功不算)
		final_price = 0
		weizoom_card_money = 0
		for order in orders.exclude(status=mall_models.ORDER_STATUS_REFUNDED):
			final_price += order.final_price
			weizoom_card_money += order.weizoom_card_money

		# 进行分页
		count_per_page = int(request.GET.get('count_per_page', COUNT_PER_PAGE))
		cur_page = int(request.GET.get('page', '1'))

		if not export_id:
			pageinfo, orders = paginator.paginate(orders, cur_page, count_per_page,query_string=request.META['QUERY_STRING'])

		# 获取order对应的会员
		webapp_user_ids = set([order.webapp_user_id for order in orders])
		webappuser2member = Member.members_from_webapp_user_ids(webapp_user_ids)

		# 获得order对应的商品数量
		order_ids = [order.id for order in orders]
		order2productcount = {}
		for relation in mall_models.OrderHasProduct.objects.filter(order_id__in=order_ids):
			order_id = relation.order_id
			if order_id in order2productcount:
				order2productcount[order_id] = order2productcount[order_id] + 1
			else:
				order2productcount[order_id] = 1

		items = []

		for order in orders:
			# 获取order对应的member的显示名
			member = webappuser2member.get(order.webapp_user_id, None)
			if member:
				# if is_show:
				# 	member_id = member.id
				# 	scan_time = member_id2scan_time.get(member_id, None)
				# 	if scan_time and scan_time > order.created_at:
				# 		continue
				order.buyer_name = member.username_for_html
				order.buyer_id = member.id
			else:
				order.buyer_name = u'未知'

			items.append({
				'id': order.id,
				'source': order.order_source,
				'order_id': order.order_id,
				'status': get_order_status_text(order.status),
				'total_price': order.final_price,
				'ship_name': order.ship_name,
				'buyer_name': order.buyer_name,
				'buyer_id': order.buyer_id,
				'pay_interface_name': mall_models.PAYTYPE2NAME.get(order.pay_interface_type, u''),
				'created_at': datetime.strftime(order.created_at, '%Y-%m-%d %H:%M'),
				'payment_time': datetime.strftime(order.payment_time, '%Y-%m-%d %H:%M'),
				'product_count': order2productcount.get(order.id, 0),
				'products': mall_module_api.get_order_products(order),
				'customer_message': order.customer_message,
				'order_status': order.status,
				'express_company_name': order.express_company_name,
				'express_number': order.express_number,
				'leader_name': order.leader_name,
				'remark': order.remark,
				'postage': '%.2f' % order.postage,
				'save_money': '%.2f' % (float(mall_models.Order.get_order_has_price_number(order)) + float(order.postage) - float(order.final_price) - float(order.weizoom_card_money)),
				'weizoom_card_money': float('%.2f' % order.weizoom_card_money),
				'pay_money': '%.2f' % order.final_price,
				'is_first_order': order.is_first_order,
				'total_purchase_price': order.total_purchase_price #总采购价
			})
		if not export_id:
			return pageinfo, items, final_price, weizoom_card_money
		else:
			return items