Kirin vor 1 Jahr
Ursprung
Commit
297e73e25e

+ 14 - 11
app/controller/api/v1/user/UserExtractController.php

@@ -52,27 +52,30 @@ class UserExtractController
     public function cash(Request $request)
     {
         $extractInfo = $request->postMore([
-//            ['alipay_code', ''],
+            ['alipay_code', ''],
             ['extract_type', 'bank'],
             ['money', 0],
-//            ['name', ''],
-//            ['bankname', ''],
-//            ['cardnum', ''],
-//            ['weixin', ''],
-//            ['qrcode_url', ''],
+            ['image', 0],
+            ['name', ''],
+            ['bankname', ''],
+            ['cardnum', ''],
+            ['weixin', ''],
+            ['qrcode_url', ''],
         ]);
         $extractType = Config::get('pay.extractType', []);
         if (!in_array($extractInfo['extract_type'], $extractType))
             return app('json')->fail('提现方式不存在');
         if (!preg_match('/^[0-9]+(.[0-9]{1,2})?$/', (float)$extractInfo['money'])) return app('json')->fail('提现金额输入有误');
-//        if (!$extractInfo['cardnum'] == '')
-//            if (!preg_match('/^([1-9]{1})(\d{15}|\d{16}|\d{18})$/', $extractInfo['cardnum']))
-//                return app('json')->fail('银行卡号输入有误');
+        if (!$extractInfo['cardnum'] == '')
+            if (!preg_match('/^([1-9]{1})(\d{15}|\d{16}|\d{18})$/', $extractInfo['cardnum']))
+                return app('json')->fail('银行卡号输入有误');
+        if (!$extractInfo['image'])
+            return app('json')->fail('请上传发票凭证');
         if ($extractInfo['extract_type'] == 'alipay') {
             if (!$extractInfo['alipay_code']) return app('json')->fail('请输入支付宝账号');
         } else if ($extractInfo['extract_type'] == 'bank') {
-//            if (!$extractInfo['cardnum']) return app('json')->fail('请输入银行卡账号');
-//            if (!$extractInfo['bankname']) return app('json')->fail('请输入开户行信息');
+            if (!$extractInfo['cardnum']) return app('json')->fail('请输入银行卡账号');
+            if (!$extractInfo['bankname']) return app('json')->fail('请输入开户行信息');
 
 //            $bank_info = WithdrawService::init()::contractInfo($user['enterprise_professional_facilitator_id']);
 //            if ($bank_info['is_contract']) {

+ 2 - 2
app/services/system/config/SystemConfigServices.php

@@ -1479,7 +1479,7 @@ WSS;
             'store_brokerage_two', 'extract_time', 'is_self_brokerage', 'brokerage_user_status', 'uni_brokerage_price',
             'day_brokerage_price_upper', 'brokerage_type', 'user_extract_min_price', 'user_extract_bank_status',
             'user_extract_wechat_status', 'user_extract_alipay_status', 'user_extract_bank',
-            'pay_weixin_client_cert', 'pay_weixin_client_key', 'withdraw_fee', 'brokerage_level', 'brokerage_compute_type',
+            'pay_weixin_client_cert', 'pay_weixin_client_key', 'brokerage_level', 'brokerage_compute_type',
             'action_integral_rate', 'static_integral_rate', 'lake_ratio', 'static_integral_ratio', 'recommend_integral', 'recommend_speed_integral',
             'extract_ratio', 'extract_brokerage_ratio', 'extract_speed_ratio', 'extract_speed_num', 'extract_spread_ratio',
         ]);
@@ -1536,7 +1536,7 @@ WSS;
                         ->type('file')->icon('md-add')->info($data['pay_weixin_client_key']['desc']),
                 ])->info($data['brokerage_type']['desc']),
                 Build::inputNum('user_extract_min_price', $data['user_extract_min_price']['info'], $data['user_extract_min_price']['value'])->info($data['user_extract_min_price']['desc']),
-                Build::inputNum('withdraw_fee', $data['withdraw_fee']['info'], $data['withdraw_fee']['value'])->info($data['withdraw_fee']['desc']),
+//                Build::inputNum('withdraw_fee', $data['withdraw_fee']['info'], $data['withdraw_fee']['value'])->info($data['withdraw_fee']['desc']),
                 Build::switch('user_extract_bank_status', $data['user_extract_bank_status']['info'], (int)$data['user_extract_bank_status']['value'])->trueValue('开启', 1)->falseValue('关闭', 0)->control(1, [
                     Build::input('user_extract_bank', $data['user_extract_bank']['info'], $data['user_extract_bank']['value'])->type('textarea')->rows(6)->info($data['user_extract_bank']['desc'])
                 ])->info($data['user_extract_bank_status']['desc']),

+ 58 - 29
app/services/user/UserExtractServices.php

@@ -13,6 +13,7 @@ declare (strict_types=1);
 namespace app\services\user;
 
 use app\jobs\system\CapitalFlowJob;
+use app\model\user\UserExtract;
 use app\services\BaseServices;
 use app\dao\user\UserExtractDao;
 use app\services\order\StoreOrderCreateServices;
@@ -223,26 +224,26 @@ class UserExtractServices extends BaseServices
                 if (!$this->dao->update($id, ['status' => 2])) {
                     throw new AdminException('修改失败');
                 }
