|
@@ -0,0 +1,59 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace App\Modules\Admin\Services;
|
|
|
+
|
|
|
+use App\Base\BaseService;
|
|
|
+use App\Models\Setting;
|
|
|
+use Illuminate\Database\Eloquent\Builder;
|
|
|
+use Illuminate\Support\Arr;
|
|
|
+
|
|
|
+class SettingService extends BaseService
|
|
|
+{
|
|
|
+ public function settingMap()
|
|
|
+ {
|
|
|
+ $r = Setting::all(['type', "key", "value"])->groupBy("type");
|
|
|
+
|
|
|
+ return $r;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function bannerPaginate($params)
|
|
|
+ {
|
|
|
+ $p = Setting::query()->where("type", Setting::TYPE_BANNER)->when($params['status'], function (Builder $query) use ($params) {
|
|
|
+ return $query->where("status", $params['status']);
|
|
|
+ })->when($params['name'], function (Builder $query) use ($params) {
|
|
|
+ return $query->where("key", $params['name']);
|
|
|
+ })->orderByDesc("id")->paginate($params['page_size']);
|
|
|
+
|
|
|
+ return [
|
|
|
+ "total" => $p->total(),
|
|
|
+ "page_total" => $p->lastPage(),
|
|
|
+ "list" => array_map(function (Setting $u) {
|
|
|
+ return array_merge([
|
|
|
+ "id" => $u->id,
|
|
|
+ "name" => $u->key,
|
|
|
+ "created_at" => $u->created_at->format("Y-m-d H:i:s"),
|
|
|
+ ], json_decode($u->value, true));
|
|
|
+ }, $p->items()),
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ public function store($params)
|
|
|
+ {
|
|
|
+ $id = $params['id'];
|
|
|
+ if ($id) {
|
|
|
+ $m = Setting::find($id);
|
|
|
+ } else {
|
|
|
+ $m = new Setting();
|
|
|
+ }
|
|
|
+ $m->type = Setting::TYPE_BANNER;
|
|
|
+ $m->key = Arr::get($params, "name");
|
|
|
+ $m->value = json_encode([
|
|
|
+ "sort" => $params['sort'] ?? 0,
|
|
|
+ "imageUrl" => $params['imageUrl'],
|
|
|
+ "is_use" => $params['is_use'] ?? 1,
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $m->save();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+}
|