category = $category; $this->categoryTopic = $categoryTopic; $this->categorySuggest = $categorySuggest; } //列表 public function index($request){ $perPage = isset($request['per_page']) ? $request['per_page'] : 20; $where = []; if(isset($request['name'])){ $where[] = ['name', 'like', "%{$request['name']}%"]; } return $this->category->where($where)->orderBy('sort', 'asc')->paginate($perPage); } //详情 public function view($request){ return $this->category->where(['id'=>$request['id']])->first(); } //创建 public function create($request){ $category = $this->category->where(['name'=>$request['name']])->first(); if($category){ return Response::create([ 'message' => '该分类已存在', 'status_code' => 500 ]); } $data = [ 'name' => $request['name'], 'img' => $request['img'], 'sort' => $request['sort'], 'desc' => $request['desc'], ]; $topic_ids = ''; if(!empty($request['topic_ids'])){ $topic_ids = explode(',', $request['topic_ids']); } DB::beginTransaction(); try{ $categoryInfo = $this->category->create($data); if($categoryInfo){ if(!empty($topic_ids)){ $category_topic_data = []; foreach($topic_ids as $value){ $category_topic_data[] = [ 'category_id' => $categoryInfo->id, 'topic_id' => $value, ]; } $this->categoryTopic->insert($category_topic_data); } } DB::commit(); return Response::create(); }catch (QueryException $exception){ DB::rollBack(); Log::debug('新增话题分组:'.$exception->getMessage()); return Response::create([ 'message' => '新增话题失败,请重试', 'error' => $exception->getMessage(), 'status_code' => 500 ]); } } //编辑 public function edit($request){ $category = $this->category->where(['id'=>$request['id']])->first(); if(!$category){ return Response::create([ 'message' => '该分类不存在', 'status_code' => 500 ]); } $_category = $this->category->where(['name'=>$request['name']])->where('id','<>',$category->id)->first(); if($_category){ return Response::create([ 'message' => '该分类已存在', 'status_code' => 500 ]); } $category->name = $request['name']; $category->img = $request['img']; $category->desc = $request['desc']; $category->sort = $request['sort']; $topic_ids = []; if(!empty($request['topic_ids'])){ $topic_ids = explode(',', $request['topic_ids']); } DB::beginTransaction(); try{ $categoryInfo = $category->save(); if($categoryInfo){ //删除 $this->categoryTopic->where(['category_id'=>$category->id])->delete(); if($topic_ids){ $category_topic_data = []; foreach($topic_ids as $value){ $category_topic_data[] = [ 'category_id' => $category->id, 'topic_id' => $value, ]; } $this->categoryTopic->insert($category_topic_data); } } DB::commit(); return Response::create(); }catch (QueryException $exception){ DB::rollBack(); Log::debug('新增话题分组:'.$exception->getMessage()); return Response::create([ 'message' => '新增话题失败,请重试', 'error' => $exception->getMessage(), 'status_code' => 500 ]); } } //修改 public function update($request){ $category = $this->category->where('id', $request['id'])->first(); if(isset($request['is_suggest']) && $request['is_suggest'] !== null){ $category->is_suggest = $request['is_suggest']; } $res = $category->save(); if($res){ return Response::create(); } } /** * 设置开启 */ public function isOpen($id) { $category = $this->category->where('id', $id)->first(); if (!$category) { return Response::create([ 'message' => '获取内容分类信息失败', 'status_code' => 500 ]); } if ($category->is_open == 1) { $category->is_open = 0; } else { $category->is_open = 1; } DB::beginTransaction(); try { $category->save(); DB::commit(); return Response::create(); } catch (QueryException $exception) { DB::rollBack(); Log::debug('开启分类失败:' . $id . $exception->getMessage()); return Response::create([ 'message' => '操作失败,请重试', 'error' => $exception->getMessage(), 'status_code' => 500 ]); } } /** * 编辑话题分类(推荐内容首页用) */ public function suggestEdit($request) { $date = Carbon::now()->toDateTimeString(); $data = []; $ids = array_unique($request['category_ids']); foreach($ids as $id){ $data[] = [ 'category_id' => $id, 'created_at' => $date, 'updated_at' => $date ]; } DB::beginTransaction(); try { $this->categorySuggest->where('id', '>', 0)->delete(); $this->categorySuggest->insert($data); DB::commit(); return Response::create(); } catch (QueryException $exception) { DB::rollBack(); Log::debug('编辑话题分类失败:' . $exception->getMessage()); return Response::create([ 'message' => '编辑失败,请重试', 'error' => $exception->getMessage(), 'status_code' => 500 ]); } } /** * 话题分类详情(推荐内容首页用) */ public function suggestDetail() { $lists = $this->categorySuggest->get(); $data = []; foreach($lists as $item){ $data[] = [ 'id' => $item->category_id, 'name' => $item->category->name ]; } return $data; } }