Kirin 3 年之前
父節點
當前提交
92221a1996

+ 2 - 0
app/admin/model/user/UserExtract.php

@@ -88,10 +88,12 @@ class UserExtract extends BaseModel
         $data = self::get($id);
         $extract_number = $data['extract_price'];
         $mark = '提现失败,退回' . $extract_number . init_money_type()[$data['money_type']];
+        $mark2 = '提现失败,退回' . $data['service'] . init_money_type()[$data['service_type']] . '手续费';
         $uid = $data['uid'];
         $status = -1;
 //        $User = User::where('uid', $uid)->find()->toArray();
         UserMoney::incomeMoney($uid, $data['money_type'], $extract_number, 'extract_fail', '提币失败', $mark);
+        if ($data['service'] > 0) UserMoney::incomeMoney($uid, $data['service_type'], $data['service'], 'extract_fail_service', '提币失败退回手续费', $mark2);
 //        UserBill::income('提现失败', $uid, 'now_money', 'extract', $extract_number, $id, bcadd($User['now_money'], $extract_number, 2), $mark);
 //        User::bcInc($uid, 'brokerage_price', $extract_number, 'uid');
 //        $extract_type = '未知方式';

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

@@ -94,7 +94,7 @@
             <a href="javascript:void(0);" class="roll-nav roll-right J_tabReply" title="返回"><i class="fa fa-reply"></i> </a>
             <a href="javascript:void(0);" class="roll-nav roll-right J_tabRefresh" title="刷新"><i class="fa fa-refresh"></i> </a>
             <a href="javascript:void(0);" class="roll-nav roll-right J_tabFullScreen" title="全屏"><i class="fa fa-arrows"></i> </a>
-            <a href="javascript:void(0);" class="roll-nav roll-right J_notice" data-toggle="dropdown" aria-expanded="true" title="消息"><i class="fa fa-bell"></i> <span class="badge badge-danger" id="msgcount">0</span></a>
+<!--            <a href="javascript:void(0);" class="roll-nav roll-right J_notice" data-toggle="dropdown" aria-expanded="true" title="消息"><i class="fa fa-bell"></i> <span class="badge badge-danger" id="msgcount">0</span></a>-->
             <ul class="dropdown-menu dropdown-alerts dropdown-menu-right" >
                 <li>
                     <a class="J_menuItem" href="{:Url('order.store_order/index')}">

+ 143 - 143
app/admin/view/index/main.php

@@ -7,42 +7,42 @@
 {/block}
 {block name="content"}
     <div class="row">
