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)
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)
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()
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)
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)
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
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)
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()
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()
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