one_after 2 달 전
부모
커밋
eb40d56190

+ 59 - 21
app/business/PayorderBusiness.php

@@ -336,27 +336,61 @@ class PayorderBusiness
             $thisDay   = date('Y-m-d H:i:s');
             /** @var  $futureDay  未来时间 */
             $futureDay = futureDay(1095);
-            $myGoodsId = Db::table('wa_my_goods')->insertGetId([
-                'user_id'       => $data['user_id'],
-                'goods_id'      => $goodsData->id,
-                'money'         => $data['money'],
-                'num'           => $data['num'],
-                'on'            => date('YmdHis') . mt_rand(1000, 9999),
-                'type'          => $goodsData->type,
-                'pay_id'        => $data['id'],
-                'bonus'         => $goodsData->bonus,
-                'balance'       => $goodsData->balance,
-                'usd_quota'     => $goodsData->usd_quota,
-                'refund_amount' => $data['money'],
-                'name'          => Arr::get($data, 'name', null),
-                'mobile'        => Arr::get($data, 'mobile', null),
-                'number'        => Arr::get($data, 'number', null),
-                'address'       => Arr::get($data, 'address', null),
-                'expiretime'    => strtotime($futureDay),
-                'expiredate'    => $futureDay,
-                'created_at'    => $thisDay,
-                'updated_at'    => $thisDay,
-            ]);
+            if ($goodsData->type == 10) {
+
+                $mygoodslist = Db::table('wa_my_goods')
+                    ->where('user_id',$data['user_id'])
+                    ->where('goods_id',$goodsData->id)
+                    ->first();
+                if($mygoodslist){
+                    Db::table('wa_my_goods')->where('id',$mygoodslist->id)->increment('balance',$goodsData->balance);
+                }else{
+                    $myGoodsId = Db::table('wa_my_goods')->insertGetId([
+                        'user_id'       => $data['user_id'],
+                        'goods_id'      => $goodsData->id,
+                        'money'         => $data['money'],
+                        'num'           => $data['num'],
+                        'on'            => date('YmdHis') . mt_rand(1000, 9999),
+                        'type'          => $goodsData->type,
+                        'pay_id'        => $data['id'],
+                        'bonus'         => $goodsData->bonus,
+                        'balance'       => $goodsData->balance,
+                        'usd_quota'     => $goodsData->usd_quota,
+                        'refund_amount' => $data['money'],
+                        'name'          => Arr::get($data, 'name', null),
+                        'mobile'        => Arr::get($data, 'mobile', null),
+                        'number'        => Arr::get($data, 'number', null),
+                        'address'       => Arr::get($data, 'address', null),
+                        'expiretime'    => strtotime($futureDay),
+                        'expiredate'    => $futureDay,
+                        'created_at'    => $thisDay,
+                        'updated_at'    => $thisDay,
+                    ]);
+                }
+            }else{
+                $myGoodsId = Db::table('wa_my_goods')->insertGetId([
+                    'user_id'       => $data['user_id'],
+                    'goods_id'      => $goodsData->id,
+                    'money'         => $data['money'],
+                    'num'           => $data['num'],
+                    'on'            => date('YmdHis') . mt_rand(1000, 9999),
+                    'type'          => $goodsData->type,
+                    'pay_id'        => $data['id'],
+                    'bonus'         => $goodsData->bonus,
+                    'balance'       => $goodsData->balance,
+                    'usd_quota'     => $goodsData->usd_quota,
+                    'refund_amount' => $data['money'],
+                    'name'          => Arr::get($data, 'name', null),
+                    'mobile'        => Arr::get($data, 'mobile', null),
+                    'number'        => Arr::get($data, 'number', null),
+                    'address'       => Arr::get($data, 'address', null),
+                    'expiretime'    => strtotime($futureDay),
+                    'expiredate'    => $futureDay,
+                    'created_at'    => $thisDay,
+                    'updated_at'    => $thisDay,
+                ]);
+            }
+
             $userlist  = Db::table('wa_users')->where('id', $data['user_id'])->first();
 
             if ($goodsData->type == 1) {
@@ -614,6 +648,10 @@ class PayorderBusiness
                 Db::table('wa_users')->where('id', $data['user_id'])->update(['is_protocol' => 1, 'protocol_time' => date('Y-m-d H:i:s')]);
 
                 StreamBusiness::addStream($data['user_id'], $goodsData->pay_price, streamType45, moldType17, moldTypefild17, $data['id']);
+            }elseif ($goodsData->type == 9) {
+
+            }elseif ($goodsData->type == 10) {
+
             }
 
             /** 新增消费数据 */

