示例#1
0
    def post(self):
        shop_id = int(self.get_argument('shop_id', 0).encode('utf-8'))
        goods_id = self.get_argument('goods_id', 0)

        if not self.db.get('select id from goods where deleted = 0 and id = %s', goods_id):
            shops_id = [options.shop_id_taobao, options.shop_id_tmall, options.shop_id_jingdong, options.shop_id_jdb,
                        options.shop_id_yihaodian, options.shop_id_wuba, options.shop_id_meituan, options.shop_id_dianping]

            shops = self.db.query('select id, name from distributor_shop where id in (%s)' % ','.join(['%s'] * len(shops_id)), *shops_id)
            self.render('goods/distributor/relation_products.html', shops=shops, error='不存在该商品')
            return

        distributor_goods_id = self.get_argument('distributor_goods_id', 0)
        status = self.get_argument('status', 'ON_SALE')

        if self.db.get('select id from goods_distributor_shop where distributor_shop_id = %s and '
                       'distributor_goods_id = %s limit 1', shop_id, distributor_goods_id):
            shops_id = [options.shop_id_taobao, options.shop_id_tmall, options.shop_id_jingdong, options.shop_id_jdb,
                        options.shop_id_yihaodian, options.shop_id_wuba, options.shop_id_meituan, options.shop_id_dianping]

            shops = self.db.query('select id, name from distributor_shop where id in (%s)' % ','.join(['%s'] * len(shops_id)), *shops_id)

            self.render('goods/distributor/relation_products.html', shops=shops, error='在该分销店铺上已存在该商品的分销id')

        distr_id = alloc_distributor_goods(self.db, goods_id, shop_id)
        self.db.execute('update goods_distributor_shop set distributor_goods_id = %s, status = %s,'
                        'created_by = %s where id = %s',
                        distributor_goods_id.strip(' '), status, self.current_user.name, distr_id.id)

        self.redirect(self.reverse_url('goods.distributor.show_list'))
示例#2
0
    def post(self):
        arg = lambda k: self.get_argument(k).encode('utf-8')

        attr_items = []  # 带选项的属性
        attr_texts = []  # 需要输入的属性
        for name in self.request.arguments:
            if name.startswith('attr_item_'):
                attr_items.append('%s:%s' % (name[10:], '|'.join(
                    self.get_arguments(name)).encode('utf-8')))
            elif name.startswith('attr_text_'):
                attr_texts.append('%s:%s' % (name[10:], arg(name)))

        goods_id = self.get_argument('goods_id')
        dg = alloc_distributor_goods(self.db, goods_id,
                                     options.shop_id_yihaodian)

        yihaodian = Yihaodian('yhd.product.add')
        response = yield yihaodian(
            outerId=dg.goods_link_id,
            prodAttributeInfoList=','.join(attr_texts),
            prodAttributeItemInfoList=','.join(attr_items),
            productType=arg('productType'),
            categoryId=arg('categoryId'),
            merchantCategoryId=arg('merchantCategoryId'),
            productCname=arg('productCname'),
            productSubTitle=arg('productSubTitle'),
            virtualStockNum=arg('virtualStockNum'),
            productNamePrefix=arg('productNamePrefix'),
            brandId=arg('brandId'),
            productMarketPrice=arg('productMarketPrice'),
            weight=arg('weight'),
            productSalePrice=arg('productSalePrice'),
            canSale=arg('canSale'),
            productDescription=arg('productDescription'),
            electronicCerticate=arg('electronicCerticate'))
        yihaodian.parse_response(response.body)
        if not yihaodian.is_ok():
            self.render('goods/distributor/yihaodian/result.html',
                        ok=False,
                        title="上传出错",
                        explain='<br/>'.join([
                            error.findtext('errorCode') + ':' +
                            error.findtext('errorDes')
                            for error in yihaodian.message.findall(
                                './errInfoList/errDetailInfo')
                        ]))
        else:
            self.db.execute(
                'update goods_distributor_shop set status="PENDING", created_by=%s, created_at=NOW() '
                'where goods_id=%s and distributor_shop_id=%s and goods_link_id=%s',
                self.current_user.name, goods_id, options.shop_id_yihaodian,
                dg.goods_link_id)
            self.render('goods/distributor/yihaodian/upload_img.html',
                        error=None,
                        goods_link_id=dg.goods_link_id)
