作者 Richer

功能完成

  1 +<?php
  2 +/**
  3 ++-----------------------------------------------------------------------------------------------------------------------
  4 + * grid 列表 modal 类:家庭-成员 modal 类
  5 ++-----------------------------------------------------------------------------------------------------------------------
  6 + *
  7 + * PHP version 7
  8 + *
  9 + * @category App\Admin\Grids\Modal
  10 + * @package App\Admin\Grids\Modal
  11 + * @author Richer <yangzi1028@163.com>
  12 + * @date 2022年11月1日16:03:27
  13 + * @copyright 2020-2022 Richer (http://www.Richer.com/)
  14 + * @license http://www.Richer.com/ License
  15 + * @link http://www.Richer.com/
  16 + */
  17 +namespace App\Admin\Grids\Modal\User;
  18 +
  19 +use App\Admin\Grids\Modal\BaseModal;
  20 +use App\Models\User\TimesRecord;
  21 +use App\Models\User\User;
  22 +use App\Transformers\Activity\ActivityUserTransformer;
  23 +use App\Transformers\User\TimesRecordTransformer;
  24 +use App\Transformers\User\UserTransformer;
  25 +
  26 +/**
  27 + * Class TeamModal
  28 + *
  29 + * @category App\Admin\Grids\User
  30 + * @package App\Admin\Grids\User
  31 + * @author Richer <yangzi1028@163.com>
  32 + * @date 2022年3月15日09:22:19
  33 + * @copyright 2020-2022 Richer (http://www.Richer.com/)
  34 + * @license http://www.Richer.com/ License
  35 + * @link http://www.Richer.com/
  36 + */
  37 +class TeamModal extends BaseModal
  38 +{
  39 + protected $type = '';
  40 +
  41 + /**
  42 + * TeamModal constructor.
  43 + * @param $type
  44 + */
  45 + public function __construct($type = '')
  46 + {
  47 + $this->type = $type;
  48 + }
  49 + public function render($key = null)
  50 + {
  51 +// dd($this->type );
  52 + $user = User::find($key);
  53 + if ($user->partner == 1) {
  54 + $list = User::where(function ($query) use($key) {
  55 + $query->where('pid', $key)->orWhere('gid', $key);
  56 + })->latest()->paginate(request('per_page', 10));
  57 + } else {
  58 + $list = User::where('pid', $key)->latest()->paginate(request('per_page', 10));
  59 + }
  60 + request()->offsetSet('user_id', $key);
  61 + $paginator = $this->renderPaginator($key, $list, app(UserTransformer::class));
  62 + // 定义需要展示的字段
  63 + $columns = [
  64 + [
  65 + 'name' => __('avatar'),
  66 + 'field' => 'avatar',
  67 + 'type' => 'image',
  68 + ],
  69 + [
  70 + 'name' => __('nickname'),
  71 + 'field' => 'nickname',
  72 + ],
  73 + [
  74 + 'name' => __('mobile'),
  75 + 'field' => 'mobile',
  76 + ],
  77 + [
  78 + 'name' => __('关系'),
  79 + 'field' => 'level_show',
  80 + ],
  81 + [
  82 + 'name' => __('加入时间'),
  83 + 'field' => 'created_at',
  84 + ],
  85 + ];
  86 +
  87 + $paginator['columns'] = $columns;
  88 +
  89 + return view(
  90 + 'admin::grid.modal',
  91 + $paginator
  92 + );
  93 + }
  94 +}
@@ -18,6 +18,7 @@ namespace App\Admin\Grids\User; @@ -18,6 +18,7 @@ namespace App\Admin\Grids\User;
18 18
19 use App\Admin\Extensions\CustomActions; 19 use App\Admin\Extensions\CustomActions;
20 use App\Admin\Grids\Modal\User\IncomeRecordModal; 20 use App\Admin\Grids\Modal\User\IncomeRecordModal;
  21 +use App\Admin\Grids\Modal\User\TeamModal;