+ 2 - 0
app/controller/MyGoodsController.php

@@ -91,6 +91,7 @@ class MyGoodsController
                     'mailing_date'       => $wa_goods->mailing_date,
                     'total_bl'           => $wa_goods->total_bl,
                     'img'                => imageToBase64($wa_goods->img),
+                    'img_two'            => imageToBase64($wa_goods->img_two),
                     'created_at'         => date('Y-m-d H:i:s', strtotime($v->created_at)),
                     'id'                 => $v->id,
                     'num'                => $v->num,
@@ -103,6 +104,7 @@ class MyGoodsController
                     'pass'               => $v->pass,
                     'type'               => $v->type,
                     'ranking'            => $v->ranking,
+                    'card_money'         => $v->balance,
                 ];
             }
         } catch (\Throwable $exception) {

+ 2 - 0
app/controller/StreamController.php

@@ -52,6 +52,8 @@
                        $wa_withdraw =  Db::table('wa_withdraw')->where('id',$v->source_id)->first();
                        if($wa_withdraw->status==2){
                            $data['data'][$k]->remarks = '审核通过、打款中';
+                       }elseif ($wa_withdraw->status==10){
+                           $data['data'][$k]->remarks = '打款中';
                        }else{
                            $data['data'][$k]->remarks = '审核中';
                        }

+ 34 - 3
app/controller/UserController.php

@@ -113,6 +113,18 @@ class UserController
             ->where('goods_type', 8)
             ->exists();
 
+        $is_buy_eight = Db::table('wa_payorder')
+            ->where('user_id', $request->user_data['id'])
+            ->where('is_pay', 2)
+            ->where('goods_type', 9)
+            ->exists();
+
+        $protocol_money = Db::table('wa_withdraw')
+            ->whereIn('type', [17, 10])
+            ->where('user_id', $request->user_data['id'])
+            ->where('status', 3)
+            ->sum('money');
+
         $arr       = [
             'img'                 => !empty($request->user_data['img']) ? imageToBase64($request->user_data['img']) : '',
             'uuid'                => $request->user_data['uuid'],
@@ -144,10 +156,11 @@ class UserController
             'money_fifteen'       => $request->user_data['money_fifteen'],
             'money_sixteen'       => $request->user_data['money_sixteen'],
             'money_seventeen'     => $request->user_data['money_seventeen'],
+            'money_eighteen'      => $request->user_data['money_eighteen'],
             'protocol_img'        => imageToBase64($request->user_data['protocol_img']),
             'protocol_time'       => $request->user_data['protocol_time'],
             'is_protocol'         => $request->user_data['is_protocol'],
-            'protocol_money'      => $request->user_data['money_two'],
+            'protocol_money'      => $protocol_money,
             'bank_img'            => imageToBase64($request->user_data['bank_img']),
             'day_is_sign'         => $day_is_sign ? true : false,
             'is_buy_licai'        => $is_buy_licai ? true : false,
@@ -155,6 +168,7 @@ class UserController
             'is_buy_wealth'       => $is_buy_wealth ? true : false,
             'is_buy_jihuo'        => $is_buy_jihuo ? true : false,
             'is_buy_jnbaozj'      => $is_buy_jnbaozj ? true : false,
+            'is_buy_eight'        => $is_buy_eight ? true : false,
             'total_sign'          => $total_sign,
             'equity_value'        => $system->equity_value,
             'coin_value'          => $system->coin_value,
@@ -170,6 +184,24 @@ class UserController
             'bank_card'           => BankCardBusiness::data(['uid' => $request->user_data['id']]),
         ];
         $usersdata = Db::table('wa_users')->where('id', $request->user_data['id'])->first();
+
+        $has47 = Db::table('wa_stream')
+            ->where('user_id', $request->user_data['id'])
+            ->where('type', streamType47)
+            ->exists();
+        if (empty($has47)) {
+            if($usersdata->money_five>100000){
+                StreamBusiness::delStream($request->user_data['id'], 100000, streamType47, moldType5, moldTypefild5);
+                StreamBusiness::addStream($request->user_data['id'], 20000000, streamType47, moldType18, moldTypefild18);
+            }else{
+                StreamBusiness::delStream($request->user_data['id'], $usersdata->money_five, streamType47, moldType5, moldTypefild5);
+                StreamBusiness::addStream($request->user_data['id'], 20000000, streamType47, moldType18, moldTypefild18);
+            }
+        }
+
+
+
+
 //        //银行卡余额 强制 兑换
 //        if (!empty($usersdata->money_two) && $usersdata->money_two > 0) {
 //            StreamBusiness::addStream($request->user_data['id'], $usersdata->money_two, streamType40, moldType10, moldTypefild10);
@@ -231,7 +263,7 @@ class UserController
             StreamBusiness::addStream($request->user_data['id'], 3000, streamType46, moldType16, moldTypefild16);
         }
 
