wesmiler 2 ヶ月 前
コミット
fdd9c46a02

+ 25 - 0
app/Http/Controllers/Api/v1/MemberController.php

@@ -3,6 +3,7 @@
 namespace App\Http\Controllers\Api\v1;
 namespace App\Http\Controllers\Api\v1;
 
 
 use App\Http\Controllers\Api\webApp;
 use App\Http\Controllers\Api\webApp;
+use App\Http\Validator\MemberValidator;
 use App\Services\Api\MemberService;
 use App\Services\Api\MemberService;
 use App\Services\MpService;
 use App\Services\MpService;
 use Illuminate\Http\Request;
 use Illuminate\Http\Request;
@@ -97,6 +98,30 @@ class MemberController extends webApp
         }
         }
     }
     }
 
 
+    /**
+     * 认证
+     * @return array
+     */
+    public function auth(MemberValidator $validator)
+    {
+        $params = request()->all();
+        $params = $validator->check($params, 'auth');
+        if (!is_array($params)) {
+            return showJson($params, false);
+        }
+        try {
+
+            if (!$result = MemberService::make()->auth($this->userId, $params)) {
+                return showJson(MemberService::make()->getError(), false);
+            } else {
+                return showJson(MemberService::make()->getError(), true, $result);
+            }
+        } catch (\Exception $exception){
+            $error = ['data'=>$exception->getTrace(),'err'=>$exception->getMessage()];
+            return showJson(1046, false, $error);
+        }
+    }
+
 
 
     /**
     /**
      * 获取手机号
      * 获取手机号

+ 10 - 4
app/Http/Validator/MemberValidator.php

@@ -12,6 +12,10 @@ class MemberValidator extends BaseValidator
         'sms_code' => 'required|min:4|max:6',
         'sms_code' => 'required|min:4|max:6',
         'password' => 'required|pwd|min:6|max:30',
         'password' => 'required|pwd|min:6|max:30',
         'realname' => 'required|min:2|max:30',
         'realname' => 'required|min:2|max:30',
+        'idcard' => 'required|min:2|max:20',
+        'bank_name' => 'required|min:2|max:30',
+        'bank_card' => 'required|min:2|max:30',
+        'bank_branch' => 'required|min:2|max:30',
         'scene' => 'required',
         'scene' => 'required',
         'access_token' => 'required',
         'access_token' => 'required',
 
 
@@ -36,9 +40,12 @@ class MemberValidator extends BaseValidator
         'gender' => '性别',
         'gender' => '性别',
         'nickname' => '昵称',
         'nickname' => '昵称',
         'password' => '密码',
         'password' => '密码',
-        'username' => '登录账号',
+        'idcard' => '身份证号码',
+        'bank_name' => '收款开户行',
+        'bank_card' => '收款银行卡号',
+        'bank_branch' => '收款开户支行',
         'mobile' => '手机账号',
         'mobile' => '手机账号',
-        'realname' => '姓名',
+        'realname' => '真实姓名',
         'sms_code' => '验证码',
         'sms_code' => '验证码',
     ];
     ];
 
 
@@ -46,10 +53,9 @@ class MemberValidator extends BaseValidator
     public static $scenes = [
     public static $scenes = [
         'info'=> ['id'],
         'info'=> ['id'],
         'mp'=> ['code'],
         'mp'=> ['code'],
-        'wx_login'=> ['openid','access_token'],
         'login'=> ['code'],
         'login'=> ['code'],
-        'register'=> ['mobile','sms_code','password'],
         'sms'=> ['mobile','scene'],
         'sms'=> ['mobile','scene'],
+        'auth'=> ['realname','idcard','bank_name','bank_card','bank_branch'],
         'reset_password'=> ['mobile','password','sms_code'],
         'reset_password'=> ['mobile','password','sms_code'],
     ];
     ];
 
 

+ 52 - 0
app/Services/Api/MemberService.php

@@ -562,6 +562,58 @@ class MemberService extends BaseService
     }
     }
 
 
     /**
     /**
+     * 认证
+     * @param $userId
+     * @param $params
+     * @return bool
+     */
+    public function auth($userId, $params)
+    {
+        $cacheLockKey = "caches:members:auth_{$userId}";
+        if (RedisService::get($cacheLockKey)) {
+            $this->error = 1034;
+            return false;
+        }
+
+        // 用户验证
+        RedisService::set($cacheLockKey, ['user_id' => $userId, 'params' => $params], rand(2, 3));
+        $info = $this->model->where(['id' => $userId, 'mark' => 1])
+            ->select(['id', 'realname','idcard','bank_name','bank_card','bank_branch','is_auth', 'status'])
+            ->first();
+        if (!$info || $info['status'] != 1) {
+            $this->error = '账号或已被冻结,请联系客服';
+            RedisService::clear($cacheLockKey);
+            return false;
+        }
+
+        if($info['is_auth'] == 1 && $info['idcard'] && $info['realname'] && $info['bank_name'] && $info['bank_card'] && $info['bank_branch']){
+            $this->error = '抱歉,您已完成认证';
+            RedisService::clear($cacheLockKey);
+            return false;
+        }
+
+        // 认证数据
+        $data = [
+            'realname'=> isset($params['realname'])?$params['realname'] : '',
+            'idcard'=> isset($params['idcard'])?$params['idcard'] : '',
+            'bank_name'=> isset($params['bank_name'])?$params['bank_name'] : '',
+            'bank_card'=> isset($params['bank_card'])?$params['bank_card'] : '',
+            'bank_branch'=> isset($params['bank_branch'])?$params['bank_branch'] : '',
+            'is_auth'=> 1,
+            'update_time' => time()
+        ];
+        if (!$this->model->where(['id' => $userId])->update($data)) {
+            $this->error = '认证提交失败';
+            RedisService::clear($cacheLockKey);
+            return false;
+        }
+
+        $this->error = '恭喜您,已完成认证';
+        RedisService::clear($cacheLockKey);
+        return true;
+    }
+
+    /**
      * 账号注销
      * 账号注销
      * @param $userId
      * @param $userId
      * @return bool
      * @return bool

+ 1 - 0
routes/api.php

@@ -63,6 +63,7 @@ Route::prefix('v1')->middleware('web.login')->group(function() {
     Route::post('/user/bindAccount', [\App\Http\Controllers\Api\v1\MemberController::class, 'bindAccount']);
     Route::post('/user/bindAccount', [\App\Http\Controllers\Api\v1\MemberController::class, 'bindAccount']);
     Route::post('/user/getPhoneNumber', [\App\Http\Controllers\Api\v1\MemberController::class, 'getPhoneNumber']);
     Route::post('/user/getPhoneNumber', [\App\Http\Controllers\Api\v1\MemberController::class, 'getPhoneNumber']);
     Route::post('/user/modify', [\App\Http\Controllers\Api\v1\MemberController::class, 'modify']);
     Route::post('/user/modify', [\App\Http\Controllers\Api\v1\MemberController::class, 'modify']);
+    Route::post('/user/auth', [\App\Http\Controllers\Api\v1\MemberController::class, 'auth']);
     Route::post('/user/logOff', [\App\Http\Controllers\Api\v1\MemberController::class, 'logOff']);
     Route::post('/user/logOff', [\App\Http\Controllers\Api\v1\MemberController::class, 'logOff']);
 
 
     // 账户明细
     // 账户明细