js set去重对象_用120行JS代码,实现多条件数据去重合并(附源码)

上周接到一个CRM的项目,要求做客户去重

具体是一个客户包含男方联系信息和女方联系信息,联系信息字段为:姓名、性别、年龄、电话1、电话2、微信1、微信2。要求录入客户时,如果电话或者微信已存在于系统,则将录入的数据合并到现有的客户当中,合并规则:现有客户已存在数据的字段不变,仅合并新录入的字段数据

老规矩我们还是在白码低代码开发平台上做。

实现过程如下:

1、数据表设计

611983bd03da52ef3a0e07bec92f03dd.png
c8b73c2c65a2040ce18be81c1e7c6b62.png

2、功能实现

2.1 填写-基础资料

494f2e3a91673121b2e5a05b366a7902.png
e94c2d8f4899d0664541fcf2060748c5.png

2.2 填写-男方女方联系资料

此处先使用“交互-输入”步骤记录填写的数据,待去重判断完毕后再做处理。

6b98ea6c297dbf2312cb5ee900d702c8.png
b29bb1d2bb14c0b7b37ad3608615d391.png

3、去重处理

1)获取填写的电话和微信,据此在数据库中查询“客户联系资料”表,得到linkList。

代码:

   let man = await $model.getValue("5fae403073276c5e9b02ec3c");//交互输入的男方    let woman = await $model.getValue("5fae403073276c5e9b02ec3d");//交互输入的女方    let customer = await $params.customer;//填写客户基础资料    let phoneList = [];//填写的电话    let phone1 = man["field_1605181125961"];//男电话1    if (phone1) phoneList.push(phone1);    let phone2 = man["field_1605181149276"];//男电话2    if (phone2) phoneList.push(phone2);    let phone3 = woman["field_1605181195092"];//女电话1    if (phone3) phoneList.push(phone3);    let phone4 = woman["field_1605181195341"];//女电话2if (phone4) phoneList.push(phone4);    let wxList = [];//填写的微信    let wx1 = man["field_1605181124563"];//男微信1    if (wx1) phoneList.push(wx1);    let wx2 = man["field_1605181125184"];//男微信2    if (wx2) phoneList.push(wx2);    let wx3 = woman["field_1605181194364"];//女微信1    if (wx3) phoneList.push(wx3);    let wx4 = woman["field_1605181194697"];//女微信2if (wx4) phoneList.push(wx4);    //根据填写的电话微信查询联系人资料    let linkList = await $plugin.data.queryData("5fae403073276c5e9b02eba7", {        $or: [            { "5fae403073276c5e9b02ebe6": phoneList },//电话1            { "5fae403073276c5e9b02ebe7": phoneList },//电话2            { "5fae403073276c5e9b02ebe4": wxList },//微信1            { "5fae403073276c5e9b02ebe5": wxList }//微信2        ]    });

2)若linkList长度大于0,表示已存在客户,进行客户基础资料、男方、女方联系数据合并,并弹出合并提示。

