Beispiel #1
0
    def get(self, request, goods_id):
        goods_obj = Goods(goods_id)
        goods_info = goods_obj.read()
        sku_list = goods_obj.fetch_sku_all()

        context = {
            'goods_info': goods_info,
            'sku_list': sku_list,
            'goods_status_list': GoodsStatus.all(),
        }
        response = TemplateResponse(request, 'goods/edit.html', context)

        return response
Beispiel #2
0
    def __order_data(self, order):
        order_basic_info = order.get_order_basic_info()
        basic_data = {
            'order_id':
            order_basic_info.get('order_id'),
            'user_id':
            order_basic_info.get('user_id'),
            'status_desc':
            order.get_status_text(),
            'order_sn':
            order_basic_info.get('order_sn'),  # 订单号
            'postage':
            order_basic_info.get('postage'),  # 邮费
            'amount_payable':
            float(order_basic_info.get('amount_payable')) / 100.0,  # 订单金额
        }
        order_items = order.get_order_item_list()
        items = []
        for order_item in order_items:
            item_basic = order_item.get_basic_info()
            sku_id = item_basic['sku_id']
            goods_obj = Goods.fetch_by_sku(sku_id)
            sku_info = goods_obj.get_sku_info(sku_id)
            items.append({
                'thumbnail': sku_info['image_url'],
                'sku_name': item_basic['goods_name'],
                'number': item_basic['number'],
                'attrs': item_basic['sku_property'],
                'sale_price': float(item_basic['sale_price']) / 100.0
            })
        basic_data['items'] = items
        receiver = order.get_receiver()
        if receiver:
            receiver_basic = receiver.get_basic_info()
            basic_data['receiver'] = {
                'name':
                receiver_basic.get('name'),
                'mobile':
                receiver_basic.get('mobile'),
                'address':
                ' '.join([
                    receiver_basic.get('province'),
                    receiver_basic.get('city'),
                    receiver_basic.get('district'),
                    receiver_basic.get('address'),
                ])
            }
        logistics = order.get_logistics()
        if logistics:
            logistics_basic = logistics.get_basic_info()
            logistics_res = {
                'com': logistics_basic.get('com_name'),
                'nu': logistics_basic.get('nu'),
            }
            logistics_data = logistics_basic.get('data')
            if logistics_data:
                logistics_res['data'] = json.loads(logistics_data)
            basic_data['logistics'] = logistics_res

        return basic_data
Beispiel #3
0
 def __order_data(self, order):
     order_basic_info = order.get_order_basic_info()
     basic_data = {
         'order_id':
         order_basic_info.get('order_id'),
         'status_desc':
         order.get_status_text(),
         'order_sn':
         order_basic_info.get('order_sn'),  # 订单号
         'postage':
         order_basic_info.get('postage'),  # 邮费
         'amount_payable':
         float(order_basic_info.get('amount_payable')) / 100.0,  # 订单金额
     }
     order_items = order.get_order_item_list()
     items = []
     for order_item in order_items:
         item_basic = order_item.get_basic_info()
         sku_id = item_basic['sku_id']
         goods_obj = Goods.fetch_by_sku(sku_id)
         sku_info = goods_obj.get_sku_info(sku_id)
         items.append({
             'thumbnail': sku_info['image_url'],
             'sku_name': item_basic['goods_name'],
             'number': item_basic['number'],
             'attrs': item_basic['sku_property'],
             'sale_price': float(item_basic['sale_price']) / 100.0
         })
     basic_data['items'] = items
     return basic_data
Beispiel #4
0
    def post(self, request, goods_id):

        property_vector_str = request.data.get('property_vector_str', None)
        if property_vector_str == None:
            property_vector = [{
                'key': u'属性',
                'value': u'默认',
            }]
        else:
            property_vector_list = property_vector_str.split('|')
            property_vector = []
            i = 0
            while (i < len(property_vector_list) and i < 4):
                property_vector.append({
                    'key': property_vector_list[i],
                    'value': property_vector_list[i + 1],
                })
                i += 2

        image_key = request.data.get('image_key', '')
        price = request.data.get('price', None)
        if price == None:
            raise Exception("Without price!!!")
        pintuan_price = request.data.get('pintuan_price', -1)
        stock = request.data.get('stock', 1000)
        supply_cost = request.data.get('supply_cost', -1)

        goods_obj = Goods(goods_id)
        sku_id = goods_obj.add_sku(
            image_key=image_key,
            property_vector=property_vector,
            price=price,
            pintuan_price=pintuan_price,
            supply_cost=supply_cost,
            stock=stock,
        )

        res = {'goods_id': goods_obj.id, 'sku_id': sku_id}
        return JsonResponse(res)
Beispiel #5
0
    def get(self, request):
        goods_obj_list = Goods.fetch()
        goods_data_list = []
        for obj in goods_obj_list:
            data = obj.read()
            sku_list = obj.fetch_sku_all()
            data['sku_number'] = len(sku_list)
            goods_data_list.append(data)

        context = {'goods_list': goods_data_list}
        response = TemplateResponse(request, 'goods/list.html', context)

        return response
Beispiel #6
0
 def buynow_settlement(self, sku_id, number):
     goods_obj = Goods.fetch_by_sku(sku_id)
     sku_info = goods_obj.get_sku_info(sku_id)
     item = {
         "sku_id": int(sku_id),
         "thumbnail": sku_info['image_url'],
         "price": sku_info['price'],
         "number": number,
         "name": sku_info["goods_name"],
         "attrs": sku_info['property'].split(';')
     }
     settlement_info = {
         'total_amount': sku_info['price'] * number,
         'amount_payable': sku_info['price'] * number,
         'item_list': [item]
     }
     return settlement_info