示例#3
0
    def post(self):
        """推送商品"""
        arg = lambda k: self.get_argument(k).encode('utf-8')
        goods_id = self.get_argument('goods_id')

        dg = alloc_distributor_goods(self.db, goods_id, options.shop_id_wuba)
        params = dict([(name, self.get_argument(name).encode('utf-8')) for name in self.request.arguments])

        params.pop("goods_id")
        params.pop("_xsrf")
        params['groupbuyId'] = dg.goods_link_id
        prod_model_json = dict(prodmodcatename=arg('prodName'), prodprice=arg('prodPrice'),
                               groupprice=arg('groupPrice'), prodcode='', count=arg('saleMaxNum'))

        cityIds = self.request.arguments['cityIds']
        ids = []
        for cityId in cityIds:
            ids.append(int(cityId))

        params['cityIds'] = str(ids)

        if options.app_mode == 'dev':
            params['prodImg'] = 'http://www.itlearner.com/google_commonweal_ad/images/sun/300px.jpg'
        params['prodModelJson'] = '{%s}' % json_dumps(prod_model_json)
        #商家信息参数
        shop_ids = list(arg('shop_ids').split(","))
        # 将团购信息参数中的特定key值转移出来,构建商家信息参数
        partner_keys = {"partnerId", "title", "shortTitle", "telephone", "webUrl", "busline", "mapImg",
                        "mapServiceId", "mapUrl", "latitude", "longitude", "address", "circleId"}
        partners = []
        for shop_id in shop_ids:
            partner = {}
            for key in partner_keys:
                partner[key] = params.pop(key + "_" + shop_id)
            partners.append(partner)

        request_params = {'groupbuyInfo': params, 'partners': partners}
        wb = Wuba('addgroupbuy')
        response = yield wb.fetch(**request_params)
        wb.parse_response(response.body)

        if wb.is_ok():
            off_sale_at = datetime.strptime(params['endTime'], '%Y-%m-%d %H:%M:%S')
            expire_at = ceiling(datetime.strptime(params['deadline'], '%Y-%m-%d %H:%M:%S'), today=True)
            self.db.execute('update goods_distributor_shop set status="PENDING", created_by=%s, created_at=NOW(), '
                            'offsale_at = %s, expire_at = %s, distributor_goods_id = %s '
                            'where goods_id=%s and distributor_shop_id=%s and goods_link_id=%s',
                            self.current_user.name, off_sale_at, expire_at,
                            wb.message.data.groupbuyId58, goods_id, options.shop_id_wuba, dg.goods_link_id)

            self.render('goods/distributor/wuba/result.html', ok=True, title='上传成功',
                        explain='<a href="http://t.58.com/sh/%s" target="_blank">去58查看商品</a><br/><a href="/goods/distributor?shop=wb">'
                                '继续上传58商品</a>' % wb.message.data.groupbuyId58)
        else:
            self.render('goods/distributor/wuba/result.html', ok=False, title='上传出错', explain=wb.message.msg)
示例#4
0
    def post(self):
        shop_id = int(self.get_argument('shop_id', 0).encode('utf-8'))
        goods_id = self.get_argument('goods_id', 0)

        if not self.db.get(
                'select id from goods where deleted = 0 and id = %s',
                goods_id):
            shops_id = [
                options.shop_id_taobao, options.shop_id_tmall,
                options.shop_id_jingdong, options.shop_id_jdb,
                options.shop_id_yihaodian, options.shop_id_wuba,
                options.shop_id_meituan, options.shop_id_dianping
            ]

            shops = self.db.query(
                'select id, name from distributor_shop where id in (%s)' %
                ','.join(['%s'] * len(shops_id)), *shops_id)
            self.render('goods/distributor/relation_products.html',
                        shops=shops,
                        error='不存在该商品')
            return

        distributor_goods_id = self.get_argument('distributor_goods_id', 0)
        status = self.get_argument('status', 'ON_SALE')

        if self.db.get(
                'select id from goods_distributor_shop where distributor_shop_id = %s and '
                'distributor_goods_id = %s limit 1', shop_id,
                distributor_goods_id):
            shops_id = [
                options.shop_id_taobao, options.shop_id_tmall,
                options.shop_id_jingdong, options.shop_id_jdb,
                options.shop_id_yihaodian, options.shop_id_wuba,
                options.shop_id_meituan, options.shop_id_dianping
            ]

            shops = self.db.query(
                'select id, name from distributor_shop where id in (%s)' %
                ','.join(['%s'] * len(shops_id)), *shops_id)

            self.render('goods/distributor/relation_products.html',
                        shops=shops,
                        error='在该分销店铺上已存在该商品的分销id')

        distr_id = alloc_distributor_goods(self.db, goods_id, shop_id)
        self.db.execute(
            'update goods_distributor_shop set distributor_goods_id = %s, status = %s,'
            'created_by = %s where id = %s', distributor_goods_id.strip(' '),
            status, self.current_user.name, distr_id.id)

        self.redirect(self.reverse_url('goods.distributor.show_list'))
