您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
上架助手2024
当前为
// ==UserScript== // @name 上架助手2024-油猴插件 // @namespace http://tampermonkey.net/ // @version 2024-12-29_01 // @description 上架助手2024 // @license MIT // @author Beerspume // @match https://*.soluxemall.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=benefits.soluxemall.com // @grant GM_addElement // @grant GM_log // @grant GM_setClipboard // @grant GM_download // @grant GM_xmlhttpRequest // @connect * // ==/UserScript== (function() { 'use strict'; //取得易采网站后台请求的授权信息 function getAuthorization(){ //从localStorage中取得授权信息 const json_jdcloud=localStorage.getItem("jdcloud"); let Authorization=undefined; if(json_jdcloud){ try{ const jdcloud=JSON.parse(json_jdcloud); Authorization=jdcloud.token; //console.log(`Authorization: ${Authorization}`); }catch(e){ console.log("jdcloud解析失败,请查看localStorage中的jdcloud是否正确"); } } return Authorization; } //复制内容到剪贴板 function copyToClipboard(text) { navigator.clipboard.writeText(text) .then(function() { console.log('Text copied to clipboard'); }) .catch(function(err) { console.error('Failed to copy text: ', err); }); } //将秒转化为小时 const fn_formatSeconds=(seconds)=>{ if(seconds===Infinity){ return ""; }else{ return `${Math.floor(seconds/3600)}小时${Math.floor(seconds%3600/60)}分钟${Math.floor(seconds%3600%60)}秒`; } }; function sleep(seconds){ return new Promise((resolve,reject)=>{ window.setTimeout(()=>{ resolve(); },seconds*1000); }); } const TimeSample=[]; const fn_timeSample=()=>{ TimeSample.push(new Date().getTime()); while(TimeSample.lenth>11){ TimeSample.shift(); } let average=Infinity; if(TimeSample.length>0){ average=(Math.max(...TimeSample)-Math.min(...TimeSample))/TimeSample.length/1000; } return average; }; // 访问后台服务的统一接口 const api=(api_name,data)=>{ return new Promise((resolve,reject)=>{ GM_xmlhttpRequest({ url:"http://43.143.136.44/hysm/api/api.asp", method:'POST', responseType:"json", headers:{i:api_name,"Content-Type":"application/x-www-form-urlencoded"}, data:ObjToParams(data), onload:(event)=>{ if(event.status==200){ if(event.response.success){ resolve(event.response.data); }else{ reject(event.response); } }else{ reject(event); } }, onerror:(event)=>{ reject(event); } }); }); } //转换请求参数格式 function ObjToParams(obj){ let ret=""; Object.keys(obj).forEach((k)=>{ let v=obj[k]; if(typeof(v)==="object"){ v=JSON.stringify(v); } ret+=`${k}=${encodeURIComponent(v)}&`; }); if(ret.length>1){ ret=ret.substring(0,ret.length-1) } return ret; } //显示信息 function msgDisplay(str){ let el_msg=document.querySelector(".hy_msg1"); if(el_msg){ el_msg.innerText=str; } } //下载图片存放到Blob const fn_download_photo=function(photo_url){ return new Promise((resolve,reject)=>{ const re_photo_filename=/\/([^\/]+)$/; const m_photo_filename=photo_url.match(re_photo_filename); let photo_filename='noname.jpg'; if(m_photo_filename){ photo_filename=m_photo_filename[1]; } GM_xmlhttpRequest({ url:photo_url, method:'GET', responseType:'blob', onload:(event)=>{ const phpto_data=event.response; resolve(phpto_data); }, onerror:(event)=>{ reject(event); } }); }); }; //取得商品详情 const getGoodsDetail=(shopSkuId)=>{ return new Promise((resolve,reject)=>{ const post_data={shopSkuId: shopSkuId}; const post_headers={ "Content-Type":"application/json;charset=UTF-8", "Authorization":getAuthorization(), }; GM_xmlhttpRequest({ url:"https://benefits.soluxemall.com/proxy/item-center/energynet/platform/shopDataFilling/seachSupplierEnergyDataDetail", method:'POST', data:JSON.stringify(post_data), headers:post_headers, onload:(event)=>{ try{ if(event.status==200){ const response=JSON.parse(event.responseText); if(response.code=="0"){ resolve(response.data); }else{ reject(response.msg); } }else{ reject(event); } }catch(e){ reject(e); } }, onerror:(event)=>{ reject(event); } }); }); }; //-------------------------------------------- 石油易采->供应商中心->商品管理->能源一号网 ---------------------------------------------------------------------------- //订单列表页面,检查订单是否为新订单 const fn_initOrderList=()=>{ console.log('进入订单列表页面'); let el_menubar=document.querySelector(".hy_menubarorder"); if(!el_menubar){ // 插件功能区 el_menubar=document.createElement("div"); el_menubar.classList.add("hy_menubarorder"); el_menubar.style="z-index:999;width:10em;background-color:lightblue;position:fixed;top:10px;right:5px;border-radius:5px;font-size:larger; box-shadow: 0px 0px 10px;"; //主功能区 const el_mainContainer=document.createElement("div"); el_menubar.append(el_mainContainer); el_mainContainer.style="height:100%;display:flex;flex-direction: column;justify-content:center;align-items:center;padding:5px 5px 5px 5px;"; //主功能区标题 const el_title=document.createElement("div"); el_mainContainer.append(el_title); el_title.innerText="订单助手"; el_title.style="width:100%;text-align: center;margin-bottom:5px;font-weight: bolder;"; //导入输入商品按钮 const el_b3=document.createElement("button"); el_mainContainer.append(el_b3); el_b3.style="width:90%;margin-bottom:5px;"; el_b3.textContent="检查新订单"; el_b3.addEventListener("click",(event)=>{doCheckOrders()}); el_b3.classList.add("hy_btn_check_neworder"); //查询消息显示区 const el_msg1=document.createElement("div"); el_mainContainer.append(el_msg1); el_msg1.style="width:100%;color:red;display:block;margin-bottom:5px;"; el_msg1.innerText=""; el_msg1.classList.add("hy_msg1"); //将助手工具添加到页面 document.body.insertAdjacentElement("afterBegin",el_menubar); } //取得订单详情 const getOrderDetail=(orderno)=>{ return new Promise((resolve,reject)=>{ const post_headers={ "Content-Type":"application/json;charset=UTF-8", "Authorization":getAuthorization(), }; GM_xmlhttpRequest({ url:`https://benefits.soluxemall.com/proxy/order/seller/order/getPurchaseInfo?platformId=20&orderNo=${orderno}&handle=2`, method:'GET', headers:post_headers, onload:(event)=>{ try{ if(event.status==200){ const response=JSON.parse(event.responseText); if(response.code=="0"){ resolve(response.data); }else{ reject(response.msg); } }else{ reject(event); } }catch(e){ reject(e); } }, onerror:(event)=>{ reject(event); } }); }); }; //从华远平台获取订单信息 const getHYSMOrderDetail=(nyoneOrderNo)=>{ return new Promise((resolve,reject)=>{ const post_headers={ "Content-Type":"application/json;charset=UTF-8", }; GM_xmlhttpRequest({ url:`http://43.143.136.44/hysm/ajax_checkorderbh.asp?orderbh=${nyoneOrderNo}`, method:'GET', headers:post_headers, onload:(event)=>{ try{ if(event.status==200){ const response=JSON.parse(event.responseText); resolve(response); }else{ reject(event); } }catch(e){ reject(e); } }, onerror:(event)=>{ reject(event); } }); }); }; //导入新订单 const doImportOrders=(orderno)=>{ (async()=>{ //开始导入订单 console.log(`开始导入订单${orderno}`); const order=await getOrderDetail(orderno); console.log(order); const data={ orderfrom:0, orderbh:order.nyoneOrderNo, ordertime:order.orderTime, compamy:"", personname:order.receiverName, tell:order.mobile, address:order.address, note:(order.remark||"").replace("null",""), totalprice:order.totalPrice, }; let has_error=false; let has_goods=false; let totalAmount=0; let goods_index=0; let errmsg=""; for(let i=0;i<order.subOrderInfoResultVoList[0].subSkuDemandInfo.length;i++){ const goodsitem=order.subOrderInfoResultVoList[0].subSkuDemandInfo[i]; //console.log(goodsitem.itemId); const goodsdetail = await getGoodsDetail(goodsitem.skuId); console.log(goodsdetail); has_goods=true; data[`spbm${goods_index}`]=goodsitem.skuId; //商品sku data[`sppp${goods_index}`]=goodsdetail.brandCnName; //商品品牌 data[`spmc${goods_index}`]=goodsdetail.shopBaseSkuName; //商品名称 data[`scjg${goods_index}`]=goodsitem.sellPrice; //商品单价 data[`cgsl${goods_index}`]=goodsitem.skuNums; //采购数量 data[`spdw${goods_index}`]=goodsdetail.sourceSkuUnit; //商品单位 totalAmount+=goodsitem.sellPrice*goodsitem.skuNums; goods_index++; } totalAmount = totalAmount.toFixed(2); data.orderamount=totalAmount; data.ordergoodsnum=goods_index; if(totalAmount!=order.totalPrice){ console.log(`计算出的订单金额:${totalAmount}- ${order.totalPrice}`); console.log('订单金额对比错误'); errmsg = `订单金额对比错误:${totalAmount}- ${order.totalPrice}`; has_error =true; } if(!has_goods){ has_error =true; errmsg = '订单中没有商品信息'; } //构造提交的表单 if(!has_error){ const el_form=document.createElement("form"); el_form.style.display="none"; el_form.setAttribute("target","hy-system-importorder"); el_form.setAttribute("action","http://43.143.136.44/hysm/doimport_order.asp"); el_form.setAttribute("method","post") Object.keys(data).forEach((k)=>{ let v=data[k]; if(typeof(v)==="object"){ v=JSON.stringify(v); } const el_input=document.createElement("input"); el_input.setAttribute("name",k); el_input.setAttribute("value",v); el_form.append(el_input); //ret+=`${k}=${encodeURIComponent(v)}&`; }); document.body.append(el_form); console.log(el_form); el_form.submit(); el_form.remove(); }else{ console.log(`导入订单失败,${errmsg}`); msgDisplay(`导入订单失败,${errmsg}`); } })(); }; //检查新订单 const doCheckOrders=()=>{ (async()=>{ console.log('检查页面中的订单是否有新订单'); msgDisplay(`检查页面中的订单是否有新订单`); const el_btn=document.querySelector(".hy_btn_check_neworder"); if(el_btn){ el_btn.setAttribute("disabled",true); } const orderDiv = document.querySelector(".layui-tab-item.layui-show"); const trTitleList = orderDiv.querySelectorAll("tr.trTitle")||[]; let newordernum=0; for(let i=0;i<trTitleList.length;i++){ try{ msgDisplay(`检查订单${i+1}/${trTitleList.length}`); const orderno=trTitleList[i].querySelector("input.table-checkbox").getAttribute('data-order-no'); const order=await getOrderDetail(orderno); console.log(order); const hycheckOrder = await getHYSMOrderDetail(order.nyoneOrderNo); console.log(hycheckOrder); if(hycheckOrder.found=="yes"){ //发现新订单 console.log(`发现新订单${orderno}-${order.nyoneOrderNo}`); const el_button=document.createElement("a"); //el_button.classList.add("a-to-button"); el_button.style="background:#ffb800;cursor: pointer;"; el_button.innerText="导入华远系统"; el_button.addEventListener("click",(event)=>{ const el_button=event.target; const order_id=el_button.dataset.orderid doImportOrders(orderno); }); const tdarray= trTitleList[i].querySelectorAll("td")||[]; if (tdarray.length>0){ tdarray[tdarray.length-1].insertAdjacentElement("beforeEnd",el_button); } newordernum+=1; } }catch(e){ console.error(`检查订单出现错误`); msgDisplay(`检查订单出现错误`); console.error(e); } } if(trTitleList.length==0){ msgDisplay(`没有订单列表`); } if(newordernum>0){ msgDisplay(`找到新订单${newordernum}个,请导入`); } if(el_btn){ el_btn.removeAttribute("disabled"); } })(); }; } //初始化添加商品页面 const fn_initNumberOne=()=>{ let el_menubar=document.querySelector(".hy_menubar"); if(!el_menubar){ // 插件功能区 el_menubar=document.createElement("div"); el_menubar.classList.add("hy_menubar"); el_menubar.style="z-index:999;width:10em;background-color:lightblue;position:fixed;top:10px;right:5px;border-radius:5px;font-size:larger; box-shadow: 0px 0px 10px;"; //主功能区 const el_mainContainer=document.createElement("div"); el_menubar.append(el_mainContainer); el_mainContainer.style="height:100%;display:flex;flex-direction: column;justify-content:center;align-items:center;padding:5px 5px 5px 5px;"; //主功能区标题 const el_title=document.createElement("div"); el_mainContainer.append(el_title); el_title.innerText="上架助手"; el_title.style="width:100%;text-align: center;margin-bottom:5px;font-weight: bolder;"; //商品sku输入框 const el_input=document.createElement("input"); el_mainContainer.append(el_input); el_input.style="width:100%;margin-bottom:5px;"; el_input.setAttribute("placeholder","填入商品9开头sku"); el_input.classList.add("hy_input_shopskucodes"); //导入输入商品按钮 const el_b3=document.createElement("button"); el_mainContainer.append(el_b3); el_b3.style="width:90%;margin-bottom:5px;"; el_b3.textContent="上传商品"; el_b3.addEventListener("click",(event)=>{doUploadGoodsListBySKU()}); el_b3.classList.add("hy_btn_import_goodsbysku"); //导入全部商品按钮 const el_b1=document.createElement("button"); el_mainContainer.append(el_b1); el_b1.style="width:90%;margin-bottom:5px;"; el_b1.textContent="上传全部商品"; el_b1.addEventListener("click",(event)=>{doUploadGoodsListByPage(1,200)}); el_b1.classList.add("hy_btn_importALL_goods"); //上传响应商品按钮 const el_b2=document.createElement("button"); el_mainContainer.append(el_b2); el_b2.style="width:90%;margin-bottom:5px;"; el_b2.textContent="上传响应商品"; el_b2.addEventListener("click",(event)=>{doUploadApplyGoodsListByPage(1,200)}); el_b2.classList.add("hy_btn_importapply_goods"); //查询消息显示区 const el_msg1=document.createElement("div"); el_mainContainer.append(el_msg1); el_msg1.style="width:100%;color:red;display:block;margin-bottom:5px;"; el_msg1.innerText=""; el_msg1.classList.add("hy_msg1"); //完成信息显示区 const el_msg2=document.createElement("div"); el_mainContainer.append(el_msg2); el_msg2.style="width:100%;color:red;display:none;margin-bottom:5px;color:green"; el_msg2.innerText="完成!可点击保存提交产品"; el_msg2.classList.add("hy_msg2"); //将助手工具添加到页面 document.body.insertAdjacentElement("afterBegin",el_menubar); }; //取得商品列表 const getGoodsListByPage=(pageNum,pageSize,status)=>{ return new Promise((resolve,reject)=>{ let post_data={pageNum: pageNum, pageSize: pageSize} if(status>0 ){ post_data.status=status; }; //console.log(post_data); const post_headers={ "Content-Type":"application/json;charset=UTF-8", "Authorization":getAuthorization(), }; GM_xmlhttpRequest({ url:"https://benefits.soluxemall.com/proxy/item-center/energynet/platform/shopDataFilling/selectPageListByStatus", method:'POST', data:JSON.stringify(post_data), headers:post_headers, onload:(event)=>{ try{ if(event.status==200){ const response=JSON.parse(event.responseText); if(response.code=="0"){ resolve(response.data); }else{ reject(response.msg); } }else{ reject(event); } }catch(e){ reject(e); } }, onerror:(event)=>{ reject(event); } }); }); }; //两次请求的最小间隔时间 const minReuestInterval=2000; //输入的sku商品上传 const doUploadGoodsListBySKU=()=>{ (async()=>{ const el_btn=document.querySelector(".hy_btn_import_goodsbysku"); if(el_btn){ el_btn.setAttribute("disabled",true); } const shopSkuId=document.querySelector(".hy_input_shopskucodes").value; try{ const goods=await getGoodsDetail(shopSkuId); await postGoodsToHYMS(goods); console.log(`已上传商品${shopSkuId}`) msgDisplay(`已上传商品${shopSkuId}`); }catch(e){ console.error(`提交商品出现错误${shopSkuId}`); msgDisplay(`提交商品出现错误${shopSkuId}`); console.error(e); } if(el_btn){ el_btn.removeAttribute("disabled"); } })(); }; let uploadApplyGoodsSucessNum=0; //成功上传数目 let uploadApplyGoodsFailNum=0; //失败上传数目 //遍历响应的商品并上传响应信息,采用递归方式遍历所有页 const doUploadApplyGoodsListByPage=(pn,ps)=>{ (async()=>{ const el_btn=document.querySelector(".hy_btn_importapply_goods"); if(el_btn){ el_btn.setAttribute("disabled",true); } const response=await getGoodsListByPage(pn,ps,3); //console.log(response); const pageNum=response.pageNum; const pageSize=response.pageSize; const totalPageCount=response.totalPageCount; const totalCount=response.totalCount; const result=response.result; for(let i=0;i<result.length;i++){ const t0=(new Date()).getTime(); const currentNum=(pageNum-1)*pageSize+i+1; const shopSkuId=result[i].shopSkuId; try{ await postApplyGoodsToHYMS(result[i]); uploadApplyGoodsSucessNum+=1; console.log(`已上传响应商品${shopSkuId}(${currentNum}/${totalCount} at page:${pageNum})`) }catch(e){ uploadApplyGoodsFailNum+=1; console.error(`提交响应商品出现错误${shopSkuId}(${currentNum}/${totalCount} at page:${pageNum})`); console.error(result[i]); console.error(e); } const t1=(new Date()).getTime(); if(t1-t0<minReuestInterval){ const sleepSeconds=(minReuestInterval-(t1-t0))/1000; //console.log(`sleep ${sleepSeconds}秒`); //await sleep(sleepSeconds); } msgDisplay(`上传成功${uploadApplyGoodsSucessNum}条失败${uploadApplyGoodsFailNum}条`); } if(pageNum<totalPageCount){ doUploadApplyGoodsListByPage(pageNum+1,pageSize); }else{ console.log("上传结束"); msgDisplay(`上传成功${uploadApplyGoodsSucessNum}条失败${uploadApplyGoodsFailNum}条 上传结束` ); if(el_btn){ el_btn.removeAttribute("disabled"); } } })(); }; let uploadGoodsSucessNum=0; //成功上传数目 let uploadGoodsFailNum=0; //失败上传数目 //遍历商品并上传,采用递归方式遍历所有页 const doUploadGoodsListByPage=(pn,ps)=>{ (async()=>{ const el_btn=document.querySelector(".hy_btn_importALL_goods"); if(el_btn){ el_btn.setAttribute("disabled",true); } const response=await getGoodsListByPage(pn,ps,0); const pageNum=response.pageNum; const pageSize=response.pageSize; const totalPageCount=response.totalPageCount; const totalCount=response.totalCount; const result=response.result; for(let i=0;i<result.length;i++){ const t0=(new Date()).getTime(); const currentNum=(pageNum-1)*pageSize+i+1; const shopSkuId=result[i].shopSkuId; try{ const goods=await getGoodsDetail(shopSkuId); await postGoodsToHYMS(goods); console.log(`已上传商品${shopSkuId}(${currentNum}/${totalCount} at page:${pageNum})`) uploadGoodsSucessNum +=1; }catch(e){ console.error(`提交商品出现错误${shopSkuId}(${currentNum}/${totalCount} at page:${pageNum})`); console.error(result[i]); uploadGoodsFailNum +=1; console.error(e); } msgDisplay(`上传成功${uploadGoodsSucessNum}条失败${uploadGoodsFailNum}条`); const t1=(new Date()).getTime(); if(t1-t0<minReuestInterval){ const sleepSeconds=(minReuestInterval-(t1-t0))/1000; //console.log(`sleep ${sleepSeconds}秒`); await sleep(sleepSeconds); } } if(pageNum<totalPageCount){ doUploadGoodsListByPage(pageNum+1,pageSize); }else{ msgDisplay(`上传成功${uploadGoodsSucessNum}条失败${uploadGoodsFailNum}条 上传结束`); console.log("上传结束"); if(el_btn){ el_btn.removeAttribute("disabled"); } } })(); }; //上传商品响应到HYMS const postApplyGoodsToHYMS=(goods)=>{ return new Promise((resolve,reject)=>{ //console.log(goods); const post_data={ "isagree":1, "sellarea":goods.areaNames||[], "agreeprice":goods.supplierSupplyPrice, "shopSkuId":goods.shopSkuId }; //console.log("post_data="+JSON.stringify(post_data)); const post_headers={ "Content-Type":"application/x-www-form-urlencoded", }; GM_xmlhttpRequest({ url:"http://43.143.136.44/hysm/importapplygoods.asp", method:'POST', data:"param="+JSON.stringify(post_data), headers:post_headers, onload:(event)=>{ try{ const response=JSON.parse(event.responseText); if(response.returncode==0){ resolve(); }else{ reject(response); } }catch(e){ reject(e); } }, onerror:(event)=>{ reject(event); } }); }); } //上传商品到HYMS const postGoodsToHYMS=(goods)=>{ return new Promise((resolve,reject)=>{ //console.log(goods); let goodsimgs = new Array(); let dataapplyItemAnnexRequestVoList = goods.applyItemAnnexRequestVoList||[]; for(let i=0;i<dataapplyItemAnnexRequestVoList.length;i++){ goodsimgs.push(dataapplyItemAnnexRequestVoList[i].annexUrl); } const post_data={ "brandCnName":goods.brandCnName, "brandEnName":goods.brandEnName, "detail":goods.detail, "energySellPrice":goods.energySellPrice, "goodsCode":goods.goodsCode, "goodsName":goods.goodsName, "itemCode":goods.itemCode, "marketPrice":goods.marketPrice, "param":goods.param, "paramJson":goods.paramJson, "shopSkuId":goods.shopSkuId, "shopBaseSkuName":goods.shopBaseSkuName, "sourceSkuUnit":goods.sourceSkuUnit, "taxCode":goods.taxCode, "taxRate":goods.taxRate, "sellPrice":goods.sellPrice, "goodsimgs":goodsimgs||[], }; console.log(JSON.stringify(post_data)); const post_headers={ "Content-Type":"application/x-www-form-urlencoded", }; GM_xmlhttpRequest({ url:"http://43.143.136.44/hysm/importenergynetgoods.asp", method:'POST', data:"param="+JSON.stringify(post_data), headers:post_headers, onload:(event)=>{ try{ const response=JSON.parse(event.responseText); if(response.returncode==0){ resolve(); }else{ reject(response); } }catch(e){ reject(e); } }, onerror:(event)=>{ reject(event); } }); }); } }; /*----------------------------------访问页面到功能入口的路由---------------------------------------------*/ const href=document.location.href; const match=[ { "re":/shop-view\/goods\//, "fn":fn_initNumberOne, }, { "re":/shop-view\/order\/order-list/, "fn":fn_initOrderList, }, ]; const param={}; (href.match(/(?<=[\?\&])([^\?\&]+)/g)||[]).forEach((s)=>{ let p=s.indexOf("="); p=p>=0?p:s.length; const key=s.substring(0,p); const value=s.substring(p+1); if(key){ param[key]=value; } }); for(let i=0;i<match.length;i++){ const m=match[i]; if(m.re.test(href)){ m.fn({param:param}); break; } } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址