UserController.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. <?php
  2. namespace App\Http\Controllers\Api\Base;
  3. use App\Http\Controllers\Controller;
  4. use App\Repositories\Models\Base\Resource;
  5. use App\Services\Base\UserService;
  6. use App\Services\Common\IdCardService;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\Cache;
  9. /**
  10. * 用户管理
  11. */
  12. class UserController extends Controller
  13. {
  14. /**
  15. * @var UserService
  16. */
  17. private $userService;
  18. private $idCardService;
  19. /**
  20. * UserController constructor.
  21. *
  22. * @param UserService $userService
  23. */
  24. public function __construct(UserService $userService, IdCardService $idCardService)
  25. {
  26. parent::__construct();
  27. $this->userService = $userService;
  28. $this->idCardService = $idCardService;
  29. }
  30. /**
  31. * 实名认证
  32. * @param Request $request
  33. * @return false|\Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  34. * @throws \Illuminate\Validation\ValidationException
  35. */
  36. public function realName(Request $request)
  37. {
  38. $data = $this->validateData($request, [
  39. 'name' => 'required|string',
  40. 'card_id' => 'required|id_card',
  41. 'nation' => 'required|string',
  42. 'start_date' => 'required|date',
  43. 'end_date' => 'required|date',
  44. 'address' => 'required|string',
  45. 'card_positive_path' => 'required|string',
  46. 'card_reverse_path' => 'required|string',
  47. 'native' => 'required|string',
  48. ], [
  49. 'name' => '姓名',
  50. 'card_id' => '身份证号',
  51. 'nation' => '民族',
  52. 'start_date' => '身份证有效期-开始日期',
  53. 'end_date' => '身份证有效期-结束日期',
  54. 'address' => '地址',
  55. 'card_positive_path' => '身份证-正面',
  56. 'card_reverse_path' => '身份证-反面',
  57. 'native' => '籍贯',
  58. ]);
  59. $is_fit = $this->idCardService->check($data['name'], $data['card_id']);
  60. if (!$is_fit) {
  61. $this->response->fail('姓名和身份证号不一致');
  62. return false;
  63. }
  64. $this->userService->handleRealName($data);
  65. return $this->response->ok('实名成功');
  66. }
  67. /**
  68. * 身份证识别
  69. * @param Request $request
  70. * @return false|\Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  71. * @throws \Illuminate\Validation\ValidationException
  72. */
  73. public function ocrIdCard(Request $request)
  74. {
  75. $data = $this->validateData($request, [
  76. 'resource_id' => 'required|integer',
  77. 'type' => 'required|in:1,0',
  78. ]);
  79. $url = Resource::byIdGetUrl($data['resource_id']);
  80. $user_id = login_user_id();
  81. $day = date('Y-m-d');
  82. $nums = Cache::get("controller:Api:UserController:ocrIdCard:{$user_id}:{$day}", 0);
  83. // if ($nums > 6) {
  84. // $this->response->fail('你今天请求的次数太多了,请明天再试。');
  85. // return false;
  86. // }
  87. Cache::increment("controller:Api:UserController:ocrIdCard:{$user_id}:{$day}", 1);
  88. $nums++;
  89. $cardInfo = $this->idCardService->ocr($url, $data['type']);
  90. if (!$cardInfo) {
  91. $this->response->fail('姓名和身份证号不一致');
  92. return false;
  93. }
  94. return $this->response->success(compact('cardInfo', 'nums'));
  95. }
  96. /**
  97. * 银行卡识别
  98. * @param Request $request
  99. * @return false|\Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  100. * @throws \Illuminate\Validation\ValidationException
  101. */
  102. public function ocrBank(Request $request)
  103. {
  104. $data = $this->validateData($request, [
  105. 'resource_id' => 'required|integer'
  106. ]);
  107. $url = Resource::byIdGetUrl($data['resource_id']);
  108. $user_id = login_user_id();
  109. $day = date('Y-m-d');
  110. $nums = Cache::get("controller:Api:UserController:ocrBank:{$user_id}:{$day}", 0);
  111. if ($nums > 3) {
  112. $this->response->fail('你今天请求的次数太多了,请明天再试。');
  113. return false;
  114. }
  115. Cache::increment("controller:Api:UserController:ocrBank:{$user_id}:{$day}", 1);
  116. $nums++;
  117. $cardInfo = $this->idCardService->ocrBank($url);
  118. if (!$cardInfo) {
  119. $this->response->fail('银行卡识别失败');
  120. return false;
  121. }
  122. return $this->response->success(compact('cardInfo', 'nums'));
  123. }
  124. /**
  125. * 更新银行卡信息
  126. * @param Request $request
  127. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  128. * @throws \Illuminate\Validation\ValidationException
  129. */
  130. public function updateBank(Request $request)
  131. {
  132. $data = $this->validateData($request, [
  133. 'bank_card_number' => 'required|string',
  134. 'valid_date' => 'required|string',
  135. 'bank_card_type' => 'required',
  136. 'bank_name' => 'required|string',
  137. 'holder_name' => 'required|string',
  138. 'path' => 'required|string',
  139. ], [
  140. 'bank_card_number' => '银行卡号',
  141. 'valid_date' => '有效期',
  142. 'bank_card_type' => '卡类型',
  143. 'bank_name' => '银行开户行',
  144. 'holder_name' => '持卡人',
  145. 'path' => '银行卡照片',
  146. ]);
  147. $this->userService->handleBank($data);
  148. return $this->response->ok('更新成功');
  149. }
  150. /**
  151. * 更新登记表信息
  152. * @param Request $request
  153. *
  154. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  155. * @throws \Prettus\Validator\Exceptions\ValidatorException
  156. */
  157. public function updateRegisterInfo(Request $request)
  158. {
  159. $data = $this->validateData($request, [
  160. 'nation' => 'required|string',
  161. 'eye' => 'required|string',
  162. 'health_status' => 'required|string',
  163. 'marriage_status' => 'required|integer',
  164. 'education_status' => 'required|integer',
  165. 'major' => 'required|nullable',
  166. 'address' => 'required|string',
  167. 'contact_name' => 'required|string',
  168. 'contact_type' => 'required|string',
  169. 'contact_mobile' => 'required|mobile',
  170. 'height' => 'required|integer',
  171. ], [
  172. 'nation' => '民族',
  173. 'eye' => '视力',
  174. 'health_status' => '健康情况',
  175. 'marriage_status' => '婚姻状况',
  176. 'education_status' => '学历',
  177. 'major' => '专业',
  178. 'address' => '家庭住址',
  179. 'contact_name' => '紧急联系人',
  180. 'contact_type' => '与本人关系',
  181. 'contact_mobile' => '紧急电话',
  182. 'height' => '身高',
  183. ]);
  184. $data['is_register_info'] = 1;
  185. $human = $this->userService->handleUpdateRegisterInfo($data);
  186. return $this->response->success($human, '更新成功');
  187. }
  188. /**
  189. * 获取实名信息
  190. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  191. */
  192. public function realNameInfo()
  193. {
  194. $info = $this->userService->handleRealNameInfo();
  195. return $this->response->success($info);
  196. }
  197. /**
  198. * 银行卡信息
  199. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  200. */
  201. public function bankInfo()
  202. {
  203. $info = $this->userService->handleBankInfo();
  204. return $this->response->success($info);
  205. }
  206. /**
  207. * 登记表信息
  208. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  209. */
  210. public function registerInfo()
  211. {
  212. $info = $this->userService->handleRegisterInfo();
  213. return $this->response->success($info);
  214. }
  215. }