get('card_id'); $name = $request->get('name'); $age = idCard2age($card_id); $is_match_ride_age = ($age >= 16); User::where('id', $this->user->id)->update([ 'card_id' => $card_id, 'truename' => $name, 'is_card_certified' => User::CARD_NO, 'is_match_ride_age' => $is_match_ride_age ]); if (!$is_match_ride_age) { return $this->errorNoValidation('不满16周岁禁止骑车!'); } // $status = IdCardHandler::main($card_id, $name); // if ($status['code']) { // return $this->errorNoValidation($status['msg']); // } $user = User::where('id', $this->user->id)->update([ 'is_card_certified' => User::CARD_OK ]); event(new CardCertifiedEvent($this->user())); } catch (\Exception $exception) { return $this->errorNoValidation($exception->getMessage()); } return $this->response->array([ 'is_card_certified' => !!$user ]); } public function bindWechatMobile(WechatEncryptorMobileRequest $request) { try { // $session = $request->get('session_key'); $session = Cache::get('login:user:session_key:auth:' . $this->user->id); $iv = $request->get('iv'); $encryptedData = $request->get('encryptedData'); $miniProgram = app('wechat.mini_program'); $decryptedData = $miniProgram->encryptor->decryptData($session, $iv, $encryptedData); $mobile = $decryptedData['purePhoneNumber']; $user = User::where('id', $this->user->id)->update([ 'mobile' => $mobile, 'is_bind_mobile' => User::BIND_MOBILE_OK ]); return $this->response->array([ 'is_bind_mobile' => !!$user ]); } catch (\Exception $exception) { return $this->errorNoValidation($exception->getMessage()); } } /** * 绑定手机号 * @param BindMobileRequest $request * User: Mead */ public function bindMobile(BindMobileRequest $request) { try { $mobile = $request->get('mobile'); $code = $request->get('code', false); $v_code = Cache::get("verification_code_{$mobile}", ''); if (empty($v_code)) { return $this->errorNoValidation('验证码已过期'); } if ((string)$v_code !== (string)$code) { return $this->errorNoValidation('验证码错误'); } $user = User::where('id', $this->user->id)->update([ 'mobile' => $mobile, 'is_bind_mobile' => User::BIND_MOBILE_OK ]); return $this->response->array([ 'is_bind_mobile' => !!$user ]); } catch (\Exception $exception) { return $this->errorNoValidation($exception->getMessage()); } } /** * 发送验证码 * @param MobileCodeRequest $request * @return mixed * User: Mead */ public function sendVerificationCode(MobileCodeRequest $request) { $mobile = $request->get('mobile'); $type = $request->get('type'); $code = rand(1000, 9999); if ($type == 2) { // 仅仅表示换绑手机号 if ((bool)$this->user()->is_bind_mobile) { $verify_mobile = $this->user()->mobile ?? ''; if ($verify_mobile == $mobile) return $this->errorNoValidation('与旧手机号码相同,无需更改'); } $verify_user = User::query()->where('mobile', $mobile)->exists(); if ($verify_user) return $this->errorNoValidation('您绑定得手机号已存在,如有疑问请致电客服'); } elseif ($type == 3) { // 仅仅换账号登录时 $verify_user = User::query()->where('mobile', $mobile)->exists(); if (!$verify_user) return $this->errorNoValidation('您登录得手机号不存在,如有疑问请致电客服'); } try { // $this->dispatch(new SendSMSCodeJob($mobile, $code)); app('easy_sms')->send($mobile, [ 'template' => '1251374', 'data' => [ 'code' => $code ] ]); Cache::put("verification_code_{$mobile}", $code, Carbon::now()->addMinutes(5)); return $this->response->array([ 'is_send_sms' => true ]); } catch (Exception $exception) { $this->errorNoValidation($exception->getMessage()); } } /** * 获取时间戳 * @param UserRepository $userRepository * @return \Dingo\Api\Http\Response * User: Mead */ public function userStatus(UserRepository $userRepository) { try { $user = $userRepository->byIdGetUserStatus($this->user->id); return $this->response->item($user, UserStatusTransformer::class); } catch (\Exception $exception) { return $this->errorNoValidation($exception->getMessage()); } } /** * 存储用户的form_id * User: Mead */ public function storeFormId(UserFormIdRequest $request) { try { $form_id = $request->get('form_id'); FormId::create([ 'user_id' => $this->user->id, 'form_id' => $form_id, 'timestamp' => (time() + 604800) ]); return $this->success(); } catch (\Exception $exception) { return $this->errorNoValidation($exception->getMessage()); } } /** * 用户钱包记录 userWallerLogList * * @param WalletLogRepository $walletLogRepository * @return \Dingo\Api\Http\Response|void * @author Fx * */ public function userWallerLogList(WalletLogRepository $walletLogRepository) { try { $data = $walletLogRepository->byUserIdGetWalletLog($this->user->id); return $this->response->paginator($data, WalletLogTransformer::class); } catch (\Exception $exception) { return $this->errorNoValidation($exception->getMessage()); } } public function getInviteWechatQrcode(ImageUploadHandler $imageUploadHandler) { try { $folder = storage_path('app/public/img/invite_new_users/qrcode/'); $endfilename = 'qrcode.png'; $user_id = $this->user->id; // $user_id = 212; $user_qrcode_file = $folder . $user_id . $endfilename; if (!file_exists($user_qrcode_file)) { if (!is_dir($folder . 'qrcode')) { mkdir($folder . 'qrcode'); } if (!$imageUploadHandler->createWechatQrcode($folder, $user_id, $endfilename)) { return $this->errorNoValidation('系统错误,请稍后重试'); } } return $this->response->array([ 'path' => config('app.url') . '/storage/img/invite_new_users/qrcode/' . $user_id . $endfilename, ]); } catch (\Exception $e) { return $this->errorNoValidation($e->getMessage()); } } public function getInvitePoster(InviteNewUsersConfigRepository $inviteNewUsersConfigRepository, ImageUploadHandler $imageUploadHandler) { try { $folder = storage_path('app/public/img/invite_new_users/'); $endfilename = 'qrcode.png'; $user_id = $this->user->id; $register_area_id = $this->user->register_area_id; $posterEndFileName = 'register_area_id_' . $register_area_id . '_user_id_' . $user_id . '_poster.png'; $path = $folder . 'poster/' . $posterEndFileName; if (!is_dir($folder . 'poster')) { mkdir($folder . 'poster'); } if (!file_exists($path)) { $user_qrcode_file = $folder . 'qrcode/' . $user_id . $endfilename; if (!file_exists($user_qrcode_file)) { if (!is_dir($folder . 'qrcode')) { mkdir($folder . 'qrcode'); } if (!$imageUploadHandler->createWechatQrcode($folder . 'qrcode/', $user_id, $endfilename)) { return $this->errorNoValidation('系统错误,请稍后重试'); } } $inviteConfig = $inviteNewUsersConfigRepository->getInviteNewUsersConfigByAreaId($register_area_id); if (empty($inviteConfig) || empty($inviteConfig->background_image)) return $this->errorNoValidation('系统错误,请稍后重试'); $background_image = $inviteConfig->background_image; // Log::info($background_image); $img = Image::make($background_image); // Log::info(111); $watermark = Image::make($user_qrcode_file); $img->insert($watermark, 'bottom', 0, 635); $img->save($path); } return $this->response->array([ 'path' => config('app.url') . '/storage/img/invite_new_users/poster/' . $posterEndFileName, ]); } catch (\Exception $e) { return $this->errorNoValidation($e->getMessage()); } } public function getInviteNewUsersReward(InviteNewUsersRewardRequest $request, InviteNewUsersConfigRepository $inviteNewUsersConfigRepository, InviteNewUserRepository $inviteNewUserRepository, InviteNewUsersGiveGiftLogRepository $inviteNewUsersGiveGiftLogRepository) { try { $invite_new_users_configs_id = $request->get('invite_new_users_configs_id'); $gift_type = $request->get('gift_type'); $gift_id = $request->get('gift_id'); $gift_num = $request->get('gift_num'); $num = $request->get('num'); $data = [ 'user_id' => $this->user->id, 'invite_new_users_configs_id' => $invite_new_users_configs_id, 'gift_type' => $gift_type, 'gift_id' => $gift_id, 'gift_num' => $gift_num, ]; $invite_new_users_configs = $inviteNewUsersConfigRepository->byIdGetModel($invite_new_users_configs_id); if (empty($invite_new_users_configs)) return $this->errorNoValidation('找不到该互动,或活动已过期'); $is_repeat = $invite_new_users_configs->is_repeat; if ($is_repeat == InviteNewUsersConfig::REPEAT_NO) { // 不可重复 if ($inviteNewUsersGiveGiftLogRepository->checkExist($data)) return $this->errorNoValidation('您已经领取过该礼物,不可重复领取'); } $condition = $invite_new_users_configs->condition; $register_ids = $inviteNewUserRepository->isCondition($this->user->id, $condition, $num); if (!$register_ids) return $this->errorNoValidation('暂未达成条件,请稍后重试'); // 达成条件 $res = DB::transaction(function () use ($inviteNewUserRepository, $register_ids, $inviteNewUsersGiveGiftLogRepository, $data) { // 更新用户名额失效 $inviteNewUserRepository->updateStatus($register_ids); // 送礼 $logs = $inviteNewUsersGiveGiftLogRepository->logs($data); return $logs; }); if ($res) { // 成功获得 return $this->response->array(['status' => true]); } else { return $this->errorNoValidation('赠送失败'); } } catch (\Exception $e) { return $this->errorNoValidation($e->getMessage()); } } public function getInviteUsers(InviteNewUserRepository $inviteNewUserRepository) { try { $inviteUsers = $inviteNewUserRepository->getInviteUsers($this->user->id); return $this->response->collection($inviteUsers, RegisterUsersTransformer::class); } catch (\Exception $exception) { return $this->errorNoValidation($exception->getMessage()); } } }