Browse Source

refill.exception

xiaoyu 2 years ago
parent
commit
00812e46ab

+ 49 - 0
admin/control/ordersendlist.php

@@ -722,4 +722,53 @@ class ordersendlistControl extends SystemControl
         }
         return $orders;
     }
+
+    public function order_exceptionOp()
+    {
+        $mod = Model('refill_exception');
+        $cond['exc_state'] = 0;
+
+        if (!empty($_GET['order_sns'])) {
+            $order_sns = rtrim($_GET['order_sns'],',');
+            $cond['order_sn'] = ['in', $order_sns];
+        }
+        if(in_array($_GET['exc_state'], ['0', '1'])) {
+            $cond['exc_state'] = $_GET['exc_state'];
+        }
+        $list = $mod->getRefillExceptionList($cond);
+
+        $merchant_list = $this->merchants();
+        foreach ($merchant_list as  $value) {
+            $merchants[$value['mchid']] = $value;
+        }
+        Tpl::output('merchant_list', $merchants);
+        Tpl::output('list', $list);
+        Tpl::output('show_page', $mod->showpage());
+        Tpl::showpage('refill.order.exception');
+    }
+
+    public function order_exception_handledOp()
+    {
+        $exc_ids = $_GET['exc_ids'];
+        $exc_ids = explode(',', $exc_ids);
+        $cond['exc_id'] = ['in',$exc_ids];
+        $cond['exc_state'] = 0;
+        $mod = Model('refill_exception');
+        $order_exceptions = $mod->getRefillExceptionList($cond);
+        if(empty($order_exceptions)) {
+            showMessage('操作完成');
+        }
+
+        $admininfo = $this->getAdminInfo();
+        $update['admin_id'] = $admininfo['id'];
+        $update['admin_name'] = $admininfo['name'];
+        $update['update_time'] = time();
+        foreach ($order_exceptions as $order_exception)
+        {
+
+            $exc_id = $order_exception['exc_id'];
+            $mod->ExceptionHandled($exc_id, $update);
+        }
+        showMessage('操作完成');
+    }
 }

+ 282 - 0
admin/templates/default/refill.order.exception.php

