wugg vor 8 Monaten
Ursprung
Commit
28b662df95
3 geänderte Dateien mit 80 neuen und 13 gelöschten Zeilen
  1. 51 7
      app/admin/controller/Cate.php
  2. 7 6
      app/admin/controller/UserGroup.php
  3. 22 0
      app/admin/model/Cat.php

+ 51 - 7
app/admin/controller/Cate.php

@@ -158,6 +158,11 @@ class Cate extends Base{
         event("PlatCat",["type"=>"delete","data"=>$data]);
         return success("删除成功");
     }
+    /**
+     * @param id 分类id
+     * @param status 状态 0正常 1禁用
+     * @return
+     */
     public function status(){
         $param=$this->request->param(["id"=>0,"status"=>0],"post","trim");
         $valid=Validate::rule([
@@ -168,14 +173,53 @@ class Cate extends Base{
         $data=$this->model->findOrEmpty($param["id"]);
         if($data->isEmpty())return error("分类不存在");
         if($data->status==$param["status"])return error("状态未改变");
-        if($param["status"]==1){
-            $parent = $this->model->where("id",$data->pid)->findOrEmpty();
-            if($parent->isEmpty())return error("父级分类不存在");
-            if($parent->status!=1)return error("父级分类未启用");
+        $catIds=[$param['id']];
+        if($data->level==3){
+          if($param['status']==1){
+              $catInfo = Cat::GetCatListByChildId($param['id']);
+              $catIds=array_map(function($v){
+                 return $v->status==0?$v->id:0;
+              },$catInfo);
+          }
+        }else{
+            if($param['status']==0){
+                $catInfo = Cat::where(["pid"=>$param['id'],"status"=>1,"is_del"=>0])->findOrEmpty();
+                if(!$catInfo->isEmpty())return error("该分类下有启用的子分类");
+            }else return error('所在等级不能启用');
         }
-        $data->status=$param['status'];
-        if(!$data->save())return error(Cat::$statusCn[$param['status']]. "失败");
-        event("PlatCat",["type"=>"status","data"=>$data]);
+        $update=$data->whereIn("id",$catIds)->update(["status"=>$param["status"]]);
+        if(!$update)return error("修改失败");
+        event("PlatCat",["type"=>"status","data"=>["id"=>$catIds,"staus"=>$param['status']]]);
         return success(Cat::$statusCn[$param['status']]."成功");
     }
+    /** 获取分类列表
+    * @param cat_name 分类名称
+    * @param pid  父级分类id
+    * @param status   状态
+    * @return \think\Response|\think\response\Json|void
+     */
+    public function query(){
+        $param = $this->request->only(['cat_name' => '', 'pid' => '', 'status' => '',], 'post', 'trim');
+        $valid = Validate::rule([
+            "cat_name|分类名称" => "max:255",
+            "pid|父级分类" => "integer|egt:0",
+            "status|状态" => "integer|in:0,1",
+        ]);
+        if (!$valid->check($param)) return error($valid->getError());
+        try {
+            $data = $this->model->with(["specs"])->where(function ($query) use ($param) {
+                if ($param['cat_name']!=='') $query->where("cat_name", "like", "%{$param['cat_name']}%");
+                if ($param['pid']!=='') $query->where("pid", $param['pid']);
+                if ($param['status'] !== '') $query->where("status", $param['status']);
+            })->order("pid,weight desc,id")->select();
+            if (!$data->isEmpty()) {
+                foreach ($data as &$item) {
+                  $item['child'] = Cat::GetCatListByPid($item['id']);
+               }
+            }
+        }catch (\Exception $e) {
+            return error($e->getMessage());
+        }
+        return success("查询成功", $data);
+    }
 }

+ 7 - 6
app/admin/controller/UserGroup.php

@@ -82,10 +82,10 @@ class UserGroup extends Base{
     }
     /**
      * @param id|用户组id:require|number
-     *                title|用户组名称:require|max:255,
-     *                type|共享类型:require|number|1,2,3,
-     *                uids|组成员:require,
-     *                remark|备注:max:255
+     * @param title|用户组名称:require|max:255,
+     * @param type|共享类型:require|number|1,2,3,
+     * @param uids|组成员:require,
+     * @param remark|备注:max:255
     * @return \think\Response|\think\response\Json|void
     * @throws \think\exception\PDOException
      */
@@ -107,9 +107,10 @@ class UserGroup extends Base{
            $info->type=$param['type'];
            $info->remark=$param['remark'];
            if($info->save()){
-              $info->userGroup->where("uid","not in",$param['uids'])->save(["is_del"=>1]);
+              $remove =array_diff(array_column($info->userGroup->toArray(),"uid"),$param['uids']);
+              $dataGroupUserid=new DataGroupUserid();
+              if(!empty($remove)) $dataGroupUserid->where(["data_group_id"=>$info->id,"uid"=>$remove])->delete();
               $add =array_diff($param['uids'],array_column($info->userGroup->toArray(),"uid"));
-               $dataGroupUserid=new DataGroupUserid();
                if(!empty($add)) $dataGroupUserid->saveAll(array_map(function($item)use($info){
                    return ["data_group_id"=>$info->id,"uid"=>$item];
                },$add));

+ 22 - 0
app/admin/model/Cat.php

@@ -47,4 +47,26 @@ class Cat extends Base
 		    }
 		 }
 	}
+    /** 获取分类列表
+    * @param $cat_id
+    * @param array $catArr
+    * @return array|mixed
+    */
+	public static function GetCatListByChildId($cat_id,&$catArr=[]){
+        $cat = self::where(['id'=>$cat_id,'is_del'=>0])->field("id,cat_name,pid,status")->findOrEmpty();
+        if($cat->isEmpty())return [];
+        array_unshift($catArr,$cat );
+        if($cat->pid>0){
+            self::GetCatListByChildId($cat->pid,$catArr);
+        }
+        return $catArr;
+    }
+    /** 获取分类列表
+    * @param $pid
+    * @return array
+    */
+    public static function GetCatListByPid($pid=0){
+        $cat = self::field("id,cat_name,pid,status")->where(["pid"=>$pid,"is_del"=>0])->select();
+        return $cat;
+    }
 }