zqwang vor 1 Jahr
Ursprung
Commit
bfbb78cdd4

+ 32 - 0
modules/Operation/Http/Controllers/ChannelController.php

@@ -10,10 +10,12 @@
 namespace Modules\Operation\Http\Controllers;
 
 use Catch\Base\CatchController;
+use Catch\Exceptions\FailedException;
 use Illuminate\Contracts\Pagination\LengthAwarePaginator;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Database\Eloquent\Collection;
 use Illuminate\Http\Request;
+use Modules\Operation\Http\Requests\AddChannelRequest;
 use Modules\Operation\Service\ChannelServic;
 
 class ChannelController extends CatchController
@@ -31,9 +33,39 @@ class ChannelController extends CatchController
         return ChannelServic::ChannelList($param);
     }
 
+    /**
+     *  编辑
+     * name: add
+     * @param AddChannelRequest $request
+     * @return string|void
+     * date 2023/06/08 15:18
+     */
     public function add(AddChannelRequest $request)
     {
+        $param = $request->validated();
+        return ChannelServic::addChannel($param);
+    }
 
+    /*
+    *  更新状态
+    */
+    public function enableStatus($id)
+    {
+        if ($id <  1){
+            throw  new  FailedException("id不正确");
+        }
+        return ChannelServic::enableChannel($id);
     }
 
+
+    public function setting($id,Request $request){
+        if ($id <  1){
+            throw  new  FailedException("id不正确");
+        }
+        if(!$request->has('duanjus')){
+            throw  new  FailedException("配置项必填");
+        }
+        $set = $request->input('duanjus', []);
+        return ChannelServic::setChannel($id,$set);
+    }
 }

+ 44 - 1
modules/Operation/Http/Requests/AddChannelRequest.php

@@ -10,11 +10,54 @@
 namespace Modules\Operation\Http\Requests;
 
 use Illuminate\Foundation\Http\FormRequest;
+use Modules\Operation\Service\ChannelServic;
 
 class AddChannelRequest extends FormRequest
 {
 
-    // public function
+    public function rules(): array
+    {
+        return [
+            'status' => 'required|in:0,1',
+            'type' => [
+                'required',
+                'Integer',
+                "gt:0",
+                function ($attribute, $value, $fail) {
+                    $types = array_column(ChannelServic::getNavPagesType(),'value');
+                    if (!in_array($value,$types)) {
+                        $fail("频道类型不正确");
+                    }
+                },
+            ],
+            'miniprogram_type' => [
+                'required',
+                'Integer',
+                "gt:0",
+                function ($attribute, $value, $fail) {
+                    $types = array_column(ChannelServic::getNavPagesType(),'value');
+                    if (!in_array($value,$types)) {
+                        $fail("小程序类型不正确");
+                    }
+                },
+            ],
 
 
+        ];
+    }
+
+    /**
+     * messages
+     *
+     * @return string[]
+     */
+    public function messages(): array
+    {
+        return [
+            'type' => '频道类型不正确',
+            'miniprogram_type' => '小程序类型不正确',
+            'status' => '状态值不正确',
+        ];
+    }
+
 }

+ 16 - 0
modules/Operation/Models/NavPages.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace Modules\Operation\Models;
+
+use Modules\Common\Models\BaseModel;
+
+
+class NavPages extends BaseModel
+{
+    protected $table = 'nav_pages';
+
+    protected $fillable = [
+        'id', 'type', 'status', 'duanjus', 'created_at', 'updated_at', 'miniprogram_type',
+    ];
+    protected  $casts = ['duanjus' =>  'array'];
+}

+ 93 - 0
modules/Operation/Service/ChannelServic.php

@@ -0,0 +1,93 @@
+<?php
+/**
+ *
+ * @file:Channel.php
+ * @Date: 2023/6/8
+ * @Time: 11:17
+ */
+
+
+namespace Modules\Operation\Service;
+
+use Modules\Common\Services\BaseService;
+use Modules\Operation\Models\NavPages;
+
+class ChannelServic extends BaseService
+{
+
+    public static function ChannelList($param)
+    {
+        $sql = self::getQuerySql($param);
+        $isAll = getProp($param,'is_all',false);
+        if ($isAll){
+            $list = $sql->get();
+        }else{
+            $list = $sql->paginate(getProp($param,'limit',15));
+        }
+        if (!$list->isEmpty()){
+            $type = array_column(self::getNavPagesType(),null,'value');
+            $minParamType = array_column(self::getMiniProgramType(),null,'value');
+            foreach ($list as  $value){
+                $value->type_txt = $type[$value->type]['name'] ?? "-";
+                $value->miniprogram_type_text = $minParamType[$value->miniprogram_type]['name'] ?? "-";
+                $value->duanjus = collect($value->duanjus)->sortBy('sort');
+            }
+        }
+        return $list;
+    }
+
+    public static function getQuerySql($param)
+    {
+        $sql = NavPages::query()->orderBy('status','desc')->orderBy('id','desc');
+        if (getProp($param,'type')){
+            $sql->where('type',$param['type']);
+        }
+        if (getProp($param,'miniprogram_type')){
+            $sql->where("miniprogram_type",$param['miniprogram_type']);
+        }
+        return $sql;
+    }
+
+    /**
+     *  添加
+     * name: addChannel
+     * @param mixed $param
+     * @return string|void
+     * date 2023/06/08 15:11
+     */
+    public static function addChannel(mixed $param)
+    {
+        $res = NavPages::create($param);
+        if ($res){
+            if ($param['status'] == 1){
+                NavPages::where('id','<>',$res->id)->where('type',$param['type'])->where('miniprogram_type',$param['miniprogram_type'])->update(['status' => 0]);
+            }
+            return "操作成功";
+        }
+        self::throwErrMsg("添加失败");
+    }
+
+    public static function enableChannel($id)
+    {
+        $info = NavPages::where('id',$id)->first();
+        if(is_empty($info)){
+            self::throwErrMsg("频道配置不存在");
+        }
+        NavPages::where('type',$info->type)->where('miniprogram_type',$info->miniprogram_type)->update(['status'=>0]);
+        NavPages::where('id',$id)->update(['status'=>1]);
+        return "操作成功";
+    }
+
+    public static function setChannel($id, array $set)
+    {
+        $info = NavPages::where('id',$id)->first();
+        if(is_empty($info)){
+            self::throwErrMsg("频道配置不存在");
+        }
+        $res = NavPages::where('id',$id)->update(['duanjus' => $set]);
+        if ($res){
+            return "操作成功";
+        }
+        self::throwErrMsg("操作失败");
+    }
+}

+ 6 - 0
modules/Operation/routes/route.php

@@ -31,7 +31,13 @@ Route::prefix('operation')->group(function () {
 
     // 频道管理
     Route::prefix('channel')->group(function (){
+        // 列表
         Route::any('list',[\Modules\Operation\Http\Controllers\ChannelController::class,'list']);
+        // 添加
         Route::post('add',[\Modules\Operation\Http\Controllers\ChannelController::class,'add']);
+        // 启用
+        Route::post('enableStatus/{id}',[\Modules\Operation\Http\Controllers\ChannelController::class,'enableStatus']);
+        // 配置
+        Route::post("setting/{id}",[\Modules\Operation\Http\Controllers\ChannelController::class,"setting"]);
     });
 });