@@ -0,0 +1,282 @@
+<style>
+    th label {
+        display: inline-block;
+        width: 60px;
+        margin-left: 10px;
+    }
+    .lineLi {
+        display: inline-block;
+        min-width: 150px;
+        font-size: 14px;
+    }
+    .page .fixed-bar .item-title h3 {
+        margin-top: 18px !important;
+        margin-bottom: 10px !important;
+        font-weight: 700 !important;
+    }
+    .tab-base li span {
+        font-size: 12px !important;
+    }
+    .layui-form-select .layui-input {
+        height: 23px;
+        padding-left: 11px;
+        padding-right: 0 !important;
+    }
+    input::placeholder {
+        color: #333;
+    }
+    .layui-form-selected dl {
+        display: flex !important;
+        flex-wrap: wrap !important;
+    }
+    .layui-form-select dl {
+        top: 29px !important;
+        left: 4px !important;
+        min-width: 802% !important;
+        max-height: 280px !important;
+        padding: 14px 0 !important;
+    }
+    .layui-form-select dl dd.layui-this {
+        display: none;
+    }
+    .layui-form-select dl dd {
+        cursor: pointer;
+        width: 130px;
+    }
+    .lefto {
+        margin-left: 6px;
+    }
+    .db-right {
+        padding-right: 134px !important;
+        border-bottom: 1px solid #ccc;
+    }
+    .db-center {
+        padding: 9px 0;
+        border-bottom: 1px solid #ccc;
+    }
+    .db-top {
+        padding: 0 30px;
+    }
+    #selectAll {
+        cursor: pointer;
+    }
+    .query_ors {
+        width: 140px;
+    }
+</style>
+
+<?php defined('InShopNC') or exit('Access Invalid!'); ?>
+<div class="page">
+    <div class="fixed-bar">
+        <div class="item-title">
+            <h3>问题订单监控</h3>
+            <ul class="tab-base">
+                <li><a href="index.php?act=ordersendlist&op=index"><span>商户超时订单监控</span></a></li>
+                <li><a href="index.php?act=ordersendlist&op=monitor_notify"><span>渠道回调超时监控</span></a></li>
+                <li><a href="index.php?act=ordersendlist&op=neterr_order"><span>网络错误订单监控</span></a></li>
+                <li><a href="index.php?act=ordersendlist&op=notify_err_order"><span>未回调订单监控</span></a></li>
+                <li><a href="JavaScript:void(0);" class="current"><span>异常订单监控</span></a></li>
+            </ul>
+        </div>
+    </div>
+    <div class="fixed-empty"></div>
+    <form method="get" action="index.php" name="formSearch" id="formSearch">
+        <input type="hidden" name="act" value="ordersendlist"/>
+        <input type="hidden" name="op" value="order_exception"/>
+        <table class="tb-type1 noborder search">
+            <tr>
+                <th><label class="query_ors">订单号(多行查询)</label></th>
+                <td><textarea name="order_sns" id="order_sns" cols="30" rows="10"><?php echo $_GET['order_sns'];?></textarea></td>
+                <th><label>异常状态</label></th>
+                <td>
+
+                    <select name="exc_state" class="querySelect">
+                        <option value=""><?php echo $lang['nc_please_choose']; ?></option>
+                        <option value="0"
+                                <?php if ($_GET['exc_state'] == '0'){ ?>selected<?php } ?>>未处理
+                        </option>
+                        <option value="1"
+                                <?php if ($_GET['exc_state'] == '1'){ ?>selected<?php } ?>>已处理
+                        </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>
+        <table class="tb-type1 noborder search">
+            <tr>
+                <td>
+                    <a href="#" class="btns" onclick="hCopyOrder(event)">
+                        <span><i class="icon-edit"></i>拷贝订单号</span>
+                    </a>
+                    <a href="#" class="btns"  id="hHandled">
+                        <span><i class="icon-edit"></i>批量处理</span>
+                    </a>
+                </td>
+            </tr>
+        </table>
+    </form>
+    <table class="table tb-type2 nobdb">
+        <thead>
+        <tr class="thead">
+            <th class="align-center" id="selectAll">
+            <input type="checkbox" name="chbox" value="">
+            </th>
+            <th class="align-left">编号</th>
+            <th class="align-left">异常事件</th>
+            <th class="align-left">机构编号</th>
+            <th class="align-left">机构名称</th>
+            <th class="align-left">订单号</th>
+            <th class="align-left">生成日期</th>
+            <th class="align-left">更新日期</th>
+            <th class="align-center">异常状态</th>
+            <th class="align-left">异常信息</th>
+            <th class="align-left">处理人</th>
+            <th class="align-center"><?php echo $lang['nc_handle']; ?></th>            
+        </tr>
+        </thead>
+        <tbody id="tbody">
+        <?php if (count($output['list']) > 0) { ?>
+            <?php
+            foreach ($output['list'] as $key => $order) { ?>
+                <tr class="hover trFlex">
+                    <td class="align-center">
+                    <input type="checkbox" id="checkBoxList" name="checkbox" value="<?php echo $order['exc_id'];?>">
+                    </td>
+                    <td class="align-left"><?php echo $key+1;?></td>
+                    <td class="align-left"><?php echo $order['exc_title']; ?></td>
+                    <td class="align-left"><?php echo $order['mchid']; ?></td>
+                    <td class="align-left"><?php echo $output['merchant_list'][$order['mchid']]['company_name'];?></td>
+                    <td class="align-left"><?php echo $order['order_sn']; ?></td>
+                    <td class="align-left"><?php echo date('Y-m-d H:i:s', $order['create_time']) ?? '/'; ?></td>
+                    <td class="align-left"><?php echo !empty($order['update_time']) ? date('Y-m-d H:i:s', $order['update_time']) : '/'; ?></td>
+                    <td class="align-center">
+                        <?php if ($order['exc_state'] == '0') { ?>
+                                    <span style="color: #E53737">未处理</span>
+                            <?php } ?><?php if ($order['exc_state'] == '1') { ?>
+                                    <span style="color: #48975A">已处理</span>
+                            <?php } ?>
+                    </td>
+                    <td class="align-left"><?php echo $order['exc_desc']; ?></td>
+                    <td class="align-left"><?php echo $order['admin_name']; ?></td>
+                    <td class="align-center">
+                        <?php if($order['exc_state'] == 0){?>
+                        <a href="index.php?act=ordersendlist&op=order_exception_handled&exc_ids=<?php echo $order['exc_id']; ?>">
+                        处理</a>
+                        <?php }?>
+                    </td>
+                </tr>
+            <?php } ?>
+        <?php } else { ?>
+            <tr class="no_data">
+                <td colspan="11"><?php echo $lang['nc_no_record']; ?></td>
+            </tr>
+        <?php } ?>
+        </tbody>
+        <tfoot>
+        <tr class="tfoot">
+            <td colspan="11" id="dataFuncs">
+                <div class="pagination"> <?php echo $output['show_page']; ?> </div>
+            </td>
+        </tr>
+        </tfoot>
+    </table>
+    <!-- 预警提示 -->
+    <audio id="auto" src="<?php echo RESOURCE_SITE_URL; ?>/warning.mp3"></audio>
+</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>
+<script type="text/javascript" src="<?php echo ADMIN_TEMPLATES_URL;?>/layui/layui.js"></script>
+<link rel="stylesheet" type="text/css" href="<?php echo ADMIN_TEMPLATES_URL; ?>/layui/css/layui.css"/>
+<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 () {
+        $('#ncsubmit').click(function () {
+            $('#formSearch').submit();
+        });
+        $('#query_start_time').datepicker({dateFormat: 'yy-mm-dd'});
+        $('#query_end_time').datepicker({dateFormat: 'yy-mm-dd'});
+        // 日期选择器
+        laydate.render({
+            elem: '#startTime',
+            type: 'datetime'
+        });
+        laydate.render({
+            elem: '#endTime',
+            type: 'datetime'
+        });
+          //全选
+        $('#selectAll' ).click ( function () {
+          if ($("input[name='chbox']").is(':checked')) {
+              $("input[name='checkbox']").each(function() {
+                  this.checked = true;
+              })
+          } else {
+              $("input[name='checkbox']").each(function() {
+                  this.checked = false;
+              })
+          }
+            })
+
+
+        let get_sel_id = function (){
+            let arr = [];
+            $("input:checkbox:checked").each(function () {
+                let sel_id = $(this).val();
+                if(sel_id !== '') {
+                    arr.push(sel_id);
+                }
+            })
+            if (arr.length <= 0) { return}
+            return arr.join(",")
+        }
+
+        //批量失败
+        $('#hHandled').click(function () {
+            layer.confirm('您确定要批量处理', {
+                btn: ['确定', '取消'],
+                title: '批量失败'
+            }, function () {
+                const batch = get_sel_id();
+                window.location.href = `index.php?act=ordersendlist&op=order_exception_handled&exc_ids= ${batch ? batch : ''}`
+            }, function () {
+                layer.msg('取消成功')
+            });
+        })
+
+
+        // 表格hover时背景
+        $('.trFlex').each(function () {
+            let data_color = $(this).attr('data-timeout_State');
+            $(this).css('background', '#fff')
+            $(this).hover(function () {
+                $(this)[0].style.backgroundColor = '#cbe9f3'
+            }, function () {
+                $(this).css('background', '#fff')
+            })
+        })
+    });
+    function hCopyOrder(e) {
+        let str = ''
+        $('#tbody tr').each(function () {
+            let res = $(this).find('td').eq(4).text()
+            str += res + '\n'
+        })
+        let oInput = document.createElement("textarea");
+        oInput.style.border = "0 none";
+        oInput.style.color = "transparent";
+        oInput.value = str;
+        document.body.appendChild(oInput);
+        oInput.select(); // 选择对象
+        document.execCommand("Copy"); // 执行浏览器复制命令
+        oInput.parentNode.removeChild(oInput)
+    }
+</script> 