示例#5
0
    def post(self):
        arg = lambda k: self.get_argument(k).encode('utf-8')

        attr_items = []  # 带选项的属性
        attr_texts = []  # 需要输入的属性
        for name in self.request.arguments:
            if name.startswith('attr_item_'):
                attr_items.append('%s:%s' % (name[10:], '|'.join(self.get_arguments(name)).encode('utf-8')))
            elif name.startswith('attr_text_'):
                attr_texts.append('%s:%s' % (name[10:], arg(name)))

        goods_id = self.get_argument('goods_id')
        dg = alloc_distributor_goods(self.db, goods_id, options.shop_id_yihaodian)

        yihaodian = Yihaodian('yhd.product.add')
        response = yield yihaodian(
            outerId=dg.goods_link_id,
            prodAttributeInfoList=','.join(attr_texts), prodAttributeItemInfoList=','.join(attr_items),
            productType=arg('productType'), categoryId=arg('categoryId'),
            merchantCategoryId=arg('merchantCategoryId'), productCname=arg('productCname'),
            productSubTitle=arg('productSubTitle'), virtualStockNum=arg('virtualStockNum'),
            productNamePrefix=arg('productNamePrefix'), brandId=arg('brandId'),
            productMarketPrice=arg('productMarketPrice'), weight=arg('weight'),
            productSalePrice=arg('productSalePrice'), canSale=arg('canSale'),
            productDescription=arg('productDescription'), electronicCerticate=arg('electronicCerticate')
        )
        yihaodian.parse_response(response.body)
        if not yihaodian.is_ok():
            self.render('goods/distributor/yihaodian/result.html', ok=False, title="上传出错",
                        explain='<br/>'.join([error.findtext('errorCode')+':'+error.findtext('errorDes')
                                              for error in yihaodian.message.findall('./errInfoList/errDetailInfo')]))
        else:
            self.db.execute('update goods_distributor_shop set status="PENDING", created_by=%s, created_at=NOW() '
                            'where goods_id=%s and distributor_shop_id=%s and goods_link_id=%s',
                            self.current_user.name, goods_id, options.shop_id_yihaodian, dg.goods_link_id)
            self.render('goods/distributor/yihaodian/upload_img.html', error=None, goods_link_id=dg.goods_link_id)
