findChannelId($data['package']); $qapp_user = $this->getQAppUserByDeviceNo($device_no, $channel_id); if (!$qapp_user) { $qapp_user = $this->createQuickAppUser($data); } $user = $qapp_user->user; $uid = $user->id; $time = strtotime("+1 month"); $token = JWTAuth::fromUser($user); if ($data['send_order_id']) { UserService::setUserSendOrder($uid, $data['send_order_id']); } return compact('token', 'time', 'uid'); } public function getGolableUser() { $qapp_user = app()->make('qapp_user'); return $qapp_user; } /** * 绑定手机号 */ public function bindPhone(int $uid, string $phone) { $qapp_user = QappUser::where('uid', $uid)->first(); if ($qapp_user->phone && $qapp_user->phone != $phone) { return false; } else { try { DB::beginTransaction(); $qapp_user->phone = $phone; $qapp_user->save(); $reward = 100; User::where('id', $uid)->update( [ 'balance' => DB::raw('balance+' . $reward), 'reward_balance' => DB::raw('reward_balance+' . $reward) ] ); DB::commit(); } catch (Exception $e) { myLog('bindPhone')->error($e->getMessage()); } return true; } } public function setGolableUser(int $uid) { $user_info = $this->getQAppUserByUid($uid); $qapp_user = app()->make('qapp_user'); $qapp_user->id = $user_info->id; $qapp_user->uid = $user_info->uid; $qapp_user->send_order_id = $user_info->send_order_id; $qapp_user->device_no = $user_info->device_no; $qapp_user->device_info = $user_info->device_info; $qapp_user->phone = $user_info->phone; $qapp_user->user = $user_info->user; $qapp_user->app_pay_merchat_id = $user_info->app_pay_merchat_id; $qapp_user->h5_pay_merchat_id = $user_info->h5_pay_merchat_id; $qapp_user->ali_pay_merchat_id = $user_info->ali_pay_merchat_id; } /** * 根据设备号获取快应用用户信息 */ public function getQAppUserByDeviceNo(string $device_no, int $channel_id) { $qapp_user = QappUser::where('device_no', $device_no)->where('channel_id', $channel_id)->first(); if ($qapp_user) { $user = User::find($qapp_user->uid); $qapp_user->user = $user; } return $qapp_user; } /** * 根据uid获取快应用用户信息 */ public function getQAppUserByUid(int $uid) { $qapp_user = QappUser::where('uid', $uid)->first(); if ($qapp_user) { $user = User::find($uid); $qapp_user->user = $user; $qapp_user->send_order_id = UserService::getUserSendOrder($uid); $package_info = QappPackage::where('channel_id', $user->distribution_channel_id)->first(); $qapp_user->app_pay_merchat_id = $package_info->app_pay_merchat_id; $qapp_user->h5_pay_merchat_id = $package_info->h5_pay_merchat_id; $qapp_user->ali_pay_merchat_id = $package_info->ali_pay_merchat_id; } return $qapp_user; } /** * 创建快应用用户信息 */ public function createQuickAppUser(array $data) { try { DB::beginTransaction(); $user = $this->createUser($data); $channel_id = $user->distribution_channel_id; $qapp_user = QappUser::firstOrCreate([ 'device_no' => $data['device_no'], 'channel_id' => $channel_id, ], [ 'androidid' => $data['androidid'], 'mac' => $data['mac'], 'uid' => $user->id, 'device_info' => $data['device_info'], ]); $qapp_user->user = $user; DB::commit(); $job = new QappTikTokUser($data['device_no'], $data['mac'], $channel_id, $user->id, $user->created_at); dispatch($job->onConnection('rabbitmq')->onQueue('qapp_tiktok_user_register_queue')); return $qapp_user; } catch (Exception $e) { myLog('create_user')->error($e->getMessage()); } } private function findChannelId(string $package) { $channel_id = env('QUICKAPP_SITE'); if ($package) { $package_info = QappPackage::where('package', $package)->first(); $channel_id = $package_info ? $package_info->channel_id : $channel_id; } return $channel_id; } /** * 创建用户 */ private function createUser(array $data) { $openid = $data['device_no']; $unionid = $data['device_no']; $register_ip = _getIp(); $distribution_channel_id = $this->findChannelId($data['package']); $send_order_id = $data['send_order_id']; $unique_key = compact('unionid', 'distribution_channel_id'); $data = compact('openid', 'register_ip', 'send_order_id'); return User::firstOrCreate($unique_key, $data); } }