-        <div class="col-sm-3 ui-sortable">
-            <div class="ibox float-e-margins">
-                <div class="ibox-title">
-                    <span class="label label-danger pull-right">急</span>
-                    <h5>订单</h5>
-                </div>
-                <div class="ibox-content">
-                    <h1 class="no-margins">{$topData.orderDeliveryNum}</h1>
-                    <small><a href="javascript:;" class="opFrames" data-name="订单管理" data-href="{:Url('order.store_order/index',['status'=>1])}">待发货</a> </small>
-                </div>
-            </div>
-        </div>
-        <div class="col-sm-3 ui-sortable">
-            <div class="ibox float-e-margins">
-                <div class="ibox-title">
-                    <span class="label label-info pull-right">待</span>
-                    <h5>订单</h5>
-                </div>
-                <div class="ibox-content">
-                    <h1 class="no-margins">{$topData.orderRefundNum}</h1>
-                    <small><a href="javascript:;" class="opFrames" data-name="订单管理" data-href="{:Url('order.store_order/index',['status'=>-1])}">退换货</a></small>
-                </div>
-            </div>
-        </div>
-        <div class="col-sm-3 ui-sortable" >
-            <div class="ibox float-e-margins">
-                <div class="ibox-title">
-                    <span class="label label-danger pull-right">急</span>
-                    <h5>商品</h5>
-                </div>
-                <div class="ibox-content">
-                    <h1 class="no-margins">{$topData.stockProduct}</h1>
-                    <small><a href="javascript:;" class="opFrames" data-name="商品管理" data-href="{:Url('store.store_product/index',array('type'=>5))}">库存预警</a></small>
-                </div>
-            </div>
-        </div>
+<!--        <div class="col-sm-3 ui-sortable">-->
+<!--            <div class="ibox float-e-margins">-->
+<!--                <div class="ibox-title">-->
+<!--                    <span class="label label-danger pull-right">急</span>-->
+<!--                    <h5>订单</h5>-->
+<!--                </div>-->
+<!--                <div class="ibox-content">-->
+<!--                    <h1 class="no-margins">{$topData.orderDeliveryNum}</h1>-->
+<!--                    <small><a href="javascript:;" class="opFrames" data-name="订单管理" data-href="{:Url('order.store_order/index',['status'=>1])}">待发货</a> </small>-->
+<!--                </div>-->
+<!--            </div>-->
+<!--        </div>-->
+<!--        <div class="col-sm-3 ui-sortable">-->
+<!--            <div class="ibox float-e-margins">-->
+<!--                <div class="ibox-title">-->
+<!--                    <span class="label label-info pull-right">待</span>-->
+<!--                    <h5>订单</h5>-->
+<!--                </div>-->
+<!--                <div class="ibox-content">-->
+<!--                    <h1 class="no-margins">{$topData.orderRefundNum}</h1>-->
+<!--                    <small><a href="javascript:;" class="opFrames" data-name="订单管理" data-href="{:Url('order.store_order/index',['status'=>-1])}">退换货</a></small>-->
+<!--                </div>-->
+<!--            </div>-->
+<!--        </div>-->
+<!--        <div class="col-sm-3 ui-sortable" >-->
+<!--            <div class="ibox float-e-margins">-->
+<!--                <div class="ibox-title">-->
+<!--                    <span class="label label-danger pull-right">急</span>-->
+<!--                    <h5>商品</h5>-->
+<!--                </div>-->
+<!--                <div class="ibox-content">-->
+<!--                    <h1 class="no-margins">{$topData.stockProduct}</h1>-->
+<!--                    <small><a href="javascript:;" class="opFrames" data-name="商品管理" data-href="{:Url('store.store_product/index',array('type'=>5))}">库存预警</a></small>-->
+<!--                </div>-->
+<!--            </div>-->
+<!--        </div>-->
         <div class="col-sm-3 ui-sortable">
             <div class="ibox float-e-margins">
                 <div class="ibox-title">
@@ -55,38 +55,38 @@
                 </div>
             </div>
         </div>
-        <div class="col-sm-3 ui-sortable">
-            <div class="ibox float-e-margins">
-                <div class="ibox-title">
-                    <span class="label label-info pull-right">昨</span>
-                    <h5>订单</h5>
-                </div>
-                <div class="ibox-content">
-                    <h1 class="no-margins">{$first_line.d_num.data}</h1>
-                    <div class="stat-percent font-bold text-navy">
-                        {$first_line.d_num.percent}%
-                        {if condition='$first_line.d_num.is_plus egt 0'}<i class="fa {if condition='$first_line.d_num.is_plus eq 1'}fa-level-up{else /}fa-level-down{/if}"></i>{/if}
-                    </div>
-                    <small><a href="javascript:;" class="opFrames" data-name="订单管理" data-href="{:Url('order.store_order/index')}?data=yesterday">昨日支付订单数</a></small>
-                </div>
-            </div>
-        </div>
-        <div class="col-sm-3 ui-sortable">
-            <div class="ibox float-e-margins">
-                <div class="ibox-title">
-                    <span class="label label-info pull-right">昨</span>
-                    <h5>交易</h5>
-                </div>
-                <div class="ibox-content">
-                    <h1 class="no-margins">{$first_line.d_price.data}</h1>
-                    <div class="stat-percent font-bold text-info">
-                        {$first_line.d_price.percent}%
-                        {if condition='$first_line.d_price.is_plus egt 0'}<i class="fa {if condition='$first_line.d_price.is_plus eq 1'}fa-level-up{else /}fa-level-down{/if}"></i>{/if}
-                    </div>
-                    <small><a href="javascript:;" class="opFrames" data-name="订单管理" data-href="{:Url('order.store_order/index')}?data=yesterday">昨日交易额</a></small>
-                </div>
-            </div>
-        </div>
+<!--        <div class="col-sm-3 ui-sortable">-->
+<!--            <div class="ibox float-e-margins">-->
+<!--                <div class="ibox-title">-->
+<!--                    <span class="label label-info pull-right">昨</span>-->
+<!--                    <h5>订单</h5>-->
+<!--                </div>-->
+<!--                <div class="ibox-content">-->
+<!--                    <h1 class="no-margins">{$first_line.d_num.data}</h1>-->
+<!--                    <div class="stat-percent font-bold text-navy">-->
+<!--                        {$first_line.d_num.percent}%-->
+<!--                        {if condition='$first_line.d_num.is_plus egt 0'}<i class="fa {if condition='$first_line.d_num.is_plus eq 1'}fa-level-up{else /}fa-level-down{/if}"></i>{/if}-->
+<!--                    </div>-->
+<!--                    <small><a href="javascript:;" class="opFrames" data-name="订单管理" data-href="{:Url('order.store_order/index')}?data=yesterday">昨日支付订单数</a></small>-->
+<!--                </div>-->
+<!--            </div>-->
+<!--        </div>-->
+<!--        <div class="col-sm-3 ui-sortable">-->
+<!--            <div class="ibox float-e-margins">-->
+<!--                <div class="ibox-title">-->
+<!--                    <span class="label label-info pull-right">昨</span>-->
+<!--                    <h5>交易</h5>-->
+<!--                </div>-->
+<!--                <div class="ibox-content">-->
+<!--                    <h1 class="no-margins">{$first_line.d_price.data}</h1>-->
+<!--                    <div class="stat-percent font-bold text-info">-->
+<!--                        {$first_line.d_price.percent}%-->
+<!--                        {if condition='$first_line.d_price.is_plus egt 0'}<i class="fa {if condition='$first_line.d_price.is_plus eq 1'}fa-level-up{else /}fa-level-down{/if}"></i>{/if}-->
+<!--                    </div>-->
+<!--                    <small><a href="javascript:;" class="opFrames" data-name="订单管理" data-href="{:Url('order.store_order/index')}?data=yesterday">昨日交易额</a></small>-->
+<!--                </div>-->
+<!--            </div>-->
+<!--        </div>-->
         <div class="col-sm-3 ui-sortable">
             <div class="ibox float-e-margins">
                 <div class="ibox-title">
