zhangchangchun hace 5 años
padre
commit
4931b1866b

+ 17 - 2
app/Http/Controllers/CategoryController.php

@@ -6,7 +6,7 @@
  * Time: 17:38
  */
 
-namespace App\Http\Controllers;
+namespace App\Http\Controllers\Topic;
 
 use App\Repositories\CategoryRepository;
 use App\Transformers\CategoryTransformer;
@@ -18,6 +18,7 @@ use League\Fractal\Manager;
 use League\Fractal\Pagination\IlluminatePaginatorAdapter;
 use League\Fractal\Resource\Collection;
 use League\Fractal\Resource\Item;
+use App\Http\Controllers\Controller;
 
 class CategoryController extends Controller {
 
@@ -38,6 +39,20 @@ class CategoryController extends Controller {
       }
       return  $this->categroupRepository->create($request->all());
     }
+    //创建
+    public function edit(Request $request){
+        $validator = Validator::make($request->all(), [
+            'id'=>'required|integer|max:12',
+            'name' => 'required|string|max:12',
+            'img' => 'required|url',
+            'desc' => 'required|string|max:100',
+            'topic_ids' => 'string',
+        ]);
+        if ($validator->fails()) {
+            return $this->response->error($validator->errors()->first(), 500);
+        }
+        return  $this->categroupRepository->edit($request->all());
+    }
     //列表
     public function index(Request $request){
         $categroup = $this->categroupRepository->index($request->all());
@@ -74,7 +89,7 @@ class CategoryController extends Controller {
     public function isSuggest(Request $request){
         $data = $request->only('id','is_suggest');
         $validator = Validator::make($data, [
-            'id' => 'required|string|max:12',
+            'id' => 'required|integer|max:12',
             'is_suggest' => ['required',Rule::in(0, 1)],
         ]);
         if ($validator->fails()) {

+ 3 - 1
app/Http/Controllers/TopicController.php

@@ -6,7 +6,7 @@
  * Time: 18:09
  */
 
-namespace App\Http\Controllers;
+namespace App\Http\Controllers\Topic;
 
 use App\Models\Topic;
 use App\Repositories\CategoryRepository;
@@ -19,6 +19,8 @@ use League\Fractal\Pagination\IlluminatePaginatorAdapter;
 use League\Fractal\Resource\Collection;
 use League\Fractal\Resource\Item;
 use Illuminate\Validation\Rule;
+use App\Http\Controllers\Controller;
+
 
 
 class TopicController extends Controller {

+ 53 - 0
app/Repositories/CategoryRepository.php

@@ -76,6 +76,59 @@ class CategoryRepository {
             ]);
         }
     }
+    //编辑
+    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'];
+        $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();

+ 16 - 14
routes/api.php

@@ -54,20 +54,22 @@ $api->version('v1', [
             $api->get('post/log', 'PostController@log');
 
         });
-        //新增话题分类
-        $api->post('categoryCreate', 'CategoryController@create');
-        //话题分类列表
-        $api->get('categoryIndex', 'CategoryController@index');
-        //话题分类详情
-        $api->get('categoryView', 'CategoryController@view');
-        //推荐分类
-        $api->put('categoryIsSuggest', 'CategoryController@isSuggest');
-        //编辑话题
-        $api->put('categoryEdit', 'CategoryController@edit');
-        //新增话题
-        $api->post('topicCreate', 'TopicController@create');
-        //列表
-        $api->get('topicIndex', 'TopicController@index');
+        $api->group(['namespace' => 'Topic'], function ($api) {
+            //新增话题分类
+            $api->post('topic/categoryCreate', 'CategoryController@create');
+            //话题分类列表
+            $api->get('topic/categoryIndex', 'CategoryController@index');
+            //话题分类详情
+            $api->get('topic/categoryView', 'CategoryController@view');
+            //推荐分类
+            $api->put('topic/categoryIsSuggest', 'CategoryController@isSuggest');
+            //编辑话题
+            $api->put('topic/categoryEdit', 'CategoryController@edit');
+            //新增话题
+            $api->post('topic/topicCreate', 'TopicController@create');
+            //列表
+            $api->get('topic/topicIndex', 'TopicController@index');
+        });
 
     });
 });