Browse Source

异常处理

彭俊 6 years ago
parent
commit
9ad4763d73

+ 42 - 1
app/Http/Controllers/Admin/SoccerStringNoteListController.php

@@ -49,7 +49,7 @@ class SoccerStringNoteListController extends Controller
         $dt->addColsFields('money_time', array('templet' => '#userdetail', 'sort' => false, 'width' => 140));
         $dt->addColsFields('money_time', array('templet' => '#userdetail', 'sort' => false, 'width' => 140));
         $dt->addColsFields('order_status', array('sort' => false, 'width' => 80));
         $dt->addColsFields('order_status', array('sort' => false, 'width' => 80));
         $dt->addColsFields('account_money', array('templet' => '#userdetail', 'sort' => false, 'width' => 230));
         $dt->addColsFields('account_money', array('templet' => '#userdetail', 'sort' => false, 'width' => 230));
-        $dt->addColsFields('myoption', array('templet' => '#myoption', 'sort' => false, 'title' => '操作', 'width' => 120));
+        //$dt->addColsFields('myoption', array('templet' => '#myoption', 'sort' => false, 'title' => '操作', 'width' => 120));
         //$dt->addColsFields('settle_status', array('sort' => false, 'width' => 90));
         //$dt->addColsFields('settle_status', array('sort' => false, 'width' => 90));
         //if (checkRriv('/admin/SoccerStringNoteList/edit')) {
         //if (checkRriv('/admin/SoccerStringNoteList/edit')) {
         //    $arr[] ='edit';
         //    $arr[] ='edit';
@@ -59,6 +59,47 @@ class SoccerStringNoteListController extends Controller
         return view('sports/sports_stringnotelist', $dt->render($request));
         return view('sports/sports_stringnotelist', $dt->render($request));
     }
     }
 
 