Beispiel #7
0
    def create(cls,
               entry,
               user_id,
               receiver,
               item_list,
               total_amount,
               amount_payable,
               pintuan_id=-1):
        total_amount = total_amount
        amount_payable = amount_payable

        order_model_obj = OrderModel.objects.create(
            entry=entry,
            order_sn='18' + str(sn()),
            user_id=user_id,
            total_amount=total_amount,
            amount_payable=amount_payable,
            postage=0,
            pintuan_id=pintuan_id)
        order_obj = cls(order_model_obj.pk, model_obj=order_model_obj)

        for item in item_list:
            sku_id = item['sku_id']
            number = item['number']
            goods_obj = Goods.fetch_by_sku(sku_id)
            sku_info = goods_obj.get_sku_info(sku_id)
            order_obj.add_order_item(sku_info['goods_id'], sku_info['id'],
                                     sku_info['goods_name'],
                                     sku_info['property'], sku_info['price'],
                                     number)

        order_obj.set_receiver(
            receiver.get('name'),
            receiver.get('province'),
            receiver.get('city'),
            receiver.get('district'),
            receiver.get('address'),
            receiver.get('mobile'),
            receiver.get('zipcode', ''),
        )

        return order_obj
Beispiel #8
0
    def get(self, request):

        offset = int(request.GET.get('offset', '0'))
        count = int(request.GET.get('count', '20'))

        res = {"banner_img_list": [], "goods_list": []}

        goods_obj_list = Goods.fetch_recommend_goods(offset, count)
        for goods_obj in goods_obj_list:
            goods_info = goods_obj.read()

            goods_img = ''
            if len(goods_info['banner_image_list']) > 0:
                goods_img = goods_info['banner_image_list'][0]

            res['goods_list'].append({
                "goods_id":
                goods_info['id'],
                "goods_name":
                goods_info['name'],
                "goods_price":
                float(goods_info['price']) / 100.0,
                "market_price":
                float(goods_info['market_price']) / 100.0,
                "goods_img":
                goods_img,
                "url":
                "../goods/detail?goodsId=%d" % goods_obj.id,
            })

        if offset == 0:
            home_banner_list = HomeBanner.fetch_all()
            for banner in home_banner_list:
                res['banner_img_list'].append({
                    'url': '',
                    'img': banner['image']
                })
        return ApiJsonResponse(res)
Beispiel #9
0
    def post(self, request):
        banner_images = request.data.get('banner_images')
        detail_images = request.data.get('detail_images')
        name = request.data.get('name')
        supply_source = request.data.get('supply_source')
        supply_item_id = request.data.get('supply_item_id')
        price = request.data.get('price')
        market_price = request.data.get('market_price')

        banner_image_list = banner_images.split(';')
        detail_image_list = detail_images.split(';')

        goods_obj = Goods.create(name=name,
                                 supply_source=supply_source,
                                 supply_item_id=supply_item_id,
                                 price=price,
                                 market_price=market_price,
                                 status=1,
                                 banner_image_list=banner_image_list,
                                 detail_image_list=detail_image_list)

        res = {'goods_id': goods_obj.id}
        return JsonResponse(res)
Beispiel #10
0
    def pintuan_join_settlement(self, pintuan_sn, number):
        pintuan_obj = Pintuan.get_pintuan_by_sn(pintuan_sn)
        pintuan_info = pintuan_obj.read()
        sku_id = pintuan_info['sku_id']
        pintuan_price = pintuan_info['price']

        goods_obj = Goods.fetch_by_sku(sku_id)
        sku_info = goods_obj.get_sku_info(sku_id)
        item = {
            "sku_id": int(sku_id),
            "thumbnail": sku_info['image_url'],
            "price": pintuan_price,
            "number": number,
            "name": sku_info["goods_name"],
            "attrs": sku_info['property'].split(';')
        }
        settlement_info = {
            'pintuan_price': pintuan_price,
            'total_amount': pintuan_price * number,
            'amount_payable': pintuan_price * number,
            'item_list': [item]
        }
        return settlement_info
Beispiel #11
0
    def get(self, request, goods_id):

        goods_obj = Goods(goods_id)
        goods_info = goods_obj.read()
        sku_list = goods_obj.fetch_sku_all()

        res = {
            "goods_id":
            goods_info['id'],
            "goods_name":
            goods_info['name'],
            "goods_price":
            float(goods_info['price']) / 100.0,
            "market_price":
            float(goods_info['market_price']) / 100.0,
            "banner_img_list":
            goods_info['banner_image_list'],
            "goods_detail_img_list":
            goods_info['detail_image_list'],
            "postage_desc":
            "免邮费",
            "services": [{
                "type": 1,
                "desc": "正品保障"
            }, {
                "type": 2,
                "desc": "发货&售后"
            }, {
                "type": 3,
                "desc": "七天退换"
            }],
            "sku_list": [],
            "property_vector": []
        }

        first = True
        for sku in sku_list:
            item = {
                "sku_id": sku['id'],
                "price": float(sku['price']) / 100.0,
                "property_value_vector": [],
                "img": sku['image_url'],
                "stock": sku['stock'],
            }

            i = 0
            for kv in sku["property_vector"]:
                if first == True:
                    res["property_vector"].append({
                        "key": kv["key"],
                        "values": []
                    })
                item["property_value_vector"].append(kv['value'])
                if not kv["value"] in res["property_vector"][i]["values"]:
                    res["property_vector"][i]["values"].append(kv['value'])
                i += 1

            res["sku_list"].append(item)
            first = False

        return ApiJsonResponse(res)