RegisterController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. <?php
  2. namespace App\Http\Controllers\Auth\Front;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Controllers\Traits\ApiResponseTrait;
  5. use App\Http\Requests\Front\MemberRegisterRequest;
  6. use App\Models\Member;
  7. use App\Models\MemberNumber;
  8. use App\Models\MemberTeam;
  9. use App\Models\MemberVerify;
  10. use App\Servers\Faceid;
  11. use App\Servers\MachineServer;
  12. use App\Servers\MemberServer;
  13. use App\Servers\RegisterServer;
  14. use App\Servers\SmsServer;
  15. use Illuminate\Support\Facades\Auth;
  16. use Illuminate\Support\Facades\DB;
  17. class RegisterController extends Controller
  18. {
  19. use ApiResponseTrait;
  20. // 注册 post
  21. public function register(MemberRegisterRequest $request)
  22. {
  23. try {
  24. $send_type = $request->input('send_type', '');
  25. if(empty($send_type)){
  26. return response()->json([
  27. 'msg' => '滑块验证失败,请重新验证',
  28. 'data' => [],
  29. 'code' => 0,
  30. ]);
  31. }
  32. if (strtolower(env('APP_ENV')) == 'down') {
  33. return $this->apiResponseError(null, '系统维护中...');
  34. }
  35. $is_behavior = \App\Servers\Yp::validateYP();
  36. if (empty($is_behavior) ) {
  37. return response()->json([
  38. 'msg' => '滑块验证失败,请重新验证',
  39. 'data' => [],
  40. 'code' => 0,
  41. ]);
  42. }
  43. $memberVerify=RegisterServer::register();
  44. if(empty($memberVerify)){
  45. return response()->json([
  46. 'msg' => '请完成人脸识别认证',
  47. 'data' => $memberVerify,
  48. 'code' => 0,
  49. ]);
  50. }
  51. $refereeCode = $request->input('referee_code', null); // 邀请码
  52. $refereeID = MemberNumber::where('referee', $refereeCode)->first();
  53. if (empty($refereeID)) {
  54. return $this->apiResponseError(null, '邀请码错误');
  55. }
  56. if (is_numeric($refereeID->{'member_id'}) && $refereeID->{'member_id'} > 0) {
  57. $refereeMember = Member::where('id', $refereeID->{'member_id'})->first();
  58. } else {
  59. $refereeMember = null;
  60. }
  61. if (empty($refereeMember)) {
  62. return $this->apiResponseError(null, '邀请码错误');
  63. }
  64. $sms = $request->input('sms', '');
  65. $phone = $request->input('phone', '');
  66. $type = $request->input('type', '');
  67. // 短信验证码是否通过
  68. $result = (new SmsServer)->checkSms($sms, $phone, $type);
  69. if ($result['errcode'] === false) {
  70. return $this->apiResponseError(null, $result['errmsg']);
  71. }
  72. DB::beginTransaction(); // 开启事务
  73. $registerMember = MemberServer::register($request, $refereeMember); // 注册会员
  74. DB::commit(); // 提交事务
  75. // 会员团队人数统计
  76. $parents = explode(",", $registerMember->{'referee_path'});
  77. foreach ($parents as $key => $parent) {
  78. $parentMember = Member::where('id', $parent)->first();
  79. if (empty($parentMember)) {
  80. continue;
  81. }
  82. // 团队人数统计
  83. $refereeMemberTeam = MemberTeam::where('member_id', $parentMember->{'id'})->first();
  84. if (!empty($refereeMemberTeam)) {
  85. // 直推团队人数
  86. MemberTeam::where('id', $refereeMemberTeam->{'id'})->increment('team_count', 1);
  87. if ($key <= 0) {
  88. // 团队直推人数
  89. MemberTeam::where('id', $refereeMemberTeam->{'id'})->increment('team_recommend_count', 1);
  90. }
  91. }
  92. }
  93. // 更新会员ID ::=> 实名认证表中
  94. if (!empty($registerMember)) {
  95. MemberVerify::where('id',$memberVerify->{'id'})
  96. ->where('member_id', '<=', 0)
  97. ->update([
  98. 'member_id' => $registerMember->{'id'}, // 更新会员ID
  99. ]);
  100. RegisterServer::attestApi($registerMember,$memberVerify->{'cid'},$memberVerify->{'real_name'});
  101. }
  102. if ($request->input('pc', null) == 'pc') {
  103. return $this->apiResponseSuccess(
  104. [
  105. 'redirect' => route('front.m.down'),
  106. ],
  107. '注册成功'
  108. );
  109. }
  110. // 注册成功重新登录
  111. return $this->apiResponseSuccess(
  112. [
  113. 'access_token' => "",
  114. 'token_type' => 'bearer',
  115. 'expires_in' => 1,
  116. 'm_id' => 0,
  117. ],
  118. '注册成功'
  119. );
  120. // $credentials = request(['phone', 'password']);
  121. // $token = auth('api')->attempt($credentials);
  122. // return response()->json([
  123. // 'msg' => '注册成功',
  124. // 'data' => [
  125. // 'access_token' => $token,
  126. // 'token_type' => 'bearer',
  127. // 'expires_in' => auth('api')->factory()->getTTL() * 60,
  128. // 'm_id' => auth('api')->user()->{'id'},
  129. // ],
  130. // 'code' => 1,
  131. // ]);
  132. } catch (\Exception $e) {
  133. DB::rollBack(); // 回滚
  134. return response()->json([
  135. 'msg' => $e->getMessage(),
  136. 'data' => [],
  137. 'code' => 0,
  138. ]);
  139. }
  140. }
  141. // pc 注册
  142. public function index()
  143. {
  144. $code = request()->input('code', 000000);
  145. return view('admins.auth.register', compact('code'));
  146. }
  147. /**
  148. * 获取token
  149. */
  150. public function getBizToken()
  151. {
  152. $idcard_number = request()->input('idcard_number', '');
  153. $idcard_name = request()->input('idcard_name', '');
  154. // return response()->json([
  155. // 'msg' => '信息校验中,请稍后再试...',
  156. // 'data' => [],
  157. // 'code' => 0,
  158. // ]);
  159. if (empty($idcard_number)) {
  160. return response()->json([
  161. 'msg' => '请输入身份证号码',
  162. 'data' => [],
  163. 'code' => 0,
  164. ]);
  165. }
  166. if (empty($idcard_name)) {
  167. return response()->json([
  168. 'msg' => '请输姓名',
  169. 'data' => [],
  170. 'code' => 0,
  171. ]);
  172. }
  173. $member_verify=MemberVerify::where('cid', $idcard_number)->where('status','1')->select(['id', 'status'])->first();
  174. if(!empty($member_verify)){
  175. session([
  176. 'verify_info' => [
  177. 'verify_id' => $member_verify->id
  178. ]
  179. ]);
  180. return response()->json([
  181. 'msg' => '认证成功',
  182. 'data' => ['biz_token' => '','verify_id'=>$member_verify->id],
  183. 'code' => 1,
  184. ]);
  185. }
  186. $biz_token = Faceid::getBizToken($idcard_name, $idcard_number);
  187. if (empty($biz_token)) {
  188. return response()->json([
  189. 'msg' => '姓名与身份证信息不符',
  190. 'data' => [],
  191. 'code' => 0,
  192. ]);
  193. } else {
  194. session([
  195. 'biz_token_info' => [
  196. 'biz_token' => $biz_token,
  197. 'idcard_number' => $idcard_number,
  198. 'idcard_name' => $idcard_name,
  199. ]
  200. ]);
  201. return response()->json([
  202. 'msg' => '获取token成功',
  203. 'data' => ['biz_token' => $biz_token,'verify_id'=>'0'],
  204. 'code' => 1,
  205. ]);
  206. }
  207. //验证当前身份证是否已经实名认证
  208. // $verify_member = MemberNumber::where('cid', $idcard_number)->select(['id', 'status'])->first();
  209. // if (empty($verify_member) || $verify_member->status != '2') {
  210. //
  211. //
  212. // } else {
  213. // return response()->json([
  214. // 'msg' => '当前用户已实名认证',
  215. // 'data' => [],
  216. // 'code' => 0,
  217. // ]);
  218. // }
  219. }
  220. function verifyIdentity()
  221. {
  222. $biz_token_info = session('biz_token_info', []);
  223. // $biz_token_info['biz_token']='1572248662,6dfadc72-bfb2-43df-8540-0c0e0f6519e5';
  224. if (empty($biz_token_info['biz_token'])) {
  225. return response()->json([
  226. 'msg' => '请完成人脸识别认证',
  227. 'data' => [],
  228. 'code' => 0,
  229. ]);
  230. }
  231. $send_biz_token = request()->input('biz_token', '');
  232. if ($biz_token_info['biz_token'] != $send_biz_token) {
  233. return response()->json([
  234. 'msg' => '请上传正确的token信息',
  235. 'data' => [
  236. 'old'=>$biz_token_info['biz_token'],
  237. 'new'=>$send_biz_token
  238. ],
  239. 'code' => 0,
  240. ]);
  241. }
  242. $biz_data = request()->input('biz_data', '');
  243. // $biz_data=file_get_contents('../aa.txt');
  244. // dd($biz_data);
  245. // $biz_data=file_get_contents('../aa.txt');
  246. // if (empty($biz_data)) {
  247. // return response()->json([
  248. // 'msg' => '请上传人脸识别信息',
  249. // 'data' => [],
  250. // 'code' => 0,
  251. // ]);
  252. // }
  253. $is_verify = Faceid::verifyIdentity($send_biz_token, $biz_data);
  254. if(empty($is_verify)){
  255. return response()->json([
  256. 'msg' => '人脸识别失败',
  257. 'data' => [],
  258. 'code' => 0,
  259. ]);
  260. }else{
  261. $verify_info=MemberVerify::create([
  262. 'cid'=>$biz_token_info['idcard_number'],
  263. 'real_name'=>$biz_token_info['idcard_name'],
  264. 'biz_token'=>$biz_token_info['biz_token'],
  265. 'status'=>1,
  266. 'member_id'=>0,
  267. ]);
  268. if(empty($verify_info)){
  269. return response()->json([
  270. 'msg' => '信息存储失败',
  271. 'data' => [],
  272. 'code' => 0,
  273. ]);
  274. }
  275. session([
  276. 'verify_info' => [
  277. 'verify_id' => $verify_info->id
  278. ]
  279. ]);
  280. return response()->json([
  281. 'msg' => '人脸识别成功',
  282. 'data' => ['verify_id'=>$verify_info->id],
  283. 'code' => 1,
  284. ]);
  285. }
  286. }
  287. }