示例#6
0
    def post(self, goods_id):
        params = dict([(name, self.get_argument(name).encode('utf-8'))
                       for name in self.request.arguments])
        shops = self.db.query(
            'select ss.* from supplier_shop ss,goods g where ss.supplier_id=g.supplier_id and g.id=%s and ss.deleted=0 '
            'and (g.all_shop=1 or ss.id in (select supplier_shop_id from goods_supplier_shop where goods_id=%s))',
            goods_id, goods_id)
        params.pop('_xsrf')
        shop_id = params.pop('shop_id')
        params['shops'] = shops
        params['market_price'] = Decimal(params['market_price'])
        params['team_price'] = Decimal(params['team_price'])
        #params['groupon_bimg'] = 'http://www.itlearner.com/google_commonweal_ad/images/sun/300px.jpg'
        params['min_number'] = 1
        if params['max_number'] == '0':
            params['max_number'] = '9999'
        #分割区域和商圈信息
        district_info = params.pop('district_info')
        sp = (',', '-')
        for s in sp:
            district_info = district_info.replace(s, ' ')
        dd = string.split(district_info, ' ')
        districts = {}
        for i in range(len(dd) / 2):
            if dd[2 * i] not in districts:
                districts[dd[2 * i]] = []
            districts[dd[2 * i]].append(dd[2 * i + 1])
        params['districts'] = districts
        params['group2'] = string.split(params['group2'], ',')
        vender_team = alloc_distributor_goods(self.db, goods_id, shop_id)
        params['vender_team_id'] = vender_team.goods_link_id

        shop = self.db.get(
            'select taobao_seller_id, taobao_api_info from distributor_shop where id=%s',
            shop_id)
        api_info = json.loads(shop.taobao_api_info, object_hook=json_hook)

        jd_push = Jingdong('uploadTeam', str(shop.taobao_seller_id),
                           api_info.vender_key, api_info.secret_key)
        response = yield jd_push.fetch(**params)
        jd_push.parse_response(response.body)

        if jd_push.is_ok():
            message = '发布成功'
            offsale_at = datetime.strptime(params['end_time'],
                                           '%Y-%m-%d %H:%M:%S')
            expire_at = ceiling(datetime.strptime(params['expire_time'],
                                                  '%Y-%m-%d %H:%M:%S'),
                                today=True)
            self.db.execute(
                'update goods_distributor_shop set status="PENDING", created_by=%s, created_at=NOW(), '
                'offsale_at = %s, expire_at = %s, distributor_goods_id = %s '
                'where goods_id=%s and distributor_shop_id=%s and goods_link_id=%s',
                self.current_user.name, offsale_at, expire_at,
                jd_push.message.findtext('JdTeamId'), goods_id, shop_id,
                vender_team.goods_link_id)

            logging.info(
                'jingdong push success. goods_id = %s, distributor_goods_id = %s',
                goods_id, jd_push.message.findtext('JdTeamId'))

        else:
            message = '上传失败:' + str(jd_error['error_message'].get(
                int(jd_push.result_code)))

        self.render('goods/distributor/jd/result.html', message=message)
示例#7
0
    def post(self):
        props = ''
        args = self.request.arguments.copy()
        shop_id = args.pop('shop_id')[0]

        input_pids = ''
        input_str = ''
        if 'attr-name' in args:
            for pid in args.pop('attr-name'):
                if pid in args:
                    for v in args.pop(pid):
                        if v == '_custom_':
                            input_pids += '%s,' % pid
                            input_str += '%s,' % args.pop('%s_custom' % pid)[0]
                            break
                        props += '%s:%s;' % (pid, v)

        if 'seller_cids' in args:
            seller_cids = ','.join(args.pop('seller_cids'))
            args['seller_cids'] = seller_cids
        args = dict([(key, args[key][0]) for key in args])
        args['props'] = props
        args['input_str'] = input_str
        args['input_pids'] = input_pids
        goods_id = args.pop('goods_id')
        dg = alloc_distributor_goods(self.db, goods_id, shop_id)
        args['outer_id'] = dg.goods_link_id

        app_info = json.loads(self.db.get(
            'select taobao_api_info from distributor_shop where id = %s',
            shop_id).taobao_api_info,
                              object_hook=json_hook)
        goods_push = Taobao('taobao.item.add')
        goods_push.set_app_info(app_info.app_key, app_info.app_secret_key)
        goods_push.set_session(app_info.session)

        response = yield goods_push(**args)
        goods_push.parse_response(response.body)

        ok = 0
        num_iid = ''
        if goods_push.is_ok():
            ok = 1
            num_iid = goods_push.message.item.num_iid
            message = '发布成功'
            self.db.execute(
                'update goods_distributor_shop set status="PENDING", created_by=%s, created_at=NOW(), '
                'distributor_goods_id=%s where goods_id=%s and distributor_shop_id=%s and goods_link_id=%s',
                self.current_user.name, num_iid, goods_id, shop_id,
                dg.goods_link_id)
        else:
            err_msg = goods_push.error.sub_msg if 'sub_msg' in goods_push.error else goods_push.error.msg
            message = '发布失败:' + err_msg.encode('utf-8')

        img_paths = self.db.get('select img_paths from goods where id=%s',
                                goods_id).img_paths
        img_paths = json.loads(img_paths) if img_paths else dict()

        self.render('goods/distributor/taobao/result.html',
                    message=message,
                    ok=ok,
                    num_iid=num_iid,
                    shop_id=shop_id,
                    img_paths=img_paths,
                    img_url=img_url)