+
+    public function notelistSet(Req $req)
+    {
+        $request['name_chinese'] = isset($req->name_chinese) ? trim($req->name_chinese) : null;
+        $request['sureblurs'] = isset($req->sureblurs) ? $req->sureblurs : 'on';
+        $request['account'] = isset($req->account) ? trim($req->account) : null;
+        $request['star_time'] = isset($req->star_time) ? trim($req->star_time) : null;
+        $request['end_time'] = isset($req->end_time) ? trim($req->end_time) : null;
+        $request['order_id'] = isset($req->order_id) ? trim($req->order_id) : null;
+        $request['status'] = isset($req->status) ? trim($req->status) : '-1';
+        $request['match_id'] = isset($req->match_id) ? trim($req->match_id) : '';
+        $request['game_code'] = isset($req->game_code) ? trim($req->game_code) : '';
+        $request['order_status'] = isset($req->order_status) ? trim($req->order_status) : '-1';
+
+        $dt = \App\Lib\DataTable\DataTable::init();
+        $dt->setDataSource('/admin/SoccerStringNoteList/info');
+        $dt->setLang('sportsnotelist');
+        //$dt->addColsFields('id', array('templet' => '#userdetail', 'sort' => true, 'width' => 80));
+        $dt->addColsFields('order_id', array('templet' => '#userdetail', 'sort' => true, 'width' => 210, 'minWidth' => 200));
+        $dt->addColsFields('str_type', array('templet' => '#userdetail', 'sort' => false, 'width' => 120));
+        $dt->addColsFields('detail_content', array('sort' => false, 'width' => 150));
+        $dt->addColsFields('money', array('templet' => '#userdetail', 'sort' => false, 'width' => 90));
+        $dt->addColsFields('water_return', array('templet' => '#userdetail', 'sort' => false, 'width' => 90));
+        $dt->addColsFields('prize_money', array('templet' => '#userdetail', 'sort' => false, 'width' => 120));
+        $dt->addColsFields('result', array('templet' => '#userdetail', 'sort' => false, 'width' => 90));
+        $dt->addColsFields('money_time', array('templet' => '#userdetail', 'sort' => false, 'width' => 140));
+        $dt->addColsFields('order_status', array('sort' => false, 'width' => 80));
+        $dt->addColsFields('account_money', array('templet' => '#userdetail', 'sort' => false, 'width' => 230));
+        $dt->addColsFields('myoption', array('templet' => '#myoption', 'sort' => false, 'title' => '操作', 'width' => 120));
+        //$dt->addColsFields('settle_status', array('sort' => false, 'width' => 90));
+        //if (checkRriv('/admin/SoccerStringNoteList/edit')) {
+        //    $arr[] ='edit';
+        // }
+        //$dt->setToolBar($arr, array('width' => 100));
+        //$dt->enableCheckBox();
+        return view('sports/sports_stringnotelistSet', $dt->render($request));
+    }
+
+
+
+
     function info()
     function info()
     {
     {
         $page = Request::has('page') ? Request::get('page') : '';
         $page = Request::has('page') ? Request::get('page') : '';

+ 23 - 0
app/Lib/Settlement/SettlementAuto.php

@@ -79,6 +79,29 @@ class SettlementAuto
 
 
 
 
     //提交结算
     //提交结算
+    /****
+     *参数说明
+
+     结算接口
+    Settelement - Array
+    (
+    [match_id] => 1934   赛事id
+    [game_code] => zq    赛事代码
+    [change_status] => 1   是否更改赛事结果及赛事状态
+    [bettype] => 1        1单式  2串式
+    [settype] => 2         统一为2
+    [is_manaue] => 0      是否手动(全赛事是为0),手动单个手动更改结果订单处理时为1
+    [order_ids] =>       订单号,单一订单写单订单号, 也可能同一赛事的多个订单是以用半角逗号分开,为空则为单式全部订单或串式全部订单
+    [token] => oclatv15689731035d84a12f550df            //管理叫id ,后台可用    session('adminInfo.token') 直接获取
+    )
+
+     输赢接口
+    WinFail - Array
+    (
+    [noticeid] => 1514   comendnotice表的ID
+    [token] => oclatv15689731035d84a12f550df
+    )
+     */
     public function SubmitSettelement($type, $datas)
     public function SubmitSettelement($type, $datas)
     {
     {
         $url = config('sconstant.url');
         $url = config('sconstant.url');

+ 7 - 1
app/Models/Comendnotice.php

@@ -30,7 +30,7 @@ class Comendnotice extends BaseModel
                 $insertArr['game_start_time'] = $game_start_time;
                 $insertArr['game_start_time'] = $game_start_time;
             }
             }
             $res = $this->insert($insertArr);
             $res = $this->insert($insertArr);
-            if (!$res) {                      
+            if (!$res) {
                 return -6030001222;
                 return -6030001222;
             }
             }
         }
         }
@@ -68,6 +68,12 @@ class Comendnotice extends BaseModel
     }
     }
 
 
 
 