-                $userServices = app()->make(UserServices::class);
-                $userInfo = $userServices->get($userExtract['uid']);
-                if (!$userInfo['professional_id']) {
-                    throw new ValidateException('用户未认证签约');
-                }
-                $bankInfo = WithdrawService::init()::contractInfo($userInfo['enterprise_professional_facilitator_id']);
-                if (!$bankInfo['sign_img']) throw new ValidateException('用户未签约');
-                $res = WithdrawService::init()::fastIssuing(
-                    $userInfo['professional_id'],
-                    $userExtract['id'],
-                    $bankInfo['name'],
-                    $bankInfo['cer_code'],
-                    $bankInfo['mobile'],
-                    $bankInfo['bank_code'],
-                    $extractNumber,
-                    '佣金提现'
-                );
-                if ($res) {
-                    $this->dao->update($id, ['trade_number' => $res['trade_number']]);
-                }
+//                $userServices = app()->make(UserServices::class);
+//                $userInfo = $userServices->get($userExtract['uid']);
+//                if (!$userInfo['professional_id']) {
+//                    throw new ValidateException('用户未认证签约');
+//                }
+//                $bankInfo = WithdrawService::init()::contractInfo($userInfo['enterprise_professional_facilitator_id']);
+//                if (!$bankInfo['sign_img']) throw new ValidateException('用户未签约');
+//                $res = WithdrawService::init()::fastIssuing(
+//                    $userInfo['professional_id'],
+//                    $userExtract['id'],
+//                    $bankInfo['name'],
+//                    $bankInfo['cer_code'],
+//                    $bankInfo['mobile'],
+//                    $bankInfo['bank_code'],
+//                    $extractNumber,
+//                    '佣金提现'
+//                );
+//                if ($res) {
+//                    $this->dao->update($id, ['trade_number' => $res['trade_number']]);
+//                }
             }
         });
         return true;
@@ -420,15 +421,20 @@ class UserExtractServices extends BaseServices
         if (!$user) {
             throw new ValidateException('数据不存在');
         }
-        if (!$user['enterprise_professional_facilitator_id']) {
-            throw new ValidateException('签约未完成');
-        }
-        $bank_info = WithdrawService::init()::contractInfo($user['enterprise_professional_facilitator_id']);
-        if (!$bank_info['sign_img']) {
-            throw new ValidateException('签约未完成');
+        if (UserExtract::where('uid', $user['uid'])
+            ->whereTime('add_time', 'month')
+            ->where('status', 0)->find()) {
+            throw new ValidateException('请等待上次提现申请通过');
         }
-        $data['cardnum'] = $bank_info['bank_code'];
-        $data['bankname'] = '灵活用工提现';
+//        if (!$user['enterprise_professional_facilitator_id']) {
+//            throw new ValidateException('签约未完成');
+//        }
+//        $bank_info = WithdrawService::init()::contractInfo($user['enterprise_professional_facilitator_id']);
+//        if (!$bank_info['sign_img']) {
+//            throw new ValidateException('签约未完成');
+//        }
+//        $data['cardnum'] = $bank_info['bank_code'];
+//        $data['bankname'] = '灵活用工提现';
         /** @var UserBrokerageServices $userBrokerageServices */
         $userBrokerageServices = app()->make(UserBrokerageServices::class);
         $data['broken_commission'] = $userBrokerageServices->getUserFrozenPrice($uid);
@@ -455,7 +461,29 @@ class UserExtractServices extends BaseServices
         if ($data['money'] <= 0) {
             throw new ValidateException('提现佣金大于0');
         }
-        $extract_fee = bcmul((string)$data['money'], bcdiv(sys_config('withdraw_fee'), '100', 4), 2);
+        $fee = sys_data('withdraw_fee');
+        $fees = [];
+        foreach ($fee as $v) {
+            $fees[$v['month_number']] = (string)$v['fee'];
+        }
+        krsort($fees, SORT_DESC);
+        $sum_money = UserExtract::where('uid', $user['uid'])
+            ->whereTime('add_time', 'month')
+            ->where('extract_type', '<>', 'balance')
+            ->where('status', 1)->sum('extract_price');
+        $money = $data['money'];
+        $extract_fee = 0;
+        $max = PHP_INT_MAX;
+        foreach ($fees as $k => $v) {
+            if ($sum_money > $max) {
+                break;
+            }
+            $max = $k;
+            if ($sum_money + $money > $k) {
+                $extract_fee = bcadd($extract_fee, bcmul((string)($sum_money + $money - ($sum_money > $k ? $sum_money : $k)), bcdiv($v, '100', 4), 2));
+                $money = $money - ($sum_money + $money - $k);
+            }
+        }
         $insertData = [
             'uid' => $user['uid'],
             'extract_type' => $data['extract_type'],
@@ -463,6 +491,7 @@ class UserExtractServices extends BaseServices
             'extract_fee' => $extract_fee,
             'add_time' => time(),
             'balance' => $user['brokerage_price'],
+            'image' => $data['image'],
             'status' => 0
         ];
         if (isset($data['name']) && strlen(trim($data['name']))) $insertData['real_name'] = $data['name'];