示例#8
0
    def post(self):
        params = dict([(name, self.get_argument(name).encode('utf-8')) for name in self.request.arguments])

        #判断是否存在对应的商品,如果没有则添加
        goods = self.db.get('select goods_id from ktv_product_goods where product_id = %s and shop_id = %s',
                            params['product_id'], params['shop_id'])
        shop = self.db.get('select * from supplier_shop where id = %s', params['shop_id'])
        product = self.db.get('select * from ktv_product where id = %s', params['product_id'])
        taobao_sku_list = build_taobao_sku(self.db, shop.id, product.id)

        props = ''
        if 'attr-name' in self.request.arguments:
            for pid in self.request.arguments['attr-name']:
                if pid in self.request.arguments:
                    for i in self.request.arguments[pid]:
                        props += pid + ':' + i + ';'

        if not goods:
            shop_name = self.db.get('select name from supplier_shop where id = %s', params['shop_id'])['name']
            sql = """insert into goods(supplier_id, sales_price, face_value, purchase_price, category_id, name,
                     short_name, sms_name, created_at, expire_at, type, detail, created_by, generate_type, all_shop)
                     values(%s, 1, 1, 1, 1021, %s, %s, %s, NOW(), NOW(), 'E', 'ktv产品', %s, 'GENERATE', 0)"""
            combo = shop_name + product['name']
            param = [self.current_user.supplier_id, combo, combo, combo, self.current_user.name]
            goods_id = self.db.execute(sql, *param)
            self.db.execute('insert into goods_property(goods_id, name, value) values(%s, "ktv", 1)', goods_id)
            self.db.execute('insert into goods_property(goods_id, name, value) values(%s, "hidden", 1)', goods_id)
            self.db.execute('insert into ktv_product_goods(shop_id, product_id, goods_id, created_at) '
                            'values(%s, %s, %s, NOW())', params['shop_id'], params['product_id'], goods_id)
            self.db.execute('insert into goods_supplier_shop(goods_id,supplier_shop_id) values(%s, %s)', goods, shop.id)
        else:
            goods_id = goods.goods_id

        # shop_id 如果是银乐迪,指定为31, 否则默认是券生活8的id(13)
        shop_id = {629: 31}.get(self.current_user.supplier_id, options.shop_id_taobao)
        dg = alloc_distributor_goods(self.db, goods_id, shop_id)
        outer_id = str(dg.goods_link_id)

        sku_properties = []
        sku_quantities = []
        sku_prices = []
        sku_outer_ids = []
        props_set = []

        goods_number = 0
        min_price = 100000
        max_price = 0
        room_type_taobao_info = {'MINI': '27426219:6312905', 'SMALL': '27426219:3442354', 'MIDDLE': '27426219:6769368',
                                 'LARGE': '27426219:3374388', 'DELUXE': '27426219:40867986'}

        for taobao_sku in taobao_sku_list:
            sku_properties.append(get_taobao_propertities(taobao_sku))
            sku_quantities.append(taobao_sku.quantity)
            sku_prices.append(taobao_sku.price)
            sku_outer_ids.append(get_taobao_outer_id(taobao_sku))
            for i in sku_quantities:
                goods_number += i
            props_set = remove_repeat(props_set, room_type_taobao_info[taobao_sku.room_type])
            if taobao_sku.price < min_price:
                min_price = taobao_sku.price
            if taobao_sku.price > max_price:
                max_price = taobao_sku.price

        props += ';'.join(props_set)
        sku_properties_str = ','.join(sku_properties)
        # sku_properties_str = sku_properties_str.encode('utf-8')
        sku_quantities_str = ','.join([str(i) for i in sku_quantities]).encode('utf-8')
        sku_prices_str = ','.join([str(i) for i in sku_prices]).encode('utf-8')
        sku_outer_ids_str = ','.join(sku_outer_ids).encode('utf-8')

        input_pid = []
        input_s = []
        # props += self.get_argument('face_value') + ':' + str(int(max_price) * 1.5) + ';'

        # 增加品牌、省份、城市属性
        props += ';' + params['ktv_brand'] + ':' + params['brand'] + ';'
        ktv_province = self.request.arguments['ktv_provinces']
        for province_item in ktv_province:
            props += params['ktv_province'] + ':' + province_item + ';'

        ktv_cities = self.request.arguments['ktv_cities']
        for city_item in ktv_cities:
            props += params['ktv_city'] + ':' + city_item + ';'

        merchant = params['merchant']

        input_pid.append(self.get_argument('face_value'))
        input_s.append(str(int(int(max_price) * 1.5)))
        input_pids = ','.join(input_pid).encode('utf-8')
        input_str = ','.join(input_s).encode('utf-8')

        app_info = json.loads(self.db.get('select taobao_api_info from distributor_shop where id = %s',
                              options.shop_id_taobao).taobao_api_info, object_hook=json_hook)
        goods_push = Taobao('taobao.item.add')
        goods_push.set_app_info(app_info.app_key, app_info.app_secret_key)
        goods_push.set_session(app_info.session)
        publish = self.get_argument('publish', 0)
        image = img_url(params['img_url'])
        # image = 'http://img0.bdstatic.com/img/image/9196a600c338744ebf8e350016bdbf9d72a6059a745.jpg'
        if publish:
            approve_status = 'onsale'
        else:
            approve_status = 'instock'

        args = {
            'num': goods_number,
            'price': min_price,
            'type': 'fixed',
            'image': image,
            'stuff_status': 'news',
            'title': params['title'],
            'location__state': params['location_state'],
            'location__city': params['location_city'],
            'cid': 50644003,
            'approve_status': approve_status,
            'desc': params['desc'],
            'props': props,
            'sku_properties': sku_properties_str,
            'sku_quantities': sku_quantities_str,
            'sku_prices': sku_prices_str,
            'sku_outer_ids': sku_outer_ids_str,
            'input_pids': input_pids,
            'input_str': input_str,
            'outer_id': outer_id,
            'locality_life__merchant': merchant,
            'locality_life__choose_logis': '0',
            'locality_life__expirydate': '30',
            'locality_life__onsale_auto_refund_ratio': 100
        }

        response = yield goods_push(**args)
        goods_push.parse_response(response.body)
        if goods_push.is_ok():
            message = '发布成功'
            self.db.execute('update goods_distributor_shop set status="PENDING", created_by=%s, created_at=NOW(), '
                            'distributor_goods_id = %s where goods_id=%s and distributor_shop_id=%s and '
                            'goods_link_id=%s', self.current_user.name, goods_push.message.item.num_iid, goods_id,
                            shop_id, dg.goods_link_id)
        else:
            err_msg = goods_push.error.sub_msg if 'sub_msg' in goods_push.error else goods_push.error.msg
            message = '发布失败:' + err_msg.encode('utf-8')

        self.render('ktv/manage/result.html', message=message)