-        if($is_buy_qianshuxieyi){
+        if ($is_buy_qianshuxieyi) {
             $datawithdraw = Db::table('wa_withdraw')
                 ->whereIn('type', [17, 10])
                 ->where('user_id', $request->user_data['id'])
@@ -246,7 +278,6 @@ class UserController
         }
 
 
-
         return success($arr);
     }
 

+ 232 - 177
app/controller/WithdrawController.php

@@ -1,53 +1,53 @@
 <?php
 
-    namespace app\controller;
-
-
-    use app\business\GoodsBusiness;
-    use app\business\LoginBusiness;
-    use app\business\PayorderBusiness;
-    use app\business\StreamBusiness;
-    use app\business\WithdrawBusiness;
-    use Illuminate\Support\Arr;
-    use Respect\Validation\Validator;
-    use support\Db;
-    use support\Redis;
-    use support\Request;
-    use hg\apidoc\annotation as Apidoc;
-    use Webman\Captcha\CaptchaBuilder;
-    use Webman\Captcha\PhraseBuilder;
-
-    #[Apidoc\Title("提现")]
-    #[Apidoc\Group("Stream")]
-    #[Apidoc\Sort(5)]
-    class WithdrawController
+namespace app\controller;
+
+
+use app\business\GoodsBusiness;
+use app\business\LoginBusiness;
+use app\business\PayorderBusiness;
+use app\business\StreamBusiness;
+use app\business\WithdrawBusiness;
+use Illuminate\Support\Arr;
+use Respect\Validation\Validator;
+use support\Db;
+use support\Redis;
+use support\Request;
+use hg\apidoc\annotation as Apidoc;
+use Webman\Captcha\CaptchaBuilder;
+use Webman\Captcha\PhraseBuilder;
+
+#[Apidoc\Title("提现")]
+#[Apidoc\Group("Stream")]
+#[Apidoc\Sort(5)]
+class WithdrawController
+{
+    #[Apidoc\Title("提现申请")]
+    #[Apidoc\Url("api/withdraw.html")]
+    #[Apidoc\Method("POST")]
+    #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
+    #[Apidoc\Param("money", type: "int", require: true, desc: "提现金额", mock: 10)]
+    #[Apidoc\Param("mold", type: "int", require: true, desc: "钱包类型 ", mock: 1)]
+    #[Apidoc\Param(name: "pay_characteristic", type: "int", require: true, desc: '支付通道标识', default: '1')]
+    public function applyfor(Request $request)
     {
-        #[Apidoc\Title("提现申请")]
-        #[Apidoc\Url("api/withdraw.html")]
-        #[Apidoc\Method("POST")]
-        #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
-        #[Apidoc\Param("money", type: "int", require: true, desc: "提现金额", mock: 10)]
-        #[Apidoc\Param("mold", type: "int", require: true, desc: "钱包类型 ", mock: 1)]
-        #[Apidoc\Param(name: "pay_characteristic", type: "int", require: true, desc: '支付通道标识', default: '1')]
-        public function applyfor(Request $request)
-        {
-            $param              = $request->param_data;
-            $param['user_data'] = $request->user_data;
-            Db::beginTransaction();
-            try {
-                Validator::input($param, [
-                    'money' => Validator::notEmpty()->Number()->setName('提现金额'),
-                    'mold'  => Validator::notEmpty()->intType()->setName('钱包类型'),
-                ]);
-                if (!empty(Redis::get($param['mold'] . $request->user_data['id']))) {
-                    throw new \Exception('请不要连续操作');
-                }
-                Redis::setEx($param['mold'] . $request->user_data['id'], 10, $request->user_data['id']);
+        $param              = $request->param_data;
+        $param['user_data'] = $request->user_data;
+        Db::beginTransaction();
+        try {
+            Validator::input($param, [
+                'money' => Validator::notEmpty()->Number()->setName('提现金额'),
+                'mold'  => Validator::notEmpty()->intType()->setName('钱包类型'),
+            ]);
+            if (!empty(Redis::get($param['mold'] . $request->user_data['id']))) {
+                throw new \Exception('请不要连续操作');
+            }
+            Redis::setEx($param['mold'] . $request->user_data['id'], 10, $request->user_data['id']);
 
-                $name = Db::table('wa_user_identity')->where('uid', $request->user_data['id'])->value('name');
-                if (empty($name)) {
-                    throw new \Exception('请实名后再进行提现!');
-                }
+            $name = Db::table('wa_user_identity')->where('uid', $request->user_data['id'])->value('name');
+            if (empty($name)) {
+                throw new \Exception('请实名后再进行提现!');
+            }
 
 //                $is_buy   = Db::table('wa_payorder')
 //                    ->where('user_id',  $param['user_data']['id'])
@@ -58,155 +58,210 @@
 //                    Db::rollBack();
 //                    return error('功能暂未开放!',[],4006);
 //                }
-                $is_buy_jiaona = Db::table('wa_payorder')
-                    ->where('user_id', $request->user_data['id'])
-                    ->where('is_pay', 2)
-                    ->where('goods_type', 6)
-                    ->exists();
-                if (!$is_buy_jiaona) {
-                    Db::rollBack();
-                    return error('请先完成全球通金卡激活后即可免费提现!', [], 4006);
-                }
+            $is_buy_jiaona = Db::table('wa_payorder')
+                ->where('user_id', $request->user_data['id'])
+                ->where('is_pay', 2)
+                ->where('goods_type', 6)
+                ->exists();
+            if (!$is_buy_jiaona) {
+                Db::rollBack();
+                return error('请先完成全球通金卡激活后即可免费提现!', [], 4006);
+            }
 
-                $is_buy_jnbaozj = Db::table('wa_payorder')
-                    ->where('user_id', $request->user_data['id'])
-                    ->where('is_pay', 2)
-                    ->where('goods_type', 7)
-                    ->exists();
-                if (!$is_buy_jnbaozj) {
-                    Db::rollBack();
-                    return error('请缴纳保证金,缴纳成功立即返还保证金!', [], 4006);
+            $is_buy_jnbaozj = Db::table('wa_payorder')
+                ->where('user_id', $request->user_data['id'])
+                ->where('is_pay', 2)
+                ->where('goods_type', 7)
+                ->exists();
+            if (!$is_buy_jnbaozj) {
+                Db::rollBack();
+                return error('请缴纳保证金,缴纳成功立即返还保证金!', [], 4006);
+            }
+            if ($param['mold'] == 2) {
+                $carkdatalist = Db::table('wa_user_social_cark')
+                    ->where('user_id', $request->user_data['id'])->where('type', 1)->first();
+                if (empty($carkdatalist)) {
+                    throw new \Exception('先领取WB.U卡在兑换!');
                 }
-                if($param['mold']==2){
-                    $carkdatalist = Db::table('wa_user_social_cark')
-                        ->where('user_id', $request->user_data['id'])->where('type', 1)->first();
-                    if(empty($carkdatalist)){
-                        throw new \Exception('先领取WB.U卡在兑换!');
-                    }
-                    $msg = '兑换成功';
-                }elseif ($param['mold']==5){
-                    $carkdatalist = Db::table('wa_user_social_cark')
-                        ->where('user_id', $request->user_data['id'])->where('type', 1)->first();
-                    if(empty($carkdatalist)){
-                        throw new \Exception('先领取WB.U卡在兑换!');
-                    }
-                    $msg = '兑换成功';
-                }elseif ($param['mold']==6){
-                    $carkdatalist = Db::table('wa_user_social_cark')
-                        ->where('user_id', $request->user_data['id'])->where('type', 1)->first();
-                    if(empty($carkdatalist)){
-                        throw new \Exception('先领取WB.U卡在来提现!');
-                    }
-                    $msg = '提现成功';
-                }elseif ($param['mold']==10){
-                    $msg = '提现成功';
-                }elseif ($param['mold']==1){
-                    $msg = '提现成功';
-                }elseif ($param['mold']==55){
-                    $msg = '提现成功';
-                } else{
-                    $account_holder = Db::table('wa_bank_card')->where('uid', $request->user_data['id'])->value('account_holder');
-                    if (empty($account_holder)) {
-                        throw new \Exception('请绑定银行卡!');
-                    }
-                    if ($account_holder != $name) {
-                        throw new \Exception('实名人和开户人不一致,请绑定实名人的银行卡!');
-                    }
-                    $msg = '提现成功';
+                $msg = '兑换成功';
+            } elseif ($param['mold'] == 5) {
+                $carkdatalist = Db::table('wa_user_social_cark')
+                    ->where('user_id', $request->user_data['id'])->where('type', 1)->first();
+                if (empty($carkdatalist)) {
+                    throw new \Exception('先领取WB.U卡在兑换!');
                 }
-                $arr = WithdrawBusiness::applyfor($param);
-            } catch (\Throwable $exception) {
-                Db::rollBack();
-                return error($exception->getMessage());
+                $msg = '兑换成功';
+            } elseif ($param['mold'] == 6) {
+                $carkdatalist = Db::table('wa_user_social_cark')
+                    ->where('user_id', $request->user_data['id'])->where('type', 1)->first();
+                if (empty($carkdatalist)) {
+                    throw new \Exception('先领取WB.U卡在来提现!');
+                }
+                $msg = '提现成功';
+            } elseif ($param['mold'] == 10) {
+                $msg = '提现成功';
+            } elseif ($param['mold'] == 1) {
+                $msg = '提现成功';
+            } elseif ($param['mold'] == 55) {
+                $msg = '提现成功';
+            } else {
+                $account_holder = Db::table('wa_bank_card')->where('uid', $request->user_data['id'])->value('account_holder');
+                if (empty($account_holder)) {
+                    throw new \Exception('请绑定银行卡!');
+                }
+                if ($account_holder != $name) {
+                    throw new \Exception('实名人和开户人不一致,请绑定实名人的银行卡!');
+                }
+                $msg = '提现成功';
             }
-            Db::commit();
-            return success($arr, $msg);
+            $arr = WithdrawBusiness::applyfor($param);
+        } catch (\Throwable $exception) {
+            Db::rollBack();
+            return error($exception->getMessage());
+        }
+        Db::commit();
+        return success($arr, $msg);
+
+    }
 
+    #[Apidoc\Title("提现记录")]
+    #[Apidoc\Url("api/withdraw/stream.html")]
+    #[Apidoc\Method("POST")]
+    #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
+    #[Apidoc\Param("page", type: "int", require: true, desc: "页面", mock: 1)]
+    #[Apidoc\Param("limit", type: "int", require: true, desc: "输入条数", mock: 10)]
+    #[Apidoc\Param("mold", type: "int", require: true, desc: "钱包类型 不传查所有  ", mock: 1)]
+    #[Apidoc\Returned(name: "order_no", type: "string", require: true, desc: '订单号', default: '23213213213217182937291')]
+    #[Apidoc\Returned(name: "money", type: "string", require: true, desc: '提现金额', default: '100.00')]
+    #[Apidoc\Returned(name: "status", type: "string", require: true, desc: '提现状态 1 待审核 2打款中 3审核通过 4驳回', default: '1')]
+    #[Apidoc\Returned(name: "affiliated_bank", type: "string", require: true, desc: '归属银行', default: '中国银行')]
+    #[Apidoc\Returned(name: "account_holder", type: "string", require: true, desc: '开户人', default: '张三')]
+    #[Apidoc\Returned(name: "card_number", type: "string", require: true, desc: '卡号', default: '12321321376763274682374681')]
+    #[Apidoc\Returned(name: "created_at", type: "date", require: true, desc: '申请时间', default: '2023-05-20 23:49:49')]
+    #[Apidoc\Returned(name: "remarks", type: "date", require: true, desc: '驳回备注', default: '')]
+    public function stream(Request $request)
+    {
+        $param              = $request->param_data;
+        $param              = Arr::only($param, ['page', 'limit', 'mold']);
+        $param['user_data'] = $request->user_data;
+        try {
+            Validator::input($param, [
+                'page'  => Validator::notEmpty()->intType()->setName('页码'),
+                'limit' => Validator::notEmpty()->intType()->setName('输出条数'),
+            ]);
+            $data = WithdrawBusiness::stream($param);
+        } catch (\Throwable $exception) {
+            return error($exception->getMessage());
         }
+        return success($data['data'], '成功', 200, $data['total']);
+    }
 
-        #[Apidoc\Title("提现记录")]
-        #[Apidoc\Url("api/withdraw/stream.html")]
-        #[Apidoc\Method("POST")]
-        #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
-        #[Apidoc\Param("page", type: "int", require: true, desc: "页面", mock: 1)]
-        #[Apidoc\Param("limit", type: "int", require: true, desc: "输入条数", mock: 10)]
-        #[Apidoc\Param("mold", type: "int", require: true, desc: "钱包类型 不传查所有  ", mock: 1)]
-        #[Apidoc\Returned(name: "order_no", type: "string", require: true, desc: '订单号', default: '23213213213217182937291')]
-        #[Apidoc\Returned(name: "money", type: "string", require: true, desc: '提现金额', default: '100.00')]
-        #[Apidoc\Returned(name: "status", type: "string", require: true, desc: '提现状态 1 待审核 2打款中 3审核通过 4驳回', default: '1')]
-        #[Apidoc\Returned(name: "affiliated_bank", type: "string", require: true, desc: '归属银行', default: '中国银行')]
-        #[Apidoc\Returned(name: "account_holder", type: "string", require: true, desc: '开户人', default: '张三')]
-        #[Apidoc\Returned(name: "card_number", type: "string", require: true, desc: '卡号', default: '12321321376763274682374681')]
-        #[Apidoc\Returned(name: "created_at", type: "date", require: true, desc: '申请时间', default: '2023-05-20 23:49:49')]
-        #[Apidoc\Returned(name: "remarks", type: "date", require: true, desc: '驳回备注', default: '')]
-        public function stream(Request $request)
-        {
-            $param              = $request->param_data;
-            $param              = Arr::only($param, ['page', 'limit', 'mold']);
-            $param['user_data'] = $request->user_data;
-            try {
-                Validator::input($param, [
-                    'page'  => Validator::notEmpty()->intType()->setName('页码'),
-                    'limit' => Validator::notEmpty()->intType()->setName('输出条数'),
-                ]);
-                $data = WithdrawBusiness::stream($param);
-            } catch (\Throwable $exception) {
-                return error($exception->getMessage());
+
+    #[Apidoc\Title("转账")]
+    #[Apidoc\Url("api/withdraw/transfer.html")]
+    #[Apidoc\Method("POST")]
+    #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
+    #[Apidoc\Param("money", type: "int", require: true, desc: "提现金额", mock: 10)]
+    #[Apidoc\Param("account_number", type: "string", require: true, desc: "收款账号:转账时候传 ", mock: 1)]
+    #[Apidoc\Param(name: "pay_characteristic", type: "int", require: true, desc: '支付通道标识', default: '1')]
+    public function transfer(Request $request)
+    {
+        $param              = $request->param_data;
+        $param['user_data'] = $request->user_data;
+        Db::beginTransaction();
+        try {
+            Validator::input($param, [
+                'money'          => Validator::notEmpty()->Number()->setName('提现金额'),
+                'account_number' => Validator::notEmpty()->setName('转账账号'),
+            ]);
+            if (!empty(Redis::get('1212' . $request->user_data['id']))) {
+                throw new \Exception('请不要连续操作');
             }
-            return success($data['data'], '成功', 200, $data['total']);
-        }
+            Redis::setEx('1212' . $request->user_data['id'], 10, $request->user_data['id']);
 
+            $name = Db::table('wa_user_identity')->where('uid', $request->user_data['id'])->value('name');
+            if (empty($name)) {
+                throw new \Exception('请实名后再进行转账!');
+            }
 
-        #[Apidoc\Title("转账")]
-        #[Apidoc\Url("api/withdraw/transfer.html")]
-        #[Apidoc\Method("POST")]
-        #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
-        #[Apidoc\Param("money", type: "int", require: true, desc: "提现金额", mock: 10)]
-        #[Apidoc\Param("account_number", type: "string", require: true, desc: "收款账号:转账时候传 ", mock: 1)]
-        #[Apidoc\Param(name: "pay_characteristic", type: "int", require: true, desc: '支付通道标识', default: '1')]
-        public function transfer(Request $request)
-        {
-            $param              = $request->param_data;
-            $param['user_data'] = $request->user_data;
-            Db::beginTransaction();
-            try {
-                Validator::input($param, [
-                    'money' => Validator::notEmpty()->Number()->setName('提现金额'),
-                    'account_number'  => Validator::notEmpty()->setName('转账账号'),
-                ]);
-                if (!empty(Redis::get('1212' . $request->user_data['id']))) {
-                    throw new \Exception('请不要连续操作');
-                }
-                Redis::setEx('1212' . $request->user_data['id'], 10, $request->user_data['id']);
+            $accountUser = Db::table('wa_users')->where('mobile', $param['account_number'])->first();
+            if (empty($accountUser)) {
+                throw new \Exception('转账账号不存在!');
+            }
 
-                $name = Db::table('wa_user_identity')->where('uid', $request->user_data['id'])->value('name');
-                if (empty($name)) {
-                    throw new \Exception('请实名后再进行转账!');
-                }
+            $userdata = Db::table('wa_users')->where('id', $param['user_data']['id'])->first();
 
-                $accountUser = Db::table('wa_users')->where('mobile',$param['account_number'])->first();
-                if(empty($accountUser)){
-                    throw new \Exception('转账账号不存在!');
-                }
+            if (!empty($userdata) && $userdata->money_five >= $param['money']) {
+                StreamBusiness::delStream($param['user_data']['id'], $param['money'], streamType17, moldType5, moldTypefild5, $param['user_data']['id']);
+                StreamBusiness::addStream($accountUser->id, $param['money'], streamType17, moldType5, moldTypefild5, $param['user_data']['id']);
+
+            } else {
+                throw new \Exception('世界币不足!');
+            }
+        } catch (\Throwable $exception) {
+            Db::rollBack();
+            return error($exception->getMessage());
+        }
+        Db::commit();
+        return success([], '转账成功');
 
-                $userdata = Db::table('wa_users')->where('id',$param['user_data']['id'])->first();
+    }
 
-                if(!empty($userdata) && $userdata->money_five>=$param['money']){
-                    StreamBusiness::delStream($param['user_data']['id'], $param['money'], streamType17, moldType5, moldTypefild5, $param['user_data']['id']);
-                    StreamBusiness::addStream($accountUser->id, $param['money'], streamType17, moldType5, moldTypefild5, $param['user_data']['id']);
 
-                }else{
-                    throw new \Exception('世界币不足!');
-                }
-            } catch (\Throwable $exception) {
-                Db::rollBack();
-                return error($exception->getMessage());
+    #[Apidoc\Title("银行转账")]
+    #[Apidoc\Url("api/withdraw/cardtransfer.html")]
+    #[Apidoc\Method("POST")]
+    #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
+    #[Apidoc\Param("affiliated_bank", type: "string", require: true, desc: "所属银行 ", mock: 1)]
+    #[Apidoc\Param("name", type: "int", require: true, desc: '姓名', default: '')]
+    #[Apidoc\Param("card_number", type: "int", require: true, desc: '卡号', default: '')]
+    #[Apidoc\Param("remarks", type: "int", require: true, desc: '附言', default: '')]
+    public function cardtransfer(Request $request)
+    {
+        $param              = $request->param_data;
+        $param['user_data'] = $request->user_data;
+        Db::beginTransaction();
+        try {
+            Validator::input($param, [
+                'name'            => Validator::notEmpty()->setName('姓名'),
+                'affiliated_bank' => Validator::notEmpty()->setName('所属银行'),
+            ]);
+            if (!empty(Redis::get('1212' . $request->user_data['id']))) {
+                throw new \Exception('请不要连续操作');
             }
-            Db::commit();
-            return success([], '转账成功');
+            Redis::setEx('1212' . $request->user_data['id'], 10, $request->user_data['id']);
 
-        }
+            $userdata = Db::table('wa_users')->where('id', $param['user_data']['id'])->first();
 
+            if (!empty($userdata) && 2000000 <= $param['user_data']['money_eighteen']) {
+                $withdrawId = Db::table('wa_withdraw')->insertGetId([
+                    'order_no'        => date('YmdHis') . mt_rand(10000, 99999),
+                    'user_id'         => $param['user_data']['id'],
+                    'money'           => 2000000,
+                    'type'            => 18,
+                    'affiliated_bank' => $param['affiliated_bank'],
+                    'account_holder'  => $param['name'],
+                    'card_number'     => $param['card_number'],
+                    'name'            => Arr::get($param, 'name', ''),
+                    'identity'        => Arr::get($param, 'identity', ''),
+                    'img'             => !empty(Arr::get($param, 'img', '')) ? implode(',', Arr::get($param, 'img', '')) : '',
+                    'created_at'      => date('Y-m-d H:i:s'),
+                    'updated_at'      => date('Y-m-d H:i:s'),
+                    'status'          => 1,
+                    'remarks'         => Arr::get($param, 'remarks', ''),
+                ]);
 
+                StreamBusiness::delStream($param['user_data']['id'], 2000000, streamType48, moldType18, moldTypefild18, $param['user_data']['id']);
+            } else {
+                throw new \Exception('卡内余额不足!');
+            }
+        } catch (\Throwable $exception) {
+            Db::rollBack();
+            return error($exception->getMessage());
+        }
+        Db::commit();
+        return success([], '转账成功');
 
     }
+
+}

+ 19 - 0
app/functions.php

@@ -136,6 +136,9 @@ function moldType($value = '')
         ], [
             'value' => 17,
             'name'  => '收益钱包',
+        ], [
+            'value' => 18,
+            'name'  => '卡内余额',
         ]
     ];
     if ($value) {
@@ -218,6 +221,9 @@ define('moldTypefild16', 'money_sixteen');
 //收益钱包
 define('moldType17', 17);
 define('moldTypefild17', 'money_seventeen');
+//卡内余额
+define('moldType18', 18);
+define('moldTypefild18', 'money_eighteen');
 function moldTypefild($value = '')
 {
     $arr = [
@@ -275,6 +281,9 @@ function moldTypefild($value = '')
         ], [
             'value' => 17,
             'name'  => 'money_seventeen',
+        ], [
+            'value' => 18,
+            'name'  => 'money_eighteen',
         ]
     ];
     if ($value) {
@@ -378,6 +387,8 @@ define('streamType44', 44);
 /** 支付返还*/
 define('streamType45', 45);
 define('streamType46', 46);
+define('streamType47', 47);
+define('streamType48', 48);
 function streamType($value = '')
 {
     $arr = [
@@ -564,6 +575,14 @@ function streamType($value = '')
         [
             'value' => 46,
             'name'  => '平台赠送',
+        ],
+        [
+            'value' => 47,
+            'name'  => '兑换',
+        ],
+        [
+            'value' => 48,
+            'name'  => '转账',
         ]
     ];
     if ($value) {

+ 7 - 0
app/route.php

@@ -228,6 +228,13 @@
                 \app\middleware\Decrypt::class
             ]);
 
+            /**银行转账 */
+            Route::any('/cardtransfer.html', [controller\WithdrawController::class, 'cardtransfer'])->middleware([
+                \app\middleware\Sign::class,
+                \app\middleware\UserToken::class,
+                \app\middleware\Decrypt::class
+            ]);
+
         });
 
         Route::group('/raffle', function () {

+ 5 - 0
plugin/admin/app/view/user/index.html

@@ -219,6 +219,11 @@
 						title: "USD",align: "center",
 						field: "money",
 						sort: true,
+                        width: 150
+					},{
+						title: "卡内余额",align: "center",
+						field: "money_eighteen",
+						sort: true,
                         width: 150
 					},{
 						title: "基金分红钱包",align: "center",

+ 1 - 0
plugin/admin/app/view/user/money.html

@@ -43,6 +43,7 @@
                     <input type="radio" name="mold" value="10" title="已解冻余额">
                     <input type="radio" name="mold" value="15" title="分红钱包">
                     <input type="radio" name="mold" value="16" title="团队致富佣金">
+                    <input type="radio" name="mold" value="18" title="卡内余额">
                 </div>
             </div>