大数据获客系统及源码5

209 阅读1分钟

今天给大家讲讲地图获客,通过关键词搜索出高德,百度,腾讯三大地图店铺对应的信息;

image.png 这里我们可以看到对应城市的关键词信息,高德的比较全面,只要对应商家又在高德上认领自己的门店信息都可以爬取出来。爬取下来的信息会保留在我们的采集客户库里,有对应的信息

image.png

image.png `

<div class="card shadow mb-4">
    <div class="card-header py-3">
        <h6 class="m-0 font-weight-bold text-primary">地图任务列表</h6>
    </div>
    <div class="card-body">
        <!--
        <div class="tongji">
            <div class="tj-item">
                <div class="tt">总监控数</div>
                <a href="/dydqtshoppc/scane/accountMonitorList" style="text-decoration:none;">
                    <div class="count" style="color: rgb(37, 122, 228);"><{$count_data['account_count']}></div>
                </a>
                <p class="zt-tj">
                    <a href="/dydqtshoppc/scane/accountMonitorList?status=open" style="text-decoration:none;">
                        <img data-v-0f121300="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAEP0lEQVRo3u1YSWwbZRROASGVFolWXFBZJISgEheQeuPUQw9cempUxyRO0jYkKU2zNI3X1lMnUaQggbghQIKKC6JHhKg7ju06sR3b41VYleDSSoBQObheZjzj8czj/bNl7PTCAduR5kmfvu8tY79n/zPzzwwNWWaZZZZZZtn/ZFAIvAultQ0or7938JoH6hkorBWguAYIGfEDlDfeOjgDlAJ20rxcWgW5uKqzCKXVL4FZf2XgB5BLgbJcDAAuI/wHCJMBAiCrPieVAhuQp14a2AGkAvW9XLgFUv4WEJZ11rSk6gqyExKfHR7MZZSjzkp56lcp78emKYQfB6IUyAr7dfyJg0xDhHpuIE/mdu6GQ8r5H7ZzN0HSkdeQ68Bv7ezN8wBDh/p04rqOtXPeu23GdxuKvnc6cmXqeSnvm29nbzyWsj7AoQC1woqvxaScjwy21pcBxKxvs814QYOI+AqK/le7BjkqZT1+zNWUuqxRD7ov5rxf9OGm5T0hMh5OzHignXGDyLiRUTNujLk2IUEd76hnrr0sZtyfY72AbByDmgXG0/vLbCvt+rqVcWEDBE4NqlbjzgrCA8XlI52DOF9vp13fimmnpB7jXu958wLjPtlKrYit9Aogg2hiQ6dUFtIrf7XS12fJOWH+DD619Dbmx4GhXuj92k8t32mlloFAINhV0epGqgO/Y62dXKX6eplspRZPCcklWdhdgqciqXIrqelkd+5avrm7dLpvA/DxhXtCYgH4pApFa76QXFR8QYlrWq816+SCANuzx3rf/O78GT4xD3z8KjZ0VWUDGCe5hMmPz5u0doyKB/Dj8LM9vsMOHWruzGWaO1cAGZrxK8AT7gKPeT5OanSQ2jlF83E1z8XnzvX81+dil881ty9Dc/uTfeAIdvY0qeM6alHvGDrT860D2XThFz/gYjPQjM1icwjUnKH30FRqZoAzeK+micxHp8/0/NdnozNT3P1p2IeYyqwJT6tTcjGCGbr3W4bE4mE2OvUHe38K2OjHCOR92hRD5rpzKmQ2Mn2q92s/fPEDNnIJGpGL2AThS8DqOopM/Kgaa0RMea2GjRr6Tn+2zLj+G+HJR43wBWwOEdaAmo1oMQWTRo4114WVuFiLTJzs282rsTW5XFcamYDG1gQQXSe8pfqYN3JqXo0pdUSHJ77p6/bhn50LL9ZD4xUENq3DoXBD90kupMccYNSGHBy35TjR90fFGu34tEaPQZ12QC1EeExpmGgSV2PoI+q6j2iERjcH4lmXC9peq9OjQo0ehf+AJ9W7w8cH5oG9FrTfrtEfAUGV8D0TaLsWsxuxOj3iHag3DhXa9n41aJer2CQy4EDII1BVmia+rkcIyn8Hx44M3GuTatD2k9J00KY2HxxpoGYQ3+EA16vB8x9Wfra/MbBv4B5Hho9io+O1X2xnn4TsbwLV5ycsyyyzzDLLLDtI9i9Asm92VQxmDQAAAABJRU5ErkJggg==" width="20px" alt="" class="iconImg">
                        开启中 <{$count_data['open_account_count']}>
                    </a>
                </p>
            </div>
            <div class="tj-item">
                <div class="tt">询盘线索</div>
                <a href="/dydqtshoppc/scane/pinglunList?task=4" style="text-decoration:none;">
                    <div class="count" style="color: rgb(21, 197, 174);"><{$count_data['account_pinglun_count']}></div>
                </a>
                <p class="zt-tj">
                    <a href="/dydqtshoppc/scane/pinglunList?task=4&isdeal=no" style="text-decoration:none;">
                        <img data-v-0f121300="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAABvFBMVEUAAAAA//8cxqoew60axrAZwasawaos074r1L4r1b8q1cAawa0bwawbwq4exrIbxa4dx7Ecxa8cxa8bxK8r1b0p1L8r1b8exrIex7EZwqsdxq8dxrAZwasawawp1L4awq0r070r1L8r1MAbw60bw64fx7IfyLIZwasZwqwZwq0awawawqwawq0bwq0bwq4bw60bw64bxK4bxa8cw64cxK4cxK8cxa8cxbAdxa8dxbAdxrAdxrEexrAexrEexrIex7Eex7IeyLIeyLMfx7Efx7Ifx7MfyLIfyLMfybMgyLMgybMgybQgyrQhybMhybQhyrMhyrQhyrUhy7UiyrQiyrUiy7Qiy7Uiy7YizLUizLYizLcjy7YjzLYjzLcjzbYjzbcjzrcjzrgkzbckzbgkzrckzrgkzrklzrglzrklz7glz7klz7omz7kmz7om0Lkm0Lom0Lsnz7sn0Lon0Lsn0bsn0bwn0rso0bso0bwo0rso0rwo0r0o07wo070o074p0rwp0r0p070p074p1L0p1L4p1L8p1b8q070q074q1L0q1L4q1L8q1b4q1b8q1cAr1L4r1L8r1b4r1b////8JvWTzAAAAJ3RSTlMAAQkiOkZOUlNUVVdfaHBycn+AgtLU1N7e4PT0+Pr7/Pz8/P7+/v7a56i9AAABzUlEQVQYGe3BOY5VSRCG0S9yqBKgwm/1KhqDVWGxABw2wJJYAFtASBgI0WKu4d7MjPjBeUHxmjJawsCoc7h16zcxfrhzdu9Rn3322ReiL/VJ59n5+SXJSKdPqww6XiQ3vusDFfr2ZOOgkc4GJ5iuON0pbZwK2zW745xtHBTS3fARV0SLOFl739h2v+pjG/g9UiU9hiltdW1lsWuOwgxfNsd68JyDRhqGVuDTGDoZqjsml6PipEYaxVztb372ZqJSSY00q8HiyARFkBpJi2jrlXPExDWNNE11SGFmeA0jMDOvhBVSIy0sVBagsFVUQ6YiV/VCaiSXoRoyBObsPSSj+rIgNdJVF5oP+dmLaWEiNZKrLP5jSCUKqZEmAp6jOFmiEm32KTOKOamRlvdJ32pZqy0bpggFFAWT1EhTge02SpSdqMFuUZBUEamS7D7DtOOsgN2cYRES4a/ec9BIXycR3d1kUYjAFKKNKj6TGulygk9DBXkNp0glPNy0kyppnF+e4RDBKhNHCrTMX7/9RDKuKQb2DyiqvfzEgYIfGtcE3y0Z5eO/n/m1xjHJ7cu7r9ygcWyaX74/5yaNY/KLDxfcqHHML94N/o+/Orf+fN8A16YvOMKGKrgAAAAASUVORK5CYII=" width="20px" alt="" class="iconImg">
                        未处理 <{$count_data['account_nopinglun_count']}>
                    </a>
                </p>
            </div>
            <div class="tj-item">
                <div class="tt">行业商机</div>
                <a href="/dydqtshoppc/scane/userList?task=6" style="text-decoration:none;">
                    <div class="count" style="color: rgb(244, 187, 87);"><{$count_data['account_user_count']}></div>
                </a>
                <p class="zt-tj">
                    <a href="/dydqtshoppc/scane/userList?task=6&isdeal=no" style="text-decoration:none;">
                        <img data-v-0f121300="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAACNFBMVEUAAAAA//8A/4AAv79Av78r1aogv58cxqocxsYazLMu0bkn2MQgv68r1bgbyK0pzr0axLEq1b4Zv6wfxrAs070lzrkgybQiy7cbxa0n0boZwqwo1LwYwKsr1b8dx7EfyLEkzrgm0Lsbw60ZwawYwasp1L0n0rwq1b8aw6wp1L0cxa8n0LohybQbxK0hy7Yn1Lwawaop1L4Zwa0q1L4fx7EZwKolzrgr1b8cxK4Zwasawq0n0bsp070r1b8awqwhyrUp074hy7YdxrAn0LobxK0o0rwZwKsfx7IZwqskzrgp074q1MAgyLMjzbcYwasZwasZwawZwqwawawawqwawq0aw60aw64bw60bw64bxK0bxK4bxK8cw60cxK4cxK8cxLAcxa8dxa8dxbAdxrAdxrEdx7Adx7EexbAexrAexrEex7Aex7Eex7IeyLIfx7IfyLEfyLIfyLMgyLIgyLMgybIgybMgybQgyrQhybMhyrQhyrUhy7Uiy7Uiy7YizLYjy7YjzLYjzLcjzbcjzbgkzLgkzbckzbgkzrckzrgkzrkkz7klzbglzrglzrklz7glz7klz7ol0Lkl0Lomz7kmz7om0Lom0Lsm0bon0Lon0bsn0bwn0rsn0rwo0bso0bwo0rso0rwo0r0o070p0rwp0r0p070p1L4q074q1L4q1L8q1b5B0L5C0b9D0b5E1MJE1cJF1cK37ea37ue47ue47+i57+jx/Prz/Pv0/Pv1/fv1/fz///8EPVixAAAATnRSTlMAAQIEBAYICQkKCw0QEhwfJys0Ojo+R0pLTlxfamxyc3d4g4SIiImLlJqssri9v8LHy8zQ0dTV2N3h4eHh5Ofr6+zz9fn6+/z9/f39/v4qPR/oAAAB3klEQVRIx+3Vz2oTURQG8O/cmaSC0iykcecfEJGiQheidJGFCC70hcRHEHwJH8NdN7oVUaRV25j+sWlSU0li5t5zzueiFZLqNHErObuZuT++w507Z4B5/R8l//T83JX6Ymd3T2cF5288dQifNzvlIBu/uPrMQHC1mxdxJrC8EswFuNPYS/1ZWnpJEQOEyOzF1+/TE54gwc3FGe1uL/+ZpoHH7uakm5NYXm1rf1qCkjAXc3en3240Y3EmeKTBqaIKEaSMdu8IAz8DPJRkMTjBVDiVZtfud+OwHDwwJZNev7RUX1o8jKbB5WbSXiloEGp+a6EaQia1XUo08nI6GoytyceBuwNZXgGAijOJZ4qw0twvA0ZxsZPQqgKigiQXUQYUEP/97mnCk+ByIAAlHd+LpFMgZLccUDJDzCsAUkyES67caI+vCZMtMXpaGwzNhoM1MwVH/uFduzxBEeB8lac8LcCFSPnrzYmOJkEExKsjGiI0CYDNTzuGcmCAsDjeJ4MwvNn+cfrwnQKOjI4MhFDWt779ebwnQBKGoqKiAmHny06BKYA0CYUIaPKx1Zv+idYu0EA6/eDt59Hfh8BEwn5dYAIrtrb7M42ZUV4Dna33rTjbINPDyHCwvjGc/2LmhV+m0h6Dzg4b3wAAAABJRU5ErkJggg==" width="20px" alt="" class="iconImg">
                        未处理 <{$count_data['account_nouser_count']}>
                    </a>
                </p>
            </div>
            <div class="tj-item">
                <div class="tt">监控视频</div>
                <a href="/dydqtshoppc/scane/videoList?task=4" style="text-decoration:none;">
                    <div class="count" style="color: rgb(255, 150, 150);"><{$count_data['account_video_count']}></div>
                </a>
            </div>
            <div class="tj-item">
                <div class="tt">开启中粉丝检索</div>
                <a href="/dydqtshoppc/scane/accountMonitorList?ispullfan=1" style="text-decoration:none;">
                    <div class="count" style="color: rgb(255, 150, 150);"><{$count_data['account_openfans_count']}></div>
                </a>
            </div>
        </div>
        -->
        <blockquote class="layui-elem-quote">
            <p>特别提醒:总点数(<span style="color: #0B8E00;"><{$collect['cs_total_num']}>点</span>);已使用点数(<span style="color: #fa3e3d;"><{$collect['cs_used_num']}>点</span>);剩余点数(<span style="color: #0a7bd5;"><{$collect['cs_surplus']}>点</span>)。</p>
            <p>特别提醒:地图任务需要申请对应key并填入,任务中的过滤量是指搜索到企业信息,但由于没有电话号码而被忽略的数据。</p>
        </blockquote>
        <div style="margin-bottom: 10px;overflow: hidden;">
            <div style="float: left;">
                <a href="javascript:;" class="btn btn-success btn-sm btn-add-account">新增任务</a>
                <!--
                <button class="btn btn-info btn-sm" onclick="batchOpen()">批量开启</button>
                <button class="btn btn-warning btn-sm" onclick="batchClose()">批量关闭</button>
                -->
                <button class="btn btn-danger btn-sm" onclick="batchDelete()">批量删除</button>
                <button class="btn btn-warning btn-sm" onclick="setGaodeKey(this, 'gaode')" data-key="<{$manager_info['ds_gaode_key']}>">设置高德key</button>
                <button class="btn btn-info btn-sm" onclick="setGaodeKey(this, 'baidu')" data-key="<{$manager_info['ds_baidu_key']}>">设置百度key</button>
                <button class="btn btn-success btn-sm" onclick="setGaodeKey(this, 'qq')" data-key="<{$manager_info['ds_qq_key']}>">设置腾讯key</button>
            </div>
            <div style="float: right;">
                <form class="form-inline" role="form">
                    <div class="form-group" style="margin-right: 10px;">
                        <label class="" style="margin-right: 10px;">时间筛选</label>
                        <input name="time_range" type="text" id="time-range" class="form-control"
                               placeholder="请选择添加时间" value="<{$time_range}>" style="width: 190px;"
                               autocomplete="off">
                    </div>
                    <button type="submit" class="btn btn-primary" style="margin-left: 10px;">搜索</button>
                </form>
            </div>
        </div>
        <table class="table">
            <thead>
            <tr>
                <th>
                    <input type="checkbox" class="table-select-all-input" value="0">
                </th>
                <th class="th-min-width90">城市</th>
                <th class="th-min-width90">关键词</th>
                <th class="th-min-width90">任务类型</th>
                <th class="th-min-width90">获客量</th>
                <th class="th-min-width90">过滤量</th>
                <th class="th-min-width90">添加时间</th>
                <th class="th-min-width90">执行时间</th>
                <th class="th-min-width90">操作</th>
            </tr>
            </thead>
            <tbody>
            <{foreach $auto_list as $user}>
            <tr>
                <td>
                    <input type="checkbox" class="table-select-input" value="<{$user['mt_id']}>">
                </td>
                <td>
                    <p><{$user['mt_city_name']}></p>
                </td>
                <td>
                    <p><{$user['mt_keyword']}></p>
                </td>
                <td>
                    <p><{$map_source[$user['mt_source']]['name']}></p>
                </td>
                <td>
                    <p><a href="/dydqtshoppc/scane/userList?key_id=<{$user['mt_id']}>&platform=<{$map_source[$user['mt_source']]['platform']}>"><{$user['mt_count']}></a></p>
                </td>
                <td>
                    <p><{$user['mt_except']}></p>
                </td>
                <td>
                    <p><{date('m-d H:i',$user['mt_create_time'])}></p>
                </td>
                <td>
                    <p><{date('m-d H:i',$user['mt_complete_time'])}></p>
                </td>
                <td>
                    <a href="javascript:;" onclick="confirmDelete(this)" class="btn btn-danger btn-sm btn-delete" data-id="<{$user['mt_id']}>">删除</a>
                </td>
            </tr>
            <{/foreach}>
            </tbody>
        </table>
        <div>
            <{$pageHtml}>
        </div>
    </div>
</div>

<script>
    layui.use(['laydate'], function () {
        var laydate = layui.laydate;

        //日期范围选择
        laydate.render({
            elem: '#time-range',
            range: '~'
        });
    });

    //新增
    $('.btn-add-account').on('click', function () {
        layer.open({
            type: 2,
            title: '添加/编辑地图获客任务',
            content: '/dydqtshoppc/collect/addMapTask',
            area: '580px',
            success: function(layero, index) {
                //找到当前弹出层的iframe元素
                let iframe  = layui.$(layero).find('iframe');
                //设定iframe的高度为当前iframe内body的高度
                let iheight = Math.min(window.innerHeight-50, 750, iframe[0].contentDocument.body.offsetHeight);
                iframe.css('height', iheight);
                //重新调整弹出层的位置,保证弹出层在当前屏幕的中间位置
                $(layero).css('top', (window.innerHeight - iheight -42) / 2);
            }
        });
    });

    //批量开启
    function batchOpen(){
        //选中项
        var ids = [];//批量id数组
        $("input[class='table-select-input']:checked").each(function() {
            ids.push($(this).val());
        });
        if(ids.length==0){
            layer.msg("请选择账号数据");
            return false;
        }
        this.toBatchOpenClose('open',ids);
    }
    //批量关闭
    function batchClose(){
        var ids = [];//批量id数组
        $("input[class='table-select-input']:checked").each(function() {
            ids.push($(this).val());
        });
        if(ids.length==0){
            layer.msg("请选择账号数据");
            return false;
        }
        this.toBatchOpenClose('close',ids);
    }

    //批量开启关闭核心方法
    function toBatchOpenClose(status,ids){
        if(status == 'open'){
            var title = '开启';
        }else if(status == 'close'){
            var title = '关闭';
        }
        layer.confirm('确定'+title+'选中监控账号?', {
            title:'提示',
            btn: ['确定','取消'] //按钮
        }, function(){
            layer.load(1);
            $.ajax({
                url: '/dydqtshoppc/scane/openCloseAccount',
                type: 'post',
                data: {
                    ids:ids,
                    status:status,
                },
                dataType: 'json',
                success: function (res) {
                    layer.closeAll();
                    if (res.ec == 200) {
                        window.location.reload();
                    } else {
                        layer.msg(res.em);
                    }
                },
            })
        });
    }
    //批量删除
    function batchDelete(){
        let ids = [];//批量id数组
        $("input[class='table-select-input']:checked").each(function() {
            ids.push($(this).val());
        });
        if(ids.length==0){
            layer.msg("请选择需要删除的任务");
            return false;
        }
        this.toDel(ids);
    }
    //删除核心方法
    function toDel(ids){
        layer.confirm('确定要删除选中的任务?', {
            title:'提示',
            btn: ['确定','取消'] //按钮
        }, function(){
            layer.load(1);
            $.ajax({
                url: '/dydqtshoppc/collect/deleteMapTask',
                type: 'post',
                data: {
                    ids
                },
                dataType: 'json',
                success: function (res) {
                    layer.closeAll();
                    if (res.ec == 200) {
                        window.location.reload();
                    } else {
                        layer.msg(res.em);
                    }
                }
            })
        });
    }
    /**
     * 删除账号
     */
    function confirmDelete(ele) {
        var id = $(ele).data('id');
        var ids = [id];
        this.toDel(ids);
    }
    /**
     * 关闭账号
     */
    function closeAccount(ele) {
        var id = $(ele).data('id');
        var status = 'close';
        var ids = [id];
        this.toBatchOpenClose(status,ids);
    }
    /**
     * 开启账号
     */
    function openAccount(ele) {
        var id = $(ele).data('id');
        var status = 'open';
        var ids = [id];
        this.toBatchOpenClose(status,ids);
    }
    function openFollow(ele){
        let id = $(ele).data('id');
        let status = $(ele).data('type');
        let tips = status == 'open' ? "开启检索账号粉丝功能,需要检索账号是否开启隐私保护,如果开启,将无法检索粉丝" : "确定关闭账号粉丝检索";
        layer.confirm(tips, {
            title:'提示',
            btn: ['确定','取消'] //按钮
        }, function(){
            $.ajax({
                url: '/dydqtshoppc/scane/openCloseFollow',
                type: 'post',
                data: {
                    fid:id,
                    type:status,
                },
                dataType: 'json',
                success: function (res) {
                    if (res.ec == 200) {
                        parent.window.location.reload();
                    } else {
                        layer.msg(res.em);
                    }
                },
            });
        });
    }

    function setGaodeKey(ele, source) {
        var key = $(ele).data('key');

        layer.prompt({title: '请输入获取的地图key', value: key, maxlength: 140, formType: 2}, function(val, index){
            if (val.length < 1) {
                layer.msg('请输入正确的地图key');
                return false;
            }

            layer.close(index);
            layer.load(1);
            $.ajax({
                url: '/dydqtshoppc/collect/submitMapKey',
                type: 'post',
                data: {
                    key:val,
                    type:source,
                },
                dataType: 'json',
                success: function (res) {
                    layer.closeAll();
                    if (res.ec == 200) {
                        window.location.reload();
                    } else {
                        layer.msg(res.em);
                    }
                },
            });
        });
    }
</script>

`