123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- <?php
- namespace App\Http\Controllers\Api\Base;
- use App\Http\Controllers\Controller;
- use App\Repositories\Models\Base\Resource;
- use App\Services\Base\UserService;
- use App\Services\Common\IdCardService;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Cache;
- /**
- * 用户管理
- */
- class UserController extends Controller
- {
- /**
- * @var UserService
- */
- private $userService;
- private $idCardService;
- /**
- * UserController constructor.
- *
- * @param UserService $userService
- */
- public function __construct(UserService $userService, IdCardService $idCardService)
- {
- parent::__construct();
- $this->userService = $userService;
- $this->idCardService = $idCardService;
- }
- /**
- * 实名认证
- * @param Request $request
- * @return false|\Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
- * @throws \Illuminate\Validation\ValidationException
- */
- public function realName(Request $request)
- {
- $data = $this->validateData($request, [
- 'name' => 'required|string',
- 'card_id' => 'required|id_card',
- 'nation' => 'required|string',
- 'start_date' => 'required|date',
- 'end_date' => 'required|date',
- 'address' => 'required|string',
- 'card_positive_path' => 'required|string',
- 'card_reverse_path' => 'required|string',
- 'native' => 'required|string',
- ], [
- 'name' => '姓名',
- 'card_id' => '身份证号',
- 'nation' => '民族',
- 'start_date' => '身份证有效期-开始日期',
- 'end_date' => '身份证有效期-结束日期',
- 'address' => '地址',
- 'card_positive_path' => '身份证-正面',
- 'card_reverse_path' => '身份证-反面',
- 'native' => '籍贯',
- ]);
- $is_fit = $this->idCardService->check($data['name'], $data['card_id']);
- if (!$is_fit) {
- $this->response->fail('姓名和身份证号不一致');
- return false;
- }
- $this->userService->handleRealName($data);
- return $this->response->ok('实名成功');
- }
- /**
- * 身份证识别
- * @param Request $request
- * @return false|\Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
- * @throws \Illuminate\Validation\ValidationException
- */
- public function ocrIdCard(Request $request)
- {
- $data = $this->validateData($request, [
- 'resource_id' => 'required|integer',
- 'type' => 'required|in:1,0',
- ]);
- $url = Resource::byIdGetUrl($data['resource_id']);
- $user_id = login_user_id();
- $day = date('Y-m-d');
- $nums = Cache::get("controller:Api:UserController:ocrIdCard:{$user_id}:{$day}", 0);
- // if ($nums > 6) {
- // $this->response->fail('你今天请求的次数太多了,请明天再试。');
- // return false;
- // }
- Cache::increment("controller:Api:UserController:ocrIdCard:{$user_id}:{$day}", 1);
- $nums++;
- $cardInfo = $this->idCardService->ocr($url, $data['type']);
- if (!$cardInfo) {
- $this->response->fail('姓名和身份证号不一致');
- return false;
- }
- return $this->response->success(compact('cardInfo', 'nums'));
- }
- /**
- * 银行卡识别
- * @param Request $request
- * @return false|\Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
- * @throws \Illuminate\Validation\ValidationException
- */
- public function ocrBank(Request $request)
- {
- $data = $this->validateData($request, [
- 'resource_id' => 'required|integer'
- ]);
- $url = Resource::byIdGetUrl($data['resource_id']);
- $user_id = login_user_id();
- $day = date('Y-m-d');
- $nums = Cache::get("controller:Api:UserController:ocrBank:{$user_id}:{$day}", 0);
- if ($nums > 3) {
- $this->response->fail('你今天请求的次数太多了,请明天再试。');
- return false;
- }
- Cache::increment("controller:Api:UserController:ocrBank:{$user_id}:{$day}", 1);
- $nums++;
- $cardInfo = $this->idCardService->ocrBank($url);
- if (!$cardInfo) {
- $this->response->fail('银行卡识别失败');
- return false;
- }
- return $this->response->success(compact('cardInfo', 'nums'));
- }
- /**
- * 更新银行卡信息
- * @param Request $request
- * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
- * @throws \Illuminate\Validation\ValidationException
- */
- public function updateBank(Request $request)
- {
- $data = $this->validateData($request, [
- 'bank_card_number' => 'required|string',
- 'valid_date' => 'required|string',
- 'bank_card_type' => 'required',
- 'bank_name' => 'required|string',
- 'holder_name' => 'required|string',
- 'path' => 'required|string',
- ], [
- 'bank_card_number' => '银行卡号',
- 'valid_date' => '有效期',
- 'bank_card_type' => '卡类型',
- 'bank_name' => '银行开户行',
- 'holder_name' => '持卡人',
- 'path' => '银行卡照片',
- ]);
- $this->userService->handleBank($data);
- return $this->response->ok('更新成功');
- }
- /**
- * 更新登记表信息
- * @param Request $request
- *
- * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
- * @throws \Prettus\Validator\Exceptions\ValidatorException
- */
- public function updateRegisterInfo(Request $request)
- {
- $data = $this->validateData($request, [
- 'nation' => 'required|string',
- 'eye' => 'required|string',
- 'health_status' => 'required|string',
- 'marriage_status' => 'required|integer',
- 'education_status' => 'required|integer',
- 'major' => 'required|nullable',
- 'address' => 'required|string',
- 'contact_name' => 'required|string',
- 'contact_type' => 'required|string',
- 'contact_mobile' => 'required|mobile',
- 'height' => 'required|integer',
- ], [
- 'nation' => '民族',
- 'eye' => '视力',
- 'health_status' => '健康情况',
- 'marriage_status' => '婚姻状况',
- 'education_status' => '学历',
- 'major' => '专业',
- 'address' => '家庭住址',
- 'contact_name' => '紧急联系人',
- 'contact_type' => '与本人关系',
- 'contact_mobile' => '紧急电话',
- 'height' => '身高',
- ]);
- $data['is_register_info'] = 1;
- $human = $this->userService->handleUpdateRegisterInfo($data);
- return $this->response->success($human, '更新成功');
- }
- /**
- * 获取实名信息
- * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
- */
- public function realNameInfo()
- {
- $info = $this->userService->handleRealNameInfo();
- return $this->response->success($info);
- }
- /**
- * 银行卡信息
- * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
- */
- public function bankInfo()
- {
- $info = $this->userService->handleBankInfo();
- return $this->response->success($info);
- }
- /**
- * 登记表信息
- * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
- */
- public function registerInfo()
- {
- $info = $this->userService->handleRegisterInfo();
- return $this->response->success($info);
- }
- }
|