diff --git a/app/Admin/Controllers/SettingController.php b/app/Admin/Controllers/SettingController.php index bb39508..f2f75e6 100644 --- a/app/Admin/Controllers/SettingController.php +++ b/app/Admin/Controllers/SettingController.php @@ -3,7 +3,6 @@ namespace App\Admin\Controllers; use Illuminate\Http\Request; -use Illuminate\Support\Arr; use Slowlyo\OwlAdmin\Controllers\AdminController; use Slowlyo\OwlAdmin\Renderers\Tab; use Slowlyo\OwlAdmin\Renderers\Tabs; @@ -27,6 +26,12 @@ class SettingController extends AdminController ->data(settings()->all()) ->body( Tabs::make()->tabs([ + Tab::make()->title('网站设置')->body([ + amis()->ImageControl('website.download_page_background', '下载页背景图') + ->accept('.png,.jpg,.jpeg') + ->receiver($this->uploadImagePath().'?full-url=1') + ->value('${website.download_page_background}'), + ]), Tab::make()->title('上传设置')->body([ amis()->RadiosControl('upload_disk', '上传驱动')->options([ 'public' => '本地存储', @@ -51,7 +56,8 @@ class SettingController extends AdminController $data = $request->only([ 'upload_disk', 'oss_config', - 'sign' + 'sign', + 'website', ]); //上传设置-修改env文件内配置; diff --git a/app/Http/Controllers/Api/AppVersionController.php b/app/Http/Controllers/Api/AppVersionController.php index 4abd8bd..8e9e66e 100644 --- a/app/Http/Controllers/Api/AppVersionController.php +++ b/app/Http/Controllers/Api/AppVersionController.php @@ -13,56 +13,69 @@ class AppVersionController extends Controller public function latest(Request $request): array { // 客户端系统 - $cliOs = AppOs::tryFrom((string) $request->header('app-cli-os')); + $os = AppOs::tryFrom((string) $request->header('app-cli-os')); // 客户端版本 - $cliVersion = (int) $request->header('app-cli-version', 0); + $version = (int) $request->header('app-cli-version', 0); - $data = ['android' => null, 'ios' => null]; + $android = AppVersion::onlyReleased() + ->where('os', AppOs::Android) + ->latest('version') + ->first(); - foreach ([ - AppOs::Android, - AppOs::Ios, - ] as $os) { - /** @var \App\Models\AppVersion|null */ - $appVersion = AppVersion::onlyReleased() - ->where('os', $os) - ->latest('version') - ->first(); + $ios = AppVersion::onlyReleased() + ->where('os', AppOs::Ios) + ->latest('version') + ->first(); - if (is_null($appVersion)) { - continue; - } + switch ($os) { + case AppOs::Android: + if ($android->version > $version + 1) { + if (! $android->isApkUpdate()) { + $apkUpdateVersion = AppVersion::onlyReleased() + ->where('os', AppOs::Android) + ->where('version', '>', $version) + ->where('update_strategy', AppUpdateStrategy::Apk) + ->latest('version') + ->first(); - $json = AppVersionResource::make($appVersion)->resolve($request); - - // 如果客户端版本和最新的版本之前有全量包更新的版本,则需全量包更新 - if (! $appVersion->isApkUpdate() && $cliOs === $os && $appVersion->version > $cliVersion + 1) { - $isApkUpdate = AppVersion::onlyReleased() - ->where('os', $cliOs) - ->where('version', '>', $cliVersion) - ->where('update_strategy', AppUpdateStrategy::Apk) - ->exists(); - - if ($isApkUpdate) { - $json['update_strategy'] = AppUpdateStrategy::Apk; - if ((string) $appVersion->apk_url === '') { - $json['apk_url'] = AppVersion::getLatestApkUrl($cliOs, $cliVersion); + // 全量包更新 + if ($apkUpdateVersion) { + if ((string) $android->apk_url !== '') { + $android->update_strategy = AppUpdateStrategy::Apk; + } else { + $android = $apkUpdateVersion; + } + } } } - } + break; - // 如果客户端版本和最新的版本之间有强制更新的版本,则需强制更新 - if (! $appVersion->is_force && $cliOs === $os && $appVersion->version > $cliVersion + 1) { - $json['is_force'] = AppVersion::onlyReleased() - ->where('os', $cliOs) - ->where('version', '>', $cliVersion) - ->where('is_force', true) - ->exists(); - } + case AppOs::Ios: + if ($ios->version > $version + 1) { + if (! $ios->isApkUpdate()) { + $apkUpdateVersion = AppVersion::onlyReleased() + ->where('os', AppOs::Ios) + ->where('version', '>', $version) + ->where('update_strategy', AppUpdateStrategy::Apk) + ->latest('version') + ->first(); - $data[$os->value] = $json; + // 全量包更新 + if ($apkUpdateVersion) { + if ((string) $ios->apk_url !== '') { + $ios->update_strategy = AppUpdateStrategy::Apk; + } else { + $ios = $apkUpdateVersion; + } + } + } + } + break; } - return $data; + return [ + 'android' => $android ? AppVersionResource::make($android) : null, + 'ios' => $ios ? AppVersionResource::make($ios) : null, + ]; } } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php new file mode 100644 index 0000000..f66aa00 --- /dev/null +++ b/app/Http/Controllers/HomeController.php @@ -0,0 +1,31 @@ +get('website', []); + + $background = $websiteConfig['download_page_background'] ?? null; + + $apkDownloadUrl = AppVersion::onlyReleased() + ->where('os', AppOs::Android) + ->whereNotNull('apk_url') + ->latest('version') + ->value('apk_url'); + + $iosDownloadUrl = AppVersion::onlyReleased() + ->where('os', AppOs::Ios) + ->whereNotNull('apk_url') + ->latest('version') + ->value('apk_url'); + + return view('home.index', compact('apkDownloadUrl', 'iosDownloadUrl', 'background')); + } +} diff --git a/app/Models/AppVersion.php b/app/Models/AppVersion.php index 149abee..cbcbfd0 100644 --- a/app/Models/AppVersion.php +++ b/app/Models/AppVersion.php @@ -69,6 +69,30 @@ class AppVersion extends Model ->value('apk_url'); } + protected function apkUrl(): Attribute + { + return Attribute::make( + set: function (mixed $value) { + if ((string) $value === '') { + $value = null; + } + return $value; + }, + ); + } + + protected function wgtUrl(): Attribute + { + return Attribute::make( + set: function (mixed $value) { + if ((string) $value === '') { + $value = null; + } + return $value; + }, + ); + } + protected function isRelease(): Attribute { return Attribute::make( diff --git a/public/admin-assets/IOS.svg b/public/admin-assets/IOS.svg new file mode 100644 index 0000000..e620741 --- /dev/null +++ b/public/admin-assets/IOS.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/admin-assets/android-fill.svg b/public/admin-assets/android-fill.svg new file mode 100644 index 0000000..94a0c42 --- /dev/null +++ b/public/admin-assets/android-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/views/home/index.blade.php b/resources/views/home/index.blade.php new file mode 100644 index 0000000..b35f33a --- /dev/null +++ b/resources/views/home/index.blade.php @@ -0,0 +1,173 @@ + + + + + + + 门店助手 - 下载 + + + + + +
+
+ +

托管门店助手

+ +
+ +
+ + + + + diff --git a/routes/web.php b/routes/web.php index cc576f9..b1f3997 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,5 +1,6 @@