wugg 8 mesi fa
parent
commit
d2cf14a892
3 ha cambiato i file con 142 aggiunte e 15 eliminazioni
  1. 113 6
      app/admin/controller/Cate.php
  2. 2 2
      app/admin/controller/UserGroup.php
  3. 27 7
      app/admin/model/Cat.php

+ 113 - 6
app/admin/controller/Cate.php

@@ -10,11 +10,14 @@
 namespace app\admin\controller;
 
 
-use app\admin\model\CatSpecs;use think\App;use think\facade\Validate;
+use app\admin\model\CatSpecs;
+use app\admin\model\Cat;
+use think\App;
+use think\facade\Validate;
 class Cate extends Base{
     public function __construct(App $app) {
         parent::__construct($app);
-        $this->model = new \app\admin\model\Cat();
+        $this->model = new Cat();
     }
     /**
     * @param pid=0,cat_name="",status="",page=1,size=10
@@ -32,7 +35,17 @@ class Cate extends Base{
       });
       return success("获取成功",$data);
     }
-
+    /**
+     * @param cat_name 分类名称
+     * @param pid 父级分类id
+     *  @param  cat_desc 分类描述
+     *  @param  fund_code 财务代码
+     * @param specs_id 规格id
+     * @param weight 权重
+     * @param status 状态 0正常 1禁用
+     * @return
+     *
+     */
     public function create(){
         $param=$this->request->param(['cat_name', 'pid', 'cat_desc' => '', 'fund_code' => '', 'specs_id'=>[], 'weight'
         => 0, 'status' => 0],"post","trim");
@@ -42,11 +55,14 @@ class Cate extends Base{
             "cat_desc|分类描述"=>"max:255",
             "fund_code|财务代码"=>"max:255",
             "specs_id|规格id"=>"require|array",
-            "weight|权重"=>"int",
-            "status|状态"=>"int|in:0,1",
+            "weight|权重"=>"integer",
+            "status|状态"=>"integer|in:0,1",
         ]);
         if(!$valid->check($param))return error($valid->getError());
-        $parent = $this->model->where("id",$param["pid"])->findOrEmpty();
+        if($param['pid']!=0){
+            $parent = $this->model->where('id',$param['pid'])->findOrEmpty();
+            if($parent->isEmpty())return error('父级分类不存在');
+        }
         if($parent->isEmpty())return error("父级分类不存在");
         $this->model->startTrans();
         try{
@@ -69,6 +85,97 @@ class Cate extends Base{
             $this->model->rollback();
             return error($e->getMessage());
         }
+        event("PlatCat",["type"=>"add","data"=>$data]);
         return success("添加成功");
     }
+    /**
+     * @param id 分类id
+     * @param cat_name 分类名称
+     * @param pid 父级分类id
+     *  @param  cat_desc 分类描述
+     *  @param  fund_code 财务代码
+     * @param specs_id 规格id
+     * @param weight 权重
+     * @param status 状态 0正常 1禁用
+    *               @return
+     */
+    public function save(){
+        $param=$this->request->param(['id','cat_name', 'pid', 'cat_desc' => '', 'fund_code' => '', 'specs_id'=>[], 'weight'
+        => 0, 'status' => 0],"post","trim");
+        $valid=Validate::rule([
+            "id|分类id"=>"require|integer|egt:1",
+            "cat_name|分类名称"=>"require|max:255|unique:app\admin\model\Cat,cat_name^is_del",
+            "pid|父级分类"=>"require|integer|egt:0",
+            "cat_desc|分类描述"=>"max:255",
+            "fund_code|财务代码"=>"max:255",
+            "specs_id|规格id"=>"require|array",
+            "weight|权重"=>"integer",
+            "status|状态"=>"integer|in:0,1",
+        ]);
+        if(!$valid->check($param))return error($valid->getError());
+        if($param['pid']!=0){
+            $parent = $this->model->where("id",$param["pid"])->findOrEmpty();
+            if($parent->isEmpty())return error("父级分类不存在");
+        }
+        $this->model->startTrans();
+        try{
+            $data=$this->model->with(["specs"])->findOrEmpty($param["id"]);
+            if($data->isEmpty())return error("分类不存在");
+            $data->cat_name=$param["cat_name"];
+            $data->pid=$param["pid"];
+            $data->cat_desc=$param["cat_desc"];
+            $data->fund_code=$param["fund_code"];
+            $data->weight=$param["weight"];
+            $data->status=$param["status"];
+            $save=$data->save();
+            if(!$save)return error("修改失败");
+            $add=array_diff($param["specs_id"],$data->specs->column("specs_id"));
+            $delte=$data->specs()->whereNotIn("specs_id",$param["specs_id"])->save(["is_del"=>1]);
+            if($delte===false)return error("删除失败");
+            $spec=$data->specs()->saveAll($add);
+            if($spec->isEmpty())return error("添加失败");
+            $this->model->commit();
+       }catch (\Exception $e){
+            $this->model->rollback();
+            return error($e->getMessage());
+       }
+        return success("修改成功");
+    }
+    /**
+     * @param id 分类id
+     * @return
+     */
+    public function delete(){
+        $param=$this->request->param(["id"=>0],"post","trim");
+        $valid=Validate::rule([
+            "id|分类id"=>"require|integer|egt:1",
+        ]);
+        if(!$valid->check($param))return error($valid->getError());
+        $data=$this->model->with(["specs"])->findOrEmpty($param["id"]);
+        if($data->isEmpty())return error("分类不存在");
+        $data->is_del=1;
+        if(!$data->save())return error("删除失败");
+        event("PlatCat",["type"=>"delete","data"=>$data]);
+        return success("删除成功");
+    }
+    public function status(){
+        $param=$this->request->param(["id"=>0,"status"=>0],"post","trim");
+        $valid=Validate::rule([
+            "id|分类id"=>"require|integer|egt:1",
+            "status|状态"=>"require|integer|in:0,1",
+        ]);
+        if(!$valid->check($param))return error($valid->getError());
+        $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("父级分类未启用");
+        }
+        $data->status=$param['status'];
+        if(!$data->save())return error(Cat::$statusCn[$param['status']]. "失败");
+        event("PlatCat",["type"=>"status","data"=>$data]);
+        return success(Cat::$statusCn[$param['status']]."成功");
+    }
 }

