Пример #1
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)
Пример #2
0
    def api_get(request):
        """
        获取优惠券advanced table
        """
        coupon_code = request.GET.get('couponCode', '')
        use_status = request.GET.get('useStatus', '')
        member_name = request.GET.get('memberName', '')
        #是否显示最后一页
        is_max_page = int(request.GET.get('is_max_page', 0))

        is_fetch_all_coupon = (not coupon_code) and (use_status == 'all') and (
            not member_name)
        # 处理排序
        sort_attr = request.GET.get('sort_attr', '-id')
        coupon_rule_id = request.GET.get('id')
        if coupon_rule_id:
            coupons = Coupon.objects.filter(
                owner=request.manager,
                coupon_rule_id=coupon_rule_id).order_by(sort_attr)

        # 获取coupon所属的rule的name
        id2rule = dict([
            (rule.id, rule)
            for rule in CouponRule.objects.filter(owner=request.manager)
        ])

        if is_fetch_all_coupon:
            # 进行分页
            count_per_page = int(request.GET.get('count_per_page', 15))
            cur_page = int(request.GET.get('page', '1'))
            pageinfo, coupons = paginator.paginate(
                coupons,
                cur_page,
                count_per_page,
                query_string=request.META['QUERY_STRING'])
        else:
            coupons_data = _filter_reviews(request, coupons)
            count_per_page = int(request.GET.get('count_per_page', 15))
            cur_page = request.GET.get('page', '1')
            t_max_page = False
            if cur_page == "true":
                t_max_page = True
                cur_page = 1
            pageinfo, coupons = paginator.paginate(
                coupons_data,
                cur_page,
                count_per_page,
                query_string=request.META['QUERY_STRING'])

            ##是否从最后一页开始显示
            if is_max_page:
                max_page = int(pageinfo.max_page)
                if max_page != cur_page and t_max_page:
                    cur_page = max_page
                pageinfo, coupons = paginator.paginate(
                    coupons_data,
                    cur_page,
                    count_per_page,
                    query_string=request.META['QUERY_STRING'])

        # 避免便利整个优惠券列表
        member_ids = [c.member_id for c in coupons]
        members = get_member_by_id_list(member_ids)
        member_id2member = dict([(m.id, m) for m in members])

        # 获取被使用的优惠券使用者信息
        coupon_ids = [c.id for c in coupons if c.status == COUPON_STATUS_USED]
        orders = Order.get_orders_by_coupon_ids(coupon_ids)
        if orders:
            coupon_id2webapp_user_id = dict([(o.coupon_id, \
                                              {'id': o.id, 'user': o.webapp_user_id, 'order_id': o.order_id,
                                               'created_at': o.created_at}) \
                                             for o in orders])
        else:
            coupon_id2webapp_user_id = {}

        response = create_response(200)
        response.data.items = []
        #统计是否有active的coupon
        # has_active_coupon = False
        now = datetime.today()
        for coupon in coupons:
            cur_coupon = JsonResponse()
            cur_coupon.id = coupon.id
            cur_coupon.coupon_id = coupon.coupon_id
            cur_coupon.provided_time = coupon.provided_time.strftime(
                "%Y-%m-%d %H:%M")
            cur_coupon.created_at = coupon.created_at.strftime(
                "%Y-%m-%d %H:%M")
            cur_coupon.money = str(coupon.money)
            cur_coupon.is_manual_generated = coupon.is_manual_generated
            cur_member = JsonResponse()
            member_id = int(coupon.member_id)
            # if coupon.status == COUPON_STATUS_UNUSED:
            # has_active_coupon = True
            if member_id in member_id2member:
                member = member_id2member[member_id]
                cur_member.username_truncated = member.username_truncated
                cur_member.username_for_html = member.username_for_html
            else:
                member = ''
                cur_member.username_truncated = ''
                cur_member.username_for_html = ''
            cur_member.id = member_id

            consumer = JsonResponse()
            consumer.username_truncated = ''
            consumer.username_for_html = ''
            if coupon.status == COUPON_STATUS_USED:
                if coupon.id in coupon_id2webapp_user_id:
                    order = coupon_id2webapp_user_id[coupon.id]
                    cur_coupon.order_id = order['id']
                    cur_coupon.order_fullid = order['order_id']
                    cur_coupon.use_time = order['created_at'].strftime(
                        "%Y-%m-%d %H:%M")
                    webapp_user_id = order['user']
                    member = WebAppUser.get_member_by_webapp_user_id(
                        webapp_user_id)
                    if member:
                        consumer.username_truncated = member.username_truncated
                        consumer.username_for_html = member.username_for_html
                        consumer.id = member.id
                    else:
                        consumer.username_truncated = '未知'
                        consumer.username_for_html = '未知'
                else:
                    consumer.username_truncated = '未知'
                    consumer.username_for_html = '未知'
                cur_coupon.status = COUPONSTATUS.get(coupon.status)['name']
            elif coupon.expired_time <= now:
                cur_coupon.status = COUPONSTATUS.get(
                    COUPON_STATUS_EXPIRED)['name']
            else:
                cur_coupon.status = COUPONSTATUS.get(coupon.status)['name']

            cur_coupon.member = cur_member
            cur_coupon.consumer = consumer
            cur_coupon.rule_name = id2rule[coupon.coupon_rule_id].name
            response.data.items.append(cur_coupon)

        response.data.sortAttr = request.GET.get('sort_attr', '-created_at')
        response.data.pageinfo = paginator.to_dict(pageinfo)
        return response.get_response()