代码:

 if (linkList.length > 0) {        //合并客户基本资料        let repeatCustDetail = await $plugin.data.getData("5fae403073276c5e9b02eba6", linkList[0]["5fae403073276c5e9b02ebe9"]);//根据查到的重复联系资料,获取客户基本资料        await $plugin.data.updateData("5fae403073276c5e9b02eba6", repeatCustDetail._id, {            //原字段存在值则保持不变            "5fae403073276c5e9b02ebd6": repeatCustDetail["5fae403073276c5e9b02ebd6"] || customer["5fae403073276c5e9b02ebd6"], //咨询内容            "5fae403073276c5e9b02ebd7": repeatCustDetail["5fae403073276c5e9b02ebd7"] || customer["5fae403073276c5e9b02ebd7"],//客户类型            "5fae403073276c5e9b02ebd8": repeatCustDetail["5fae403073276c5e9b02ebd8"] || customer["5fae403073276c5e9b02ebd8"],//客户需求            "5fae403073276c5e9b02ebd9": repeatCustDetail["5fae403073276c5e9b02ebd9"] || customer["5fae403073276c5e9b02ebd9"],//所属项目            "5fae403073276c5e9b02ebde": repeatCustDetail["5fae403073276c5e9b02ebde"] || customer["5fae403073276c5e9b02ebde"],//备注        });        //合并男方资料        let repeatMan = await $plugin.data.getData("5fae403073276c5e9b02eba7", repeatCustDetail["5fae403073276c5e9b02ebd4"]);        let manName = repeatMan["5fae403073276c5e9b02ebe1"] || man["field_1605181119810"];        let manAge = repeatMan["5fae403073276c5e9b02ebe3"] != 0 ? repeatMan["5fae403073276c5e9b02ebe3"] : man["field_1605181120513"];        await $plugin.data.updateData("5fae403073276c5e9b02eba7", repeatMan._id, {            //原字段存在值则保持不变            "5fae403073276c5e9b02ebe1": manName,//姓名            "5fae403073276c5e9b02ebe3": manAge || 0,//年龄            "5fae403073276c5e9b02ebe4": repeatMan["5fae403073276c5e9b02ebe4"] || wx1,//w1            "5fae403073276c5e9b02ebe5": repeatMan["5fae403073276c5e9b02ebe5"] || wx2,//w2            "5fae403073276c5e9b02ebe6": repeatMan["5fae403073276c5e9b02ebe6"] || phone1,//p1            "5fae403073276c5e9b02ebe7": repeatMan["5fae403073276c5e9b02ebe7"] || phone2,//p2        });        //合并女方资料        let repeatWoman = await $plugin.data.getData("5fae403073276c5e9b02eba7", repeatCustDetail["5fae403073276c5e9b02ebd5"]);        let womanName = repeatWoman["5fae403073276c5e9b02ebe1"] || woman["field_1605181191670"];        let womanAge = repeatWoman["5fae403073276c5e9b02ebe3"] != 0 ? repeatWoman["5fae403073276c5e9b02ebe3"] : woman["field_1605181192156"];        await $plugin.data.updateData("5fae403073276c5e9b02eba7", repeatWoman._id, {            //原字段存在值则保持不变            "5fae403073276c5e9b02ebe1": womanName,//姓名            "5fae403073276c5e9b02ebe3": womanAge || 0,//年龄            "5fae403073276c5e9b02ebe4": repeatWoman["5fae403073276c5e9b02ebe4"] || wx3,//w1            "5fae403073276c5e9b02ebe5": repeatWoman["5fae403073276c5e9b02ebe5"] || wx4,//w2            "5fae403073276c5e9b02ebe6": repeatWoman["5fae403073276c5e9b02ebe6"] || phone3,//p1            "5fae403073276c5e9b02ebe7": repeatWoman["5fae403073276c5e9b02ebe7"] || phone4,//p2        });        //删除新建的客户基础资料        await $plugin.data.removeData("5fae403073276c5e9b02eba6", customer._id);        //调用功能:提示        await $model.command("program", {            flow: "5fae403073276c5e9b02ec2f",            data: {                "5fae403073276c5e9b02ec3f": {                    "field_1605239257122": "去重提示",                    "field_1605241201785": "所填号码或微信已存在,填写数据已合并到序号为【" + repeatCustDetail["5fae403073276c5e9b02ebcf"] + "】的客户中。"                }            }        });    }

3)若linkList长度为0,表示可以创建新客户,将“交互输入”的联系资料保存。

代码:

        //新客户------------------------------------------------------------------        //创建男方        await $plugin.data.saveData("5fae403073276c5e9b02eba7", {            "5fae403073276c5e9b02ebe1": man["field_1605181119810"],//姓名            "5fae403073276c5e9b02ebe2": "男",//性别            "5fae403073276c5e9b02ebe3": man["field_1605181120513"] || 0,//年龄            "5fae403073276c5e9b02ebe4": wx1,//w1            "5fae403073276c5e9b02ebe5": wx2,//w2            "5fae403073276c5e9b02ebe6": phone1,//p1            "5fae403073276c5e9b02ebe7": phone2,//p2            "5fae403073276c5e9b02ebe9": customer._id//客戶基本信息        });        //创建女方        await $plugin.data.saveData("5fae403073276c5e9b02eba7", {            "5fae403073276c5e9b02ebe1": woman["field_1605181191670"],//姓名            "5fae403073276c5e9b02ebe2": "女",//性别            "5fae403073276c5e9b02ebe3": woman["field_1605181192156"] || 0,//年龄            "5fae403073276c5e9b02ebe4": wx3,//w1            "5fae403073276c5e9b02ebe5": wx4,//w2            "5fae403073276c5e9b02ebe6": phone3,//p1            "5fae403073276c5e9b02ebe7": phone4,//p2            "5fae403073276c5e9b02ebe9": customer._id//客戶基本信息        });

4、运行效果

4.1录入新客户

92fd25a6b67b1b36a96dba622285503c.gif

4.2客户去重

88ded1af4ab98e7a2ab6dd9d3bd7cd39.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值