From 9d0da4ea9692bcaec0293a7f7992b32a1d348b38 Mon Sep 17 00:00:00 2001 From: liutk <961510893@qq.com> Date: Tue, 21 May 2024 10:36:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Controllers/SettingController.php | 22 +++++++-- .../Controllers/Api/SettingController.php | 18 +++++++ app/Http/Requests/SettingRequest.php | 44 ++++++++++++++++++ app/Http/Resources/Api/UserResource.php | 6 ++- public/default-avatar.png | Bin 0 -> 3962 bytes routes/api.php | 2 + 6 files changed, 87 insertions(+), 5 deletions(-) create mode 100644 app/Http/Controllers/Api/SettingController.php create mode 100644 app/Http/Requests/SettingRequest.php create mode 100644 public/default-avatar.png diff --git a/app/Admin/Controllers/SettingController.php b/app/Admin/Controllers/SettingController.php index 9a30057..f1b7956 100644 --- a/app/Admin/Controllers/SettingController.php +++ b/app/Admin/Controllers/SettingController.php @@ -10,9 +10,13 @@ use Slowlyo\OwlAdmin\Renderers\Alert; use Slowlyo\OwlAdmin\Renderers\InputKV; use Slowlyo\OwlAdmin\Renderers\TextControl; use Slowlyo\OwlAdmin\Controllers\AdminController; +use App\Admin\Components; +use App\Traits\UploadTrait; class SettingController extends AdminController { + use UploadTrait; + public function index() { $page = $this->basePage()->body([ @@ -41,7 +45,12 @@ class SettingController extends AdminController amis()->TextControl('oss_config.endpoint', '对象存储endpoint')->required(true)->size('lg')->visibleOn('${upload_disk == "oss"}')->remark('示例: oss-cn-shanghai.aliyuncs.com'), amis()->TextControl('oss_config.domain', '自有域名')->size('lg')->visibleOn('${upload_disk == "oss"}')->remark('填写即启用 示例: my-domain.com'), amis()->SwitchControl('oss_config.use_ssl', '开启SSL')->value(false)->visibleOn('${upload_disk == "oss"}'), - ]), + ]), + Tab::make()->title('小程序配置')->body([ + Components::make()->cropImageControl('mini_logo', '小程序logo'), + Components::make()->fuEditorControl('user_agreement', '用户协议'), + Components::make()->fuEditorControl('privacy_policy', '隐私政策'), + ]), ]) ); } @@ -50,11 +59,15 @@ class SettingController extends AdminController { $data = $request->only([ 'upload_disk', - 'oss_config' + 'oss_config', + 'mini_logo', + 'user_agreement', + 'privacy_policy' ]); //上传设置-修改env文件内配置; if(!empty($data['upload_disk'])){ + $envData = array(); $envData['FILESYSTEM_DISK'] = $data['upload_disk']; if($envData['FILESYSTEM_DISK'] == 'oss'){//如果设置为OSS驱动,则配置env变量 $envData['OSS_ACCESS_KEY_ID'] = Arr::get($data['oss_config'], 'access_key_id'); @@ -84,8 +97,11 @@ class SettingController extends AdminController $content = implode("\n", $contentArray->toArray()); \File::put($envPath, $content); } + //处理图片上传 + if(!empty($data['mini_logo'])){ + $data['mini_logo'] = $this->saveImage('mini_logo', 'settings')[0] ?? ''; + } - return settings()->adminSetMany($data); } } diff --git a/app/Http/Controllers/Api/SettingController.php b/app/Http/Controllers/Api/SettingController.php new file mode 100644 index 0000000..f12c76a --- /dev/null +++ b/app/Http/Controllers/Api/SettingController.php @@ -0,0 +1,18 @@ +input('key', null); + + return $this->success([$key=> settings()->get($key)]); + } +} \ No newline at end of file diff --git a/app/Http/Requests/SettingRequest.php b/app/Http/Requests/SettingRequest.php new file mode 100644 index 0000000..a868d83 --- /dev/null +++ b/app/Http/Requests/SettingRequest.php @@ -0,0 +1,44 @@ + 'required|string|max:100', + ]; + } + + public function messages(){ + $message = [ + 'key.required' => 'key必填', + ]; + return $message; + } + + protected function failedValidation(Validator $validator){ + $error = $validator->errors()->all(); + throw new HttpResponseException(response()->json(['data' => null, 'code' => 400, 'message' => $error[0]])); + } +} diff --git a/app/Http/Resources/Api/UserResource.php b/app/Http/Resources/Api/UserResource.php index 7b40d5b..a77de19 100644 --- a/app/Http/Resources/Api/UserResource.php +++ b/app/Http/Resources/Api/UserResource.php @@ -4,6 +4,7 @@ namespace App\Http\Resources\Api; use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Response; +use Illuminate\Support\Facades\Storage; class UserResource extends JsonResource { @@ -16,9 +17,10 @@ class UserResource extends JsonResource public function toArray($request) { return [ - 'nick_name' => $this->nick_name ??'', - 'avatar' => $this->avatar ??'', + 'nick_name' => $this->nick_name ?? '微信用户', + 'avatar' => $this->avatar ?? env('APP_URL').'/default-avatar.png', 'phone' => $this->phone ??'', + 'is_need_bind_phone' => empty($this->phone) ? true:false, ]; } diff --git a/public/default-avatar.png b/public/default-avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..2c0baf17355e0a5054f6aebf8a49b4ec8c7533cf GIT binary patch literal 3962 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 Ub~Dv>&j0`b07*qoM6N<$f-}%|ga7~l literal 0 HcmV?d00001 diff --git a/routes/api.php b/routes/api.php index 96819dd..73bf5de 100644 --- a/routes/api.php +++ b/routes/api.php @@ -37,6 +37,8 @@ Route::group(['prefix' => 'miniprogram', 'namespace' => 'Api\Miniprogram'], func // 绑定接口 Route::post('users/bind-phone', [App\Http\Controllers\Api\UserController::class, 'bindPhone']); + // 获取配置内容; + Route::get('config-info', [App\Http\Controllers\Api\SettingController::class, 'info']); // 已授权绑定手机号 Route::middleware([HasBindPhone::class])->group(function(){