21 use App\Admin\Grids\Modal\User\TimesRecordModal; 22 use App\Admin\Grids\Modal\User\TimesRecordModal;
22 use App\Admin\Grids\Modal\User\WithdrawnRecordModal; 23 use App\Admin\Grids\Modal\User\WithdrawnRecordModal;
23 use App\Models\User\User; 24 use App\Models\User\User;
@@ -91,7 +92,7 @@ trait UserGrid @@ -91,7 +92,7 @@ trait UserGrid
91 { 92 {
92 parent::setGridQuery(); 93 parent::setGridQuery();
93 94
94 - $this->grid->model()->with(['wallet']); 95 + $this->grid->model()->with(['wallet']);//->withCount(['allChildren']);
95 } 96 }
96 97
97 /** 98 /**
@@ -132,7 +133,6 @@ trait UserGrid @@ -132,7 +133,6 @@ trait UserGrid
132 $url = $actions->getResource(); 133 $url = $actions->getResource();
133 134
134 $actions->append(CustomActions::renderAddUserTimes($id, $url)); 135 $actions->append(CustomActions::renderAddUserTimes($id, $url));
135 -  
136 } 136 }
137 137
138 /** 138 /**
@@ -142,16 +142,25 @@ trait UserGrid @@ -142,16 +142,25 @@ trait UserGrid
142 */ 142 */
143 public function renderGridFields() 143 public function renderGridFields()
144 { 144 {
  145 + $this->grid->fixColumns(1, -1);
145 $this->gridRowNo(); 146 $this->gridRowNo();
146 $this->gridUser(); 147 $this->gridUser();
  148 +
147 // $this->gridBoolField('partner'); 149 // $this->gridBoolField('partner');
148 $this->gridSwitchField('partner', '', config('constants.STATUS1_STATE_OPTIONS')); 150 $this->gridSwitchField('partner', '', config('constants.STATUS1_STATE_OPTIONS'));
  151 + $this->gridNumberField('children_count', '团队')->display(function () {
  152 + if ($this->partner == 1) {
  153 + return $this->children()->count() + $this->children1()->count();
  154 + }
  155 + return $this->children()->count();
  156 +
  157 + })->modal('团队明细记录', TeamModal::class);//->sortable();
149 158
150 159
151 $this->gridTextField('wallet.income', '总收入')->modal('收入明细记录', IncomeRecordModal::class); 160 $this->gridTextField('wallet.income', '总收入')->modal('收入明细记录', IncomeRecordModal::class);
152 $this->gridTextField('wallet.balance', '余额'); 161 $this->gridTextField('wallet.balance', '余额');
153 - $this->gridTextField('wallet.withdrawn', '提现')->modal('提现明细记录', WithdrawnRecordModal::class);  
154 - $this->gridTextField('wallet.frozen', '冻结'); 162 +// $this->gridTextField('wallet.withdrawn', '提现')->modal('提现明细记录', WithdrawnRecordModal::class);
  163 +// $this->gridTextField('wallet.frozen', '冻结');
155 // $this->gridSingleImageField('avatar', __('wx_avatar')); 164 // $this->gridSingleImageField('avatar', __('wx_avatar'));
156 //// $this->gridTextField('username'); 165 //// $this->gridTextField('username');
157 //// $this->gridTextField('name', __('truename')); 166 //// $this->gridTextField('name', __('truename'));
@@ -159,8 +168,8 @@ trait UserGrid @@ -159,8 +168,8 @@ trait UserGrid
159 // $this->gridSingleSelectField('gender', __('gender'), User::GENDER_OPTIONS, User::GENDER_COLOR_OPTIONS); 168 // $this->gridSingleSelectField('gender', __('gender'), User::GENDER_OPTIONS, User::GENDER_COLOR_OPTIONS);
160 $this->gridNumberField('times')->modal('次数明细记录', TimesRecordModal::class)->sortable(); 169 $this->gridNumberField('times')->modal('次数明细记录', TimesRecordModal::class)->sortable();
161 $this->gridTextField('login_times')->sortable(); 170 $this->gridTextField('login_times')->sortable();
162 - $this->gridDateField('last_login_time'); 171 +// $this->gridDateField('last_login_time');
163 $this->gridDateField('created_at', __('registered_at')); 172 $this->gridDateField('created_at', __('registered_at'));
164 - $this->gridSingleImageField('invite_qr_code', '小程序码'); 173 +// $this->gridSingleImageField('invite_qr_code', '小程序码');
165 } 174 }
166 } 175 }
@@ -16,8 +16,12 @@ @@ -16,8 +16,12 @@
16 */ 16 */
17 namespace App\Factories\Wechat; 17 namespace App\Factories\Wechat;
18 18
  19 +use App\Models\User\User;
