杭州星柚--星柚综合业务## Chrome浏览器插件 对外系统扩展插件;
// JavaScript source code // ==UserScript== // @name 星柚助手-奈何 // @version 20200403004 // @description 杭州星柚--星柚综合业务## Chrome浏览器插件 对外系统扩展插件; // @description 支持页面元素隐藏等扩展功能,禁止外传; // @description 2020-04-07 新增拼多多营销中心报名记录列表抓取并自动上传 // @author 陈彪 // @home-url http://www.lliuliangjia.com:10000/ // @supportURL http://www.lliuliangjia.com:10000/ // @namespace http://www.lliuliangjia.com:10000/ // @connect www.lliuliangjia.com // @connect 192.168.3.55 // @grant GM_xmlhttpRequest // @grant GM_getResourceText // @grant GM_getValue // @grant GM_setValue // @grant GM_download // @grant GM_addStyle // @grant GM_openInTab // @license MIT // @date 2019-10-01 // @modified 2020-03-28 // @match http://scm.ihzxy.com/* // @match https://mms.pinduoduo.com/* // @match http://www.lliuliangjia.com:10000/* // @match http://192.168.3.55:10000/* // @require https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js // @run-at document-end // @grant unsafeWindow // @grant GM_setClipboard // @namespace undefined // ==/UserScript== (function () { 'use strict'; var window_url = window.location.href; var website_host = window.location.host; // Your code here... var Config = { AjaxAPI: "https://www.lliuliangjia.com:10001/index.ashx", TablePageSize: function () { return 10 }, ContentType: "application/x-www-form-urlencoded; charset=UTF-8" } //http://www.lliuliangjia.com:10000/script/xdate.js var Ajax = { Get: function (data, callback) { var url = Config.AjaxAPI + "?r=1"; //拼接请求的字符串 if (data != null) { $.each(data, function (m, n) { url += "&" + m + "=" + n; }); } GM_xmlhttpRequest({ method: "GET", url: url, headers: { "Content-Type": Config.ContentType }, onload: function (response) { var status = response.status; if (status == 200 || status == '200') { if (callback) { callback(response.responseText); } } else if (status === 4 && status !== 200) { alert("查询失败,请重试 " + status); } } }); }, Post: function (data, callback) { var dataText = ""; if (data != null) { $.each(data, function (m, n) { if (dataText == "") { dataText += m + "=" + JSON.stringify(n); } else { dataText += "&" + m + "=" + JSON.stringify(n); } }); } var url = Config.AjaxAPI; GM_xmlhttpRequest({ method: "POST", url: url, dataType: "json", data: dataText, headers: { "Content-Type": Config.ContentType }, onload: function (response) { var status = response.status; if (status == 200 || status == '200') { if (callback) { callback(response.responseText); } } else if (status === 4 && status !== 200) { alert("查询失败,请重试 " + status); } } }); }, AjaxPost: function (data, callback) { var url = Config.AjaxAPI; $.ajax({ url: url, data: JSON.stringify(data), dataType: "json", "type": "POST", "contentType": Config.ContentType, "success": function (html) { if (callback) { callback(html); } }, error: function (XMLHttpRequest, textStatus, errorThrown) { console.log(errorThrown); } }); } } //BPF解析 var BpfAnalysis = {}; //SCM解析 var ScmAnalysis = {}; //拼多多解析 var PddAnalysis = {}; //工具类 var Tools = {}; //随机排序 Tools.Fn = function (n) { var array = new Array(); for (var i = 0; i < n; i++) { var rnd = Math.floor(Math.random() * (n)); if (Tools.IsIncluded(rnd, array)) { i--; } else { array.push(rnd); } } return array; } Tools.IsIncluded = function (element, array) { for (var i = 0, len = array.length; i < len; i++) { if (array[i] == element) { return true; } } return false; } PddAnalysis.NeedData = []; PddAnalysis.NeedTitleData = []; ScmAnalysis.GenericClassData = null; ScmAnalysis.TempGenericClassData = null; ScmAnalysis.GetGenericClassData = function (callback) { if (window_url.indexOf("scm.ihzxy.com") == -1 || website_host != "scm.ihzxy.com") { return; } //iframe中不再执行,可以跳过自有系统里面的iframe嵌套验证 if (window.top != window.self) { return; } Ajax.Get({ type: "XY.SCM.ChromePlug.GenericClass" }, function (res) { var returnData = JSON.parse(res); if (returnData.ReturnCode == 0) { ScmAnalysis.GenericClassData = returnData.Data; if (callback) { callback(); } } else { alert("星柚数据加载失败,请联系IT"); } }); }; ScmAnalysis.ModifyPage = function () { var li = $(".uf-mutitab").find("li.active"); var tabId = $(li).data("tabid"); var tabName = $($(li).find("lable")[0]).text(); var iframe = document.getElementsByClassName("uf-iframe"); if (iframe.length >= 1) { //绑定iframe的加载完成事件 iframe[iframe.length - 1].onload = function () { ScmAnalysis.BindSpecialContent(tabId); $.each(ScmAnalysis.GenericClassData, function (m, n) { if (n.Name == "SCM标签页") { //1.先找出最外层的SCM相关属性 if (n.ChildList.length > 0) { $.each(n.ChildList, function (x, y) { if (y.Extra1 == tabId) { //2.再找出当前页面的标签 if (y.ChildList.length > 0) { $.each(y.ChildList, function (a, b) { //3.循环处理这个标签页下面的每一种请求 if (b.ChildList.length > 0) { switch (b.Name) { case "隐藏元素": ScmAnalysis.HideElementsByData(b.ChildList, tabId); break; case "提交验证": ScmAnalysis.CheckSubmitByData(b.ChildList, tabId); break; case "默认值": ScmAnalysis.DefaultValueByData(b.ChildList, tabId); break; case "添加样式": ScmAnalysis.AddClassElementsByData(b.ChildList, tabId); case "特殊模块": ScmAnalysis.SpecialElementsByData(b.ChildList, tabId); break; default: break; } } }); } } }); } } }); Msg.hide(_ufTabMask); }; } }; ScmAnalysis.HideElementsByData = function (data, tabId) { var con = $("#uftab-" + tabId).find("iframe").contents(); $.each(data, function (m, n) { con.find("#" + n.Extra1).parents("." + n.Extra2).prev().hide(); con.find("#" + n.Extra1).parents("." + n.Extra2).hide(); }); }; ScmAnalysis.AddClassElementsByData = function (data, tabId) { var con = $("#uftab-" + tabId).find("iframe").contents(); $.each(data, function (m, n) { con.find("#" + n.Name).parents("." + n.Extra1).removeClass(n.Extra1).addClass(n.Extra2); }); }; ScmAnalysis.DefaultValueByData = function (data, tabId) { var con = $("#uftab-" + tabId).find("iframe").contents(); $.each(data, function (m, n) { con.find("#" + n.Extra1).val(n.Extra2); }); }; ScmAnalysis.CheckSubmitByData = function (data, tabId) { var con = $("#uftab-" + tabId).find("iframe").contents(); $.each(data, function (m, n) { var btn = con.find("[data-amid='" + n.Extra1 + "']")[0]; var fn = btn.onclick; if (fn) { btn.onclick = function () { if (con.find("#" + n.Extra2).val() == null || con.find("#" + n.Extra2).val() == "") { alert("【星柚验证】请填写 " + n.Name); return; } else { fn(); } } } }); }; ScmAnalysis.SpecialElementsByData = function (data, tabId) { $.each(data, function (m, n) { switch (n.Name) { case "标题热搜": ScmAnalysis.BindSpecialContent(n.ChildList, tabId); break; default: break; } }); }; ScmAnalysis.BindSpecialContent = function (data, tabId) { var con = $("#uftab-" + tabId).find("iframe").contents(); switch (tabId) { case "modifySampleClothing": var titleHtml = ""; titleHtml += '<div class="form-group basicGroup">'; titleHtml += '<label class="control-label col-sm-2 lbnlp">热搜标题<br><a style="color:Red;cursor:pointer;" class="xy_specialGetHotWord" data-tabId="' + tabId + '" >点击获取热搜词</a></label>'; titleHtml += '<div class="col-sm-10" id="xy_specialGetHotWordDiv">'; titleHtml += '</div>'; titleHtml += '</div>'; ScmAnalysis.TempGenericClassData = data; con.find("#SmName").parents(".form-group").before(titleHtml); con.find(".xy_specialGetHotWord").on("click", ScmAnalysis.SpecialGetHotWordClick); break; case "modifyProduct": var titleHtml = ""; titleHtml += '<div class="form-group basicGroup">'; titleHtml += '<label class="control-label col-sm-2 lbnlp">热搜标题<br><a style="color:Red;cursor:pointer;" class="xy_specialGetHotWord" data-tabId="' + tabId + '" >点击获取热搜词</a></label>'; titleHtml += '<div class="col-sm-10" id="xy_specialGetHotWordDiv">'; titleHtml += '</div>'; titleHtml += '</div>'; ScmAnalysis.TempGenericClassData = data; con.find("#Name").parents(".form-group").before(titleHtml); con.find(".xy_specialGetHotWord").on("click", ScmAnalysis.SpecialGetHotWordClick); break; default: break; } }; ScmAnalysis.SpecialGetHotWordClick = function () { var tabId = $(this).attr("data-tabId"); var con = $("#uftab-" + tabId).find("iframe").contents(); var ctgId = con.find("#CtgId").val(); var seasonId = con.find("#SeasonId").val(); var titleHtml = ""; if (ctgId == "" || ctgId == null || seasonId == "" || seasonId == null) { alert("请先选择分类和季节"); return; } var tempData = new Array(); $.each(ScmAnalysis.TempGenericClassData, function (m, n) { if (n.Extra1.toUpperCase() == ctgId.toUpperCase() && n.Extra3.toUpperCase() == seasonId.toUpperCase()) { tempData.push(n); } }); if (tempData.length >= 10) { for (var i = 0; i < 10; i++) { var n = tempData[i]; titleHtml += '<button class="xy_specialBtn" data-btntype="pdttitle" data-tabId="' + tabId + '" data-btnvalue="' + n.Name + '" style="margin:2px;" type="button" class="btn btn-default btn-xs">' + (i + 1) + "." + n.Name + '</button>'; } //10后面的随机排序,每次都不一样 var number = Tools.Fn(tempData.length - 10); for (var i = 0; i < number.length; i++) { var n = tempData[number[i] + 10]; titleHtml += '<button class="xy_specialBtn" data-btntype="pdttitle" data-tabId="' + tabId + '" data-btnvalue="' + n.Name + '" style="margin:2px;" type="button" class="btn btn-default btn-xs">' + (number[i] + 10) + "." + n.Name + '</button>'; } } con.find("#xy_specialGetHotWordDiv").empty(); con.find("#xy_specialGetHotWordDiv").append(titleHtml); con.find(".xy_specialBtn").on("click", ScmAnalysis.SpecialBtnClick); }; ScmAnalysis.SpecialBtnClick = function () { var type = $(this).attr("data-btntype"); var value = $(this).attr("data-btnvalue"); var tabId = $(this).attr("data-tabId"); var con = $("#uftab-" + tabId).find("iframe").contents(); switch (tabId) { case "modifySampleClothing": switch (type) { case "pdttitle": var lastVal = con.find("#SmName").val(); con.find("#SmName").val(lastVal + value); con.find("#NameCount").text((lastVal + value).length); break; default: break; } break; case "modifyProduct": switch (type) { case "pdttitle": var lastVal = con.find("#Name").val(); con.find("#Name").val(lastVal + value); con.find("#NameCount").text((lastVal + value).length); break; default: break; } break; default: break; } }; PddAnalysis.GetGoodsListClick = function () { if (confirm("点击 确定 开始处理数据,系统提示处理完成之前请勿关闭该页面,否则会造成数据缺失!")) { $("#xy_getGoodsList").attr("disabled", "disabled"); $("#xy_getGoodsList").text("处理中。。"); $("#xy_getGoodsList").css("background-color", "#dedccc"); $("#xy_getGoodsList").css("border", "1px solid red"); Config.AjaxAPI = "https://mms.pinduoduo.com/vodka/v2/mms/query/display/mall/goodsList"; Config.ContentType = "application/json; charset=utf-8"; //先根据第一页第一条获取出来总数据条数 var data = { "page": 1, "size": 1, "is_onsale": 1, "sold_out": 0 }; var total = 0; Ajax.AjaxPost(data, function (res) { var pageSize = 100; total = res.r###lt.total; console.log(total); var pageCount = Math.ceil(total / pageSize); //获取出来总条数之后再分页去获取每页的编号,货号,3个价格,累计销量,30日销量 PddAnalysis.GetGoodsListData(1, pageSize, pageCount, total); }); } }; PddAnalysis.GetGoodsListData = function (pageNo, pageSize, sumPage, total) { var shopName = $($(".user-name").find(".name")[0]).text(); var shopId = $($(".user-name").find(".id")[0]).text(); $("#xy_getGoodsList").text("处理:" + pageNo + "/" + sumPage); // if (pageNo == sumPage) { // pageSize = total - ((pageNo - 1) * pageSize); // } Config.AjaxAPI = "https://mms.pinduoduo.com/vodka/v2/mms/query/display/mall/goodsList"; Config.ContentType = "application/json; charset=utf-8"; var data = { "page": pageNo, "size": pageSize, "is_onsale": 1, "sold_out": 0 }; Ajax.AjaxPost(data, function (r) { $.each(r.r###lt.goods_list, function (m, n) { var sku_group_price = 0; var sku_price = 0; var origin_sku_group_price = 0; if (n.sku_group_price.length > 1) { sku_group_price = n.sku_group_price[0]; } if (n.sku_price.length > 1) { sku_price = n.sku_price[0]; } if (n.origin_sku_group_price.length > 1) { origin_sku_group_price = n.origin_sku_group_price[0]; } PddAnalysis.NeedData.push({ "shopName": shopName, "shopId": shopId, "id": n.id, "out_goods_sn": n.out_goods_sn, "sku_group_price": sku_group_price, "sku_price": sku_price, "origin_sku_group_price": origin_sku_group_price, "sold_quantity": n.sold_quantity, "sold_quantity_for_thirty_days": n.sold_quantity_for_thirty_days, "quantity": n.quantity, "is_onsale": n.is_onsale, "fav_cnt": n.fav_cnt, "goods_name": "", "created_at": n.created_at }); PddAnalysis.NeedTitleData.push({ "shopId": shopId, "id": n.id, "goods_name": n.goods_name }); }); if (pageNo < sumPage) { PddAnalysis.GetGoodsListData(pageNo + 1, pageSize, sumPage, total); } if (pageNo == sumPage) { $("#xy_getGoodsList").text("上传数据中..."); PddAnalysis.SubmitGoodsList(); } //console.log(needData); }); }; PddAnalysis.SubmitGoodsList = function () { //获取的数据POST到系统,再插入数据库 Config.AjaxAPI = "http://www.lliuliangjia.com:10000/index.ashx?type=XY.SCM.ChromePlug.AddPddGoodsList"; Config.ContentType = "application/x-www-form-urlencoded; charset=UTF-8" Ajax.Post({ "data": PddAnalysis.NeedData }, function (res) { //console.log(res); var rst = JSON.parse(res); if (rst.ReturnCode == 0) { $("#xy_getGoodsList").removeAttr("disabled"); $("#xy_getGoodsList").text("BPF"); $("#xy_getGoodsList").css("background-color", "#e5d64f"); $("#xy_getGoodsList").css("border", "none"); alert("数据处理完成!请登录星柚系统查看"); //$("#xy_getGoodsList").text("更新标题"); //PddAnalysis.SubmitGoodsTitleList(); } else { alert("系统错误,请联系开发!" + rst.ReturnMsg); } }); }; PddAnalysis.SubmitGoodsTitleList = function () { //获取的数据POST到系统,再插入数据库 Config.AjaxAPI = "http://www.lliuliangjia.com:10000/index.ashx?type=XY.SCM.ChromePlug.UpdatePddGoodsTitleList"; Config.ContentType = "application/x-www-form-urlencoded; charset=UTF-8" Ajax.Post({ "data": PddAnalysis.NeedTitleData }, function (res) { //console.log(res); var rst = JSON.parse(res); if (rst.ReturnCode == 0) { $("#xy_getGoodsList").removeAttr("disabled"); $("#xy_getGoodsList").text("BPF"); $("#xy_getGoodsList").css("background-color", "#e5d64f"); $("#xy_getGoodsList").css("border", "none"); alert("数据处理完成!请登录星柚系统查看"); } else { alert("系统错误,请联系开发!" + rst.ReturnMsg); } }); }; PddAnalysis.GetMmsChaClick = function () { //var now = new XDate().toString("yyyy-MM-dd"); //var lastMonthFirstDay = new XDate(now).addMonths(-1).setDate(1).toString("yyyy-MM-dd"); //var lastMonthFinalDay = new XDate(now).setDate(1).addDays(-1).toString("yyyy-MM-dd"); //var nowMonthFirstDay = new XDate(now).setDate(1).toString("yyyy-MM-dd"); //var nowMonthSub2Day = new XDate(now).addDays(-3).toString("yyyy-MM-dd"); //var nowMonthNowDay = new XDate(now).addDays(-1).toString("yyyy-MM-dd"); //var mode = prompt("请在下方输入数据下载模式!\n1.上个月全月数据(" + lastMonthFirstDay + "~" + lastMonthFinalDay + ")\n2.当月数据-2天前(" + nowMonthFirstDay + "~" + nowMonthSub2Day + ")\n3.当月数据(" + nowMonthFirstDay + "~" + nowMonthNowDay + ")", "") //if (mode != null && mode != "") { // alert(new XDate()); // //$("#xy_getMmsChat").attr("disabled", "disabled"); // //$("#xy_getMmsChat").text("处理中。。"); // //$("#xy_getMmsChat").css("background-color", "#dedccc"); // //$("#xy_getMmsChat").css("border", "1px solid red"); // //Config.AjaxAPI = "https://mms.pinduoduo.com/chats/csReportDetail?starttime=1585065600&endtime=1585065600"; // //Config.ContentType = "application/json; charset=utf-8"; // //这个请求现在是不用分页的 // //var data = { "page": 1, "size": 1, "is_onsale": 1, "sold_out": 0 }; // //var total = 0; // //Ajax.AjaxPost(data, function (res) { // // var pageSize = 100; // // total = res.r###lt.total; // // console.log(total); // // var pageCount = Math.ceil(total / pageSize); // // //获取出来总条数之后再分页去获取每页的编号,货号,3个价格,累计销量,30日销量 // // PddAnalysis.GetGoodsListData(1, pageSize, pageCount, total); // //}); //} }; ScmAnalysis.init = function () { ScmAnalysis.GetGenericClassData(function () { //监听顶部菜单栏的增加事件,减少不触发 $(".ufxbox").bind("DOMNodeInserted", ScmAnalysis.ModifyPage); }); }; BpfAnalysis.init = function () { if (window_url.indexOf("www.lliuliangjia.com") == -1 && website_host != "www.lliuliangjia.com" && window_url.indexOf("192.168.3.55") == -1 && website_host != "192.168.3.55") { return; } if (window.top != window.self) { return; } $(".brand-logo").append("<span class='hide' id='ChromePlug'>1</span>"); }; PddAnalysis.init = function () { if (window_url.indexOf("mms.pinduoduo.com/goods/goods_list") == -1 && window_url.indexOf("mms.pinduoduo.com/mms-chat/overview/merchant") == -1 && window_url.indexOf("mms.pinduoduo.com/act/register_record") == -1) { return; } //iframe中不再执行,可以跳过自有系统里面的iframe嵌套验证 if (window.top != window.self) { return; } if (window_url.indexOf("mms.pinduoduo.com/goods/goods_list") != -1) { $("#root").bind("DOMNodeInserted", function () { if ($("#XyDiv").html() != null) { $("#root").unbind(); } else { var html = '<div id="XyDiv"><div class="" style="margin-left:15px;"><div class="Badge_container_290"><a><button id="xy_getGoodsList" data-testid="beast-core-button" class="BTN_outerWrapper_290 BTN_gray_290 BTN_medium_290 BTN_outerWrapperBtn_290" type="button" style="background-color: #e5d64f;"><span>BPF</span></button></a></div></div></div>'; $(".batch-set-size-container").after(html); var con = $("#root").contents(); con.find("#xy_getGoodsList").on("click", PddAnalysis.GetGoodsListClick); } }); } if (window_url.indexOf("mms.pinduoduo.com/mms-chat/overview/merchant") != -1) { $("#root").bind("DOMNodeInserted", function () { if ($("#XyDiv").html() != null) { $("#root").unbind(); } else { var html = '<div id="XyDiv"><a id="xy_getMmsChat" style="margin-left: 20px;background-color: #e5d64f; width: 91px;height: 28px;text-align: center;line-height: 28px;border-radius: 3px;border: 1px solid #19e;font-size: 14px;cursor: pointer;color: black;display: block;" class="">BPF</a> </div>'; $(".pdd-btn-download").before(html); var con = $("#root").contents(); con.find("#xy_getMmsChat").on("click", PddAnalysis.GetMmsChaClick); } }); } if (window_url.indexOf("mms.pinduoduo.com/act/register_record") != -1) { $("#root").bind("DOMNodeInserted", function () { if ($("#XyDiv").html() != null) { $("#root").unbind(); } else { var html = '<div id="XyDiv"><a id="xy_getRegisterRecord" style="margin-left: 20px;background-color: #e5d64f; width: 91px;height: 28px;text-align: center;line-height: 28px;border-radius: 3px;border: 1px solid #19e;font-size: 14px;cursor: pointer;color: black;display: block;" class="">BPF</a> </div>'; $(".pdd-btn-download").before(html); var con = $("#root").contents(); con.find("#xy_getRegisterRecord").on("click", PddAnalysis.GetMmsChaClick); } }); } }; //SCM部分初始化执行 ScmAnalysis.init(); //BPF部分初始化执行 BpfAnalysis.init(); //拼多多部分初始化执行 PddAnalysis.init(); })();