Kaynağa Gözat

新增可选分类

lh 16 saat önce
ebeveyn
işleme
6ad9d9fc0e

+ 22 - 0
app/Http/Controllers/Timbre/TimbreController.php

@@ -25,6 +25,21 @@ class TimbreController extends BaseController
         $this->timbreService = $timbreService;
     }
 
+    // 添加分类
+    public function addCategory(Request $request) {
+        $data = $request->all();
+        $result = $this->timbreService->addCategory($data);
+        return $this->success(['success' => $result ? 1 : 0]);
+    }
+
+    // 编辑分类
+    public function editCategory(Request $request) {
+        $data = $request->all();
+        $result = $this->timbreService->editCategory($data);
+        return $this->success(['success' => $result ? 1 : 0]);
+    }
+
+    // 分类列表
     public function categoryList(Request $request) {
         $data = $request->all();
         $result = $this->timbreService->getCategoryList($data);
@@ -43,6 +58,13 @@ class TimbreController extends BaseController
         return $this->success($result, [new TimbreTransformer(), 'newBuildTimbreList']);
     }
 
+    // 可选分类
+    public function timbreCategories(Request $request) {
+        $data = $request->all();
+        $result = $this->timbreService->timbreCategories($data);
+        return $this->success($result);
+    }
+
     /**
      * 可选书籍
      *

+ 17 - 0
app/Libs/Helpers.php

@@ -1645,6 +1645,23 @@ function exportCsv(string $name, array $headers, array $data = [])
     die();
 }
 
+// 树状分类
+function buildCategoryTree($categories, $pid = 0) {
+    $tree = [];
+
+    foreach ($categories as $category) {
+        if ($category['pid'] == $pid) {
+            $children = buildCategoryTree($categories, $category['category_id']);
+            if ($children) {
+                $category['children'] = $children;
+            }
+            $tree[] = $category;
+        }
+    }
+
+    return $tree;
+}
+
 // 获取文件的md5值
 function getFileContentMD5($filePath){
     //获取文件MD5的128位二进制数组

+ 54 - 0
app/Services/Timbre/TimbreService.php

@@ -18,6 +18,51 @@ class TimbreService
 
     }
 
+    public function addCategory($data) {
+        $category_name = getProp($data, 'category_name');
+        $pid = getProp($data, 'pid');
+        if ($pid === '') Utils::throwError('20003:参数异常');
+
+        $category = DB::table('mp_timbre_categories')->where('category_name', $category_name)->first();
+        if ($category) {
+            return Utils::throwError('20003:该分类已存在');
+        }
+
+        if ($pid) {
+            $category = DB::table('mp_timbre_categories')->where('id', $pid)->first();
+            if (!$category) {
+                return Utils::throwError('20003:该分类不存在');
+            }
+        }
+
+        return DB::table('mp_timbre_categories')->insert([
+            'category_name' => $category_name,
+            'pid' => $pid,
+            'created_at' => date('Y-m-d H:i:s'),
+            'updated_at' => date('Y-m-d H:i:s'),
+        ]);
+    }
+
+    public function editCategory($data) {
+        $category_id = getProp($data, 'category_id');
+        $category_name = getProp($data, 'category_name');
+
+        $category = DB::table('mp_timbre_categories')->where('id', $category_id)->first();
+        if (!$category) {
+            return Utils::throwError('20003:该分类不存在');
+        }
+
+        $category = DB::table('mp_timbre_categories')->where('category_name', $category_name)->first();
+        if ($category && $category->id != $category_id) {
+            return Utils::throwError('20003:该分类已存在');
+        }
+
+        return DB::table('mp_timbre_categories')->where('id', $category_id)->update([
+            'category_name' => $category_name,
+            'updated_at' => date('Y-m-d H:i:s'),
+        ]);
+    }
+
     public function getCategoryList($data) {
         $category_type = getProp($data, 'category_type', 1);
         $category_id = getProp($data, 'category_id');
@@ -74,6 +119,15 @@ class TimbreService
         return $result;
     }
 
+    public function timbreCategories($data) {
+        $categories = DB::table('mp_timbre_categories')->where('is_enable', 1)->select('id as category_id', 'category_name', 'pid')->get()->map(function ($value) {
+            return (array)$value;
+        })->toArray();
+
+        $result = buildCategoryTree($categories, 0);
+        return $result;
+    }
+
     public function editTimbre($data) {
         $timbre_id = getProp($data, 'voice_id');
         $timbre = DB::table('mp_timbres')->where('id', $timbre_id)->first();

+ 3 - 0
routes/api.php

@@ -36,9 +36,12 @@ Route::group(['middleware' => ['bindToken', 'bindExportToken', 'checkLogin']], f
     });
 
     Route::group(['prefix' => 'timbre'], function () {
+        Route::get('addCategory', [TimbreController::class, 'addCategory']);
+        Route::get('editCategory', [TimbreController::class, 'editCategory']);
         Route::get('categoryList', [TimbreController::class, 'categoryList']);
 
         Route::get('list', [TimbreController::class, 'timbreList']);
+        Route::get('timbreCategories', [TimbreController::class, 'timbreCategories']);
         Route::get('edit', [TimbreController::class, 'editTimbre']);
     });