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'))
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)
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)
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'))
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)
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)
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)
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)
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, )
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)