示例#9
0
    def post(self):
        props = ""
        args = self.request.arguments.copy()
        shop_id = args.pop("shop_id")[0]

        input_pids = ""
        input_str = ""
        if "attr-name" in args:
            for pid in args.pop("attr-name"):
                if pid in args:
                    for v in args.pop(pid):
                        if v == "_custom_":
                            input_pids += "%s," % pid
                            input_str += "%s," % args.pop("%s_custom" % pid)[0]
                            break
                        props += "%s:%s;" % (pid, v)

        if "seller_cids" in args:
            seller_cids = ",".join(args.pop("seller_cids"))
            args["seller_cids"] = seller_cids
        args = dict([(key, args[key][0]) for key in args])
        args["props"] = props
        args["input_str"] = input_str
        args["input_pids"] = input_pids
        goods_id = args.pop("goods_id")
        dg = alloc_distributor_goods(self.db, goods_id, shop_id)
        args["outer_id"] = dg.goods_link_id

        app_info = json.loads(
            self.db.get("select taobao_api_info from distributor_shop where id = %s", shop_id).taobao_api_info,
            object_hook=json_hook,
        )
        goods_push = Taobao("taobao.item.add")
        goods_push.set_app_info(app_info.app_key, app_info.app_secret_key)
        goods_push.set_session(app_info.session)

        response = yield goods_push(**args)
        goods_push.parse_response(response.body)

        ok = 0
        num_iid = ""
        if goods_push.is_ok():
            ok = 1
            num_iid = goods_push.message.item.num_iid
            message = "发布成功"
            self.db.execute(
                'update goods_distributor_shop set status="PENDING", created_by=%s, created_at=NOW(), '
                "distributor_goods_id=%s where goods_id=%s and distributor_shop_id=%s and goods_link_id=%s",
                self.current_user.name,
                num_iid,
                goods_id,
                shop_id,
                dg.goods_link_id,
            )
        else:
            err_msg = goods_push.error.sub_msg if "sub_msg" in goods_push.error else goods_push.error.msg
            message = "发布失败:" + err_msg.encode("utf-8")

        img_paths = self.db.get("select img_paths from goods where id=%s", goods_id).img_paths
        img_paths = json.loads(img_paths) if img_paths else dict()

        self.render(
            "goods/distributor/taobao/result.html",
            message=message,
            ok=ok,
            num_iid=num_iid,
            shop_id=shop_id,
            img_paths=img_paths,
            img_url=img_url,
        )