+ 1 - 0
admin/templates/default/refill.order.send.index.php

@@ -71,6 +71,7 @@
                 <li><a href="index.php?act=ordersendlist&op=monitor_notify"><span>渠道回调超时监控</span></a></li>
                 <li><a href="index.php?act=ordersendlist&op=neterr_order"><span>网络错误订单监控</span></a></li>
                 <li><a href="index.php?act=ordersendlist&op=notify_err_order"><span>未回调订单监控</span></a></li>
+                <li><a href="index.php?act=ordersendlist&op=order_exception"><span>流水号异常订单监控</span></a></li>
             </ul>
         </div>
     </div>

+ 24 - 0
data/model/refill_exception.model.php

@@ -0,0 +1,24 @@
+<?php
+
+defined('InShopNC') or exit('Access Invalid!');
+
+class refill_exceptionModel extends Model
+{
+    public function __construct()
+    {
+        parent::__construct('refill_exception');
+    }
+
+    public function getRefillExceptionList($condition, $pagesize = '',$total = 0, $field = '*', $order = 'create_time desc', $limit = '', $master = false)
+    {
+        $list = $this->field($field)->where($condition)->page($pagesize,$total)->order($order)->limit($limit)->master($master)->select();
+        if (empty($list)) return [];
+        return $list;
+    }
+
+    public function ExceptionHandled($exc_id, $update)
+    {
+        $update['exc_state'] = 1;
+        return $this->where(['exc_id' => $exc_id])->update($update);
+    }
+}