+    public function getOneByMatchAndCode($game_code, $match_id)
+    {
+        return $this->where(['game_code' => $game_code, 'match_id' => $match_id])->first();
+    }
+
+
     public function findByType($type, $days = 30)
     public function findByType($type, $days = 30)
     {
     {
         $days = intval($days);
         $days = intval($days);

+ 441 - 0
resources/views/sports/sports_stringnotelistSet.blade.php

@@ -0,0 +1,441 @@
+@extends('vip.layouts')
+@section('seo_title')
+    足球串关注单管理
+@endsection
+@section('content')
+    <style>
+        .layui-laydate-range {
+            width: auto;
+        }
+
+        .layui-form-switch em {
+            width: auto;
+        }
+        .layui-form-switch {
+            width: 44px;
+            line-height: 23px;
+        }
+        .layui-form-item .checkbox {
+            width: auto;
+        }
+
+        .red{
+            color: red;
+        }
+        .blue{
+            color: #1E9FFF;
+        }
+        .green{
+            color: green;
+        }
+        .yellow{
+            color: #ffca10;
+        }
+
+        .red{
+            color: red;
+        }
+        .blue{
+            color: #1E9FFF;
+        }
+        .green{
+            color: green;
+        }
+        .yellow{
+            color: #ffca10;
+        }
+        .bottom-txt{
+            padding: 0.5em;
+            line-height: 2em;
+        }
+        table{
+            text-align: center;
+        }
+        th div{
+            text-align: center;
+        }
+        tbody span{
+            color: #FF5722;
+        }
+        .resettlement{
+            background-color: #FF5722;
+        }
+        .settlement{
+            background-color: #FF5722;
+        }
+        .invalid{
+            background-color: #FF5722;
+        }
+    </style>
+
+
+    <script type="text/html" id="status">
+        @if(checkRriv('/admin/SportsSoccer/score'))<input type="checkbox" name="status" value="@{{d.id}}" lay-skin="switch" lay-text="进行中|已结束" lay-filter="openStatus" @{{ d.status == '1' ? 'checked' : '' }}>@endif
+    </script>
+
+    <script type="text/html" id="myoption">
+        @{{#if(d.status==1){ }}
+        <button onclick="invalid('/admin/SoccerStringNoteList/RevokeStrOrder','@{{d.order_id}}')" class="layui-btn layui-btn-sm settlement">作废</button><br/>
+        <button onclick="settlement('/admin/SoccerStringNoteList/resettlement','@{{d.id}}')" class="layui-btn layui-btn-sm">结算</button>
+        @{{#} }}
+    </script>
+
+    <div class="layui-row">
+        <div class="layui-col-xs12">
+            <form class="layui-form rewrite" eventType="eventForm"  action="" method="get">
+            <!-- <input type="hidden" name="match_id" id="match_id" value="{$match_id}"> -->
+                <div class="layui-form-item">
+
+                    <div class="layui-inline">
+                        <label class="layui-form-label">{{ trans('sportsnotelist.account') }}</label>
+                        <div class="layui-input-inline">
+                            <input type="text" name="account" id="account" eventType="event-query"  value="{{ $account }}" lay-verify="required" autocomplete="off" class="layui-input">
+                            <input type="hidden" name="match_id" id="match_id" eventType="event-query"  value="{{ $match_id }}" lay-verify="required" autocomplete="off" class="layui-input">
+                            <input type="hidden" name="game_code" id="game_code" eventType="event-query"  value="{{ $game_code }}" lay-verify="required" autocomplete="off" class="layui-input">
+
+                        </div>
+                        <div class="layui-input-inline checkbox">
+                            <input type="checkbox" name="sureblur" id="form_sureblur" lay-skin="switch" lay-text="精确|模糊" @if(!isset($sureblurs) || $sureblurs=='on') checked @endif  class="layui-input" eventType=event-query>
+                            <input type="hidden" name="sureblurs" id="form_sureblurs" lay-verify="required" autocomplete="off" class="layui-input" eventType=event-query  value="{{ $sureblurs }}">
+                        </div>
+                    </div>
+
+                    <div class="layui-inline">
+                        <label class="layui-form-label">{{ trans('sportsnotelist.date') }}</label>
+                        <div class="layui-input-inline">
+                            <input type="text" name="star_time" value="{{ $star_time }}" id="form_star_time" placeholder=" - "  lay-verify="" autocomplete="off" class="layui-input test-item" eventType=event-query>
+                        </div>
+                    </div>~
+                    <div class="layui-inline">
+                        {{--<label class="layui-form-label">{{ trans('sportsnotelist.end_time') }}</label>--}}
+                        <div class="layui-input-inline">
+                            <input type="text" name="end_time" value="{{ $end_time }}" id="end_time" placeholder=" - "  lay-verify="" autocomplete="off" class="layui-input test-item" eventType=event-query>
+                        </div>
+                    </div>
+
+                    <div class="layui-inline">
+                        <label class="layui-form-label">{{ trans('sportsnotelist.order_id') }}</label>
+                        <div class="layui-input-inline">
+                            <input type="text" name="order_id" id="order_id" eventType="event-query"  value="{{ $order_id }}" lay-verify="required" autocomplete="off" class="layui-input">
+                        </div>
+                    </div>
+
+                    <!--
+                    <div class="layui-inline">
+                        <label class="layui-form-label">{{ trans('sportsnotelist.ifsettlement') }}</label>
+                        <div class="layui-input-inline" style="width: 100px">
+                            <select name="status"  id="form_status"  lay-verify="" autocomplete="off" class="layui-input"  eventType=event-query>
+                                <option value="-1"></option>
+                                @foreach(trans('status.ifsettlement.status') as $k=>$v):
+                                @if($status==$k))
+                                <option value="{{$k}}" selected="selected">{{$v}}</option>
+                                @else
+                                    <option value="{{$k}}">{{$v}}</option>
+                                @endif
+                                @endforeach
+                            </select>
+                        </div>
+                    </div>
+                    -->
+
+                    <div class="layui-inline">
+                        <label class="layui-form-label">{{ trans('sportsnotelist.order_status') }}</label>
+                        <div class="layui-input-inline" style="width: 100px">
+                            <select name="order_status"  id="form_order_status"  lay-verify="" autocomplete="off" class="layui-input"  eventType=event-query>
+                                <option value="-1"></option>
+                                @foreach(trans('status.order_status.status') as $k=>$v):
+                                @if($order_status==$k))
+                                <option value="{{$k}}" selected="selected">{{$v}}</option>
+                                @else
+                                    <option value="{{$k}}">{{$v}}</option>
+                                @endif
+                                @endforeach
+                            </select>
+                        </div>
+                    </div>
+
+                    <div class="layui-inline">
+                        <a class="layui-btn layui-btn-sm lay-btn-diy"   data-type="reload" eventType="event-query-submit" style="opacity: 1; pointer-events: auto;">提交</a>
+                        <a  class="layui-btn   layui-btn-sm layui-btn-normal reset" data-type="reload" style="opacity: 1; pointer-events: auto;">重置</a>
+                        {{--@if(checkRriv('/admin/SoccerstringNoteList/batchsettlement'))<a href="javascript:batchsettlement('/admin/SoccerstringNoteList/batchsettlement');" class="layui-btn layui-btn-sm  layui-btn-danger">批量结算</a>@endif--}}
+                        <a class="layui-btn layui-btn-sm layui-btn-green layui-laydate-range set" data-type="reload"
+                           style="opacity: 1; pointer-events: auto;" href="javascript:window.location.reload()"><i class="layui-icon">ဂ</i></a>
+                        {{--@if(checkRriv('/admin/SoccerstringNoteList/add'))<a href="/admin/SoccerstringNoteList/add" class="layui-btn layui-btn-sm ">添加</a>@endif--}}
+                        @if(checkRriv('/admin/SoccerstringNoteList/delete'))<a href="javascript:delWin('/admin/SoccerstringNoteList/delete?id=');" class="layui-btn layui-btn-sm  layui-btn-danger">删除</a>@endif
+                    </div>
+
+                    <!-- &nbsp;&nbsp;&nbsp;&nbsp;<div class="layui-inline"><a href="javascript:openWin('/admin/user/infoAdd','{{ trans('menu.menu_add') }}','700px','500px')" class="layui-btn layui-btn-sm  ">添加</a></div>
+                    <div class="layui-inline"><a href="/admin/menu/add" class="layui-btn layui-btn-sm  layui-btn-danger">删除</a></div> -->
+
+                </div>
+            </form>
+        </div>
+    </div>
+    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
+    <script>
+        $(function () {
+            $('body').on('click', 'a[eventtype="event-delete"]', function () {
+                var span = $(this).prev();
+                var id = span.attr('data-id');
+                // openWin('/admin/system/AddMenu','{{ trans("menu.menu_edit")}}','600px','500px',id);
+            })
+            $('body').on('click','#form_sureblur~.layui-form-switch',function(){
+                var sus = $('#form_sureblur').next().text();
+                if(sus=='精确'){
+                    $('#form_sureblurs').val('on');
+                }else{
+                    $('#form_sureblurs').val('off');
+                }
+            })
+        })
+    </script>
+    @push('dataTableJS')
+    /*var active = {
+    reload: function(){
+    //执行重载
+    console.log($('#form_status').val());
+    table.reload('{{ $dataId }}', {
+    page: {
+    curr: 1 //重新从第 1 页开始
+    }
+    ,where: {
+    account_name:$("#form_account_name").val(),
+    order_id:$('#form_order_id').val(),
+    bank_user:$('#form_bank_user').val(),
+    money_small:$('#form_money_small').val(),
+    money_big:$('#form_money_big').val(),
+    status:$('#form_status').val(),
+    apply_startime:$('#form_apply_startime').val(),
+    apply_endtime:$('#form_apply_endtime').val(),
+    haddle_startime:$('#form_haddle_startime').val(),
+    haddle_endtime:$('#form_haddle_endtime').val(),
+    sureblur:$('.layui-form-switch').text(),
+    }
+    });
+    }
+    };*/
+    //$('.lay-btn-diy').on('click', function(){
+    //	var type = $(this).data('type');
+    //	active[type] ? active[type].call(this) : '';
+    //});
+
+    //重置表单
+    $('.reset').on('click',function(){
+    $('input').val('');
+    $('#form_status').val('3');
+    $('.layui-form-select input').val('待审核');
+    //var type = $(this).data('type');
+    //active[type] ? active[type].call(this) : '';
+    });
+
+    //刷新表单
+    $('.set').on('click',function(){
+    //var type = $(this).data('type');
+    //active[type] ? active[type].call(this) : '';
+    });
+
+
+    function dataTableLoadFinished(res,curr,count){
+    var str='';
+    if(document.getElementById("statistics")){
+
+    }else{
+    $('.layui-table-page').after('<div id="statistics"></div>');
+    }
+    var match_id = document.getElementById('match_id').value;
+    var game_code = document.getElementById('game_code').value;
+
+    // res.extras
+    $.ajax({
+    type: 'get',
+    url: '/admin/SoccerStringNoteList/moneycount',
+    data: {where:res.extras,match_id:match_id,game_code:game_code},
+    dataType: 'json',
+    //async: false,
+    success: function (data) {
+    var data=data.data;
+    for(var i in data){
+    data[i]=parseFloat(data[i]);
+    }
+    str+='<p class="bottom-txt">总投注金额:<span class="blue">'+data.all_money+'</span> , 总可赢金额:<span class="red">'+data.all_prize_money+'</span> , 已赢金额:<span class="green">'+data.alraedy_prize_money+'</span></p>'
+    $('#statistics').html(str);
+    var height1=$('.layui-table-view').height();
+    var height2=$('#statistics').height();
+
+    $('.layui-table-view').css({height:(height1+height2)});
+    }
+    });
+
+
+    }
+
+    @endpush
+
+    <script type="text/javascript">
+        //批量结算
+        function batchsettlement(url) {
+            layer.confirm('是否确认批量结算?', {
+                btn: ['确认', '取消'] //按钮
+            }, function() {
+                $.getJSON(url, function(data, textStatus) {
+                    if (data.status == '1') {
+                        reloadDataTable();
+                        layer.msg('批量结算成功');
+                    } else {
+                        layer.msg(data.msg);
+                    }
+                });
+            }, function() {
+
+            });
+
+        }
+        //串关注单结算
+        function settlement(url,id) {
+            layer.confirm('是否确认结算?', {
+                btn: ['确认', '取消'] //按钮
+            }, function() {
+                $.getJSON(url,{id:id}, function(data) {
+                    //console.log(data);
+                    if (data.status == '1') {
+                        layer.msg('结算成功');
+                        reloadDataTable();
+                    } else {
+                        layer.msg(data.msg);
+                    }
+                });
+            }, function() {
+
+            });
+        }
+        //重新结算
+        function resettlement(url) {
+            layer.confirm('是否确认重新结算?', {
+                btn: ['确认', '取消'] //按钮
+            }, function() {
+                $.getJSON(url, function(data, textStatus) {
+                    //console.log(data);
+                    if (data.status == '1') {
+                        reloadDataTable();
+                        layer.msg('重新结算成功');
+                    } else {
+                        layer.msg(data.msg);
+                    }
+                });
+            }, function() {
+
+            });
+
+        }
+
+        //串关注单作废
+        function invalid(url,order_id) {
+            //console.log(order_id);
+            // 请求订单数据
+            $.getJSON("/admin/SoccerStringNoteList/manualmatchget", {'order_id' : order_id}, function(res) {
+                //console.log(res);
+                if(1 == res.status){
+                    const getData = res.data.matchdatas;
+                    let content = '<div class="ibox-content" id="box" style="width: 400px !important;">';
+                    let id = '';
+                    let teamName = '';
+                    let detail = '';
+                    // 拼接玩法数据
+                    for (let o in getData) {
+                        id = getData[o].id;
+                        teamName = getData[o].home_team + ' VS ' + getData[o].guest_team;
+                        detail += getData[o].odds_name+' '+getData[o].condition+'@'+getData[o].odds+'<br>';
+                    }
+                    content +=
+                            '        <div style="margin-top: 20px;margin-left: 15px; margin-bottom: 10px;">' +
+                            '       <div class="col-5 layui-inline">' +
+                            '                <label class="layui-form-label">投注账号:</label>' +
+                            '                <div class="layui-input-inline" style="line-height: 38px;">' + res.data.account_name +
+                            '                </div>' +
+                            '            </div><br>' +
+                            '       <div class="col-5 layui-inline">' +
+                            '                <label class="layui-form-label">模式:</label>' +
+                            '                <div class="layui-input-inline" style="line-height: 38px;">' + res.data.str_type +
+                            '                </div>' +
+                            '            </div><br>' +
+                            '       <div class="col-5 layui-inline">' +
+                            '                <label class="layui-form-label">投注金额 :</label>' +
+                            '                <div class="layui-input-inline" style="line-height: 38px;">' + res.data.money +
+                            '                </div>' +
+                            '            </div><br>' +
+                            '       <div class="col-5 layui-inline">' +
+                            '                <label class="layui-form-label">最高可赢 :</label>' +
+                            '                <div class="layui-input-inline" style="line-height: 38px;">' + res.data.prize_money +
+                            '                </div>' +
+                            '            </div><br>' +
+                            '       <div class="col-5 layui-inline">' +
+                            '                <label class="layui-form-label">下注时间 :</label>' +
+                            '                <div class="layui-input-inline" style="line-height: 38px;">' + res.data.money_time +
+                            '                </div>' +
+                            '            </div><br>' +
+//                                '            <div style="color: #5f5f5f; margin-left: 10px; margin-bottom: 10px;">' + teamName + '</div>' +
+                            '            <div class="col-5 layui-inline">' +
+                            '                <label class="layui-form-label">作废原因:</label>' +
+                            '                <div class="layui-input-inline" style="">' +
+                            '                    <input type="text" name="" id="reason' + id + '" placeholder="请输入作废原因" eventType="event-query" lay-verify="required" autocomplete="off" class="layui-input">' +
+                            '                </div><br>' +
+                            '            </div>' +
+                            '        </div>';
+                    content += '</div>';
+                    // 打开弹窗.
+                    layer.open({
+                        area: ['400px', '480px'], //宽高
+                        type: 1,
+                        title: '注单作废',
+                        content: content, //这里content是一个DOM,注意:最好该元素要存放在body最外层,否则可能被其它的相对元素所影响,
+                        btn: ['提交', '取消'],
+                        yes: function(index, layero){
+                            // 请求设置接口
+                            //console.log(url,order_id);
+                            $.ajax({
+                                type: 'get',
+                                //dataType: 'json',
+                                url: url,
+                                data: {'order_id': order_id},
+                                success: function(res) {
+                                    //console.log(res);
+                                    if (1 == res.status) {
+                                        layer.alert("设置成功", {title: '友情提示', icon: 1, closeBtn: 0}, function(){
+                                            window.location.reload();
+                                        });
+                                    } else {
+                                        layer.alert("服务器异常", {title: '友情提示', icon: 2});
+                                    }
+                                },
+                                error: function () {
+                                    layer.alert("服务器异常", {title: '友情提示', icon: 2});
+                                }
+                            })
+                        },
+                    });
+                } else {
+                    layer.alert("数据拉取失败", {title: '友情提示', icon: 2});
+                }
+
+            });
+//            layer.confirm('是否确认作废?', {
+//                btn: ['确认', '取消'] //按钮
+//            }, function() {
+//                $.getJSON(url, function(data, textStatus) {
+//                    //console.log(data);
+//                    if (data == '1') {
+//                        reloadDataTable();
+//                        layer.msg('作废成功');
+//                    } else {
+//                        layer.msg(data.msg);
+//                    }
+//                });
+//            }, function() {
+//
+//            });
+
+        }
+    </script>
+
+    @include('vip.datatable')
+@endsection