示例#10
0
    def post(self):
        params = dict([(name, self.get_argument(name).encode('utf-8'))
                       for name in self.request.arguments])

        #判断是否存在对应的商品,如果没有则添加
        goods = self.db.get(
            'select goods_id from ktv_product_goods where product_id = %s and shop_id = %s',
            params['product_id'], params['shop_id'])
        shop = self.db.get('select * from supplier_shop where id = %s',
                           params['shop_id'])
        product = self.db.get('select * from ktv_product where id = %s',
                              params['product_id'])
        taobao_sku_list = build_taobao_sku(self.db, shop.id, product.id)

        props = ''
        if 'attr-name' in self.request.arguments:
            for pid in self.request.arguments['attr-name']:
                if pid in self.request.arguments:
                    for i in self.request.arguments[pid]:
                        props += pid + ':' + i + ';'

        if not goods:
            shop_name = self.db.get(
                'select name from supplier_shop where id = %s',
                params['shop_id'])['name']
            sql = """insert into goods(supplier_id, sales_price, face_value, purchase_price, category_id, name,
                     short_name, sms_name, created_at, expire_at, type, detail, created_by, generate_type, all_shop)
                     values(%s, 1, 1, 1, 1021, %s, %s, %s, NOW(), NOW(), 'E', 'ktv产品', %s, 'GENERATE', 0)"""
            combo = shop_name + product['name']
            param = [
                self.current_user.supplier_id, combo, combo, combo,
                self.current_user.name
            ]
            goods_id = self.db.execute(sql, *param)
            self.db.execute(
                'insert into goods_property(goods_id, name, value) values(%s, "ktv", 1)',
                goods_id)
            self.db.execute(
                'insert into goods_property(goods_id, name, value) values(%s, "hidden", 1)',
                goods_id)
            self.db.execute(
                'insert into ktv_product_goods(shop_id, product_id, goods_id, created_at) '
                'values(%s, %s, %s, NOW())', params['shop_id'],
                params['product_id'], goods_id)
            self.db.execute(
                'insert into goods_supplier_shop(goods_id,supplier_shop_id) values(%s, %s)',
                goods, shop.id)
        else:
            goods_id = goods.goods_id

        # shop_id 如果是银乐迪,指定为31, 否则默认是券生活8的id(13)
        shop_id = {
            629: 31
        }.get(self.current_user.supplier_id, options.shop_id_taobao)
        dg = alloc_distributor_goods(self.db, goods_id, shop_id)
        outer_id = str(dg.goods_link_id)

        sku_properties = []
        sku_quantities = []
        sku_prices = []
        sku_outer_ids = []
        props_set = []

        goods_number = 0
        min_price = 100000
        max_price = 0
        room_type_taobao_info = {
            'MINI': '27426219:6312905',
            'SMALL': '27426219:3442354',
            'MIDDLE': '27426219:6769368',
            'LARGE': '27426219:3374388',
            'DELUXE': '27426219:40867986'
        }

        for taobao_sku in taobao_sku_list:
            sku_properties.append(get_taobao_propertities(taobao_sku))
            sku_quantities.append(taobao_sku.quantity)
            sku_prices.append(taobao_sku.price)
            sku_outer_ids.append(get_taobao_outer_id(taobao_sku))
            for i in sku_quantities:
                goods_number += i
            props_set = remove_repeat(
                props_set, room_type_taobao_info[taobao_sku.room_type])
            if taobao_sku.price < min_price:
                min_price = taobao_sku.price
            if taobao_sku.price > max_price:
                max_price = taobao_sku.price

        props += ';'.join(props_set)
        sku_properties_str = ','.join(sku_properties)
        # sku_properties_str = sku_properties_str.encode('utf-8')
        sku_quantities_str = ','.join([str(i) for i in sku_quantities
                                       ]).encode('utf-8')
        sku_prices_str = ','.join([str(i) for i in sku_prices]).encode('utf-8')
        sku_outer_ids_str = ','.join(sku_outer_ids).encode('utf-8')

        input_pid = []
        input_s = []
        # props += self.get_argument('face_value') + ':' + str(int(max_price) * 1.5) + ';'

        # 增加品牌、省份、城市属性
        props += ';' + params['ktv_brand'] + ':' + params['brand'] + ';'
        ktv_province = self.request.arguments['ktv_provinces']
        for province_item in ktv_province:
            props += params['ktv_province'] + ':' + province_item + ';'

        ktv_cities = self.request.arguments['ktv_cities']
        for city_item in ktv_cities:
            props += params['ktv_city'] + ':' + city_item + ';'

        merchant = params['merchant']

        input_pid.append(self.get_argument('face_value'))
        input_s.append(str(int(int(max_price) * 1.5)))
        input_pids = ','.join(input_pid).encode('utf-8')
        input_str = ','.join(input_s).encode('utf-8')

        app_info = json.loads(self.db.get(
            'select taobao_api_info from distributor_shop where id = %s',
            options.shop_id_taobao).taobao_api_info,
                              object_hook=json_hook)
        goods_push = Taobao('taobao.item.add')
        goods_push.set_app_info(app_info.app_key, app_info.app_secret_key)
        goods_push.set_session(app_info.session)
        publish = self.get_argument('publish', 0)
        image = img_url(params['img_url'])
        # image = 'http://img0.bdstatic.com/img/image/9196a600c338744ebf8e350016bdbf9d72a6059a745.jpg'
        if publish:
            approve_status = 'onsale'
        else:
            approve_status = 'instock'

        args = {
            'num': goods_number,
            'price': min_price,
            'type': 'fixed',
            'image': image,
            'stuff_status': 'news',
            'title': params['title'],
            'location__state': params['location_state'],
            'location__city': params['location_city'],
            'cid': 50644003,
            'approve_status': approve_status,
            'desc': params['desc'],
            'props': props,
            'sku_properties': sku_properties_str,
            'sku_quantities': sku_quantities_str,
            'sku_prices': sku_prices_str,
            'sku_outer_ids': sku_outer_ids_str,
            'input_pids': input_pids,
            'input_str': input_str,
            'outer_id': outer_id,
            'locality_life__merchant': merchant,
            'locality_life__choose_logis': '0',
            'locality_life__expirydate': '30',
            'locality_life__onsale_auto_refund_ratio': 100
        }

        response = yield goods_push(**args)
        goods_push.parse_response(response.body)
        if goods_push.is_ok():
            message = '发布成功'
            self.db.execute(
                'update goods_distributor_shop set status="PENDING", created_by=%s, created_at=NOW(), '
                'distributor_goods_id = %s where goods_id=%s and distributor_shop_id=%s and '
                'goods_link_id=%s', self.current_user.name,
                goods_push.message.item.num_iid, goods_id, shop_id,
                dg.goods_link_id)
        else:
            err_msg = goods_push.error.sub_msg if 'sub_msg' in goods_push.error else goods_push.error.msg
            message = '发布失败:' + err_msg.encode('utf-8')

        self.render('ktv/manage/result.html', message=message)