diff --git a/app/admin/controller/ModuleCenterController.php b/app/admin/controller/ModuleCenterController.php new file mode 100644 index 0000000..06d25a8 --- /dev/null +++ b/app/admin/controller/ModuleCenterController.php @@ -0,0 +1,150 @@ +field('id, title, status')->select()->toArray(); + return json([ + 'code' => 200, + 'msg' => '获取成功', + 'data' => [ + 'list' => $cates, + 'total' => count($cates) + ] + ]); + } + + /** + * 获取模块中心列表 + * @param int $cid 分类ID,0表示全部 + * @return Json + */ + public function getModuleList(int $cid = 0) + { + $query = SystemModuleCenter::where('delete_time', null) + ->field('id, title, desc, thumb, cid, downloads, author, status, version, create_time'); + + // 如果cid不为0,则按分类筛选 + if ($cid > 0) { + $query->where('cid', $cid); + } + + $list = $query->select()->toArray(); + + // 遍历列表,将cid替换为分类标题 + foreach ($list as &$item) { + if ($item['cid']) { + $category = SystemModuleCategory::where('id', $item['cid'])->field('title')->find(); + $item['cid'] = $category ? $category['title'] : ''; + } + if ($item['author']) { + $author = AdminUser::where('id', $item['author'])->field('name')->find(); + $item['author'] = $author ? $author['name'] : ''; + } + } + + return json([ + 'code' => 200, + 'msg' => '获取成功', + 'data' => [ + 'list' => $list, + 'total' => count($list) + ] + ]); + } + + /** + * 编辑分类(添加/编辑) + * @param int $id 分类ID,为空时新增,有值时编辑 + */ + public function editCategory(int $id = 0) + { + $data = request()->param(); + + // 过滤只保留数据库表需要的字段 + $allowedFields = ['id', 'title', 'status']; + $saveData = []; + foreach ($allowedFields as $field) { + if (isset($data[$field])) { + $saveData[$field] = $data[$field]; + } + } + + if ($id > 0) { + // 编辑模式 + $saveData['update_time'] = date('Y-m-d H:i:s'); + SystemModuleCategory::where('id', $id)->update($saveData); + $this->logSuccess('模块市场', '编辑模块分类', ['id' => $id, 'data' => $saveData]); + return json([ + 'code' => 200, + 'msg' => '编辑成功' + ]); + } else { + // 新增模式 + $saveData['create_time'] = date('Y-m-d H:i:s'); + $cateId = SystemModuleCategory::insertGetId($saveData); + $this->logSuccess('模块市场', '添加模块分类', ['data' => $saveData]); + return json([ + 'code' => 200, + 'msg' => '添加成功' + ]); + } + } + + /** + * 编辑模块(添加/编辑) + * @param int $id 为空时新增,有值时编辑 + */ + public function editModules(int $id = 0) + { + $data = request()->param(); + + // 过滤只保留数据库表需要的字段 + $allowedFields = ['id', 'title', 'desc', 'thumb', 'cid', 'version', 'tatus']; + $saveData = []; + foreach ($allowedFields as $field) { + if (isset($data[$field])) { + $saveData[$field] = $data[$field]; + } + } + + if ($id > 0) { + // 编辑模式 + $saveData['update_time'] = date('Y-m-d H:i:s'); + SystemModuleCenter::where('id', $id)->update($saveData); + $this->logSuccess('模块市场', '编辑模块', ['id' => $id, 'data' => $saveData]); + return json([ + 'code' => 200, + 'msg' => '编辑成功' + ]); + } else { + // 新增模式 + $saveData['create_time'] = date('Y-m-d H:i:s'); + $moduleId = SystemModuleCenter::insertGetId($saveData); + $this->logSuccess('模块市场', '添加模块', ['data' => $saveData]); + return json([ + 'code' => 200, + 'msg' => '添加成功' + ]); + } + } +} diff --git a/app/admin/route/app.php b/app/admin/route/app.php index cc9a120..7b2f44d 100644 --- a/app/admin/route/app.php +++ b/app/admin/route/app.php @@ -112,3 +112,9 @@ Route::delete('modules/:id', 'app\\admin\\controller\\ModulesController@delete') Route::post('modules/batchDelete', 'app\\admin\\controller\\ModulesController@batchDelete'); Route::post('modules/status', 'app\\admin\\controller\\ModulesController@changeStatus'); Route::get('modules/select/list', 'app\\admin\\controller\\ModulesController@getSelectList'); + +// 模块中心路由 +Route::get('moduleCategory', 'app\\admin\\controller\\ModuleCenterController@getModuleCategory'); +Route::get('moduleCenter/modules', 'app\\admin\\controller\\ModuleCenterController@getModuleList'); +Route::post('moduleCenter/editCategory', 'app\\admin\\controller\\ModuleCenterController@editCategory'); +Route::post('moduleCenter/editModules', 'app\\admin\\controller\\ModuleCenterController@editModules'); \ No newline at end of file diff --git a/app/model/AdminModules.php b/app/model/AdminModules.php index c267710..16784ea 100644 --- a/app/model/AdminModules.php +++ b/app/model/AdminModules.php @@ -20,6 +20,7 @@ class AdminModules extends Model 'path' => 'string', 'icon' => 'string', 'description' => 'string', + 'type' => 'string', 'sort' => 'integer', 'status' => 'integer', 'is_show' => 'integer', diff --git a/app/model/SystemModuleCategory.php b/app/model/SystemModuleCategory.php new file mode 100644 index 0000000..57d5359 --- /dev/null +++ b/app/model/SystemModuleCategory.php @@ -0,0 +1,41 @@ + +// +---------------------------------------------------------------------- + +namespace app\model; + +use think\Model; +use think\model\concern\SoftDelete; + +/** + * 单页模型 + */ +class SystemModuleCategory extends Model +{ + // 启用软删除 + use SoftDelete; + + // 数据库表名 + protected $name = 'mete_system_module_category'; + + // 字段类型转换 + protected $type = [ + 'id' => 'integer', + 'title' => 'string', + 'desc' => 'string', + 'thumb' => 'string', + 'status' => 'integer', + 'sort' => 'integer', + 'create_time' => 'datetime', + 'update_time' => 'datetime', + 'delete_time' => 'datetime', + ]; +} + diff --git a/app/model/SystemModuleCenter.php b/app/model/SystemModuleCenter.php new file mode 100644 index 0000000..c330eb3 --- /dev/null +++ b/app/model/SystemModuleCenter.php @@ -0,0 +1,45 @@ + +// +---------------------------------------------------------------------- + +namespace app\model; + +use think\Model; +use think\model\concern\SoftDelete; + +/** + * 单页模型 + */ +class SystemModuleCenter extends Model +{ + // 启用软删除 + use SoftDelete; + + // 数据库表名 + protected $name = 'mete_system_module_center'; + + // 字段类型转换 + protected $type = [ + 'id' => 'integer', + 'title' => 'string', + 'desc' => 'string', + 'thumb' => 'string', + 'author' => 'integer', + 'cid' => 'integer', + 'downloads' => 'integer', + 'status' => 'integer', + 'sort' => 'integer', + 'version' => 'string', + 'create_time' => 'datetime', + 'update_time' => 'datetime', + 'delete_time' => 'datetime', + ]; +} + diff --git a/docs/编辑模块(新增&编辑).md b/docs/编辑模块(新增&编辑).md new file mode 100644 index 0000000..1dcc95c --- /dev/null +++ b/docs/编辑模块(新增&编辑).md @@ -0,0 +1,37 @@ +/** + * 编辑分类(添加/编辑) + * @param int $id 分类ID,为空时新增,有值时编辑 + */ + public function editCategory(int $id = 0) + { + $data = request()->param(); + + // 过滤只保留数据库表需要的字段 + $allowedFields = ['id', 'title', 'status']; + $saveData = []; + foreach ($allowedFields as $field) { + if (isset($data[$field])) { + $saveData[$field] = $data[$field]; + } + } + + if ($id > 0) { + // 编辑模式 + $saveData['update_time'] = date('Y-m-d H:i:s'); + SystemModuleCategory::where('id', $id)->update($saveData); + $this->logSuccess('模块市场', '编辑模块分类', ['id' => $id, 'data' => $saveData]); + return json([ + 'code' => 200, + 'msg' => '编辑成功' + ]); + } else { + // 新增模式 + $saveData['create_time'] = date('Y-m-d H:i:s'); + $cateId = SystemModuleCategory::insertGetId($saveData); + $this->logSuccess('模块市场', '添加模块分类', ['data' => $saveData]); + return json([ + 'code' => 200, + 'msg' => '添加成功' + ]); + } + } \ No newline at end of file diff --git a/public/storage/uploads/2026/01/30/697c5f63e5eda.jpg b/public/storage/uploads/2026/01/30/697c5f63e5eda.jpg new file mode 100644 index 0000000..5f398d2 Binary files /dev/null and b/public/storage/uploads/2026/01/30/697c5f63e5eda.jpg differ