|
@@ -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);
|
|
|
+ }
|
|
|
}
|