+ 2 - 2
app/admin/controller/UserGroup.php

@@ -41,7 +41,7 @@ class UserGroup extends Base{
         $param = $this->request->param(['title' => '', 'type' => '', 'uids'=>[],'remark'=>""],"post","trim");
         $valid =Validate::rule([
             "title|用户组名称"=>"require",
-            'type|共享类型'=>"require|number|1,2,3",
+            'type|共享类型'=>"require|number|in:1,2,3",
             'uids|组成员'=>"require|array",
             'remark|备注'=>"max:255"
             ]);
@@ -94,7 +94,7 @@ class UserGroup extends Base{
         $valid =Validate::rule([
             "id|用户组id"=>"require|number|gt:0",
             "title|用户组名称"=>"require",
-            'type|共享类型'=>"require|number|1,2,3",
+            'type|共享类型'=>"require|number|in:1,2,3",
             'uids|组成员'=>"require|array",
             'remark|备注'=>"max:255"
         ]);

+ 27 - 7
app/admin/model/Cat.php

@@ -1,6 +1,7 @@
 <?php
 namespace app\admin\model;
 
+use think\Model;
 class Cat extends Base
 {
 //设置字段信息
@@ -9,12 +10,12 @@ class Cat extends Base
         'cat_name'       =>'varchar',//分类名称
         'pid'       =>'int',//父级id
         'level'       =>'int',//级别
-        'rate'       =>'varchar',//主管利率
-        'order_rate'       =>'varchar',//预算成本
-        'money_rate'       =>'varchar',//财务利率
-        'low_rate'       =>'varchar',//最低利率
-        'sale_rate'       =>'varchar',//成本售价(标准)
-        'lower_rate'       =>'varchar',//BOSS利率
+//        'rate'       =>'varchar',//主管利率
+//        'order_rate'       =>'varchar',//预算成本
+//        'money_rate'       =>'varchar',//财务利率
+//        'low_rate'       =>'varchar',//最低利率
+//        'sale_rate'       =>'varchar',//成本售价(标准)
+//        'lower_rate'       =>'varchar',//BOSS利率
         'creater'       =>'varchar',//创建人
         'createrid'       =>'bigint',//创建人id
         'cat_desc'       =>'text',//分类描述(售后)
@@ -25,6 +26,25 @@ class Cat extends Base
         'is_del'       =>'tinyint',//
         'addtime'       =>'datetime',//
         'updatetime'       =>'datetime',//
-
     ];
+    protected $createTime='addtime';
+    protected $updateTime='updatetime';
+
+    public function specs(){
+        return $this->hasMany(CatSpecs::class,'cat_id','id');
+    }
+
+
+     public static function onBeforeWrite(Model $model) : void{
+		 if($model->pid>0){
+		    $parent = self::findOrEmpty($model->pid);
+		    if($parent->isEmpty()){
+		        $model->level = 1;
+		        $model->search = $parent->cat_name;
+		    }else{
+		        $model->level = $parent->level+1;
+		        $model->search = $parent->search.'_'.$model->cat_name;
+		    }
+		 }
+	}
 }