Kirin 3 年之前
父節點
當前提交
d9feea5bd1

+ 40 - 2
app/admin/controller/finance/UserRecharge.php

@@ -3,15 +3,18 @@
 namespace app\admin\controller\finance;
 
 use app\admin\controller\AuthController;
+use crmeb\basic\BaseModel;
+use think\Exception;
 use app\admin\model\user\{User, UserRecharge as UserRechargeModel};
 use app\models\routine\RoutineTemplate;
-use app\models\user\{UserBill, WechatUser as WechatUserWap};
+use app\models\user\{UserBill, UserMoney, WechatUser as WechatUserWap};
 use crmeb\services\{JsonService,
     MiniProgramService,
     WechatService,
     UtilService as Util,
     FormBuilder as Form,
-    WechatTemplateService};
+    WechatTemplateService
+};
 use think\facade\Route as Url;
 
 /**
@@ -54,6 +57,41 @@ class UserRecharge extends AuthController
             return JsonService::fail('删除失败');
     }
 
+    public function pass($id = 0)
+    {
+        if (!$id) return JsonService::fail('缺少参数');
+        $rechargInfo = UserRechargeModel::get($id);
+        if ($rechargInfo->paid == 1) return JsonService::fail('已支付的订单记录无法通过');
+        BaseModel::beginTrans();
+        try {
+            $res = UserMoney::incomeMoney($rechargInfo['uid'], $rechargInfo['recharge_type'], $rechargInfo['price'], 'recharge', '用户充币', '用户充币' . $rechargInfo['price'] . init_money_type()[$rechargInfo['recharge_type']]);
+            if ($res) {
+                $rechargInfo->paid = 1;
+                $rechargInfo->pay_time = time();
+                $rechargInfo->save();
+                BaseModel::commitTrans();
+                return JsonService::successful('通过成功');
+            } else {
+                BaseModel::rollbackTrans();
+                return JsonService::fail(UserMoney::getErrorInfo());
+            }
+        } catch (Exception $e) {
+            BaseModel::rollbackTrans();
+            return JsonService::fail($e->getMessage());
+        }
+    }
+
+    public function cancel($id = 0)
+    {
+        if (!$id) return JsonService::fail('缺少参数');
+        $rechargInfo = UserRechargeModel::get($id);
+        if ($rechargInfo->paid == 1) return JsonService::fail('已通过的订单记录无法驳回');
+        if (UserRechargeModel::where('id', $id)->update(['paid' => 0]))
+            return JsonService::successful('驳回成功');
+        else
+            return JsonService::fail('驳回失败');
+    }
+
     public function get_badge()
     {
         $where = Util::getMore([

+ 33 - 31
app/admin/model/user/UserRecharge.php

@@ -62,9 +62,10 @@ class UserRecharge extends BaseModel
             $model = $model->alias('a');
             $alias .= '.';
         }
-        if ($where['data']) $model = self::getModelTime($where, $model, "{$alias}add_time");
-        if ($where['paid'] != '') $model = $model->where("{$alias}paid", $where['paid']);
-        if ($where['nickname']) $model = $model->where("{$alias}uid|{$alias}order_id" . ($join ? '|' . $join : ''), 'LIKE', "%$where[nickname]%");
+        if (isset($where['data']) && $where['data']) $model = self::getModelTime($where, $model, "{$alias}add_time");
+        if (isset($where['paid']) && $where['paid'] != '') $model = $model->where("{$alias}paid", $where['paid']);
+        if (isset($where['status']) && $where['status'] != '') $model = $model->where("{$alias}paid", $where['paid']);
+        if (isset($where['nickname']) && $where['nickname']) $model = $model->where("{$alias}uid|{$alias}order_id" . ($join ? '|' . $join : ''), 'LIKE', "%$where[nickname]%");
         return $model->order("{$alias}add_time desc");
     }
 
@@ -77,24 +78,24 @@ class UserRecharge extends BaseModel
     public static function getUserRechargeList($where)
     {
         $model = self::setWhere($where, null, 'a', 'u.nickname')->join('user u', 'u.uid=a.uid')->field(['a.*', 'u.nickname', 'u.avatar']);
-        if ($where['excel']) self::saveExcel($model->select()->toArray());
+        if (isset($where['excel']) && $where['excel']) self::saveExcel($model->select()->toArray());
         $data = $model->page($where['page'], $where['limit'])->select();
         $data = count($data) ? $data->toArray() : [];
         foreach ($data as &$item) {
-            switch ($item['recharge_type']) {
-                case 'routine':
-                    $item['_recharge_type'] = '小程序充值';
-                    break;
-                case 'weixin':
-                    $item['_recharge_type'] = '公众号充值';
-                    break;
-                default:
-                    $item['_recharge_type'] = '其他充值';
-                    break;
-            }
+//            switch ($item['recharge_type']) {
+//                case 'routine':
+//                    $item['_recharge_type'] = '小程序充值';
+//                    break;
+//                case 'weixin':
+//                    $item['_recharge_type'] = '公众号充值';
+//                    break;
+//                default:
+//                    $item['_recharge_type'] = '其他充值';
+//                    break;
+//            }
             $item['_pay_time'] = $item['pay_time'] ? date('Y-m-d H:i:s', $item['pay_time']) : '暂无';
             $item['_add_time'] = $item['add_time'] ? date('Y-m-d H:i:s', $item['add_time']) : '暂无';
-            $item['paid_type'] = $item['paid'] ? '已支付' : '未支付';
+            $item['paid_type'] = $item['paid'] == 1 ? '已支付' : ($item['paid'] == 0 ? '未支付/已驳回' : '待审核');
         }
         $count = self::setWhere($where, null, 'a', 'u.nickname')->join('user u', 'u.uid=a.uid')->count();
         return compact('data', 'count');
@@ -104,32 +105,33 @@ class UserRecharge extends BaseModel
     {
         $excel = [];
         foreach ($data as $item) {
-            switch ($item['recharge_type']) {
-                case 'routine':
-                    $item['_recharge_type'] = '小程序充值';
-                    break;
-                case 'weixin':
-                    $item['_recharge_type'] = '公众号充值';
-                    break;
-                default:
-                    $item['_recharge_type'] = '其他充值';
-                    break;
-            }
+//            switch ($item['recharge_type']) {
+//                case 'routine':
+//                    $item['_recharge_type'] = '小程序充值';
+//                    break;
+//                case 'weixin':
+//                    $item['_recharge_type'] = '公众号充值';
+//                    break;
+//                default:
+//                    $item['_recharge_type'] = '其他充值';
+//                    break;
+//            }
             $item['_pay_time'] = $item['pay_time'] ? date('Y-m-d H:i:s', $item['pay_time']) : '暂无';
             $item['_add_time'] = $item['add_time'] ? date('Y-m-d H:i:s', $item['add_time']) : '暂无';
-            $item['paid_type'] = $item['paid'] ? '已支付' : '未支付';
+//            $item['paid_type'] = $item['paid'] ? '已支付' : '未支付';
+            $item['paid_type'] = $item['paid'] == 1 ? '已支付' : ($item['paid'] == 0 ? '未支付/已驳回' : '待审核');
 
             $excel[] = [
                 $item['nickname'],
                 $item['price'],
                 $item['paid_type'],
-                $item['_recharge_type'],
+                $item['recharge_type'],
                 $item['_pay_time'],
-                $item['paid'] == 1 && $item['refund_price'] == $item['price'] ? '已退款' : '未退款',
+//                $item['paid'] == 1 && $item['refund_price'] == $item['price'] ? '已退款' : '未退款',
                 $item['_add_time']
             ];
         }
-        PHPExcelService::setExcelHeader(['昵称/姓名', '充值金额', '是否支付', '充值类型', '支付事件', '是否退款', '添加时间'])
+        PHPExcelService::setExcelHeader(['昵称/姓名', '充值数量', '订单状态', '充值币种', '支付时间', '添加时间'])
             ->setExcelTile('充值记录', '充值记录' . time(), ' 生成时间:' . date('Y-m-d H:i:s', time()))
             ->setExcelContent($excel)
             ->ExcelSave();

+ 161 - 85
app/admin/view/finance/user_recharge/index.php

@@ -6,44 +6,64 @@
 {/block}
 {block name="content"}
 <div class="layui-fluid">
-    <div class="layui-row layui-col-space15"  id="app">
+    <div class="layui-row layui-col-space15" id="app">
         <!--搜索条件-->
         <div class="layui-col-md12">
             <div class="layui-card">
                 <div class="layui-card-header">搜索条件</div>
                 <div class="layui-card-body">
-                    <div class="layui-carousel layadmin-carousel layadmin-shortcut" lay-anim="" lay-indicator="inside" lay-arrow="none" style="background:none">
+                    <div class="layui-carousel layadmin-carousel layadmin-shortcut" lay-anim="" lay-indicator="inside"
+                         lay-arrow="none" style="background:none">
                         <div class="layui-card-body">
                             <div class="layui-row layui-col-space10 layui-form-item">
                                 <div class="layui-col-lg12">
                                     <label class="layui-form-label">时间选择:</label>
                                     <div class="layui-input-block" data-type="data" v-cloak="">
-                                        <button class="layui-btn layui-btn-sm" type="button" v-for="item in dataList" @click="setData(item)" :class="{'layui-btn-primary':where.data!=item.value}">{{item.name}}</button>
-                                        <button class="layui-btn layui-btn-sm" type="button" ref="time" @click="setData({value:'zd',is_zd:true})" :class="{'layui-btn-primary':where.data!='zd'}">自定义</button>
-                                        <button type="button" class="layui-btn layui-btn-sm layui-btn-primary" v-show="showtime==true" ref="date_time">{$year.0} - {$year.1}</button>
+                                        <button class="layui-btn layui-btn-sm" type="button" v-for="item in dataList"
+                                                @click="setData(item)"
+                                                :class="{'layui-btn-primary':where.data!=item.value}">{{item.name}}
+                                        </button>
+                                        <button class="layui-btn layui-btn-sm" type="button" ref="time"
+                                                @click="setData({value:'zd',is_zd:true})"
+                                                :class="{'layui-btn-primary':where.data!='zd'}">自定义
+                                        </button>
+                                        <button type="button" class="layui-btn layui-btn-sm layui-btn-primary"
+                                                v-show="showtime==true" ref="date_time">{$year.0} - {$year.1}
+                                        </button>
                                     </div>
                                 </div>
                                 <div class="layui-col-lg12">
                                     <label class="layui-form-label">支付类型:</label>
                                     <div class="layui-input-block" v-cloak="">
-                                        <button class="layui-btn layui-btn-sm" :class="{'layui-btn-primary':where.paid !== item.value}" @click="where.paid = item.value" type="button" v-for="item in paidStatus">{{item.name}}
-                                            <span v-if="item.count!=undefined" class="layui-badge layui-bg-gray">{{item.count}}</span></button>
+                                        <button class="layui-btn layui-btn-sm"
+                                                :class="{'layui-btn-primary':where.paid !== item.value}"
+                                                @click="where.paid = item.value" type="button"
+                                                v-for="item in paidStatus">{{item.name}}
+                                            <span v-if="item.count!=undefined" class="layui-badge layui-bg-gray">{{item.count}}</span>
+                                        </button>
                                     </div>
                                 </div>
                                 <div class="layui-col-lg12">
                                     <label class="layui-form-label">用户昵称:</label>
                                     <div class="layui-input-block">
-                                        <input type="text" name="nickname" style="width: 50%" v-model="where.nickname" placeholder="请输入姓名、电话、UID" class="layui-input">
+                                        <input type="text" name="nickname" style="width: 50%" v-model="where.nickname"
+                                               placeholder="请输入姓名、电话、UID" class="layui-input">
                                     </div>
                                 </div>
                                 <div class="layui-col-lg12">
                                     <div class="layui-input-block">
-                                        <button @click="search" type="button" class="layui-btn layui-btn-sm layui-btn-normal">
-                                            <i class="layui-icon layui-icon-search"></i>搜索</button>
-                                        <button @click="excel" type="button" class="layui-btn layui-btn-warm layui-btn-sm export" type="button">
-                                            <i class="fa fa-floppy-o" style="margin-right: 3px;"></i>导出</button>
-                                        <button @click="refresh" type="reset" class="layui-btn layui-btn-primary layui-btn-sm">
-                                            <i class="layui-icon layui-icon-refresh" ></i>刷新</button>
+                                        <button @click="search" type="button"
+                                                class="layui-btn layui-btn-sm layui-btn-normal">
+                                            <i class="layui-icon layui-icon-search"></i>搜索
+                                        </button>
+                                        <button @click="excel" type="button"
+                                                class="layui-btn layui-btn-warm layui-btn-sm export" type="button">
+                                            <i class="fa fa-floppy-o" style="margin-right: 3px;"></i>导出
+                                        </button>
+                                        <button @click="refresh" type="reset"
+                                                class="layui-btn layui-btn-primary layui-btn-sm">
+                                            <i class="layui-icon layui-icon-refresh"></i>刷新
+                                        </button>
                                     </div>
                                 </div>
                             </div>
@@ -54,7 +74,8 @@
         </div>
         <!--end-->
         <!-- 中间详细信息-->
-        <div :class="item.col!=undefined ? 'layui-col-sm'+item.col+' '+'layui-col-md'+item.col:'layui-col-sm6 layui-col-md3'" v-for="item in badge" v-cloak="" v-if="item.count > 0">
+        <div :class="item.col!=undefined ? 'layui-col-sm'+item.col+' '+'layui-col-md'+item.col:'layui-col-sm6 layui-col-md3'"
+             v-for="item in badge" v-cloak="" v-if="item.count > 0">
             <div class="layui-card">
                 <div class="layui-card-header">
                     {{item.name}}
@@ -80,11 +101,24 @@
                     <script type="text/html" id="avatar">
                         <img style="cursor: pointer" lay-event='open_image' src="{{d.avatar}}">
                     </script>
+                    <script type="text/html" id="proof">
+                        {{# if(d.proof){ }}
+                        <img style="cursor: pointer" lay-event='open_proof' src="{{d.proof}}">
+                        {{# }else{  }}
+                        --
+                        {{# } }}
+                    </script>
                     <script type="text/html" id="act">
-                        {{# if(d.paid && parseFloat(d.refund_price) <= 0) { }}
-                        <button type="button" class="layui-btn layui-btn-xs layui-btn-normal" lay-event='refund'>退款</button>
+                        {{# if(d.paid == 1 && parseFloat(d.refund_price) <= 0) { }}
+                        <!--                        <button type="button" class="layui-btn layui-btn-xs layui-btn-normal" lay-event='refund'>退款</button>-->
                         {{# }else if(d.paid == 0){ }}
-                        <button type="button" class="layui-btn layui-btn-xs layui-btn-danger" lay-event='delect'>删除</button>
+                        <button type="button" class="layui-btn layui-btn-xs layui-btn-danger" lay-event='delect'>删除
+                        </button>
+                        {{# }else if(d.paid == 2){ }}
+                        <button type="button" class="layui-btn layui-btn-xs layui-btn-danger" lay-event='pass'>审核通过
+                        </button>
+                        <button type="button" class="layui-btn layui-btn-xs layui-btn-danger" lay-event='cancel'>审核不通过
+                        </button>
                         {{# }else{ }}
                         <button type="button" class="layui-btn layui-btn-xs layui-btn-disabled">暂无操作</button>
                         {{# } }}
@@ -99,31 +133,32 @@
 {block name="script"}
 <script>
     layList.form.render();
-    layList.tableList('userList',"{:Url('get_user_recharge_list')}",function () {
+    layList.tableList('userList', "{:Url('get_user_recharge_list')}", function () {
         return [
-            {field: 'uid', title: 'UID', sort: true,width:'5%'},
-            {field: 'avatar', title: '头像',templet:'#avatar'},
+            {field: 'uid', title: 'UID', sort: true, width: '5%'},
+            {field: 'avatar', title: '头像', templet: '#avatar'},
             {field: 'nickname', title: '用户昵称'},
             {field: 'order_id', title: '订单号'},
-            {field: 'price', title: '支付金额',sort:true},
-            {field: 'paid_type', title: '是否支付'},
-            {field: '_recharge_type', title: '充值类型'},
+            {field: 'price', title: '充币数量', sort: true},
+            {field: 'paid_type', title: '订单状态'},
+            {field: 'recharge_type', title: '充值币种'},
+            {field: 'proof', title: '充值凭证', templet: '#proof'},
             {field: '_pay_time', title: '支付时间'},
-            {field: 'right', title: '操作',toolbar:'#act',width:'5%'},
+            {field: 'right', title: '操作', toolbar: '#act', width: '5%'},
         ];
     });
-    layList.date({elem:'#start_time',theme:'#393D49',type:'datetime'});
-    layList.date({elem:'#end_time',theme:'#393D49',type:'datetime'});
-    layList.search('search',function(where){
-        if(where.start_time!='' && where.end_time=='') return layList.msg('请选择结束时间')
-        if(where.end_time!='' && where.start_time=='') return layList.msg('请选择开始时间')
+    layList.date({elem: '#start_time', theme: '#393D49', type: 'datetime'});
+    layList.date({elem: '#end_time', theme: '#393D49', type: 'datetime'});
+    layList.search('search', function (where) {
+        if (where.start_time != '' && where.end_time == '') return layList.msg('请选择结束时间')
+        if (where.end_time != '' && where.start_time == '') return layList.msg('请选择开始时间')
         console.log(where);
-        layList.reload(where,true);
+        layList.reload(where, true);
     });
-    layList.tool(function (event,data,obj) {
+    layList.tool(function (event, data, obj) {
         switch (event) {
             case 'open_image':
-                if($eb)
+                if ($eb)
                     $eb.openImage(data.avatar);
                 else
                     layList.layer.open({
@@ -131,30 +166,72 @@
                         title: false,
                         closeBtn: 0,
                         shadeClose: true,
-                        content: '<img src="'+data.avatar+'" style="display: block;width: 100%;" />'
+                        content: '<img src="' + data.avatar + '" style="display: block;width: 100%;" />'
+                    });
+                break;
+            case 'open_proof':
+                if ($eb)
+                    $eb.openImage(data.proof);
+                else
+                    layList.layer.open({
+                        type: 1,
+                        title: false,
+                        closeBtn: 0,
+                        shadeClose: true,
+                        content: '<img src="' + data.proof + '" style="display: block;width: 100%;" />'
                     });
                 break;
             case 'refund':
-                $eb.createModalFrame('退款',layList.U({a:'edit',q:{id:data.id}}),{h:'300',w:'500'});
+                $eb.createModalFrame('退款', layList.U({a: 'edit', q: {id: data.id}}), {h: '300', w: '500'});
                 break;
             case 'delect':
-                var url =layList.U({a:'delect',p:{id:data.id}});
-                if (data.paid) return layList.msg('已支付的记录无法删除!');
-                $eb.$swal('delete',function(){
-                    $eb.axios.get(url).then(function(res){
-                        if(res.status == 200 && res.data.code == 200) {
-                            $eb.$swal('success',res.data.msg);
-                            obj.del();
-                        }else
+                var url = layList.U({a: 'delect', p: {id: data.id}});
+                if (data.paid) return layList.msg('已通过的记录无法删除!');
+                $eb.$swal('delete', function () {
+                    $eb.axios.get(url).then(function (res) {
+                        if (res.status == 200 && res.data.code == 200) {
+                            $eb.$swal('success', res.data.msg);
+                            layList.reload();
+                        } else
                             return Promise.reject(res.data.msg || '删除失败')
-                    }).catch(function(err){
-                        $eb.$swal('error',err);
+                    }).catch(function (err) {
+                        $eb.$swal('error', err);
+                    });
+                }, {'title': '您确定要删除此条充值记录吗?', 'text': '删除后将无法恢复,请谨慎操作!', 'confirm': '是的,我要删除'})
+                break;
+            case 'pass':
+                var url = layList.U({a: 'pass', p: {id: data.id}});
+                if (data.paid === 1) return layList.msg('已通过的记录无法再次通过!');
+                $eb.$swal('delete', function () {
+                    $eb.axios.get(url).then(function (res) {
+                        if (res.status == 200 && res.data.code == 200) {
+                            $eb.$swal('success', res.data.msg);
+                            layList.reload();
+                        } else
+                            return Promise.reject(res.data.msg || '审核失败')
+                    }).catch(function (err) {
+                        $eb.$swal('error', err);
+                    });
+                }, {'title': '您确定要通过此条充值记录吗?', 'text': '请确认是否通过', 'confirm': '是的,我要通过'})
+                break;
+            case 'cancel':
+                var url = layList.U({a: 'cancel', p: {id: data.id}});
+                if (data.paid === 1) return layList.msg('已通过的记录无法驳回!');
+                $eb.$swal('delete', function () {
+                    $eb.axios.get(url).then(function (res) {
+                        if (res.status == 200 && res.data.code == 200) {
+                            $eb.$swal('success', res.data.msg);
+                            layList.reload();
+                        } else
+                            return Promise.reject(res.data.msg || '驳回失败')
+                    }).catch(function (err) {
+                        $eb.$swal('error', err);
                     });
-                },{'title':'您确定要删除此条充值记录吗?','text':'删除后将无法恢复,请谨慎操作!','confirm':'是的,我要删除'})
+                }, {'title': '您确定要驳回此条充值记录吗?', 'text': '请确认是否驳回', 'confirm': '是的,我要驳回'})
                 break;
         }
     });
-    require(['vue'],function(Vue) {
+    require(['vue'], function (Vue) {
         new Vue({
             el: "#app",
             data: {
@@ -168,62 +245,61 @@
                     {name: '本月', value: 'month'},
                     {name: '本年', value: 'year'},
                 ],
-                paidStatus:[
-                    {name:'全部',value:''},
-                    {name:'已支付',value:1},
-                    {name:'未支付',value:0},
+                paidStatus: [
+                    {name: '全部', value: ''},
+                    {name: '已支付', value: 1},
+                    {name: '未支付/已驳回', value: 0},
+                    {name: '待审核', value: 2},
                 ],
-                where:{
-                    data:'',
-                    paid:'',
+                where: {
+                    data: '',
+                    paid: '',
                     nickname: '',
-                    excel:0,
+                    excel: 0,
                 },
                 showtime: false,
             },
-            watch:{
-
-            },
-            methods:{
-                getBadge:function(){
-                    var that=this;
-                    layList.basePost(layList.Url({a:'get_badge'}),this.where,function (rem) {
-                        that.badge=rem.data;
+            watch: {},
+            methods: {
+                getBadge: function () {
+                    var that = this;
+                    layList.basePost(layList.Url({a: 'get_badge'}), this.where, function (rem) {
+                        that.badge = rem.data;
                     });
                 },
-                setData:function(item){
-                    var that=this;
-                    if(item.is_zd==true){
-                        that.showtime=true;
-                        this.where.data=this.$refs.date_time.innerText;
-                    }else{
-                        this.showtime=false;
-                        this.where.data=item.value;
+                setData: function (item) {
+                    var that = this;
+                    if (item.is_zd == true) {
+                        that.showtime = true;
+                        this.where.data = this.$refs.date_time.innerText;
+                    } else {
+                        this.showtime = false;
+                        this.where.data = item.value;
                     }
                 },
-                search:function () {
-                    this.where.excel=0;
+                search: function () {
+                    this.where.excel = 0;
                     this.getBadge();
-                    layList.reload(this.where,true);
+                    layList.reload(this.where, true);
                 },
-                excel:function () {
-                    this.where.excel=1;
-                    location.href=layList.U({a:'get_user_recharge_list',q:this.where});
+                excel: function () {
+                    this.where.excel = 1;
+                    location.href = layList.U({a: 'get_user_recharge_list', q: this.where});
                 },
-                refresh:function () {
+                refresh: function () {
                     layList.reload();
                     this.getBadge();
                 }
             },
-            mounted:function () {
+            mounted: function () {
                 this.getBadge();
                 layList.laydate.render({
-                    elem:this.$refs.date_time,
-                    trigger:'click',
-                    eventElem:this.$refs.time,
-                    range:true,
-                    change:function (value){
-                        that.where.data=value;
+                    elem: this.$refs.date_time,
+                    trigger: 'click',
+                    eventElem: this.$refs.time,
+                    range: true,
+                    change: function (value) {
+                        that.where.data = value;
                     }
                 });
                 window.SuccessFun = this.search

+ 1 - 1
app/admin/view/index/index.php

@@ -5,7 +5,7 @@
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <meta name="renderer" content="webkit">
     <meta http-equiv="Cache-Control" content="no-siteapp" />
-    <title>BTEX管理系统</title>
+    <title>尤交易所管理系统</title>
     <!--[if lt IE 9]>
     <meta http-equiv="refresh" content="0;ie.html" />
     <![endif]-->

+ 18 - 1
app/api/controller/user/UserRechargeController.php

@@ -2,6 +2,7 @@
 
 namespace app\api\controller\user;
 
+use app\admin\model\user\UserRecharge as UserRechargeModel;
 use app\models\system\SystemGroupData;
 use app\models\user\UserRecharge;
 use app\Request;
@@ -108,10 +109,26 @@ class UserRechargeController
         }
     }
 
+    public function rechargeList(Request $request)
+    {
+        $where = UtilService::getMore([
+            ['status', ''],
+            ['page', 1],
+            ['limit', 10,],
+        ], $request);
+        return app('json')->successful('ok', UserRechargeModel::getUserRechargeList($where));
+    }
+
     public function moneyRecharge(Request $request)
     {
         list($num, $money_type) = UtilService::postMore([
-            ['num', 0], ['money_type', 0]
+            ['num', 0], ['money_type', 0, '', '', [function ($item) {
+                $money_type = init_money_type();
+                if (!isset($money_type[$item]))
+                    return false;
+                else
+                    return true;
+            }], ['请选择正确的币种']]
         ], $request, true);
         if (!$num || $num <= 0) return app('json')->fail('参数错误');
 

+ 3 - 0
route/api/route.php

@@ -206,6 +206,9 @@ Route::group(function () {
     Route::post('recharge/routine', 'user.UserRechargeController/routine')->name('rechargeRoutine');//小程序充值
     Route::post('recharge/wechat', 'user.UserRechargeController/wechat')->name('rechargeWechat');//公众号充值
     Route::get('recharge/index', 'user.UserRechargeController/index')->name('rechargeQuota');//充值余额选择
+    Route::post('recharge/money', 'user.UserRechargeController/moneyRecharge')->name('moneyRecharge');//虚拟币充值下单
+    Route::post('recharge/money/:id', 'user.UserRechargeController/uploadProof')->name('uploadProof');//上传凭证
+    Route::get('recharge/list', 'user.UserRechargeController/rechargeList')->name('rechargeList');//充币列表
     //会员等级类
     Route::get('menu/user', 'PublicController/menu_user')->name('menuUser');//个人中心菜单
     Route::get('user/level/detection', 'user.UserLevelController/detection')->name('userLevelDetection');//检测用户是否可以成为会员