19 use EasyWeChat\Factory; 20 use EasyWeChat\Factory;
20 use Illuminate\Http\Request; 21 use Illuminate\Http\Request;
  22 +use Illuminate\Support\Arr;
  23 +use Illuminate\Support\Facades\Log;
  24 +use Illuminate\Support\Str;
21 25
22 /** 26 /**
23 * Trait Official 27 * Trait Official
@@ -98,7 +102,7 @@ trait Official @@ -98,7 +102,7 @@ trait Official
98 Log::info($message); 102 Log::info($message);
99 103
100 //按事件类型处理 104 //按事件类型处理
101 - $event = \Str::camel('event_'. $message['Event']); 105 + $event = Str::camel('event_'. $message['Event']);
102 106
103 if (method_exists($this, $event)) { 107 if (method_exists($this, $event)) {
104 return call_user_func_array([$this, $event], [$message]); 108 return call_user_func_array([$this, $event], [$message]);
@@ -116,8 +120,8 @@ trait Official @@ -116,8 +120,8 @@ trait Official
116 protected function eventSubscribe($message) 120 protected function eventSubscribe($message)
117 { 121 {
118 // 设置了场景 122 // 设置了场景
119 - if (\Arr::get($message, 'EventKey')) {  
120 - $message['EventKey'] = str_replace('qrscene_', '', \Arr::get($message, 'EventKey')); 123 + if (Arr::get($message, 'EventKey')) {
  124 + $message['EventKey'] = str_replace('qrscene_', '', Arr::get($message, 'EventKey'));
121 $user_id = str_replace('INVITE', '', $message['EventKey']); 125 $user_id = str_replace('INVITE', '', $message['EventKey']);
122 $user = User::findOrFail($user_id); 126 $user = User::findOrFail($user_id);
123 if ($user) { 127 if ($user) {
@@ -139,8 +143,8 @@ trait Official @@ -139,8 +143,8 @@ trait Official
139 */ 143 */
140 protected function eventSCAN($message) 144 protected function eventSCAN($message)
141 { 145 {
142 - if (\Arr::get($message, 'EventKey')) {  
143 - $message['EventKey'] = str_replace('qrscene_', '', \Arr::get($message, 'EventKey')); 146 + if (Arr::get($message, 'EventKey')) {
  147 + $message['EventKey'] = str_replace('qrscene_', '', Arr::get($message, 'EventKey'));
144 $user_id = str_replace('INVITE', '', $message['EventKey']); 148 $user_id = str_replace('INVITE', '', $message['EventKey']);
145 $user = User::findOrFail($user_id); 149 $user = User::findOrFail($user_id);
146 if ($user) { 150 if ($user) {
@@ -96,14 +96,14 @@ class AuthController extends BaseController @@ -96,14 +96,14 @@ class AuthController extends BaseController
96 /** 96 /**
97 * 用户登录:微信收取登录 97 * 用户登录:微信收取登录
98 * 98 *
99 - * @param LoginRequest $request 99 + * @param Request $request
100 * @return Response 100 * @return Response
101 */ 101 */
102 - public function wechatAuth(LoginRequest $request) 102 + public function wechatAuth(Request $request)
103 { 103 {
104 $result = $this->service->wechatAuth($request); 104 $result = $this->service->wechatAuth($request);
105 if ($result) { 105 if ($result) {
106 - return $this->success($result, __('login') . ' ' . __('succeeded'), 0); 106 + return $this->success($result, __('login') . ' ' . __('succeeded'), 0, $result->token);
107 } else { 107 } else {
108 return $this->error($this->service->getMessage(), 2006); 108 return $this->error($this->service->getMessage(), 2006);
109 } 109 }
@@ -190,7 +190,7 @@ trait ChatTrait @@ -190,7 +190,7 @@ trait ChatTrait
190 * @param string $type 190 * @param string $type
191 * @return string 191 * @return string
192 */ 192 */
193 - public static function sendRequest($open_ai, $send_data, $type = 'chunked') 193 + public static function sendRequest($open_ai, $send_data, $type = 'stream')
194 { 194 {
195 $answer = ''; 195 $answer = '';
196 if ($type === 'chunked') { 196 if ($type === 'chunked') {
@@ -245,9 +245,8 @@ trait ChatTrait @@ -245,9 +245,8 @@ trait ChatTrait
245 header('Content-type: text/event-stream'); 245 header('Content-type: text/event-stream');
246 header('Cache-Control: no-cache'); 246 header('Cache-Control: no-cache');
247 ob_end_flush(); 247 ob_end_flush();
248 - $answer = "";  
249 $complete = $open_ai->chat($send_data, function ($curl_info, $data) use (&$answer) { 248 $complete = $open_ai->chat($send_data, function ($curl_info, $data) use (&$answer) {
250 - record_log($this->log_channel, '开始请求' ); 249 +// record_log($this->log_channel, '开始请求' );
251 250
252 $deltas = explode("\n", $data); 251 $deltas = explode("\n", $data);
253 $content = ''; 252 $content = '';
@@ -266,11 +265,11 @@ trait ChatTrait @@ -266,11 +265,11 @@ trait ChatTrait
266 } else { 265 } else {
267 $content = "对不起,我不知道怎么去回答。"; 266 $content = "对不起,我不知道怎么去回答。";
268 } 267 }
269 - echo "data: " .str_replace("\n", "\\n", $content )."\n\n"; 268 + echo str_replace("\n", "\\n", $content )."\n\n";
270 flush(); 269 flush();
271 } 270 }
272 271
273 - record_log($this->log_channel, '内容: ' . $content ); 272 +// record_log($this->log_channel, '内容: ' . $content );
274 273
275 if (connection_aborted()) { 274 if (connection_aborted()) {
276 return 0; 275 return 0;
@@ -87,10 +87,34 @@ trait UserTrait @@ -87,10 +87,34 @@ trait UserTrait
87 */ 87 */
88 public function children(): HasMany 88 public function children(): HasMany
89 { 89 {
  90 + return $this->hasMany(get_class($this), 'pid', 'id');
  91 + }
  92 +
  93 +
  94 + /**
  95 + * @return HasMany
  96 + */
  97 + public function children1(): HasMany
  98 + {
90 return $this->hasMany(get_class($this), 'gid', 'id'); 99 return $this->hasMany(get_class($this), 'gid', 'id');
91 } 100 }
92 101
93 /** 102 /**
  103 + * @return hasMany
  104 + */
  105 + public function allChildren()
  106 + {
  107 + if ($this->partner == 1) {
  108 + return $this->children()->with('allChildren');
  109 + }
  110 +
  111 + return $this->children();
  112 +
  113 + }
  114 +
  115 +// public function team
  116 +
  117 + /**
94 * 我的详情 118 * 我的详情
95 * 119 *
96 * @return hasOne 120 * @return hasOne
@@ -391,6 +391,75 @@ class WechatService extends BaseService @@ -391,6 +391,75 @@ class WechatService extends BaseService
391 } 391 }
392 } 392 }
393 393
  394 + public function authLoginWithOfficialAccount1($request)
  395 + {
  396 + $config = [
  397 + 'app_id' => config('wechat.official_account.app_id'),
  398 + 'secret' => config('wechat.official_account.secret'),
  399 + // 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
  400 + 'oauth' => [
  401 + 'scopes' => ['snsapi_userinfo'],
  402 + 'callback' => '/oauth_callback',
  403 + ],
  404 + // 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
  405 + 'response_type' => 'array',
  406 + ];
  407 +
  408 + $app = Factory::officialAccount($config);
  409 + $oauth = $app->oauth;
  410 +
  411 + $targetUrl = urldecode($request->input('target_url'));
  412 +
  413 + $response = [
  414 + 'errcode' => 0,
  415 + 'errmsg' => '操作成功',
  416 + 'result' => [],
  417 + ];
  418 +
  419 + if (empty($targetUrl)) {
  420 + $this->message = '参数错误:target_url';
  421 + return false;
  422 + }
  423 +
  424 + // 判断用户是否已经授权
  425 + if (empty(session('wechat.oauth_user'))) {
  426 + // 用户未授权,则开始授权
  427 + session(['wechat.oauth_target_url' => $targetUrl]);
  428 + return $oauth->redirect();
  429 + } else {
  430 + // 用户已经授权
  431 + $user = session('wechat.oauth_user');
  432 + $response['result'] = $user;
  433 + return $response;
  434 + }
  435 + }
  436 +
  437 + public function oauthCallback()
  438 + {
  439 + $config = [
  440 + 'app_id' => config('wechat.official_account.app_id'),
  441 + 'secret' => config('wechat.official_account.secret'),
  442 + // 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
  443 + 'oauth' => [
  444 + 'scopes' => ['snsapi_userinfo'],
  445 + 'callback' => '/oauth_callback',
  446 + ],
  447 + // 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
  448 + 'response_type' => 'array',
  449 + ];
  450 +
  451 + $app = Factory::officialAccount($config);
  452 + $oauth = $app->oauth;
  453 + $user = $oauth->user()->getOriginal();
  454 + $targetUrl = session('wechat.oauth_target_url');
  455 +
  456 + // 将用户信息保存到session中
  457 + session(['wechat.oauth_user' => $user->toArray()]);
  458 +
  459 + return redirect($targetUrl);
  460 + }
  461 +
  462 +
394 /** 463 /**
395 * 登录:公众号收取登录 464 * 登录:公众号收取登录
396 * "openid" => "oemt65wMNi7XXo76PUIrsJuoJUeA" 465 * "openid" => "oemt65wMNi7XXo76PUIrsJuoJUeA"
@@ -411,9 +480,18 @@ class WechatService extends BaseService @@ -411,9 +480,18 @@ class WechatService extends BaseService
411 */ 480 */
412 public function authLoginWithOfficialAccount($request) 481 public function authLoginWithOfficialAccount($request)
413 { 482 {
  483 + record_log('wechat-auth', '微信公众号授权登录' , 'begin');
  484 + record_log('wechat-auth', '请求信息:' .json_encode($request->all()));
  485 + $code = $request->input('code');
  486 + if (!$code) {
  487 + $this->message = '授权失败,code不能为空。';
  488 + record_log('wechat-auth', '微信公众号授权登录' , 'end');
  489 + return false;
  490 + }
  491 +
414 // 正在申请 492 // 正在申请
415 $user_info = session('wechat.oauth_user.default')->original; // 拿到授权用户资料 493 $user_info = session('wechat.oauth_user.default')->original; // 拿到授权用户资料
416 - 494 + record_log('wechat-auth', '授权用户信息:' .json_encode($user_info));
417 495
418 // $factory = app(WechatFactory::class); 496 // $factory = app(WechatFactory::class);
419 // // 公众号好手气 497 // // 公众号好手气
@@ -440,18 +518,35 @@ class WechatService extends BaseService @@ -440,18 +518,35 @@ class WechatService extends BaseService
440 } 518 }
441 519
442 if ($user_info) { 520 if ($user_info) {
  521 + $pid = $request->inviter_id ? : 0; // 邀请人id
  522 + $gid = 0;
  523 + if ($pid) {
  524 + $inviter = User::find($pid);
  525 + $gid = optional($inviter)->pid;
  526 + }
443 $user->avatar = Arr::get($user_info, 'avatarUrl'); 527 $user->avatar = Arr::get($user_info, 'avatarUrl');
444 $user->nickname = Arr::get($user_info, 'nickName'); 528 $user->nickname = Arr::get($user_info, 'nickName');
445 $user->gender = Arr::get($user_info, 'gender'); 529 $user->gender = Arr::get($user_info, 'gender');
446 $user->country = Arr::get($user_info, 'country'); 530 $user->country = Arr::get($user_info, 'country');
447 $user->province = Arr::get($user_info, 'province'); 531 $user->province = Arr::get($user_info, 'province');
448 $user->city = Arr::get($user_info, 'city'); 532 $user->city = Arr::get($user_info, 'city');
  533 + $user->times = 10; // 新用户注册赠送 10 条
  534 + $user->invite_qr_code = 'mini_program_code/'.$user->id .'.png';
  535 + $user->pid = $pid;
  536 + $user->gid = $gid;
  537 + $user->openid = $openid;
  538 + $user->password = bcrypt(config('constants.PASSWORD'));
  539 + $user->role = Role::GENERAL;
  540 + $user->password = bcrypt(config('constants.PASSWORD'));
  541 + $user->registered_at = date('Y-m-d H:i:s');
  542 + $user->registered_ip = $request->ip();
449 } 543 }
450 $user->token = JWTAuth::fromuser($user); 544 $user->token = JWTAuth::fromuser($user);
451 $user->save(); 545 $user->save();
452 546
453 // 记录登陆日志 547 // 记录登陆日志
454 $this->recordLoginRecord($request, $user); 548 $this->recordLoginRecord($request, $user);
  549 + record_log('wechat-auth', '微信公众号授权登录' , 'end');
455 return $user; 550 return $user;
456 } 551 }
457 552
@@ -18,7 +18,9 @@ namespace App\Transformers\User; @@ -18,7 +18,9 @@ namespace App\Transformers\User;
18 18
19 use App\Models\User\Role; 19 use App\Models\User\Role;
20 use App\Models\User\User; 20 use App\Models\User\User;
  21 +use App\Models\User\WalletRecord;
21 use App\Transformers\BaseTransformer; 22 use App\Transformers\BaseTransformer;
  23 +use Illuminate\Support\Arr;
22 24
23 /** 25 /**
24 * Class UserTransformer. 26 * Class UserTransformer.
@@ -42,10 +44,10 @@ class UserTransformer extends BaseTransformer @@ -42,10 +44,10 @@ class UserTransformer extends BaseTransformer
42 */ 44 */
43 public function transform(User $model) 45 public function transform(User $model)
44 { 46 {
45 - return [ 47 + $output = [
46 'id' => (int) $model->id, 48 'id' => (int) $model->id,
47 - 'username' => (string)$model->username,  
48 - 'name' => (string)$model->name, 49 +// 'username' => (string)$model->username,
  50 +// 'name' => (string)$model->name,
49 'nickname' => (string)$model->nickname, 51 'nickname' => (string)$model->nickname,
50 'avatar' => (string)$model->avatar, 52 'avatar' => (string)$model->avatar,
51 'mobile' => (string)$model->mobile, 53 'mobile' => (string)$model->mobile,
@@ -62,5 +64,17 @@ class UserTransformer extends BaseTransformer @@ -62,5 +64,17 @@ class UserTransformer extends BaseTransformer
62 'created_at' => format_date($model->created_at), 64 'created_at' => format_date($model->created_at),
63 'updated_at' => format_date($model->updated_at), 65 'updated_at' => format_date($model->updated_at),
64 ]; 66 ];
  67 +
  68 + if (request('user_id')) {
  69 + if ($model->pid == request('user_id')) {
  70 + $output['level'] = 1;
  71 + $output['level_show'] = __(Arr::get(WalletRecord::EVENT_OPTIONS, WalletRecord::DIRECT));
  72 + } elseif ($model->gid == request('user_id')) {
  73 + $output['level'] = 2;
  74 + $output['level_show'] = __(Arr::get(WalletRecord::EVENT_OPTIONS, WalletRecord::INDIRECT));
  75 + }
  76 + }
  77 +
  78 + return $output;
65 } 79 }
66 } 80 }
@@ -164,6 +164,14 @@ return [ @@ -164,6 +164,14 @@ return [
164 'days' => 14, 164 'days' => 14,
165 'permission'=> 0777, 165 'permission'=> 0777,
166 ], 166 ],
  167 + // 微信支付回调日志
  168 + 'wechat-auth' => [
  169 + 'driver' => 'daily',
  170 + 'path' => storage_path('logs/wechat-auth/wechat-auth.log'),
  171 + 'level' => 'info',
  172 + 'days' => 14,
  173 + 'permission'=> 0777,
  174 + ],
167 ], 175 ],
168 176
169 ]; 177 ];
  1 +<!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><title>chatApp</title><script>var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
  2 + document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><link rel=stylesheet href=./static/index.b0707a6a.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=./static/js/chunk-vendors.fc0b6f42.js></script><script src=./static/js/index.293a48ba.js></script></body></html>
@@ -11,7 +11,8 @@ @@ -11,7 +11,8 @@
11 | 11 |
12 */ 12 */
13 Route::get('/', function () { 13 Route::get('/', function () {
14 - return view('welcome'); 14 +
  15 + return view('index');
15 }); 16 });
16 17
17 Route::group(['middleware' => ['cors']], function () { 18 Route::group(['middleware' => ['cors']], function () {