@@ -122,80 +122,80 @@
 
     </div>
 <div id="app">
-    <div class="row">
-        <div class="col-lg-12">
-            <div class="ibox float-e-margins">
-                <div class="ibox-title">
-                    <h5>订单</h5>
-                    <div class="pull-right">
-                        <div class="btn-group">
-                            <button type="button" class="btn btn-xs btn-white" :class="{'active': active == 'thirtyday'}" v-on:click="getlist('thirtyday')">30天</button>
-                            <button type="button" class="btn btn-xs btn-white" :class="{'active': active == 'week'}" v-on:click="getlist('week')">周</button>
-                            <button type="button" class="btn btn-xs btn-white" :class="{'active': active == 'month'}" v-on:click="getlist('month')">月</button>
-                            <button type="button" class="btn btn-xs btn-white" :class="{'active': active == 'year'}" v-on:click="getlist('year')">年</button>
-                        </div>
-                    </div>
-                </div>
-                <div class="ibox-content">
-                    <div class="row">
-                        <div class="col-lg-9">
-                            <div class="flot-chart-content echarts" ref="order_echart" id="flot-dashboard-chart1"></div>
-                        </div>
-                        <div class="col-lg-3">
-                            <ul class="stat-list">
-                                <li>
-                                    <h2 class="no-margins ">{{pre_cycleprice}}</h2>
-                                    <small>{{precyclename}}销售额</small>
-                                </li>
-                                <li>
-                                    <h2 class="no-margins ">{{cycleprice}}</h2>
-                                    <small>{{cyclename}}销售额</small>
-                                    <div class="stat-percent text-navy" v-if='cycleprice_is_plus ===1'>
-                                        {{cycleprice_percent}}%
-                                        <i  class="fa fa-level-up"></i>
-                                    </div>
-                                    <div class="stat-percent text-danger" v-else-if='cycleprice_is_plus === -1'>
-                                        {{cycleprice_percent}}%
-                                        <i class="fa fa-level-down"></i>
-                                    </div>
-                                    <div class="stat-percent" v-else>
-                                        {{cycleprice_percent}}%
-                                    </div>
-                                    <div class="progress progress-mini">
-                                        <div :style="{width:cycleprice_percent+'%'}" class="progress-bar box"></div>
-                                    </div>
-                                </li>
-                                <li>
-                                    <h2 class="no-margins ">{{pre_cyclecount}}</h2>
-                                    <small>{{precyclename}}订单总数</small>
-                                </li>
-                                <li>
-                                    <h2 class="no-margins">{{cyclecount}}</h2>
-                                    <small>{{cyclename}}订单总数</small>
-                                    <div class="stat-percent text-navy" v-if='cyclecount_is_plus ===1'>
-                                        {{cyclecount_percent}}%
-                                        <i class="fa fa-level-up"></i>
-                                    </div>
-                                    <div class="stat-percent text-danger" v-else-if='cyclecount_is_plus === -1'>
-                                        {{cyclecount_percent}}%
-                                        <i  class="fa fa-level-down"></i>
-                                    </div>
-                                    <div class="stat-percent " v-else>
-                                        {{cyclecount_percent}}%
-                                    </div>
-                                    <div class="progress progress-mini">
-                                        <div :style="{width:cyclecount_percent+'%'}" class="progress-bar box"></div>
-                                    </div>
-                                </li>
-
-
-                            </ul>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
+<!--    <div class="row">-->
+<!--        <div class="col-lg-12">-->
+<!--            <div class="ibox float-e-margins">-->
+<!--                <div class="ibox-title">-->
+<!--                    <h5>订单</h5>-->
+<!--                    <div class="pull-right">-->
+<!--                        <div class="btn-group">-->
+<!--                            <button type="button" class="btn btn-xs btn-white" :class="{'active': active == 'thirtyday'}" v-on:click="getlist('thirtyday')">30天</button>-->
+<!--                            <button type="button" class="btn btn-xs btn-white" :class="{'active': active == 'week'}" v-on:click="getlist('week')">周</button>-->
+<!--                            <button type="button" class="btn btn-xs btn-white" :class="{'active': active == 'month'}" v-on:click="getlist('month')">月</button>-->
+<!--                            <button type="button" class="btn btn-xs btn-white" :class="{'active': active == 'year'}" v-on:click="getlist('year')">年</button>-->
+<!--                        </div>-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--                <div class="ibox-content">-->
+<!--                    <div class="row">-->
+<!--                        <div class="col-lg-9">-->
+<!--                            <div class="flot-chart-content echarts" ref="order_echart" id="flot-dashboard-chart1"></div>-->
+<!--                        </div>-->
+<!--                        <div class="col-lg-3">-->
+<!--                            <ul class="stat-list">-->
+<!--                                <li>-->
+<!--                                    <h2 class="no-margins ">{{pre_cycleprice}}</h2>-->
+<!--                                    <small>{{precyclename}}销售额</small>-->
+<!--                                </li>-->
+<!--                                <li>-->
+<!--                                    <h2 class="no-margins ">{{cycleprice}}</h2>-->
+<!--                                    <small>{{cyclename}}销售额</small>-->
+<!--                                    <div class="stat-percent text-navy" v-if='cycleprice_is_plus ===1'>-->
+<!--                                        {{cycleprice_percent}}%-->
+<!--                                        <i  class="fa fa-level-up"></i>-->
+<!--                                    </div>-->
+<!--                                    <div class="stat-percent text-danger" v-else-if='cycleprice_is_plus === -1'>-->
+<!--                                        {{cycleprice_percent}}%-->
+<!--                                        <i class="fa fa-level-down"></i>-->
+<!--                                    </div>-->
+<!--                                    <div class="stat-percent" v-else>-->
+<!--                                        {{cycleprice_percent}}%-->
+<!--                                    </div>-->
+<!--                                    <div class="progress progress-mini">-->
+<!--                                        <div :style="{width:cycleprice_percent+'%'}" class="progress-bar box"></div>-->
+<!--                                    </div>-->
+<!--                                </li>-->
+<!--                                <li>-->
+<!--                                    <h2 class="no-margins ">{{pre_cyclecount}}</h2>-->
+<!--                                    <small>{{precyclename}}订单总数</small>-->
+<!--                                </li>-->
+<!--                                <li>-->
+<!--                                    <h2 class="no-margins">{{cyclecount}}</h2>-->
+<!--                                    <small>{{cyclename}}订单总数</small>-->
+<!--                                    <div class="stat-percent text-navy" v-if='cyclecount_is_plus ===1'>-->
+<!--                                        {{cyclecount_percent}}%-->
+<!--                                        <i class="fa fa-level-up"></i>-->
+<!--                                    </div>-->
+<!--                                    <div class="stat-percent text-danger" v-else-if='cyclecount_is_plus === -1'>-->
+<!--                                        {{cyclecount_percent}}%-->
+<!--                                        <i  class="fa fa-level-down"></i>-->
+<!--                                    </div>-->
+<!--                                    <div class="stat-percent " v-else>-->
+<!--                                        {{cyclecount_percent}}%-->
+<!--                                    </div>-->
+<!--                                    <div class="progress progress-mini">-->
+<!--                                        <div :style="{width:cyclecount_percent+'%'}" class="progress-bar box"></div>-->
+<!--                                    </div>-->
+<!--                                </li>-->
+<!---->
+<!---->
+<!--                            </ul>-->
+<!--                        </div>-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </div>-->
+<!--        </div>-->
+<!--    </div>-->
     <div class="row" >
         <div class="col-lg-12">
             <div class="ibox float-e-margins">
