瀏覽代碼

admin provider provinces and successful ratio

ayHaru 4 年之前
父節點
當前提交
43fe53f40b

+ 95 - 9
admin/control/merchant.php

@@ -8,8 +8,8 @@ defined('InShopNC') or exit('Access Invalid!');
 
 require_once(BASE_HELPER_PATH . '/refill/RefillFactory.php');
 require_once(BASE_CONFIG_PATH . CONFIG_PREFIX . '/refill.ini.php');
+require_once(BASE_ROOT_PATH . '/core/framework/function/http.php');
 
-use mtopcard;
 class merchantControl extends SystemControl
 {
     const EXPORT_SIZE = 1000;
@@ -25,6 +25,7 @@ class merchantControl extends SystemControl
      */
     public function merchantOp()
     {
+        $this->successful_where();
         $model_merchant = Model('merchant');
 
         if (trim($_GET['merchant_name']) != '') {
@@ -1110,22 +1111,37 @@ class merchantControl extends SystemControl
         if (empty($provider)) {
             showMessage('通道信息有误');
         }
-        $province_list = mtopcard\ProvinceList;
+        $operator = [mtopcard\ChinaMobileCard, mtopcard\ChinaUnicomCard, mtopcard\ChinaTelecomCard];
+
         if(chksubmit()) {
-            $province = $_POST['province'];
-            if($province == -1) {
-                $updata['provinces'] = -1;
-            }else{
-                $updata['provinces'] = implode(',',$province);
+            foreach ($operator as $opr) {
+                $key = $opr . '-province';
+                $province = $_POST[$key];
+                if($province == -1) {
+                    $updata[$opr] = -1;
+                }else{
+                    $updata[$opr] = implode(',',$province);
+                }
             }
-            $resp = $provider_model->editProvider($updata, ['provider_id' => $provider_id]);
+            $resp = $provider_model->editProvider(['provinces' => serialize($updata)], ['provider_id' => $provider_id]);
             if ($resp) {
                 showMessage('编辑成功', 'index.php?act=merchant&op=provider');
             } else {
                 showMessage('编辑失败', "index.php?act=merchant&op=provider_province&id={$provider_id}");
             }
         } else {
-            $provinces = explode(',', $provider['provinces']);
+            $data = unserialize($provider['provinces']);
+            $provinces = [];
+            $province = $provinces;
+
+            foreach ($operator as $opr) {
+                if(empty($data)) {
+                    $provinces[$opr] = [-1];
+                } else {
+                    $provinces[$opr] = explode(',', $data[$opr]);
+                }
+            }
+            $province_list = mtopcard\ProvinceList;
             Tpl::output('province_list', $province_list);
             Tpl::output('provider', $provider);
             Tpl::output('provinces', $provinces);
@@ -1779,4 +1795,74 @@ class merchantControl extends SystemControl
             Tpl::showpage('provider.evidence.add');
         }
     }
+
+    public function provider_successfulOp()
+    {
+        $days = $this->successful_where();
+        Tpl::output('days', $days);
+        Tpl::showpage('provider.successful');
+    }
+
+    private function successful_where() {
+        if(defined('COMPANY_NAME') && COMPANY_NAME === 'LZKJ_COMPANY') {
+            $url = 'https://www.lzkj168.cn/plot/days';
+        }
+        else {
+            $url = 'https://www.xyzshops.cn/plot/days';
+        }
+
+        $data = http_request($url);
+        if(empty($data)) return [];
+        preg_match_all('/\d{10}/', $data, $matches);
+        $days = $matches[0];
+        if(empty($days)) return [];
+        $result = [];
+        foreach ($days as $day) {
+            $result[$day] = date("Y-m-d",$day);
+        }
+        return $result;
+    }
+
+    public function successful_time_get_whereOp(){
+        if(defined('COMPANY_NAME') && COMPANY_NAME === 'LZKJ_COMPANY') {
+            $url = 'https://www.lzkj168.cn/plot/paths?time_stamp='.$_GET['timestamp'];
+        }
+        else {
+            $url = 'https://www.xyzshops.cn/plot/paths?time_stamp='.$_GET['timestamp'];
+        }
+
+        $data = http_request($url);
+        preg_match_all('/\d{10}\/[a-z]+\/\d{1,2}\/\d\/\d{2,4}/', $data, $matches);
+        $conds = $matches[0];
+        if(empty($conds)) return [];
+        foreach ($conds as $cond) {
+            $arr = explode('/',$cond);
+            $chname[] = $arr[1];
+            $qualitys[] = $arr[2];
+            $card_types[] = $arr[3];
+            $amount[] = intval($arr[4]);
+        }
+        $chnameData = array_unique($chname);
+        sort($chnameData);
+
+        $result['chname'] = $chnameData;
+        $amountData = array_unique($amount);
+        sort($amountData);
+        $result['amount'] = $amountData;
+
+        foreach (array_unique($card_types) as $card_type) {
+            $card_typeData[$card_type] = $this->scard_type($card_type);
+        }
+        ksort($card_typeData);
+        $result['card_type'] = $card_typeData;
+
+        $quality_txt = [1=>'普充', 2=>'快充', 3=>'卡密', 4=>'三方', 5=>'慢充'];
+        foreach (array_unique($qualitys) as $quality) {
+            $qualityData[$quality] = $quality_txt[$quality];
+        }
+        ksort($qualityData);
+        $result['quality'] = $qualityData;
+        echo(json_encode($result));
+        exit;
+    }
 }

+ 2 - 1
admin/include/menu.php

@@ -100,7 +100,8 @@ $arr = array(
 					array('args'=>'OrderSendList,merchant,merchant',		'text'=>'超时订单监控'),
 					array('args'=>'OrderStats,merchant,merchant',			'text'=>'对账管理'),
 					array('args'=>'stats,card_key,merchant',				'text'=>'卡密管理'),
-					array('args'=>'index,refill_stock,merchant',				'text'=>'库存管理')
+					array('args'=>'index,refill_stock,merchant',			'text'=>'库存管理'),
+					array('args'=>'provider_successful,merchant,merchant',	'text'=>'成功率监控')
 				)
 			),
 			4 => array(

+ 1 - 0
admin/templates/default/css/recharge.css

@@ -21,6 +21,7 @@
 .mw130 {min-width:130px;}
 .mw156 {min-width:156px;}
 .mw160 {min-width:160px;}
+.mw1250 {min-width:1250px;}
 
 /* 样式 */
 .inblock {display:inline-block}

+ 161 - 32
admin/templates/default/provider.province.php

@@ -1,4 +1,4 @@
-<link href="<?php echo ADMIN_TEMPLATES_URL;?>/css/recharge.css?4" rel="stylesheet" type="text/css" id="cssfile2" />
+<link href="<?php echo ADMIN_TEMPLATES_URL;?>/css/recharge.css?7" rel="stylesheet" type="text/css" id="cssfile2" />
 <?php defined('InShopNC') or exit('Access Invalid!'); ?>
 
 <div class="page">
@@ -16,7 +16,7 @@
         <input type="hidden" name="form_submit" value="ok"/>
         <input type="hidden" name="provider_id" value="<?php echo $output['provider']['provider_id']?>"/>
         <table class="tb-type2 table">
-            <tbody>
+            <tbody class="mw1250 block">
             <tr class="noborder">
                 <td colspan="2" class="required"><label class="validation" for="name">通道名称:</label></td>
             </tr>
@@ -27,21 +27,71 @@
                 <td colspan="2"><label for="end_period">选择省份:</label></td>
             </tr>
             <tr class="noborder">
-                <td>
+                <td class="w400 inblock align-center required">
+                    中国移动
+                </td>
+                <td class="w400 inblock align-center required">
+                    中国联通
+                </td>
+                <td class="w400 inblock align-center required">
+                    中国电信
+                </td>
+            </tr>
+            <tr class="noborder">
+                <td class="w400 inblock">
+                    <label>
+                        全国:
+                        <input type="checkbox" name="<?php echo mtopcard\ChinaMobileCard;?>-province" data-name="move" id="move_cb_all" value="-1"
+                            <?php if(in_array(-1,$output['provinces'][mtopcard\ChinaMobileCard])){ echo 'checked';}?>/>
+                    </label>
+                </td>
+                <td class="w400 inblock">
+                    <label>
+                        全国:
+                        <input type="checkbox" name="<?php echo mtopcard\ChinaUnicomCard;?>-province" data-name="unicom" id="unicom_cb_all" value="-1"
+                            <?php if(in_array(-1,$output['provinces'][mtopcard\ChinaUnicomCard])){ echo 'checked';}?>/>
+                    </label>
+                </td>
+                <td class="w400 inblock">
                     <label>
                         全国:
-                        <input type="checkbox" name="province" id="cb_all" value="-1" <?php if(in_array(-1,$output['provinces'])){ echo 'checked';}?>/>
+                        <input type="checkbox" name="<?php echo mtopcard\ChinaTelecomCard;?>-province"  data-name="tel" id="tel_cb_all" value="-1"
+                            <?php if(in_array(-1,$output['provinces'][mtopcard\ChinaTelecomCard])){ echo 'checked';}?>/>
                     </label>
                 </td>
             </tr>
             <tr class="noborder">
-                <td  class="w500 block h200">
+                <td  class="w400 inblock h200">
+                    <div class="w100pre">
+                        <?php foreach($output['province_list'] as $key => $province){ ?>
+                        <label style="display: inline-block;width: 70px;height: 30px;line-height: 30px;">
+                            <?php echo $province;?>
+                            <input type="checkbox" class="move_cb_box" name="<?php echo mtopcard\ChinaMobileCard;?>-province[]" data-name="move" style="vertical-align: middle;" value="<?php echo $key;?>"
+                                <?php if(in_array($key,$output['provinces'][mtopcard\ChinaMobileCard])){ echo 'checked';}?>
+                            />
+                        </label>
+                        <?php }?>
+                    </div>
+                </td>
+                <td  class="w400 inblock h200">
+                    <div class="w100pre">
+                        <?php foreach($output['province_list'] as $key => $province){ ?>
+                        <label style="display: inline-block;width: 70px;height: 30px;line-height: 30px;">
+                            <?php echo $province;?>
+                            <input type="checkbox" class="unicom_cb_box" data-name="unicom" name="<?php echo mtopcard\ChinaUnicomCard;?>-province[]" style="vertical-align: middle;" value="<?php echo $key;?>"
+                                <?php if(in_array($key,$output['provinces'][mtopcard\ChinaUnicomCard])){ echo 'checked';}?>
+                            />
+                        </label>
+                        <?php }?>
+                    </div>
+                </td>
+                <td  class="w400 inblock h200">
                     <div class="w100pre">
                         <?php foreach($output['province_list'] as $key => $province){ ?>
                         <label style="display: inline-block;width: 70px;height: 30px;line-height: 30px;">
                             <?php echo $province;?>
-                            <input type="checkbox" class="cb_box" name="province[]" style="vertical-align: middle;" value="<?php echo $key;?>"
-                                <?php if(in_array($key,$output['provinces'])){ echo 'checked';}?>
+                            <input type="checkbox" class="tel_cb_box" data-name="tel" name="<?php echo mtopcard\ChinaTelecomCard;?>-province[]" style="vertical-align: middle;" value="<?php echo $key;?>"
+                                <?php if(in_array($key,$output['provinces'][mtopcard\ChinaTelecomCard])){ echo 'checked';}?>
                             />
                         </label>
                         <?php }?>
@@ -63,63 +113,142 @@
 <script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/js/jquery-ui/jquery.ui.js"></script>
 <script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/js/ajaxfileupload/ajaxfileupload.js"></script>
 <script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/js/jquery.Jcrop/jquery.Jcrop.js"></script>
+<script type="text/javascript" src="<?php echo RESOURCE_SITE_URL;?>/refill/layer.js"></script>
 <link href="<?php echo RESOURCE_SITE_URL; ?>/js/jquery.Jcrop/jquery.Jcrop.min.css" rel="stylesheet" type="text/css"
       id="cssfile2"/>
 <script type="text/javascript">
     $(function () {
-        if($('#cb_all').is(":checked")) {
-            $('.cb_box').each(function () {
+        // 移动
+        if($('#move_cb_all').is(":checked")) {
+            $('.move_cb_box').each(function () {
+                this.checked = true;
+                $(this).attr("disabled",true);
+            })
+        }
+        // 全选
+        $('#move_cb_all').click(function() {
+            if($(this).is(":checked")) {
+                $('.move_cb_box').each(function () {
+                    this.checked = true;
+                    $(this).attr("disabled",true);
+                })
+            } else {
+                $('.move_cb_box').each(function () {
+                    this.checked = false;
+                    $(this).attr("disabled",false);
+                })
+            }
+        })
+        $('.move_cb_box').each(function () {
+            $(this).click(function () {
+                // console.log(1, $(".cb_box:checked").length, $(".cb_box").length);
+                if ($(".move_cb_box:checked").length == $(".move_cb_box").length) {
+                    $("#move_cb_all").attr("checked", "checked");
+                    $('#move_cb_all').attr("disabled",true);
+                }else {
+                    $("#move_cb_all").removeAttr("checked");
+                    $('#move_cb_all').attr("disabled",false);
+                };
+            })
+        })
+
+        // 联通
+        if($('#unicom_cb_all').is(":checked")) {
+            $('.unicom_cb_box').each(function () {
                 this.checked = true;
                 $(this).attr("disabled",true);
             })
-        } else {
-            $('.cb_box').each(function () {
-                this.checked = false;
-                $(this).attr("disabled",false);
+        }
+        // 全选
+        $('#unicom_cb_all').click(function() {
+            if($(this).is(":checked")) {
+                $('.unicom_cb_box').each(function () {
+                    this.checked = true;
+                    $(this).attr("disabled",true);
+                })
+            } else {
+                $('.unicom_cb_box').each(function () {
+                    this.checked = false;
+                    $(this).attr("disabled",false);
+                })
+            }
+        })
+        $('.unicom_cb_box').each(function () {
+            $(this).click(function () {
+                // console.log(1, $(".cb_box:checked").length, $(".cb_box").length);
+                if ($(".unicom_cb_box:checked").length == $(".unicom_cb_box").length) {
+                    $("#unicom_cb_all").attr("checked", "checked");
+                    $('#unicom_cb_all').attr("disabled",true);
+                }else {
+                    $("#unicom_cb_all").removeAttr("checked");
+                    $('#unicom_cb_all').attr("disabled",false);
+                };
+            })
+        })
+
+        // 电信
+        if($('#tel_cb_all').is(":checked")) {
+            $('.tel_cb_box').each(function () {
+                this.checked = true;
+                $(this).attr("disabled",true);
             })
         }
         // 全选
-        $('#cb_all').click(function() {
+        $('#tel_cb_all').click(function() {
             if($(this).is(":checked")) {
-                $('.cb_box').each(function () {
+                $('.tel_cb_box').each(function () {
                     this.checked = true;
                     $(this).attr("disabled",true);
                 })
             } else {
-                $('.cb_box').each(function () {
+                $('.tel_cb_box').each(function () {
                     this.checked = false;
                     $(this).attr("disabled",false);
                 })
             }
         })
-        $('.cb_box').each(function () {
+        $('.tel_cb_box').each(function () {
             $(this).click(function () {
                 // console.log(1, $(".cb_box:checked").length, $(".cb_box").length);
-                if ($(".cb_box:checked").length == $(".cb_box").length) {
-                    $("#cb_all").attr("checked", "checked");
-                    $('#cb_all').attr("disabled",true);
+                if ($(".tel_cb_box:checked").length == $(".tel_cb_box").length) {
+                    $("#tel_cb_all").attr("checked", "checked");
+                    $('#tel_cb_all').attr("disabled",true);
                 }else {
-                    $("#cb_all").removeAttr("checked");
-                    $('#cb_all').attr("disabled",false);
+                    $("#tel_cb_all").removeAttr("checked");
+                    $('#tel_cb_all').attr("disabled",false);
                 };
             })
         })
 
         $("#submitBtn").click(function () {
-            var checkOne = false; //判断是否被选择条件
-            var checkArr = []; //判断是否被选择条件
-            var checkBox = $('input[type="checkbox"]'); //获得得到所的复选框
-            for (var i = 0; i < checkBox.length; i++) {
+            var checkMove = false;
+            var checkUnicom = false;
+            var checkTel = false; 
+            var checkBoxMove = $('input[data-name="move"]');
+            var checkBoxUnicom = $('input[data-name="unicom"]');
+            var checkBoxTel = $('input[data-name="tel"]');
+            for (var i = 0; i < checkBoxMove.length; i++) {
+                //如果有1个被选中时
+                if (checkBoxMove[i].checked) {
+                    checkMove = true
+                };
+            };
+            for (var i = 0; i < checkBoxUnicom.length; i++) {
+                //如果有1个被选中时
+                if (checkBoxUnicom[i].checked) {
+                    checkUnicom = true
+                };
+            };
+            for (var i = 0; i < checkBoxTel.length; i++) {
                 //如果有1个被选中时
-                if (checkBox[i].checked) {
-                    checkOne = true;
-                    checkArr.push(true)
-                    // console.log('checkOne', checkOne);
+                if (checkBoxTel[i].checked) {
+                    checkTel = true
                 };
             };
-            // console.log('checkOne1', checkOne);
-            if (checkOne) {
+            if (checkMove && checkUnicom && checkTel) {
                 $("#user_form").submit();
+            } else{
+                layer.msg('每个类型至少选择一个')
             }
         });
     });

+ 177 - 0
admin/templates/default/provider.successful.php

@@ -0,0 +1,177 @@
+<div class="page">
+    <div class="fixed-bar">
+        <div class="item-title">
+            <h3>成功率监控列表</h3>
+            <ul class="tab-base">
+                <li><a href="JavaScript:void(0);" class="current" ><span>通道成功率监控</span></a></li>
+            </ul>
+        </div>
+    </div>
+    <div class="fixed-empty"></div>
+    <div style="margin-top: 10px;color: #e60d0d;">
+        请先选择时间
+    </div>
+    <form method="get" action="index.php" name="formSearch" id="formSearch">
+        <input type="hidden" name="act" value="merchant"/>
+        <input type="hidden" name="op" value="OrderSendList"/>
+        <table class="tb-type1 noborder search">
+            <tr>
+                <th><label>起始日期</label></th>
+                <td>
+                    <select name="time_stamp" id="timeSelect">
+                        <option value=""><?php echo $lang['nc_please_choose']; ?></option>
+                        <?php foreach ($output['days'] as $day => $txt) {?>
+                            <option value="<?php echo $day; ?>"><?php echo $txt; ?></option>
+                        <?php }?>
+                    </select>
+                </td>
+                <th><label>起始时间</label></th>
+                <td>
+                    <select name="time_hour">
+                        <option value=""><?php echo $lang['nc_please_choose']; ?></option>
+                        <?php for ($i = 1; $i <= 24; $i++) {?>
+                            <option value="<?php echo $i; ?>"><?php echo sprintf("%02d",$i); ?>点</option>
+                        <?php }?>
+                    </select>
+                </td>
+                <th><label>间隔</label></th>
+                <td>
+                    <select name="interval">
+                        <option value=""><?php echo $lang['nc_please_choose']; ?></option>
+                        <option value="900">15分钟</option>
+                        <option value="1200">20分钟</option>
+                        <option value="1800">半小时</option>
+                        <option value="3600">一小时</option>
+                    </select>
+                </td>
+                <th><label>通道</label></th>
+                <td>
+                    <select name="chname">
+                        <option value=""><?php echo $lang['nc_please_choose']; ?></option>
+                    </select>
+                </td>
+                <th><label>质量</label></th>
+                <td>
+                    <select name="quality">
+                        <option value=""><?php echo $lang['nc_please_choose']; ?></option>
+                    </select>
+                </td>
+                <th><label>卡类型</label></th>
+                <td>
+                    <select name="card_type">
+                        <option value=""><?php echo $lang['nc_please_choose']; ?></option>
+                    </select>
+                </td>
+                <th><label>面额</label></th>
+                <td>
+                    <select name="amount">
+                        <option value=""><?php echo $lang['nc_please_choose']; ?></option>
+                    </select>
+                </td>
+                <td>
+                    <a href="javascript:void(0);" id="ncsubmit" class="btn-search "
+                       title="<?php echo $lang['nc_query']; ?>">&nbsp;
+                    </a>
+                </td>
+            </tr>
+        </table>
+    </form>
+    <div style="height:800px">
+        <iframe
+            src=""
+            scrolling="No"  noresize="noresize" frameborder="0"
+            width="100%" height="100%"></iframe>
+    </div>
+</div>
+<script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/laydate/laydate.js"></script>
+<script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/js/jquery-ui/jquery.ui.js"></script>
+<script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/js/jquery-ui/i18n/zh-CN.js"
+        charset="utf-8"></script>
+<script type="text/javascript" src="<?php echo RESOURCE_SITE_URL;?>/refill/layer.js"></script>
+<link rel="stylesheet" type="text/css"
+      href="<?php echo RESOURCE_SITE_URL; ?>/js/jquery-ui/themes/ui-lightness/jquery.ui.css"/>
+<script type="text/javascript">
+    $(function () {
+        $('#timeSelect').change(function () {
+            let val = $(this).val()
+            // console.log('val', val);
+            $.get("index.php?act=merchant&op=successful_time_get_where&timestamp="+val, function (data){
+                if (!data) {
+                    return
+                }
+                data = JSON.parse(data)
+                $("select[name=chname]").find('.chnameOption').remove();
+                $("select[name=quality]").find('.qualityOption').remove();
+                $("select[name=card_type]").find('.ctOption').remove();
+                $("select[name=amount]").find('.amountOption').remove();
+                // 通道
+                for (const key in data.chname) {
+                    $("select[name=chname]").append("<option class='chnameOption' value='"+data.chname[key]+"'>"+data.chname[key]+"</option>")
+                }
+                // 质量
+                for (const key in data.quality) {
+                    // console.log('质量', key, data.quality[key]);
+                    $("select[name=quality]").append("<option class='qualityOption' value='"+key+"'>"+data.quality[key]+"</option>")
+                }
+                // 卡类型
+                for (const key in data.card_type) {
+                    // console.log('类型', key, data.card_type[key]);
+                    $("select[name=card_type]").append("<option class='ctOption' value='"+key+"'>"+data.card_type[key]+"</option>")
+                }
+                // 面额
+                for (const key in data.amount) {
+                    // console.log('面额', data.amount[key]);
+                    $("select[name=amount]").append("<option class='amountOption' value='"+data.amount[key]+"'>"+data.amount[key]+"</option>")
+                }
+                // console.log('data1', data);
+            });
+        })
+        $('#ncsubmit').click(function () {
+            let time_stamp = $("select[name=time_stamp]").val()
+            let time_hour = $("select[name=time_hour]").val()
+            let time = Number(time_stamp) + Number(time_hour)*3600
+            // console.log('time',time_stamp,time_hour, time);
+            let interval = $("select[name=interval]").val()
+            let chname = $("select[name=chname]").val()
+            let quality = $("select[name=quality]").val()
+            let card_type = $("select[name=card_type]").val()
+            let amount = $("select[name=amount]").val()
+            if (!time_stamp) {
+                layer.msg('请选择时间');
+                return
+            }
+            <?php
+            if (defined('COMPANY_NAME') && COMPANY_NAME === 'LZKJ_COMPANY'){?>
+                let base_src = 'https://www.lzkj168.cn';
+            <?php }else{?>
+                let base_src = 'https://www.xyzshops.cn';
+            <?php }?>
+            // console.log('val', time_stamp, interval,chname,quality,card_type,amount);
+            let src = base_src+"/plot/index?time_stamp="+time+"&interval="+interval+"&chname="+chname+"&quality="+quality+"&card_type="+card_type+"&amount="+amount
+            if (!interval) {
+                src = src.replace("&interval=", "")
+            }
+            if (!chname) {
+                src = src.replace("&chname=", "")
+            }
+            if (!quality) {
+                src = src.replace("&quality=", "")
+            }
+            if (!card_type) {
+                src = src.replace("&card_type=", "")
+            }
+            if (!amount) {
+                src = src.replace("&amount=", "")
+            }
+            // console.log(1, $('iframe').attr('src'));
+            // console.log('src',src);
+            $.get(src, function (data){
+                if (!data) {
+                    return
+                }
+                $('iframe').attr('src',src)
+                // console.log('data', data);
+            });
+        });
+    })
+</script> 

+ 24 - 1
helper/mtopcard/mtopcard.php

@@ -193,7 +193,8 @@ function card_type($cardno)
     }
     elseif(preg_match('/^1\d{10}$/',$cardno,$matches))
     {
-        $checker = function ($phone)
+        $region_no = -1;
+        $checker = function ($phone) use(&$region_no)
         {
             if (empty($phone)) return false;  //手机号不能为空
             $url = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel={$phone}";
@@ -206,6 +207,9 @@ function card_type($cardno)
                 $body = trim($datas[1]);
                 if(preg_match_all("/(\w+):'([^']+)/", $body, $m)) {
                     $res = array_combine($m[1], $m[2]);
+
+                    $province = formatProvince($res['province']);
+                    $region_no = array_search($province,ProvinceList);
                     return $res;
                 }
             }
@@ -284,4 +288,23 @@ function valid_phone($phone) : bool
         Log::record("valid_phone phone:{$phone} return msg:{$resp['msg']}", Log::DEBUG);
         return true;
     }
+}
+
+function formatProvince(string $province) : string
+{
+    if(empty($province)) {
+        return '';
+    }
+
+    $checkArr = ["省","市","自治区","特别行政区"];
+
+    for($i = 0; $i < count($checkArr); $i++) {
+        if(strpos($province, $checkArr[$i]) === false) {
+            continue;
+        } else {
+            $province = mb_strcut($province, 0, strrpos($province, $checkArr[$i]));
+        }
+    }
+
+    return $province;
 }