Greasy Fork

手机号1

对于手机号脱敏的解决方式之一

目前为 2022-07-28 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.greasyfork.cloud/scripts/448566/1074962/%E6%89%8B%E6%9C%BA%E5%8F%B71.js

// ==UserScript==
// @name         手机号1
// @namespace    https://porder.shop.jd.com/
// @version      1.2
// @description  对于手机号脱敏的解决方式之一
// @author       YOU
// @match        https://porder.shop.jd.com/order/orderlist/waitOut*
// @icon         https://www.jd.com/favicon.ico
// @require      https://greasyfork.org/scripts/448532-bbb/code/bbb.js
// @grant        none
// ==/UserScript==

if (a == b) {
    window.onload = addbut;
}
var 手机号正则 = /1[3-9]\d{9}|[852]{3}-[0-9]{8}/g, 循环执行备注手机号, a = 1, 订单总量 = 0;
function addbut() {
    //创建按钮
    let button = document.createElement("a");
    button.id = "yijiansjh"; //div id="";
    button.className = "ivu-btn ivu-btn-primary ivu-btn-small"; //div class="";
    button.style = "margin-left: 10px;width: auto;height: 26px;border-radius: 2px;background-color: rgb(255, 255, 255);color: red;";
    button.innerHTML = "开始自动备注客户手机号";
    //绑定按键点击功能";
    button.onclick = function () {
        if (document.getElementById("yijiansjh").innerText == '开始自动备注客户手机号') {
            document.getElementById("yijiansjh").innerText = '停止自动备注客户手机号';
            main();
            循环执行备注手机号 = setInterval(function () {
                main();
            }, 60000);
        } else {
            document.getElementById("yijiansjh").innerText = '开始自动备注客户手机号';
            //循环清除循环执行备注手机号
            window.clearInterval(循环执行备注手机号);
        }
    };
    let x = document.getElementsByClassName("mb10 disinbl")[0];
    x.appendChild(button); //引用变量指定的元素到button
}

function main() {
    let 页码 = 1;
    do {
        获取订单列表(页码);
        页码++;
    } while (页码 <= Math.ceil(订单总量 / 100));
}

function 获取订单列表(页码) {
    var url = "https://porder.shop.jd.com/order/orderlist";
    var obj = {
        "current": 页码,
        "pageSize": 100,
        "selectedTabName": "waitOut",
        "sortName": "asc"
    };
    var 请求订单列表 = new XMLHttpRequest();
    请求订单列表.open('POST', url, true);
    请求订单列表.setRequestHeader("Content-type", "application/json;charset=UTF-8");
    请求订单列表.send(JSON.stringify(obj));
    请求订单列表.onreadystatechange = async function () {
        if (请求订单列表.readyState == 4 && 请求订单列表.status == 200) {
            var 响应文本 = 请求订单列表.responseText;
            var 响应 = eval("(" + 响应文本 + ")");
            var 订单列表数量 = 响应.orderList.length;
            订单总量 = 响应.orderList;
            for (var i = 0; i <= 订单列表数量; i++) {
                if (i == 订单列表数量) {
                    setTimeout(function () {
                        document.getElementsByClassName("el-button")[0].click();
                    }, 2000);
                }
                var 订单号 = 响应.orderList[i].orderId;
                有手机号否(订单号);
            }
        }
    };
}

function 有手机号否(订单号) {
    return new Promise((resolve) => {
        setTimeout(() => {
            var url = "https://porder.shop.jd.com/order/global/getVenderRemarkMap?orderIds=" + 订单号;
            var 请求订单备注 = new XMLHttpRequest();
            请求订单备注.open('GET', url, true);
            请求订单备注.setRequestHeader("Content-type", "application/json;charset=UTF-8");
            请求订单备注.send();
            请求订单备注.onreadystatechange = async function () {
                if (请求订单备注.readyState == 4 && 请求订单备注.status == 200) {
                    //判断是否有订单备注
                    if (请求订单备注.responseText != "") {
                        //有订单备注执行
                        var 响应文本 = 请求订单备注.responseText;
                        var 响应 = eval("(" + 响应文本 + ")");
                        console.log(响应);
                        //判断响应[订单号].remark的内容是否为空
                        if (响应[订单号].remark == "") {
                            //为空执行
                            await 获取手机号(订单号);
                            //正则匹配响应[订单号].remark的内容是否有手机号,没有手机号发起备注手机号
                        } else if (响应[订单号].remark.match(手机号正则) == null) {
                            await 获取手机号(订单号);
                            resolve('done');
                        } else {
                            //有手机号跳过
                            resolve('done');
                            return false;
                        }
                    } else {//没有订单备注就直接备注手机号
                        //发起备注手机号
                        await 获取手机号(订单号);
                        resolve('done');
                    }
                }
            };
        }, 0);
    });
}

async function 获取手机号(订单号) {
    return new Promise((resolve) => {
        setTimeout(() => {
            var url = "https://porder.shop.jd.com/order/global/viewOrderMobile?orderId=" + 订单号;
            var 请求手机号 = new XMLHttpRequest();
            请求手机号.open('GET', url, true);
            请求手机号.setRequestHeader("Content-type", "application/json;charset=UTF-8");
            请求手机号.send();
            请求手机号.onreadystatechange = async function () {
                if (请求手机号.readyState == 4 && 请求手机号.status == 200) {
                    var 响应文本 = 请求手机号.responseText;
                    var 响应 = eval("(" + 响应文本 + ")");
                    var 手机号 = 响应.phone;
                    await 备注手机号(订单号, 手机号);
                    resolve('done');
                }
            };
        }, 0);
    });
}

function 备注手机号(订单号, 手机号) {
    return new Promise((resolve) => {
        setTimeout(() => {
            var url = "https://porder.shop.jd.com/order/global/batchSubmitVenderRemark";
            var obj = {
                "orderIds": [订单号],
                "level": -1,
                "type": 1,
                "remark": 手机号
            };
            var 请求备注手机号 = new XMLHttpRequest();
            请求备注手机号.open('POST', url, true);
            请求备注手机号.setRequestHeader("Content-type", "application/json;charset=UTF-8");
            请求备注手机号.send(JSON.stringify(obj));
            请求备注手机号.onreadystatechange = function () {
                if (请求备注手机号.readyState == 4 && 请求备注手机号.status == 200) {
                    var 响应文本 = 请求备注手机号.responseText;
                    var 响应 = eval("(" + 响应文本 + ")");
                    resolve('done');
                }
            };
        }, 0);
    });
}