@@ -435,7 +435,7 @@
             },
             mounted:function () {
                 const self = this;
-                this.setChart(self.$refs.order_echart,'order_echart');//订单图表
+                // this.setChart(self.$refs.order_echart,'order_echart');//订单图表
                 this.setChart(self.$refs.user_echart,'user_echart');//用户图表
                 this.info();
                 this.getlist();

+ 3 - 3
app/api/controller/AuthController.php

@@ -229,13 +229,13 @@ class AuthController
      */
     public function register(Request $request)
     {
-        list($phone, $email, $captcha, $password, $trade_password, $invite_code) = UtilService::postMore([['phone', ''], ['email', ''], ['captcha', ''], ['password', ''], ['trade_password', ''], ['invite_code', '']], $request, true);
+        list($phone, $email, $captcha, $password, $check_psw, $trade_password, $check_trade_psw, $invite_code) = UtilService::postMore([['phone', ''], ['email', ''], ['captcha', ''], ['password', ''], ['check_psw'], ['trade_password', ''], ['check_trade_psw', ''], ['invite_code', '']], $request, true);
         try {
             validate(RegisterValidates::class)->scene('register')->check(['phone' => $phone, 'email' => $email, 'captcha' => $captcha, 'password' => $password, 'trade_password' => $trade_password]);
         } catch (ValidateException $e) {
             return app('json')->fail($e->getError());
         }
-        if (!$invite_code && User::count() > 0) return app('json')->fail('请输入邀请码');
+//        if (!$invite_code && User::count() > 0) return app('json')->fail('请输入邀请码');
         if ($phone) {
             if (!$captcha) {
                 return app('json')->fail('请输入验证码');
@@ -256,7 +256,7 @@ class AuthController
             return app('json')->fail('交易密码为6位数字');
         if ($password == '123456') return app('json')->fail('密码太过简单,请输入较为复杂的密码');
         if ($trade_password == '123456') return app('json')->fail('交易密码太过简单,请输入较为复杂的密码');
-        $spread = User::where('invite_code', $invite_code)->value('uid');
+        $spread = User::where('invite_code', $invite_code)->value('uid') ?: 0;
         $registerStatus = User::register($phone ? $phone : $email, $password, $trade_password, $spread);
         if ($registerStatus) return app('json')->success('注册成功');
         return app('json')->fail(User::getErrorInfo('注册失败'));

+ 61 - 0
app/api/controller/trade/CashTradeController.php

@@ -61,6 +61,67 @@ class CashTradeController
         return app('json')->success('ok', $new);
     }
 
+    public function all_money(Request $request)
+    {
+        $list = sys_data('money_type');
+        $new = [];
+        foreach ($list as $v) {
+            if (explode('_', $v['code'])[0] == "USDT") {
+                if ($v['price'] <= 0) {
+                    //计算前一天成交的平均价格
+                    $v['price'] = CashTradeOrder::averagePrice($v['code']);
+                }
+                $usdt_price = $v['price'];
+            }
+            if ($request->uid())
+                $v['wallet'] = UserMoney::initialUserMoney($request->uid(), $v['code']);
+            unset($v['cash_commission_ratio']);
+            unset($v['cash_commission_type']);
+            unset($v['can_cash']);
+            unset($v['can_trade']);
+            unset($v['is_trade']);
+            $new[] = $v;
+        }
+        foreach ($new as $k => $v) {
+            $new[$k]['usdt'] = (isset($usdt_price) && $usdt_price > 0) ? bcdiv($new[$k]['price'], $usdt_price, 8) : 0;
+        }
+        return app('json')->success('ok', $new);
+    }
+
+    public function can_cash_money(Request $request)
+    {
+        $list = sys_data('money_type');
+        $new = [];
+        foreach ($list as $v) {
+            if (explode('_', $v['code'])[0] == "USDT") {
+                if ($v['price'] <= 0) {
+                    //计算前一天成交的平均价格
+                    $v['price'] = CashTradeOrder::averagePrice($v['code']);
+                }
+                $usdt_price = $v['price'];
+            }
+            if ($v['can_cash']) {
+//                if ($v['price'] <= 0) {
+//                    //计算前一天成交的平均价格
+//                    $v['price'] = CashTradeOrder::averagePrice($v['code']);
+//                }
+                if ($request->uid())
+                    $v['wallet'] = UserMoney::initialUserMoney($request->uid(), $v['code']);
+                unset($v['cash_commission_ratio']);
+                unset($v['cash_commission_type']);
+                unset($v['can_cash']);
+                unset($v['can_trade']);
+                unset($v['is_trade']);
+                $new[] = $v;
+
+            }
+        }
+        foreach ($new as $k => $v) {
+            $new[$k]['usdt'] = (isset($usdt_price) && $usdt_price > 0) ? bcdiv($new[$k]['price'], $usdt_price, 8) : 0;
+        }
+        return app('json')->success('ok', $new);
+    }
+
 
     /**
      * @param Request $request

+ 11 - 5
app/api/controller/user/UserController.php

@@ -11,6 +11,7 @@ use crmeb\services\ZtPayService;
 use think\db\exception\DataNotFoundException;
 use think\db\exception\DbException;
 use think\db\exception\ModelNotFoundException;
+use think\Exception;
 use think\exception\ValidateException;
 use app\Request;
 use app\models\user\UserLevel;
@@ -723,13 +724,18 @@ class UserController
 //        ];
 //        $res = do_request($url, $data, null, false);
 //        if (isset($res['result']['res']) && $res['result']['res'] == 1) {
-        $res = User::where('uid', $user['main_uid'] ?? $user['uid'])->update(['real_name' => $realname, 'card_id' => $idcard, 'real_check' => 0, 'idcard_front' => $idcard_front, 'idcard_hold' => $idcard_hold, 'idcard_back' => $idcard_back]);
-        if ($res) {
-            return app('json')->success('已提交认证');
-        } else {
+        try {
+            $res = User::where('uid', $user['main_uid'] ?: $user['uid'])->update(['real_name' => $realname, 'card_id' => $idcard, 'real_check' => 0, 'idcard_front' => $idcard_front, 'idcard_hold' => $idcard_hold, 'idcard_back' => $idcard_back]);
+            if ($res) {
+                return app('json')->success('已提交认证');
+            } else {
 //        }
-            return app('json')->fail('提交失败');
+                return app('json')->fail('提交失败');
+            }
+        } catch (Exception $e) {
+            return app('json')->fail($e->getMessage());
         }
+
     }
 
     /**

+ 27 - 1
app/api/controller/user/UserExtractController.php

@@ -91,8 +91,34 @@ class UserExtractController
 //        $data['brokerage_price'] = $user['brokerage_price'];
 //        //可提现佣金
 //        $commissionCount = $data['brokerage_price'] - $data['broken_commission'];
+        $money_type = sys_data('money_type');
+        foreach ($money_type as $v) {
+            if ($v['code'] == $extractInfo['money_type']) {
+                if (!$v['can_cash']) {
+                    return app('json')->fail('该币种不可提币');
+                }
+                if ($v['cash_commission_count_type'] == 1) {
+                    $service = bcmul(bcdiv($v['cash_commission_ratio'], 100, 2), $extractInfo['money'], 8);
+                } else {
+                    $service = $v['cash_commission_ratio'];
+                }
+                $service_type = $v['cash_commission_type'];
+            }
+        }
+        if (!isset($service) || !isset($service_type)) {
+            return app('json')->fail('该币种不可提币');
+        }
+        $extractInfo = array_merge($extractInfo, compact('service', 'service_type'));
+
         $money = UserMoney::initialUserMoney($request->uid(), $extractInfo['money_type']);
-        if ($extractInfo['money'] > $money['money']) return app('json')->fail('可提现佣金不足');
+        $money2 = UserMoney::initialUserMoney($request->uid(), $service_type);
+        if ($extractInfo['money_type'] != $service_type) {
+            if ($extractInfo['money'] > $money['money']) return app('json')->fail('可提现佣金不足');
+            if ($service > $money2['money']) return app('json')->fail('用于支付手续费的' . init_money_type()[$service_type] . '不足');
+        } else {
+            if (bcadd($extractInfo['money'], $service, 8) > $money['money']) return app('json')->fail('可提现佣金不足');
+        }
+
         if ($extractInfo['address'] == '') return app('json')->fail('钱包地址错误');
 //            if (!preg_match('/^([1-9]{1})(\d{14}|\d{18})$/', $extractInfo['cardnum']))
 //                return app('json')->fail('银行卡号输入有误');

+ 13 - 1
app/models/user/UserExtract.php

@@ -64,6 +64,13 @@ class UserExtract extends BaseModel
 //        $extractPrice = $userInfo['brokerage_price'];
 //        if($extractPrice < 0) return self::setErrorInfo('提现佣金不足'.$data['money']);
         $userMoney = UserMoney::initialUserMoney($userInfo['uid'], $data['money_type']);
+        $money2 = UserMoney::initialUserMoney($userInfo['uid'], $data['service_type']);
+        if ($data['money_type'] != $data['service_type']) {
+            if ($data['money'] > $userMoney['money']) return app('json')->fail('可提现佣金不足');
+            if ($data['service'] > $money2['money']) return app('json')->fail('用于支付手续费的' . init_money_type()[$data['service_type']] . '不足');
+        } else {
+            if (bcadd($data['money'], $data['service'], 8) > $userMoney['money']) return app('json')->fail('可提现佣金不足');
+        }
         if ($data['money'] > $userMoney['money']) return self::setErrorInfo('提现佣金不足' . $data['money']);
         if ($data['money'] <= 0) return self::setErrorInfo('提现佣金大于0');
         $balance = bcsub($userMoney['money'], $data['money'], 8);
@@ -76,6 +83,8 @@ class UserExtract extends BaseModel
             'balance' => $balance,
             'money_type' => $data['money_type'],
             'address' => $data['address'],
+            'service' => $data['service'],
+            'service_type' => $data['service_type'],
         ];
 //        var_dump($insertData);
 //        exit;
@@ -98,6 +107,7 @@ class UserExtract extends BaseModel
 //        } else if ($data['extract_type'] == 'weixin') {
 //            if (!$data['weixin']) return self::setErrorInfo('请输入微信账号');
         $mark = '提币' . $insertData['extract_price'] . init_money_type()[$data['money_type']];
+        $mark2 = '提币' . $insertData['extract_price'] . init_money_type()[$data['money_type']] . '支付手续费' . $insertData['service'] . init_money_type()[$data['service_type']];
 //        }
         self::beginTrans();
         try {
@@ -105,7 +115,9 @@ class UserExtract extends BaseModel
             if (!$res1) return self::setErrorInfo('提现失败');
 //            $res2 = User::edit(['brokerage_price' => $balance], $userInfo['uid'], 'uid');
 //            $res3 = UserBill::expend('余额提现', $userInfo['uid'], 'now_money', 'extract', $data['money'], $res1['id'], $balance, $mark);
-            $res = $res1 && UserMoney::expendMoney($userInfo['uid'], $data['money_type'], $data['money'], 'extract', '申请提币', $mark);
+            $res = $res1
+            && $data['service'] > 0 ? (UserMoney::expendMoney($userInfo['uid'], $data['service_type'], $data['service'], 'extract_service', '提币手续费', $mark2)) : true
+                && UserMoney::expendMoney($userInfo['uid'], $data['money_type'], $data['money'], 'extract', '申请提币', $mark);
             if ($res) {
                 self::commitTrans();
 //                try {

+ 2 - 0
route/api/route.php

@@ -228,6 +228,8 @@ Route::group(function () {
     Route::get('search/keyword', 'PublicController/search')->name('searchKeyword');//热门搜索关键字获取
     //买卖
     Route::get('trade/money_type', 'trade.CashTradeController/can_trade_money')->name('canTradeMoney');//可进行现金交易的币种列表
+    Route::get('cash/money_type', 'trade.CashTradeController/can_cash_money')->name('canCashMoney');//可进行现金交易的币种列表
+    Route::get('all/money_type', 'trade.CashTradeController/all_money')->name('allMoney');//可进行现金交易的币种列表
     Route::get('trade/sale_list', 'trade.CashTradeController/sale_list')->name('sale_list');//挂卖列表
     Route::get('trade/buy_list', 'trade.CashTradeController/buy_list')->name('buy_list');//挂买列表
     //产品分类类