From 36127a088ba0c1fb8330d2ce32429d20e3d3895f Mon Sep 17 00:00:00 2001 From: liaofei <136327134@qq.com> Date: Tue, 11 Apr 2023 16:19:18 +0800 Subject: [PATCH 1/3] =?UTF-8?q?crud=E6=8E=A5=E5=8F=A3=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/v1/setting/SystemCrud.php | 77 ++++++++++++++- crmeb/app/adminapi/route/system.php | 11 ++- .../services/system/SystemCrudServices.php | 98 +++++++++++++++++-- .../services/system/SystemRouteServices.php | 21 +++- 4 files changed, 196 insertions(+), 11 deletions(-) diff --git a/crmeb/app/adminapi/controller/v1/setting/SystemCrud.php b/crmeb/app/adminapi/controller/v1/setting/SystemCrud.php index 6ebe081b6..73dc0f142 100644 --- a/crmeb/app/adminapi/controller/v1/setting/SystemCrud.php +++ b/crmeb/app/adminapi/controller/v1/setting/SystemCrud.php @@ -17,6 +17,7 @@ namespace app\adminapi\controller\v1\setting; use app\adminapi\controller\AuthController; use app\services\system\SystemCrudServices; use think\facade\App; +use think\helper\Str; /** * Class SystemCrud @@ -39,11 +40,23 @@ class SystemCrud extends AuthController $this->services = $services; } + /** + * @return \think\Response + * @author 等风来 + * @email 136327134@qq.com + * @date 2023/4/11 + */ public function index() { - + return app('json')->success($this->services->getList()); } + /** + * @return \think\Response + * @author 等风来 + * @email 136327134@qq.com + * @date 2023/4/11 + */ public function save() { $data = $this->request->postMore([ @@ -61,7 +74,69 @@ class SystemCrud extends AuthController ]); $this->services->createCrud($data); + + return app('json')->success('创建成功'); } + /** + * 获取创建文件的目录存放位置 + * @return \think\Response + * @author 等风来 + * @email 136327134@qq.com + * @date 2023/4/11 + */ + public function getFilePath() + { + [$menuName, $tableName, $fromField, $columnField] = $this->request->postMore([ + ['menuName', ''], + ['tableName', ''], + ['fromField', []], + ['columnField', []], + ], true); + $routeName = 'crud/' . Str::snake($tableName); + + $make = $this->services->makeFile($tableName, $routeName, false, [ + 'menuName' => $menuName, + 'fromField' => $fromField, + 'columnField' => $columnField, + ]); + + $makePath = []; + foreach ($make as $key => $item) { + $makePath[$key] = $item['path']; + } + + return app('json')->success($makePath); + } + + /** + * 获取创建表数据类型 + * @return \think\Response + * @author 等风来 + * @email 136327134@qq.com + * @date 2023/4/11 + */ + public function columnType() + { + return app('json')->success($this->services->getTabelRule()); + } + + /** + * @param $id + * @return \think\Response + * @author 等风来 + * @email 136327134@qq.com + * @date 2023/4/11 + */ + public function delete($id) + { + if (!$id) { + return app('json')->fail('缺少参数'); + } + + $this->services->delete($id); + + return app('json')->success('删除成功'); + } } diff --git a/crmeb/app/adminapi/route/system.php b/crmeb/app/adminapi/route/system.php index ea6a094cf..ed08dc130 100644 --- a/crmeb/app/adminapi/route/system.php +++ b/crmeb/app/adminapi/route/system.php @@ -131,7 +131,16 @@ Route::group('system', function () { 'delete' => '删除路由分类' ], ]); - + //获取CRUD列表 + Route::get('crud/column_type', 'v1.setting.SystemCrud/columnType')->option(['real_name' => '获取CRUD列表']); + //获取CRUD文件存放 + Route::post('crud/file_path', 'v1.setting.SystemCrud/getFilePath')->option(['real_name' => '获取CRUD文件存放']); + //删除CRUD + Route::delete('crud/:id', 'v1.setting.SystemCrud/delete')->option(['real_name' => '删除CRUD']); + //获取CRUD列表 + Route::get('crud', 'v1.setting.SystemCrud/index')->option(['real_name' => '获取CRUD列表']); + //保存生成CRUD + Route::post('crud', 'v1.setting.SystemCrud/save')->option(['real_name' => '保存生成CRUD']); })->middleware([ \app\http\middleware\AllowOriginMiddleware::class, \app\adminapi\middleware\AdminAuthTokenMiddleware::class, diff --git a/crmeb/app/services/system/SystemCrudServices.php b/crmeb/app/services/system/SystemCrudServices.php index 699854f51..cbd4106ec 100644 --- a/crmeb/app/services/system/SystemCrudServices.php +++ b/crmeb/app/services/system/SystemCrudServices.php @@ -27,6 +27,7 @@ use crmeb\services\crud\ViewPages; use crmeb\services\crud\ViewRouter; use think\exception\ValidateException; use think\facade\Db; +use think\helper\Str; use think\migration\Migrator; use Phinx\Db\Adapter\MysqlAdapter; @@ -49,6 +50,21 @@ class SystemCrudServices extends BaseServices $this->dao = $dao; } + /** + * @return array + * @author 等风来 + * @email 136327134@qq.com + * @date 2023/4/11 + */ + public function getList() + { + [$page, $limit] = $this->getPageValue(); + $list = $this->dao->selectList([], '*', $page, $limit, 'id desc'); + $count = $this->dao->count(); + + return compact('list', 'count'); + } + public function getTabelRule() { $adapter = app()->make(MysqlAdapter::class); @@ -90,6 +106,14 @@ class SystemCrudServices extends BaseServices return $columns; } + /** + * 创建 + * @param array $data + * @return mixed + * @author 等风来 + * @email 136327134@qq.com + * @date 2023/4/11 + */ public function createCrud(array $data) { $tableName = $data['tableName']; @@ -108,9 +132,8 @@ class SystemCrudServices extends BaseServices throw new ValidateException('请先创建' . $tableName . '表'); } - //TODO 没写完 - $routeName = ''; - $uniqueAuth = ''; + $routeName = 'crud/' . Str::snake($tableName); + $uniqueAuth = $routeName . '-index-list'; $make = $this->makeFile($tableName, $routeName, true, $data, $filePath); $makePath = []; @@ -133,10 +156,72 @@ class SystemCrudServices extends BaseServices ]; $menuInfo = app()->make(SystemMenusServices::class)->save($data); //写入路由权限 - //TODO 没写完 - + $cateId = app()->make(SystemRouteServices::class)->topCateId('adminapi'); + $ruleData = [ + [ + 'path' => $routeName, + 'method' => 'GET', + 'name' => $data['menuName'] . '列表接口', + 'app_name' => 'adminapi', + 'cate_id' => $cateId, + 'add_time' => date('Y-m-d H:i:s') + ], + [ + 'path' => $routeName . '/create', + 'method' => 'GET', + 'name' => $data['menuName'] . '获取创建表单接口', + 'app_name' => 'adminapi', + 'cate_id' => $cateId, + 'add_time' => date('Y-m-d H:i:s') + ], + [ + 'path' => $routeName, + 'method' => 'POST', + 'name' => $data['menuName'] . '保存数据接口', + 'app_name' => 'adminapi', + 'cate_id' => $cateId, + 'add_time' => date('Y-m-d H:i:s') + ], + [ + 'path' => $routeName . '//edit', + 'method' => 'GET', + 'name' => $data['menuName'] . '获取修改表单接口', + 'app_name' => 'adminapi', + 'cate_id' => $cateId, + 'add_time' => date('Y-m-d H:i:s') + ], + [ + 'path' => $routeName . '/', + 'method' => 'PUT', + 'name' => $data['menuName'] . '修改数据接口', + 'app_name' => 'adminapi', + 'cate_id' => $cateId, + 'add_time' => date('Y-m-d H:i:s') + ], + [ + 'path' => $routeName . '/', + 'method' => 'DELETE', + 'name' => $data['menuName'] . '删除数据接口', + 'app_name' => 'adminapi', + 'cate_id' => $cateId, + 'add_time' => date('Y-m-d H:i:s') + ], + ]; + app()->make(SystemRouteServices::class)->saveAll($ruleData); + //记录权限加入菜单表 + $menuData = []; + foreach ($ruleData as $item) { + $menuData[] = [ + 'pid' => $menuInfo->id, + 'method' => $item['method'], + 'api_url' => $item['path'], + 'name' => $item['name'], + 'is_del' => 0, + ]; + } + app()->make(SystemMenusServices::class)->saveAll($menuData); //记录crud生成 - $this->dao->save([ + $res = $this->dao->save([ 'pid' => $data['pid'], 'name' => $data['menuName'], 'table_name' => $tableName, @@ -144,6 +229,7 @@ class SystemCrudServices extends BaseServices 'make_path' => json_encode($makePath), 'add_time' => time() ]); + return $res->toArray(); } /** diff --git a/crmeb/app/services/system/SystemRouteServices.php b/crmeb/app/services/system/SystemRouteServices.php index 3a3c16e3f..91aa8f302 100644 --- a/crmeb/app/services/system/SystemRouteServices.php +++ b/crmeb/app/services/system/SystemRouteServices.php @@ -151,12 +151,14 @@ class SystemRouteServices extends BaseServices } /** - * 同步路由 + * 获取顶级id + * @param string $app + * @return mixed * @author 等风来 * @email 136327134@qq.com - * @date 2023/4/6 + * @date 2023/4/11 */ - public function syncRoute(string $app = 'adminapi') + public function topCateId(string $app) { $id = app()->make(SystemRouteCateServices::class)->value(['app_name' => $app, 'name' => '全部权限', 'pid' => 0], 'id'); if (!$id) { @@ -168,6 +170,19 @@ class SystemRouteServices extends BaseServices ]); $id = $res->id; } + + return $id; + } + + /** + * 同步路由 + * @author 等风来 + * @email 136327134@qq.com + * @date 2023/4/6 + */ + public function syncRoute(string $app = 'adminapi') + { + $id = $this->topCateId($app); $listAll = $this->getRouteListAll($app); //保持新增的权限路由 $data = $this->dao->selectList(['app_name' => $app], 'path,method')->toArray(); From 1fb61f9eb6819b964670513670bdf84080728f2f Mon Sep 17 00:00:00 2001 From: liaofei <136327134@qq.com> Date: Tue, 11 Apr 2023 16:47:58 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adminapi/controller/v1/setting/SystemCrud.php | 14 ++++++++++++++ crmeb/app/adminapi/route/system.php | 2 ++ crmeb/app/dao/system/SystemMenusDao.php | 4 ++-- crmeb/app/services/system/SystemMenusServices.php | 4 ++-- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/crmeb/app/adminapi/controller/v1/setting/SystemCrud.php b/crmeb/app/adminapi/controller/v1/setting/SystemCrud.php index 73dc0f142..b1b874a06 100644 --- a/crmeb/app/adminapi/controller/v1/setting/SystemCrud.php +++ b/crmeb/app/adminapi/controller/v1/setting/SystemCrud.php @@ -16,6 +16,7 @@ namespace app\adminapi\controller\v1\setting; use app\adminapi\controller\AuthController; use app\services\system\SystemCrudServices; +use app\services\system\SystemMenusServices; use think\facade\App; use think\helper\Str; @@ -110,6 +111,19 @@ class SystemCrud extends AuthController return app('json')->success($makePath); } + /** + * 获取tree菜单 + * @return \think\Response + * @author 等风来 + * @email 136327134@qq.com + * @date 2023/4/11 + */ + public function getMenus() + { + return app('json')->success(app()->make(SystemMenusServices::class) + ->getList(['auth_type' => 1], ['pid', 'id', 'menu_name as label', 'id as value'])); + } + /** * 获取创建表数据类型 * @return \think\Response diff --git a/crmeb/app/adminapi/route/system.php b/crmeb/app/adminapi/route/system.php index ed08dc130..ccb3816c3 100644 --- a/crmeb/app/adminapi/route/system.php +++ b/crmeb/app/adminapi/route/system.php @@ -133,6 +133,8 @@ Route::group('system', function () { ]); //获取CRUD列表 Route::get('crud/column_type', 'v1.setting.SystemCrud/columnType')->option(['real_name' => '获取CRUD列表']); + //获取菜单TREE形数据 + Route::get('crud/menus', 'v1.setting.SystemCrud/getMenus')->option(['real_name' => '获取菜单TREE形数据']); //获取CRUD文件存放 Route::post('crud/file_path', 'v1.setting.SystemCrud/getFilePath')->option(['real_name' => '获取CRUD文件存放']); //删除CRUD diff --git a/crmeb/app/dao/system/SystemMenusDao.php b/crmeb/app/dao/system/SystemMenusDao.php index 276276604..a410beef4 100644 --- a/crmeb/app/dao/system/SystemMenusDao.php +++ b/crmeb/app/dao/system/SystemMenusDao.php @@ -76,10 +76,10 @@ class SystemMenusDao extends BaseDao * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ - public function getMenusList(array $where) + public function getMenusList(array $where, array $field = ['*']) { $where = array_merge($where, ['is_del' => 0]); - return $this->search($where)->order('sort DESC,id ASC')->select(); + return $this->search($where)->field($field)->order('sort DESC,id ASC')->select(); } /** diff --git a/crmeb/app/services/system/SystemMenusServices.php b/crmeb/app/services/system/SystemMenusServices.php index c616fdaca..40f568eab 100644 --- a/crmeb/app/services/system/SystemMenusServices.php +++ b/crmeb/app/services/system/SystemMenusServices.php @@ -89,9 +89,9 @@ class SystemMenusServices extends BaseServices * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ - public function getList(array $where) + public function getList(array $where, array $field = ['*']) { - $menusList = $this->dao->getMenusList($where); + $menusList = $this->dao->getMenusList($where, $field); $menusList = $this->getMenusData($menusList); return get_tree_children($menusList); } From 020ba9c589ee0e7ca8292d200bee968c6513b11a Mon Sep 17 00:00:00 2001 From: From-wh Date: Tue, 11 Apr 2023 16:54:14 +0800 Subject: [PATCH 3/3] =?UTF-8?q?improve:=20=E6=8E=A5=E5=8F=A3=E6=9D=83?= =?UTF-8?q?=E9=99=90/=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/src/api/systemBackendRouting.js | 11 ++ template/admin/src/api/systemMenus.js | 10 + .../src/pages/setting/devisePage/index.vue | 4 +- .../systemMenus/components/menusFrom.vue | 8 +- .../src/pages/setting/systemMenus/index.vue | 187 +++++++++++++++++- .../setting/systemOutInterface/debugging.vue | 4 +- .../pages/system/backendRouting/debugging.vue | 6 +- .../src/pages/system/backendRouting/index.vue | 80 +++++--- .../pages/system/backendRouting/request.js | 15 +- 9 files changed, 272 insertions(+), 53 deletions(-) diff --git a/template/admin/src/api/systemBackendRouting.js b/template/admin/src/api/systemBackendRouting.js index 7b844390e..e747a2c90 100644 --- a/template/admin/src/api/systemBackendRouting.js +++ b/template/admin/src/api/systemBackendRouting.js @@ -62,6 +62,17 @@ export function routeDet(id) { method: 'get', }); } +/** + * 接口分类编辑 + * @param {*} data + * @returns + */ +export function routeEdit(id, appName) { + return request({ + url: `system/route_cate/${id}/edit?app_name=${appName}`, + method: 'get', + }); +} /** * @description 修改名称 diff --git a/template/admin/src/api/systemMenus.js b/template/admin/src/api/systemMenus.js index 728eaa948..344958d3d 100644 --- a/template/admin/src/api/systemMenus.js +++ b/template/admin/src/api/systemMenus.js @@ -94,3 +94,13 @@ export function getRuleList() { method: 'get', }); } +/** + * @description 权限列表 + */ +export function menusBatch(data) { + return request({ + url: `setting/menus/batch`, + method: 'post', + data, + }); +} diff --git a/template/admin/src/pages/setting/devisePage/index.vue b/template/admin/src/pages/setting/devisePage/index.vue index 40302981b..2adac215e 100644 --- a/template/admin/src/pages/setting/devisePage/index.vue +++ b/template/admin/src/pages/setting/devisePage/index.vue @@ -55,9 +55,9 @@ export default { if (Number(this.$route.query.type) === 1) { this.iframeUrl = `${moveLink}/pages/index/index?type=iframeWindow`; } else { - this.iframeUrl = `https://v4.wuht.net/pages/index/index?type=iframeWindow`; + // this.iframeUrl = `https://v4.wuht.net/pages/index/index?type=iframeWindow`; - // this.iframeUrl = `${location.origin}/pages/index/index?type=iframeWindow`; + this.iframeUrl = `${location.origin}/pages/index/index?type=iframeWindow`; } diyGetInfo(parseInt(pageId)).then((datas) => { let data = datas.data.info.value; diff --git a/template/admin/src/pages/setting/systemMenus/components/menusFrom.vue b/template/admin/src/pages/setting/systemMenus/components/menusFrom.vue index 2b410a638..4ef11dcf8 100644 --- a/template/admin/src/pages/setting/systemMenus/components/menusFrom.vue +++ b/template/admin/src/pages/setting/systemMenus/components/menusFrom.vue @@ -12,7 +12,7 @@ @on-visible-change="visible" >
- +
- +
@@ -95,7 +95,7 @@ - + diff --git a/template/admin/src/pages/setting/systemMenus/index.vue b/template/admin/src/pages/setting/systemMenus/index.vue index 82a19ab90..8664f1e13 100644 --- a/template/admin/src/pages/setting/systemMenus/index.vue +++ b/template/admin/src/pages/setting/systemMenus/index.vue @@ -67,13 +67,15 @@ - +