def CreateParam(shopname, productid, parentsku): auth_info = verb_token(shopname, connection) assert auth_info['errorcode'] == 1, auth_info['errortext'] params = { 'access_token': auth_info['access_token'], 'ProductID': productid, 'ParentSKU': '' } # api参数 if parentsku: params['ParentSKU'] = parentsku return params
def __init__(self, ShopName, cnxn, redis_conn=None): self.cnxn = cnxn self.redis_conn = redis_conn self.PlatformName = '' # models.CharField(u'平台',choices=ChoicesPlatformName,max_length=16,blank = True,null = True) self.ProductID = '' # models.CharField(u'ProductID',max_length=32,blank = True,null = True) self.ShopIP = '' # models.CharField(u'URL',max_length=32,blank = True,null = True) self.ShopName = ShopName # models.CharField(u'店铺名称',max_length=32,blank = True,null = True) self.Title = '' # models.CharField(u'Title',max_length=100,blank = True,null = True) self.SKU = '' # models.CharField(u'商品SKU',max_length=32,blank = True,null = True) self.ShopSKU = '' # models.CharField(u'店铺SKU',max_length=32,blank = True,null = True) self.Price = '' # models.CharField(u'价格',max_length=32,blank = True,null = True) self.RefreshTime = None # models.DateTimeField(u'刷新时间',blank = True,null = True) self.Image = '' # models.CharField(u'图片',max_length=200,blank = True,null = True) #wish专用 self.last_ProductID = None self.last_ProductName = None self.last_ParentSKU = None self.last_ImageURL = None self.last_DateUploaded = None self.last_ReviewState = None self.last_OfWishes = None self.last_OfSales = None self.last_LastUpdated = None self.last_ExtraImages = None self.last_Description = None self.last_Tags = None warehouse_obj = t_wish_shopcode_warehouse(self.cnxn) wResult = warehouse_obj.get_warehouse(self.ShopName) if wResult['errorcode'] != 1: # # t_store_configuration_file_obj = t_store_configuration_file(self.cnxn) # ssResult = t_store_configuration_file_obj.update_shopStatus('-1', self.ShopName) # 更新店铺配置文件中的 店铺状态 # assert ssResult['errorcode'] == 0, ssResult['errortext'] # # t_online_info_wish_obj = t_online_info_wish(self.cnxn) # SNResult = t_online_info_wish_obj.UpdateWishSNameByShopName(self.ShopName, '-1') # shopname # assert SNResult['errorcode'] == 1, SNResult['errortext'] raise Exception(wResult['errortext']) self.warehouse = wResult['warehouse'] auth_info = verb_token(self.ShopName, self.cnxn) self.access_token = auth_info['access_token']
def insertDB(self, shopName): code = 0 infractions_count = 0 try: auth_info = verb_token(shopName, self.db_conn) access_token = auth_info.get('access_token') if access_token: objs_tmp = t_store_configuration_file.objects.filter( ShopName_temp=shopName).values('Operators') Operators = objs_tmp[0]['Operators'] if objs_tmp else '' dict_infractions_count = self.get_infractions_count( access_token) if 'code' in dict_infractions_count and dict_infractions_count[ 'code'] == 0 and 'data' in dict_infractions_count and 'CountInfractionsResponse' in \ dict_infractions_count['data'] and 'count' in dict_infractions_count['data'][ 'CountInfractionsResponse']: infractions_count = int( dict_infractions_count['data'] ['CountInfractionsResponse']['count']) dict_infractions = { 'shopName': shopName, 'updateTime': datetime.now(), 'infractions_count': infractions_count, 'Operators': Operators } try: truncateSQL = "delete from wish_infractions where shopName='{}'".format( shopName) self.cursor.execute(truncateSQL) insertSQL = "INSERT INTO wish_infractions(shopName, infractions_count,Operators, updateTime) VALUE (%(shopName)s, %(infractions_count)s, %(Operators)s, %(updateTime)s)" self.cursor.execute(insertSQL, dict_infractions) except MySQLdb.Error, e: print "Mysql Error %d: %s" % (e.args[0], e.args[1]) self.db_conn.rollback() # 数据同步错误 code = 3 else: self.db_conn.commit() code = 0 else: # 错误的token code = 2 else:
def be_Viewed(self, request, queryset): for obj in queryset: try: auth_info = verb_token(obj.shopName, connection) assert auth_info['errorcode'] == 1, auth_info['errortext'] url = "https://merchant.wish.com/api/v2/noti/mark-as-viewed" params = { "access_token": auth_info['access_token'], "format": "json", "noti_id": obj.noti_id, } r = requests.post(url, params=params, timeout=5) wish_notification_syn_obj = wish_notification_syn() code = wish_notification_syn_obj.insertDB(obj.shopName) except Exception, e: logger.error(u'已看过----------------------%s' % e) pass
def MainBatchUpdateShipping(paramlsit, synname, warehouse): try: shippingDataList = eval(paramlsit[2]) auth_info = verb_token(shopname=paramlsit[0], conn=connection) assert auth_info['errorcode'] == 1, auth_info['errortext'] warehouse_obj = t_wish_shopcode_warehouse(connection) wResult = warehouse_obj.get_warehouse(paramlsit[0]) assert wResult['errorcode'] == 1, wResult['errortext'] if not wResult['warehouse'].has_key(warehouse): raise Exception(u'该店铺没有相应的仓库:%s,店铺所有仓库:%s' % (warehouse, wResult['warehouse'])) cwishapi_obj = cwishapi() t_wish_store_oplogs_obj = t_wish_store_oplogs(connection) show_log_text = '' for shippingData in shippingDataList: shippingData['id'] = paramlsit[1] shippingData['format'] = 'json' shippingData['access_token'] = auth_info['access_token'] shippingData['warehouse_name'] = wResult['warehouse'][warehouse] if shippingData.get('_add') and int( shippingData.get('_add').strip()) != 0: # 原有基础上增加 运费 rsp = cwishapi().Get_Shipping_Prices_of_a_Product({ 'access_token': auth_info['access_token'], 'product_id': paramlsit[1], 'country': shippingData['country'] }) _add = shippingData.pop('_add') if rsp['errorcode'] == 1: if rsp['shiping_infors']['ProductCountryShipping'][ 'use_product_shipping'] == 'True': shippinglist = all_shipping_list(paramlsit) shippingData['price'] = str( max(shippinglist) + float(_add)) else: shippingData['price'] = str( float(rsp['shiping_infors'] ['ProductCountryShipping']['shipping_price']) + float(_add)) else: raise Exception(rsp['errortext']) elif shippingData.get('_add') and int( shippingData.get('_add').strip()) == 0: shippinglist = all_shipping_list(paramlsit) shippingData['price'] = str(max(shippinglist)) edit_result = cwishapi_obj.edit_shipping_price_of_a_product( shippingData) # edit_result = {'errorcode': -1, 'errortext': json.dumps(shippingData)} keyone = '{}_{}'.format(paramlsit[1], shippingData['country']) if edit_result['errorcode'] == 1: uPResult = t_wish_store_oplogs_obj.updateStatusP( synname, keyone, 'over', '') utext = uPResult['errortext'] if uPResult[ 'errorcode'] == -1 else '' show_log_text += u'ProductID: {},国家: {}; 修改成功!{}\n'.format( paramlsit[1], shippingData['country'], utext) else: uPResult = t_wish_store_oplogs_obj.updateStatusP( synname, keyone, 'error', edit_result['errortext']) utext = uPResult['errortext'] if uPResult[ 'errorcode'] == -1 else '' show_log_text += u'ProductID: {},国家: {}; 修改失败!错误原因: {}, {} \n'.format( paramlsit[1], shippingData['country'], edit_result['errortext'], utext) return {'Code': 1, 'messages': ''} except Exception as error: return {'Code': -1, 'messages': '%s:%s' % (synname, error)}
def edit_GoodsInformation_by_ID(datadict, ShopName, flagname): myresult = {'Code': 0, 'messages': ''} try: uptext = None upstatus = 'over' # 日志 t_wish_store_oplogs_obj = t_wish_store_oplogs(connection) t_store_configuration_file_obj = t_store_configuration_file(connection) t_online_info_wish_obj = t_online_info_wish(connection) store_status = t_store_configuration_file_obj.getshopStatusbyshopcode( ShopName) # 获取店铺状态 assert store_status['errorcode'] == 0, store_status['errortext'] if store_status['status'] == '0': # 店铺状态正常的 snstatus = '0' cwishapi_obj = cwishapi() auth_info = verb_token(ShopName, connection) assert auth_info['errorcode'] == 1, auth_info['errortext'] datadict['access_token'] = auth_info.get('access_token', '') datadict['format'] = 'json' if datadict.get('main_image'): # 主图发生改变 mainimage = datadict['main_image'].keys()[0] if datadict['main_image'][mainimage] == '1': # 本地上传图片 mResult = wish_image_upload(mainimage, auth_info) assert mResult['errorcode'] == 1, mResult['errortext'] datadict['main_image'] = mResult['image_url'] else: datadict['main_image'] = mainimage.replace( '-medium.', '-original.') eImage_list = [] for eImage in datadict.get('extra_images', []): e_pic = eImage.keys()[0] if eImage[e_pic] == '1': evResult = wish_image_upload(e_pic, auth_info) assert evResult['errorcode'] == 1, evResult['errortext'] eImage_list.append(evResult['image_url']) else: eImage_list.append(e_pic.replace('-medium.', '-original.')) if eImage_list: datadict['extra_images'] = '|'.join(eImage_list) logger.info('datadict===============%s' % datadict) rtresult = cwishapi_obj.update_goods_info_by_wish_api(datadict, timeout=30) _content = eval(rtresult._content) if rtresult.status_code == 200 and _content['code'] == 0: toResult = ToCalculateADS(datadict['id'], ShopName, connection) assert toResult in [ '0', '1' ], toResult['errortext'] # 获取该product的在线不在线的状态 myresult['messages'] = u'%s:链接信息修改成功' % (datadict['id'], ) else: if _content.get('code') in [1000, 1028, 1006, 1031]: # 平台禁止修改加钻产品标题 toResult = ToCalculateADS(datadict['id'], ShopName, connection) assert toResult in [ '0', '1' ], toResult['errortext'] # 获取该product的在线不在线的状态 else: toResult = '-1' upstatus = 'error' # 日志 uptext = business_Terms(_content) myresult['messages'] = u'%s:链接信息修改失败,%s' % (datadict['id'], uptext) dResult = Wish_Data_Syn([ShopName, datadict['id'], ''], 'syn') assert dResult['Code'] == 1, dResult['messages'] adResult = t_online_info_wish_obj.UpdateWishStatusAD( datadict['id'], toResult) assert adResult['errorcode'] == 1, adResult['errortext'] myresult['_content'] = _content else: upstatus = 'error' snstatus = '-1' # listing 店铺状态标记 uptext = u'店铺状态被标记为异常' myresult['_content'] = uptext myresult['messages'] = u'%s:链接信息修改失败,%s' % (datadict['id'], uptext) uResult = t_wish_store_oplogs_obj.updateStatusP( flagname, datadict['id'], upstatus, uptext) assert uResult['errorcode'] == 0, uResult['errortext'] SNResult = t_online_info_wish_obj.UpdateWishSNameByShopName( ShopName, snstatus) # shopname assert SNResult['errorcode'] == 1, SNResult['errortext'] myresult['Code'] = 1 except Exception, e: myresult['Code'] = -1 myresult['messages'] = '%s:%s:%s' % (datadict['id'], Exception, e)
def OnTheShelf_OR_LowerFrame_BY_ShopSKU(shopsku, shopname, flag, flagname=''): myresult = {'Code': 0, 'messages': ''} try: upstatus = 'over' # 日志 uptext = None t_wish_store_oplogs_obj = t_wish_store_oplogs(connection) t_store_configuration_file_obj = t_store_configuration_file(connection) t_online_info_wish_obj = t_online_info_wish(connection) store_status = t_store_configuration_file_obj.getshopStatusbyshopcode( shopname) # 获取店铺状态 assert store_status['errorcode'] == 0, store_status['errortext'] if store_status['status'] == '0': # 店铺状态正常的 snstatus = '0' # 店铺状态 classshopsku_obj = classshopsku(redis_conn=redis_coon, shopname=shopname) cwishapi_obj = cwishapi() t_online_info_obj = t_online_info(shopname, connection) auth_info = verb_token(shopname, connection) assert auth_info['errorcode'] == 1, auth_info['errortext'] data = {} data['access_token'] = auth_info.get('access_token', '') data['ShopSKU'] = shopsku proinfo = t_online_info_obj.get_listingid_by_shopname_shopsku( shopsku) assert proinfo[ 'errorcode'] == 0, 'EDGetProductIDSuccess:%s' % proinfo[ 'errortext'] if flag == 'enshopsku': # ShopSKU上架 sstatus = 'Enabled' result = cwishapi_obj.update_to_enable(data, timeout=30) else: sstatus = 'Disabled' result = cwishapi_obj.update_to_disable(data, timeout=30) _content = eval(result._content) if result.status_code == 200 and _content['code'] == 0: uResult = t_online_info_obj.update_status_by_shopsku( sstatus, shopsku) # 更新shopsku状态数据 assert uResult[ 'errorcode'] == 0, 'EDSuccess:%s' % uResult['errortext'] classshopsku_obj.setStatus(shopsku, sstatus) # 修改redis数据 toResult = ToCalculateADS(proinfo['productid'], shopname, connection) assert toResult in [ '0', '1' ], toResult['errortext'] # 获取该product的在线不在线的状态 if flag == 'enshopsku': # ShopSKU上架 myresult['messages'] = u'%s:上架成功' % (shopsku, ) else: myresult['messages'] = u'%s:下架成功' % (shopsku, ) else: if _content.get('code') in [1000, 1028, 1006, 1031]: # 平台禁止修改加钻产品标题 toResult = ToCalculateADS(proinfo['productid'], shopname, connection) assert toResult in [ '0', '1' ], toResult['errortext'] # 获取该product的在线不在线的状态 else: toResult = '-1' upstatus = 'error' # 日志 uptext = business_Terms(_content) myresult['messages'] = u'%s:上下架操作失败!%s' % ( shopsku, business_Terms(_content)) refreshwishlisting.run({ 'ShopName': shopname, 'dbcnxn': connection, 'ProductID': proinfo['productid'] }) # Wish数据更新操作 adResult = t_online_info_wish_obj.UpdateWishStatusAD( proinfo['productid'], toResult) assert adResult['errorcode'] == 1, adResult['errortext'] myresult['_content'] = _content else: upstatus = 'error' snstatus = '-1' # listing 店铺状态标记 uptext = u'店铺状态被标记为异常' myresult['_content'] = uptext myresult['messages'] = u'%s:上下架操作失败!%s' % (shopsku, uptext) uPResult = t_wish_store_oplogs_obj.updateStatusP( flagname, shopsku, upstatus, uptext) assert uPResult['errorcode'] == 0, uPResult['errortext'] SNResult = t_online_info_wish_obj.UpdateWishSNameByShopName( shopname, snstatus) # shopname assert SNResult['errorcode'] == 1, SNResult['errortext'] myresult['Code'] = 1 except Exception, e: myresult['Code'] = -1 myresult['messages'] = '%s:%s:%s' % (shopsku, Exception, e)
def arrange_params(opnum, type, opkey): t_wish_store_oplogs_obj = t_wish_store_oplogs(connection) result_objs = t_templet_wish_publish_result.objects.filter( pid=opkey, Status='waiting') param, shopname, parentsku, ShippingTempletID = '', '', '', '' try: if result_objs.exists(): result_obj = result_objs[0] shopname = result_obj.ShopName auth_info = verb_token(shopname[:9], connection) assert auth_info['errorcode'] == 1, auth_info['errortext'] pubdata = {} # 用于刊登的数据 集合 pubdata['id'] = opkey uResult = wish_image_upload(result_obj.MainImage, auth_info) assert uResult['errorcode'] == 1, '%s' % uResult['errortext'] pubdata['main_image'] = uResult['image_url'] # 产品主图 pubdata['first'] = {} pubdata['first'][ 'url'] = 'https://merchant.wish.com/api/v2/product/add' pubdata['first']['product'] = {} pubdata['first']['product']['access_token'] = auth_info[ 'access_token'] pubdata['first']['product']['format'] = 'json' pubdata['first']['product']['enabled'] = True pubdata['first']['product']['name'] = result_obj.Title pubdata['first']['product']['tags'] = result_obj.Tags pubdata['first']['product']['description'] = result_obj.Description maininfo = json.loads(result_obj.MainInfo) parentsku = maininfo.get('ParentSKU') pubdata['first']['product']['parent_sku'] = parentsku ShippingTempletID = maininfo.get('CountryShipping', '') epiclist = [] for epic in result_obj.ExtraImages.split('|'): if epic.strip() != '': euResult = wish_image_upload(epic, auth_info) assert euResult['errorcode'] == 1, euResult['errortext'] epiclist.append(euResult['image_url']) pubdata['first']['product']['extra_images'] = '|'.join( epiclist) # 产品附图 v_datas = json.loads(result_obj.Variants) if len(v_datas) >= 1: v_data = v_datas[0] if not parentsku: pubdata['first']['product']['parent_sku'] = v_data.get( 'ShopSKU') assert v_data.get('ShopSKU'), u'店铺SKU不能为空' pubdata['first']['product']['sku'] = v_data.get('ShopSKU') pubdata['first']['product']['main_image'] = v_data.get('vPic') pubdata['first']['product']['color'] = v_data.get('Color') pubdata['first']['product']['size'] = v_data.get('Size') pubdata['first']['product']['msrp'] = v_data.get('Msrp') pubdata['first']['product']['price'] = v_data.get('Price') pubdata['first']['product']['inventory'] = v_data.get('Kc') pubdata['first']['product']['shipping'] = v_data.get( 'Shipping') pubdata['first']['product']['shipping_time'] = v_data.get( 'Shippingtime') if v_data.get('vPic'): uvResult = wish_image_upload(v_data.get('vPic'), auth_info) assert uvResult['errorcode'] == 1, uvResult['errortext'] pubdata['first']['product']['main_image'] = uvResult[ 'image_url'] # 第一变体图 pubdata['second'] = {} pubdata['second'][ 'url'] = 'https://merchant.wish.com/api/v2/variant/add' pubdata['second']['product'] = [] for i in range(1, len(v_datas)): v_d = v_datas[i] v_dict = {} v_dict['access_token'] = auth_info['access_token'] v_dict['format'] = 'json' v_dict['parent_sku'] = pubdata['first']['product'][ 'parent_sku'] assert v_d.get('ShopSKU'), u'店铺SKU不能为空' v_dict['sku'] = v_d.get('ShopSKU') v_dict['main_image'] = v_d.get('vPic') v_dict['enabled'] = True v_dict['color'] = v_d.get('Color') v_dict['size'] = v_d.get('Size') v_dict['msrp'] = v_d.get('Msrp') v_dict['price'] = v_d.get('Price') v_dict['inventory'] = v_d.get('Kc') # v_dict['shipping'] = v_d.get('Shipping') 10.8以后不再允许创建变体时设置运费 v_dict['shipping_time'] = v_d.get('Shippingtime') if v_d.get('vPic'): vuResult = wish_image_upload(v_d.get('vPic'), auth_info) assert vuResult['errorcode'] == 1, vuResult[ 'errortext'] v_dict['main_image'] = vuResult['image_url'] # 各变体图 pubdata['second']['product'].append(v_dict) param = json.dumps(pubdata) print '================' + param if param: # 在这里调用刊登函数 pResult = to_pub(param, opkey) assert pResult['errorcode'] == 1, u'errortext:{}; param:{}'.format( pResult['errortext'], param) try: ApplicationShippingForm([shopname[:9], pResult['productid']], ShippingTempletID) # 应用模板数据 PostRefresh([shopname[:9], pResult['productid'], parentsku]) # 刷新链接到本地 except Exception as er: applyerror = u'Published is successful! BUT, {}'.format(er) try: PostRefresh( [shopname[:9], pResult['productid'], parentsku]) # 刷新链接到本地 except Exception as error: if u'{}'.format(er) != u'{}'.format(error): applyerror = applyerror + u'{}'.format(error) raise Exception(applyerror) else: raise Exception('param===%s;' % param) result_objs.update(param=param, Status='success', result=pResult['productid']) t_wish_store_oplogs_obj.updateStatusP(opnum, opkey, 'over', '') except Exception, e: errortext = u'%s:%s' % (Exception, e) if '\u' in errortext: try: errortext = errortext.decode("unicode_escape") except: pass result_objs.update(param='', Status='error', result=errortext) t_wish_store_oplogs_obj.updateStatusP(opnum, opkey, 'error', errortext)
def insertDB(self, shopName): code = 0 try: auth_info = verb_token(shopName, self.db_conn) access_token = auth_info.get('access_token') if access_token: objs_tmp = t_store_configuration_file.objects.filter( ShopName_temp=shopName).values('Operators') Operators = objs_tmp[0]['Operators'] if objs_tmp else '' dict_unview_count = self.get_unview_count(access_token) if 'code' in dict_unview_count and 'data' in dict_unview_count and dict_unview_count[ 'code'] == 0: unview_count = dict_unview_count['data']['count'] if int(unview_count) > 0: info = self.getData(access_token) if 'code' in info and 'data' in info and info[ 'code'] == 0: dict_unview = { 'shopName': shopName, 'updateTime': datetime.now(), 'unview_count': unview_count, 'Operators': Operators } try: truncateSQL = "delete from wish_notification where shopName='{}'".format( shopName) self.cursor.execute(truncateSQL) for GetNotiResponse in info['data']: for k, v in GetNotiResponse[ 'GetNotiResponse'].items(): dict_unview[k] = v insertSQL = "INSERT INTO wish_notification(shopName, perma_link, message, " \ "title, noti_id, unview_count,Operators, updateTime) VALUE (%(shopName)s,%(perma_link)s,%(message)s," \ "%(title)s,%(id)s, %(unview_count)s, %(Operators)s, %(updateTime)s)" self.cursor.execute(insertSQL, dict_unview) except MySQLdb.Error, e: print "Mysql Error %d: %s" % (e.args[0], e.args[1]) self.db_conn.rollback() # 数据同步错误 code = 3 else: self.db_conn.commit() code = 0 else: dict_unview = { 'shopName': shopName, 'unview_count': unview_count, 'updateTime': datetime.now(), 'Operators': Operators } try: truncateSQL = "delete from wish_notification where shopName='{}'".format( shopName) self.cursor.execute(truncateSQL) insertSQL = "INSERT INTO wish_notification(shopName, unview_count, Operators, updateTime)" \ "VALUE (%(shopName)s %(unview_count)s, %(Operators)s, %(updateTime)s)" self.cursor.execute(insertSQL, dict_unview) except MySQLdb.Error, e: print "Mysql Error %d: %s" % (e.args[0], e.args[1]) self.db_conn.rollback() # 数据同步错误 code = 3 else: self.db_conn.commit() code = 0
def insertDB(self, shopName): # shopName = "Wish-0236" try: auth_info = verb_token(shopName, self.db_conn) access_token = auth_info.get('access_token') if access_token: info = self.getData(access_token) if 'code' in info and 'data' in info and info['code'] == 0: objs_tmp = t_store_configuration_file.objects.filter( ShopName_temp=shopName).values('Operators') Operators = objs_tmp[0]['Operators'] if objs_tmp else '' dict_order = { 'shopName': shopName, 'updateTime': datetime.now(), 'street_address2': None, 'color': None, 'size': None, 'Operators': Operators, 'phone_number': None, 'last_updated': None, 'expected_ship_date': None, 'product_id': None, 'buyer_id': None, 'is_combined_order': None, 'variant_id': None, 'requires_delivery_confirmation': None, 'cost': None, 'shipping_cost': None, 'hours_to_fulfill': None, 'sku': None, 'order_total': None, 'state': None, 'days_to_fulfill': None, 'product_name': None, 'transaction_id': None, 'order_time': None, 'order_id': None, 'price': None, 'released_to_merchant_time': None, 'is_wish_express': None, 'product_image_url': None, 'tracking_confirmed': None, 'shipping': None, 'quantity': None, 'city': None, 'name': None, 'country': None, 'zipcode': None, 'street_address1': None } try: truncateSQL = "delete from wish_processed_order where shopName='{}'".format( shopName) self.cursor.execute(truncateSQL) for order in info['data']: for k, v in order['Order'].items(): if k == 'ShippingDetail': for x, y in order['Order'][ 'ShippingDetail'].items(): dict_order[x] = y else: dict_order[k] = v insertSQL = "INSERT INTO wish_processed_order(shopName,last_updated,expected_ship_date,product_id,buyer_id,is_combined_order," \ "variant_id,requires_delivery_confirmation,cost,shipping_cost,hours_to_fulfill,order_size,sku,order_total," \ "state,days_to_fulfill,product_name,transaction_id,order_time,order_id,price,released_to_merchant_time," \ "is_wish_express,product_image_url,tracking_confirmed,shipping,quantity,phone_number,city,user_name,country," \ "zipcode,street_address1,street_address2,color,updateTime, Operators) VALUE (%(shopName)s,%(last_updated)s,%(expected_ship_date)s,%(product_id)s,%(buyer_id)s," \ "%(is_combined_order)s,%(variant_id)s,%(requires_delivery_confirmation)s,%(cost)s,%(shipping_cost)s," \ "%(hours_to_fulfill)s,%(size)s,%(sku)s,%(order_total)s,%(state)s,%(days_to_fulfill)s,%(product_name)s," \ "%(transaction_id)s,%(order_time)s,%(order_id)s,%(price)s,%(released_to_merchant_time)s,%(is_wish_express)s," \ "%(product_image_url)s,%(tracking_confirmed)s,%(shipping)s,%(quantity)s,%(phone_number)s,%(city)s,%(name)s," \ "%(country)s,%(zipcode)s,%(street_address1)s,%(street_address2)s,%(color)s,%(updateTime)s, %(Operators)s)" self.cursor.execute(insertSQL, dict_order) except Exception, e1: logger.error( 'order_syn---------------------------------%s' % e1) self.db_conn.rollback() # 数据同步错误 return 3 else: self.db_conn.commit() return 0 else: logger.error("error token:{}".format(shopName)) # 错误的token return 2 else:
def insertDB(self, shopName): try: auth_info = verb_token(shopName, self.db_conn) access_token = auth_info.get('access_token') if access_token: info = self.getData(access_token) if info['errorcode'] == 1: list_ticket = [] if info['data']: # data 不为空 objs_tmp = t_store_configuration_file.objects.filter( ShopName_temp=shopName).values('Operators') Operators = objs_tmp[0]['Operators'] if objs_tmp else '' try: for data in info['data']: item_list = data['Ticket']['items'] product_id = item_list[0]['Order'][ 'product_id'] product_image_url = item_list[0]['Order'][ 'product_image_url'] product_name = item_list[0]['Order'][ 'product_name'] order_id = item_list[0]['Order']['order_id'] logger.error( 'data--------------------------------------%s' % data) dict_ticket = { 'shopName': shopName, 'updateTime': datetime.now(), 'Operators': Operators, 'default_refund_reason': '', 'label': '', 'sublabel': '', 'open_date': '', 'state': '', 'UserInfo_locale': '', 'UserInfo_joined_date': '', 'UserInfo_id': '', 'UserInfo_name': '', 'last_update_date': '', 'state_id': '', 'merchant_id': '', 'photo_proof': '', 'ticket_id': '', 'ticket_transaction_id': '', 'subject': '', 'product_id': product_id, 'product_image_url': product_image_url, 'product_name': product_name, 'replies': '', 'order_id': order_id } ticket_dict = data['Ticket'] for k, v in ticket_dict.items(): if k == 'UserInfo': for x, y in ticket_dict[ 'UserInfo'].items(): if x == 'id': x = 'UserInfo_id' elif x == 'locale': x = 'UserInfo_locale' elif x == 'joined_date': x = 'UserInfo_joined_date' elif x == 'name': x = 'UserInfo_name' if '\u' in y: try: y = y.decode( "unicode_escape") except: pass dict_ticket[x] = y else: if k == 'id': k = 'ticket_id' elif k == 'transaction_id': k = 'ticket_transaction_id' elif k == 'replies': v = repr(v) if '\u' in v: try: v = v.decode("unicode_escape") except: pass dict_ticket[k] = v list_ticket.append(dict_ticket) except Exception, e1: logger.error( '--------------------------------------%s' % e1) # 数据同步错误 return 3 try: transaction.set_autocommit(False) truncateSQL = "delete from wish_ticket where shopName='{}'".format( shopName) insertSQL = "INSERT INTO wish_ticket(shopName,label,sublabel,open_date,state," \ "UserInfo_locale,UserInfo_joined_date,UserInfo_id,UserInfo_name,last_update_date," \ "state_id,default_refund_reason,merchant_id,photo_proof,ticket_id," \ "ticket_transaction_id,subject,updateTime,Operators,product_id,product_name,product_image_url,replies,order_id) VALUE (%(shopName)s," \ "%(label)s,%(sublabel)s,%(open_date)s,%(state)s,%(UserInfo_locale)s," \ "%(UserInfo_joined_date)s,%(UserInfo_id)s,%(UserInfo_name)s,%(last_update_date)s," \ "%(state_id)s,%(default_refund_reason)s,%(merchant_id)s,%(photo_proof)s," \ "%(ticket_id)s,%(ticket_transaction_id)s,%(subject)s,%(updateTime)s,%(Operators)s,%(product_id)s,%(product_name)s,%(product_image_url)s,%(replies)s,%(order_id)s)" self.cursor.execute(truncateSQL) self.cursor.executemany(insertSQL, list_ticket) transaction.commit() return 0 except Exception, e1: logger.error( '--------------------------------------%s' % e1) transaction.rollback() # 数据同步错误 return 3 else:
def __init__(self, ShopName, cnxn): self.cnxn = cnxn self.ShopName = ShopName # models.CharField(u'店铺名称',max_length=32,blank = True,null = True) auth_info = verb_token(self.ShopName, self.cnxn) self.access_token = auth_info.get('access_token')
def getauthByShopName(self, ShopName): ainfo = verb_token(ShopName, self.cnxn) assert ainfo['errorcode'] == 1, ainfo['errortext'] self.auth_info = ainfo['auth_info'] return ainfo['auth_info']