瀏覽代碼

更新路由

evoxwht 2 年之前
父節點
當前提交
7ae042ffb0

+ 79 - 70
crmeb/app/adminapi/route/agent.php

@@ -14,79 +14,88 @@ use think\facade\Route;
  * 分销管理 相关路由
  */
 Route::group('agent', function () {
-    //推销员列表
-    Route::get('index', 'v1.agent.AgentManage/index')->option(['real_name' => '分销员列表']);
-    //修改上级推广人
-    Route::put('spread', 'v1.agent.AgentManage/editSpread')->option(['real_name' => '修改上级推广人']);
-    //头部统计
-    Route::get('statistics', 'v1.agent.AgentManage/get_badge')->option(['real_name' => '分销员列表头部统计']);
-    //推广人列表
-    Route::get('stair', 'v1.agent.AgentManage/get_stair_list')->option(['real_name' => '推广人列表']);
-    //推广人头部统计
-//    Route::get('stair/statistics', 'v1.agent.AgentManage/get_stair_badge')->option(['real_name' => '推广人头部统计']);
-    //统计推广订单列表
-    Route::get('stair/order', 'v1.agent.AgentManage/get_stair_order_list')->option(['real_name' => '推广订单列表']);
-    //统计推广订单列表头部
-//    Route::get('stair/order/statistics', 'v1.agent.AgentManage/get_stair_order_badge')->option(['real_name' => '推广订单列表头部']);
-    //清除上级推广人
-    Route::put('stair/delete_spread/:uid', 'v1.agent.AgentManage/delete_spread')->option(['real_name' => '清除上级推广人']);
-    //取消推广资格
-    Route::put('stair/delete_system_spread/:uid', 'v1.agent.AgentManage/delete_system_spread')->option(['real_name' => '取消推广资格']);
-    //查看公众号推广二维码
-    Route::get('look_code', 'v1.agent.AgentManage/look_code')->option(['real_name' => '查看公众号推广二维码']);
-    //查看小程序推广二维码
-    Route::get('look_xcx_code', 'v1.agent.AgentManage/look_xcx_code')->option(['real_name' => '查看小程序推广二维码']);
-    //查看H5推广二维码
-    Route::get('look_h5_code', 'v1.agent.AgentManage/look_h5_code')->option(['real_name' => '查看H5推广二维码']);
-    //积分配置编辑表单
-    Route::get('config/edit_basics', 'v1.setting.SystemConfig/edit_basics')->option(['real_name' => '积分配置编辑表单']);
-    //积分配置保存数据
-    Route::post('config/save_basics', 'v1.setting.SystemConfig/save_basics')->option(['real_name' => '积分配置保存数据']);
-    //分销员等级资源路由
-    Route::resource('level', 'v1.agent.AgentLevel')->except(['read'])->name('AgentLevel')->option([
-        'real_name' => [
-            'index' => '获取分销员等级列表',
-            'create' => '获取分销员等级表单',
-            'save' => '保存分销员等级',
-            'edit' => '获取修改分销员等级表单',
-            'update' => '修改分销员等级',
-            'delete' => '删除分销员等级'
-        ]
-    ]);
-    //修改分销等级状态
-    Route::put('level/set_status/:id/:status', 'v1.agent.AgentLevel/set_status')->name('levelSetStatus')->option(['real_name' => '修改分销等级状态']);
-    //分销员等级任务资源路由
-    Route::resource('level_task', 'v1.agent.AgentLevelTask')->except(['read'])->option([
-        'real_name' => [
-            'index' => '获取分销员等级任务列表',
-            'create' => '获取分销员等级任务表单',
-            'save' => '保存分销员等级任务',
-            'edit' => '获取修改分销员等级任务表单',
-            'update' => '修改分销员等级任务',
-            'delete' => '删除分销员等级任务'
-        ]
-    ]);
-    //修改分销任务状态
-    Route::put('level_task/set_status/:id/:status', 'v1.agent.AgentLevelTask/set_status')->name('levelTaskSetStatus')->option(['real_name' => '修改分销等级任务状态']);
-    //获取赠送分销等级表单
-    Route::get('get_level_form', 'v1.agent.AgentManage/getLevelForm')->name('getLevelForm')->option(['real_name' => '获取赠送分销等级表单']);
-    //赠送分销等级
-    Route::post('give_level', 'v1.agent.AgentManage/giveAgentLevel')->name('giveAgentLevel')->option(['real_name' => '赠送分销等级']);
 
+    /** 分销员管理 */
+    Route::group(function () {
+        //推销员列表
+        Route::get('index', 'v1.agent.AgentManage/index')->option(['real_name' => '分销员列表']);
+        //修改上级推广人
+        Route::put('spread', 'v1.agent.AgentManage/editSpread')->option(['real_name' => '修改上级推广人']);
+        //头部统计
+        Route::get('statistics', 'v1.agent.AgentManage/get_badge')->option(['real_name' => '分销员列表头部统计']);
+        //推广人列表
+        Route::get('stair', 'v1.agent.AgentManage/get_stair_list')->option(['real_name' => '推广人列表']);
+        //统计推广订单列表
+        Route::get('stair/order', 'v1.agent.AgentManage/get_stair_order_list')->option(['real_name' => '推广订单列表']);
+        //清除上级推广人
+        Route::put('stair/delete_spread/:uid', 'v1.agent.AgentManage/delete_spread')->option(['real_name' => '清除上级推广人']);
+        //取消推广资格
+        Route::put('stair/delete_system_spread/:uid', 'v1.agent.AgentManage/delete_system_spread')->option(['real_name' => '取消推广资格']);
+        //查看公众号推广二维码
+        Route::get('look_code', 'v1.agent.AgentManage/look_code')->option(['real_name' => '查看公众号推广二维码']);
+        //查看小程序推广二维码
+        Route::get('look_xcx_code', 'v1.agent.AgentManage/look_xcx_code')->option(['real_name' => '查看小程序推广二维码']);
+        //查看H5推广二维码
+        Route::get('look_h5_code', 'v1.agent.AgentManage/look_h5_code')->option(['real_name' => '查看H5推广二维码']);
+    })->option(['parent' => 'agent', 'cate_name' => '分销员管理']);
+
+    /** 分销设置 */
+    Route::group(function () {
+        //分销配置编辑表单
+        Route::get('config/edit_basics', 'v1.setting.SystemConfig/edit_basics')->option(['real_name' => '积分配置编辑表单']);
+        //分销配置保存数据
+        Route::post('config/save_basics', 'v1.setting.SystemConfig/save_basics')->option(['real_name' => '积分配置保存数据']);
+    })->option(['parent' => 'agent', 'cate_name' => '分销设置']);
+
+    /** 分销等级 */
+    Route::group(function () {
+        //分销员等级资源路由
+        Route::resource('level', 'v1.agent.AgentLevel')->except(['read'])->name('AgentLevel')->option([
+            'real_name' => [
+                'index' => '获取分销员等级列表',
+                'create' => '获取分销员等级表单',
+                'save' => '保存分销员等级',
+                'edit' => '获取修改分销员等级表单',
+                'update' => '修改分销员等级',
+                'delete' => '删除分销员等级'
+            ]
+        ]);
+        //修改分销等级状态
+        Route::put('level/set_status/:id/:status', 'v1.agent.AgentLevel/set_status')->name('levelSetStatus')->option(['real_name' => '修改分销等级状态']);
+        //分销员等级任务资源路由
+        Route::resource('level_task', 'v1.agent.AgentLevelTask')->except(['read'])->option([
+            'real_name' => [
+                'index' => '获取分销员等级任务列表',
+                'create' => '获取分销员等级任务表单',
+                'save' => '保存分销员等级任务',
+                'edit' => '获取修改分销员等级任务表单',
+                'update' => '修改分销员等级任务',
+                'delete' => '删除分销员等级任务'
+            ]
+        ]);
+        //修改分销任务状态
+        Route::put('level_task/set_status/:id/:status', 'v1.agent.AgentLevelTask/set_status')->name('levelTaskSetStatus')->option(['real_name' => '修改分销等级任务状态']);
+        //获取赠送分销等级表单
+        Route::get('get_level_form', 'v1.agent.AgentManage/getLevelForm')->name('getLevelForm')->option(['real_name' => '获取赠送分销等级表单']);
+        //赠送分销等级
+        Route::post('give_level', 'v1.agent.AgentManage/giveAgentLevel')->name('giveAgentLevel')->option(['real_name' => '赠送分销等级']);
+    })->option(['parent' => 'agent', 'cate_name' => '分销等级']);
 
     /** 事业部 */
-    Route::get('division/list', 'v1.agent.Division/divisionList')->name('divisionList')->option(['real_name' => '事业部列表']);//事业部/代理商/员工列表
-    Route::get('division/down_list', 'v1.agent.Division/divisionDownList')->name('divisionDownList')->option(['real_name' => '下级列表']);//下级列表
-    Route::get('division/create/:uid', 'v1.agent.Division/divisionCreate')->name('divisionCreate')->option(['real_name' => '添加事业部']);//添加事业部
-    Route::post('division/save', 'v1.agent.Division/divisionSave')->name('divisionSave')->option(['real_name' => '事业部保存']);//事业部保存
-    Route::get('division/agent/create/:uid', 'v1.agent.Division/divisionAgentCreate')->name('divisionAgentCreate')->option(['real_name' => '添加事业部']);//添加代理商
-    Route::post('division/agent/save', 'v1.agent.Division/divisionAgentSave')->name('divisionAgentSave')->option(['real_name' => '事业部保存']);//代理商保存
-    Route::put('division/set_status/:status/:uid', 'v1.agent.Division/setDivisionStatus')->name('setDivisionStatus')->option(['real_name' => '状态切换']);//状态切换
-    Route::delete('division/del/:type/:uid', 'v1.agent.Division/delDivision')->name('delDivision')->option(['real_name' => '删除代理商']);//状态切换
-    Route::get('division/agent_apply/list', 'v1.agent.Division/AdminApplyList')->name('AdminApplyList')->option(['real_name' => '代理商申请列表']);//代理商申请列表
-    Route::get('division/examine_apply/:id/:type', 'v1.agent.Division/examineApply')->name('examineApply')->option(['real_name' => '审核表单']);//审核表单
-    Route::post('division/apply_agent/save', 'v1.agent.Division/applyAgentSave')->name('applyAgentSave')->option(['real_name' => '提交审核']);//提交审核
-    Route::delete('division/del_apply/:id', 'v1.agent.Division/delApply')->name('delApply')->option(['real_name' => '删除审核']);//删除审核
+    Route::group(function () {
+        Route::get('division/list', 'v1.agent.Division/divisionList')->name('divisionList')->option(['real_name' => '事业部列表']);//事业部/代理商/员工列表
+        Route::get('division/down_list', 'v1.agent.Division/divisionDownList')->name('divisionDownList')->option(['real_name' => '下级列表']);//下级列表
+        Route::get('division/create/:uid', 'v1.agent.Division/divisionCreate')->name('divisionCreate')->option(['real_name' => '添加事业部']);//添加事业部
+        Route::post('division/save', 'v1.agent.Division/divisionSave')->name('divisionSave')->option(['real_name' => '事业部保存']);//事业部保存
+        Route::get('division/agent/create/:uid', 'v1.agent.Division/divisionAgentCreate')->name('divisionAgentCreate')->option(['real_name' => '添加事业部']);//添加代理商
+        Route::post('division/agent/save', 'v1.agent.Division/divisionAgentSave')->name('divisionAgentSave')->option(['real_name' => '事业部保存']);//代理商保存
+        Route::put('division/set_status/:status/:uid', 'v1.agent.Division/setDivisionStatus')->name('setDivisionStatus')->option(['real_name' => '状态切换']);//状态切换
+        Route::delete('division/del/:type/:uid', 'v1.agent.Division/delDivision')->name('delDivision')->option(['real_name' => '删除代理商']);//状态切换
+        Route::get('division/agent_apply/list', 'v1.agent.Division/AdminApplyList')->name('AdminApplyList')->option(['real_name' => '代理商申请列表']);//代理商申请列表
+        Route::get('division/examine_apply/:id/:type', 'v1.agent.Division/examineApply')->name('examineApply')->option(['real_name' => '审核表单']);//审核表单
+        Route::post('division/apply_agent/save', 'v1.agent.Division/applyAgentSave')->name('applyAgentSave')->option(['real_name' => '提交审核']);//提交审核
+        Route::delete('division/del_apply/:id', 'v1.agent.Division/delApply')->name('delApply')->option(['real_name' => '删除审核']);//删除审核
+    })->option(['parent' => 'agent', 'cate_name' => '事业部']);
 
 })->middleware([
     \app\http\middleware\AllowOriginMiddleware::class,

+ 112 - 130
crmeb/app/adminapi/route/app.php

@@ -14,140 +14,122 @@ use think\facade\Route;
  * 应用模块 相关路由
  */
 Route::group('app', function () {
-    //小程序模板资源路由
-    Route::resource('routine', 'v1.application.routine.RoutineTemplate')->except(['read'])->option([
-        'real_name' => [
-            'index' => '获取小程序订阅消息列表',
-            'create' => '获取小程序订阅消息表单',
-            'save' => '保存小程序订阅消息',
-            'edit' => '获取修改小程序订阅消息表单',
-            'update' => '修改小程序订阅消息',
-            'delete' => '删除小程序订阅消息'
-        ]
-    ]);
-    //一键同步订阅消息
-    Route::get('routine/syncSubscribe', 'v1.application.routine.RoutineTemplate/syncSubscribe')->name('syncSubscribe')->option(['real_name' => '一键同步订阅消息']);
-    //一键同步微信模版消息消息
-    Route::get('wechat/syncSubscribe', 'v1.application.wechat.WechatTemplate/syncSubscribe')->name('syncSubscribe')->option(['real_name' => '一键同步模版消息']);
-    //修改状态
-    Route::put('routine/set_status/:id/:status', 'v1.application.routine.RoutineTemplate/set_status')->name('RoutineSetStatus')->option(['real_name' => '修改订阅消息状态']);
-    //菜单值
-    Route::get('wechat/menu', 'v1.application.wechat.menus/index')->option(['real_name' => '微信公众号菜单列表']);
-    //保存菜单
-    Route::post('wechat/menu', 'v1.application.wechat.menus/save')->option(['real_name' => '保存微信公众号菜单']);
-    //微信模板消息资源路由
-    Route::resource('wechat/template', 'v1.application.wechat.WechatTemplate')->except(['read'])->option([
-        'real_name' => [
-            'index' => '获取公众号模版消息列表',
-            'create' => '获取公众号模版消息表单',
-            'save' => '保存公众号模版消息',
-            'edit' => '获取修改公众号模版消息表单',
-            'update' => '修改公众号模版消息',
-            'delete' => '删除公众号模版消息'
-        ]
-    ]);
-    //微信模板消息修改状态
-    Route::put('wechat/template/set_status/:id/:status', 'v1.application.wechat.WechatTemplate/set_status')->name('WechatTemplateSetStatus')->option(['real_name' => '修改关键字回复状态']);
-    //关注回复
-    Route::get('wechat/reply', 'v1.application.wechat.Reply/reply')->option(['real_name' => '关注回复']);
-    //获取关注回复二维码
-    Route::get('wechat/code_reply/:id', 'v1.application.wechat.Reply/code_reply')->option(['real_name' => '获取关注回复二维码']);
-    //关键字回复列表
-    Route::get('wechat/keyword', 'v1.application.wechat.Reply/index')->option(['real_name' => '关键字回复列表']);
-    //关键字详情
-    Route::get('wechat/keyword/:id', 'v1.application.wechat.Reply/read')->option(['real_name' => '关键字回复详情']);
-    //保存关键字修改
-    Route::post('wechat/keyword/:id', 'v1.application.wechat.Reply/save')->option(['real_name' => '保存关键字回复']);
-    //删除关键字
-    Route::delete('wechat/keyword/:id', 'v1.application.wechat.Reply/delete')->option(['real_name' => '删除关键字回复']);
-    //修改关键字状态
-    Route::put('wechat/keyword/set_status/:id/:status', 'v1.application.wechat.Reply/set_status')->option(['real_name' => '修改关键字回复状态']);
-    //图文列表
-    Route::get('wechat/news', 'v1.application.wechat.WechatNewsCategory/index')->option(['real_name' => '图文列表']);
-    //详情
-    Route::get('wechat/news/:id', 'v1.application.wechat.WechatNewsCategory/read')->option(['real_name' => '图文详情']);
-    //保存图文
-    Route::post('wechat/news', 'v1.application.wechat.WechatNewsCategory/save')->option(['real_name' => '保存图文']);
-    //删除图文
-    Route::delete('wechat/news/:id', 'v1.application.wechat.WechatNewsCategory/delete')->option(['real_name' => '删除图文']);
-    //发送图文消息
-    Route::post('wechat/push', 'v1.application.wechat.WechatNewsCategory/push')->option(['real_name' => '发送图文消息']);
-    //用户行为列表
-    Route::get('wechat/action', 'v1.application.wechat.WechatMessage/index')->option(['real_name' => '用户行为列表']);
-    //用户行为列表操作名称列表
-    Route::get('wechat/action/operate', 'v1.application.wechat.WechatMessage/operate')->option(['real_name' => '用户行为列表操作名称列表']);
-    //下载小程序模版页面数据
-    Route::get('routine/info', 'v1.application.routine.RoutineTemplate/getDownloadInfo')->option(['real_name' => '下载小程序页面数据']);
-    //下载小程序模版
-    Route::post('routine/download', 'v1.application.routine.RoutineTemplate/downloadTemp')->option(['real_name' => '下载小程序模版']);
+
+    /** 公众号 */
+    Route::group(function () {
+        //菜单值
+        Route::get('wechat/menu', 'v1.application.wechat.menus/index')->option(['real_name' => '微信公众号菜单列表']);
+        //保存菜单
+        Route::post('wechat/menu', 'v1.application.wechat.menus/save')->option(['real_name' => '保存微信公众号菜单']);
+        //图文列表
+        Route::get('wechat/news', 'v1.application.wechat.WechatNewsCategory/index')->option(['real_name' => '图文列表']);
+        //详情
+        Route::get('wechat/news/:id', 'v1.application.wechat.WechatNewsCategory/read')->option(['real_name' => '图文详情']);
+        //保存图文
+        Route::post('wechat/news', 'v1.application.wechat.WechatNewsCategory/save')->option(['real_name' => '保存图文']);
+        //删除图文
+        Route::delete('wechat/news/:id', 'v1.application.wechat.WechatNewsCategory/delete')->option(['real_name' => '删除图文']);
+        //发送图文消息
+        Route::post('wechat/push', 'v1.application.wechat.WechatNewsCategory/push')->option(['real_name' => '发送图文消息']);
+        //关注回复
+        Route::get('wechat/reply', 'v1.application.wechat.Reply/reply')->option(['real_name' => '关注回复']);
+        //获取关注回复二维码
+        Route::get('wechat/code_reply/:id', 'v1.application.wechat.Reply/code_reply')->option(['real_name' => '获取关注回复二维码']);
+        //关键字回复列表
+        Route::get('wechat/keyword', 'v1.application.wechat.Reply/index')->option(['real_name' => '关键字回复列表']);
+        //关键字详情
+        Route::get('wechat/keyword/:id', 'v1.application.wechat.Reply/read')->option(['real_name' => '关键字回复详情']);
+        //保存关键字修改
+        Route::post('wechat/keyword/:id', 'v1.application.wechat.Reply/save')->option(['real_name' => '保存关键字回复']);
+        //删除关键字
+        Route::delete('wechat/keyword/:id', 'v1.application.wechat.Reply/delete')->option(['real_name' => '删除关键字回复']);
+        //修改关键字状态
+        Route::put('wechat/keyword/set_status/:id/:status', 'v1.application.wechat.Reply/set_status')->option(['real_name' => '修改关键字回复状态']);
+        //一键同步微信模版消息消息
+        Route::get('wechat/syncSubscribe', 'v1.application.wechat.WechatTemplate/syncSubscribe')->name('syncSubscribe')->option(['real_name' => '一键同步模版消息']);
+    })->option(['parent' => 'app', 'cate_name' => '公众号']);
+
+    /** 小程序 */
+    Route::group(function () {
+        //一键同步订阅消息
+        Route::get('routine/syncSubscribe', 'v1.application.routine.RoutineTemplate/syncSubscribe')->name('syncSubscribe')->option(['real_name' => '一键同步订阅消息']);
+        //下载小程序模版页面数据
+        Route::get('routine/info', 'v1.application.routine.RoutineTemplate/getDownloadInfo')->option(['real_name' => '下载小程序页面数据']);
+        //下载小程序模版
+        Route::post('routine/download', 'v1.application.routine.RoutineTemplate/downloadTemp')->option(['real_name' => '下载小程序模版']);
+    })->option(['parent' => 'app', 'cate_name' => '小程序']);
 
     /** 公众号渠道码 */
-    Route::get('wechat_qrcode/cate/list', 'v1.application.wechat.WechatQrcode/getCateList')->option(['real_name' => '渠道码分类列表']);
-    Route::get('wechat_qrcode/cate/create/:id', 'v1.application.wechat.WechatQrcode/createForm')->option(['real_name' => '渠道码分类添加编辑表单']);
-    Route::post('wechat_qrcode/cate/save', 'v1.application.wechat.WechatQrcode/saveCate')->option(['real_name' => '渠道码分类保存']);
-    Route::delete('wechat_qrcode/cate/del/:id', 'v1.application.wechat.WechatQrcode/delCate')->option(['real_name' => '渠道码分类删除']);
-    Route::post('wechat_qrcode/save/:id', 'v1.application.wechat.WechatQrcode/saveQrcode')->option(['real_name' => '保存渠道码']);
-    Route::get('wechat_qrcode/info/:id', 'v1.application.wechat.WechatQrcode/qrcodeInfo')->option(['real_name' => '渠道码详情']);
-    Route::get('wechat_qrcode/list', 'v1.application.wechat.WechatQrcode/qrcodeList')->option(['real_name' => '渠道码列表']);
-    Route::delete('wechat_qrcode/del/:id', 'v1.application.wechat.WechatQrcode/delQrcode')->option(['real_name' => '删除渠道码']);
-    Route::put('wechat_qrcode/set_status/:id/:status', 'v1.application.wechat.WechatQrcode/setStatus')->option(['real_name' => '切换渠道码状态']);
-    Route::get('wechat_qrcode/user_list/:qid', 'v1.application.wechat.WechatQrcode/userList')->option(['real_name' => '渠道码用户列表']);
-    Route::get('wechat_qrcode/statistic/:qid', 'v1.application.wechat.WechatQrcode/qrcodeStatistic')->option(['real_name' => '渠道码统计']);
+    Route::group(function () {
+        Route::get('wechat_qrcode/cate/list', 'v1.application.wechat.WechatQrcode/getCateList')->option(['real_name' => '渠道码分类列表']);
+        Route::get('wechat_qrcode/cate/create/:id', 'v1.application.wechat.WechatQrcode/createForm')->option(['real_name' => '渠道码分类添加编辑表单']);
+        Route::post('wechat_qrcode/cate/save', 'v1.application.wechat.WechatQrcode/saveCate')->option(['real_name' => '渠道码分类保存']);
+        Route::delete('wechat_qrcode/cate/del/:id', 'v1.application.wechat.WechatQrcode/delCate')->option(['real_name' => '渠道码分类删除']);
+        Route::post('wechat_qrcode/save/:id', 'v1.application.wechat.WechatQrcode/saveQrcode')->option(['real_name' => '保存渠道码']);
+        Route::get('wechat_qrcode/info/:id', 'v1.application.wechat.WechatQrcode/qrcodeInfo')->option(['real_name' => '渠道码详情']);
+        Route::get('wechat_qrcode/list', 'v1.application.wechat.WechatQrcode/qrcodeList')->option(['real_name' => '渠道码列表']);
+        Route::delete('wechat_qrcode/del/:id', 'v1.application.wechat.WechatQrcode/delQrcode')->option(['real_name' => '删除渠道码']);
+        Route::put('wechat_qrcode/set_status/:id/:status', 'v1.application.wechat.WechatQrcode/setStatus')->option(['real_name' => '切换渠道码状态']);
+        Route::get('wechat_qrcode/user_list/:qid', 'v1.application.wechat.WechatQrcode/userList')->option(['real_name' => '渠道码用户列表']);
+        Route::get('wechat_qrcode/statistic/:qid', 'v1.application.wechat.WechatQrcode/qrcodeStatistic')->option(['real_name' => '渠道码统计']);
+    })->option(['parent' => 'app', 'cate_name' => '公众号渠道码']);
 
     /** 客服相关 */
-    //客服反馈接口
-    Route::resource('feedback', 'v1.kefu.StoreServiceFeedback')->only(['index', 'delete', 'update', 'edit'])->option([
-        'real_name' => [
-            'index' => '获取用户反馈列表',
-            'edit' => '获取修改用户反馈表单',
-            'update' => '修改用户反馈',
-            'delete' => '删除用户反馈'
-        ]
-    ]);
-    //话术接口
-    Route::resource('wechat/speechcraft', 'v1.kefu.StoreServiceSpeechcraft')->except(['read'])->option([
-        'real_name' => [
-            'index' => '获取客服话术列表',
-            'create' => '获取客服话术表单',
-            'save' => '保存客服话术',
-            'edit' => '获取修改客服话术表单',
-            'update' => '修改客服话术',
-            'delete' => '删除客服话术'
-        ]
-    ]);
-    //话术分类接口
-    Route::resource('wechat/speechcraftcate', 'v1.kefu.StoreServiceSpeechcraftCate')->except(['read'])->option([
-        'real_name' => [
-            'index' => '获取客服话术分类列表',
-            'create' => '获取客服话术分类表单',
-            'save' => '保存客服话术分类',
-            'edit' => '获取修改客服话术分类表单',
-            'update' => '修改客服话术分类',
-            'delete' => '删除客服话术分类'
-        ]
-    ]);
-    //客服列表
-    Route::get('wechat/kefu', 'v1.kefu.StoreService/index')->option(['real_name' => '客服列表']);
-    //客服登录
-    Route::get('wechat/kefu/login/:id', 'v1.kefu.StoreService/keufLogin')->option(['real_name' => '客服登录']);
-    //新增客服选择用户列表
-    Route::get('wechat/kefu/create', 'v1.kefu.StoreService/create')->option(['real_name' => '新增客服选择用户列表']);
-    //新增客服表单
-    Route::get('wechat/kefu/add', 'v1.kefu.StoreService/add')->option(['real_name' => '添加客服表单']);
-    //保存新建的数据
-    Route::post('wechat/kefu', 'v1.kefu.StoreService/save')->option(['real_name' => '添加客服']);
-    //编辑客服表单
-    Route::get('wechat/kefu/:id/edit', 'v1.kefu.StoreService/edit')->option(['real_name' => '修改客服表单']);
-    //保存编辑的数据
-    Route::put('wechat/kefu/:id', 'v1.kefu.StoreService/update')->option(['real_name' => '修改客服']);
-    //删除
-    Route::delete('wechat/kefu/:id', 'v1.kefu.StoreService/delete')->option(['real_name' => '删除客服']);
-    //修改状态
-    Route::put('wechat/kefu/set_status/:id/:status', 'v1.kefu.StoreService/set_status')->option(['real_name' => '修改客服状态']);
-    //聊天记录
-    Route::get('wechat/kefu/record/:id', 'v1.kefu.StoreService/chat_user')->option(['real_name' => '聊天记录']);
-    //查看对话
-    Route::get('wechat/kefu/chat_list', 'v1.kefu.StoreService/chat_list')->option(['real_name' => '查看对话']);
+    Route::group(function () {
+        //客服反馈接口
+        Route::resource('feedback', 'v1.kefu.StoreServiceFeedback')->only(['index', 'delete', 'update', 'edit'])->option([
+            'real_name' => [
+                'index' => '获取用户反馈列表',
+                'edit' => '获取修改用户反馈表单',
+                'update' => '修改用户反馈',
+                'delete' => '删除用户反馈'
+            ]
+        ]);
+        //话术接口
+        Route::resource('wechat/speechcraft', 'v1.kefu.StoreServiceSpeechcraft')->except(['read'])->option([
+            'real_name' => [
+                'index' => '获取客服话术列表',
+                'create' => '获取客服话术表单',
+                'save' => '保存客服话术',
+                'edit' => '获取修改客服话术表单',
+                'update' => '修改客服话术',
+                'delete' => '删除客服话术'
+            ]
+        ]);
+        //话术分类接口
+        Route::resource('wechat/speechcraftcate', 'v1.kefu.StoreServiceSpeechcraftCate')->except(['read'])->option([
+            'real_name' => [
+                'index' => '获取客服话术分类列表',
+                'create' => '获取客服话术分类表单',
+                'save' => '保存客服话术分类',
+                'edit' => '获取修改客服话术分类表单',
+                'update' => '修改客服话术分类',
+                'delete' => '删除客服话术分类'
+            ]
+        ]);
+        //客服列表
+        Route::get('wechat/kefu', 'v1.kefu.StoreService/index')->option(['real_name' => '客服列表']);
+        //客服登录
+        Route::get('wechat/kefu/login/:id', 'v1.kefu.StoreService/keufLogin')->option(['real_name' => '客服登录']);
+        //新增客服选择用户列表
+        Route::get('wechat/kefu/create', 'v1.kefu.StoreService/create')->option(['real_name' => '新增客服选择用户列表']);
+        //新增客服表单
+        Route::get('wechat/kefu/add', 'v1.kefu.StoreService/add')->option(['real_name' => '添加客服表单']);
+        //保存新建的数据
+        Route::post('wechat/kefu', 'v1.kefu.StoreService/save')->option(['real_name' => '添加客服']);
+        //编辑客服表单
+        Route::get('wechat/kefu/:id/edit', 'v1.kefu.StoreService/edit')->option(['real_name' => '修改客服表单']);
+        //保存编辑的数据
+        Route::put('wechat/kefu/:id', 'v1.kefu.StoreService/update')->option(['real_name' => '修改客服']);
+        //删除
+        Route::delete('wechat/kefu/:id', 'v1.kefu.StoreService/delete')->option(['real_name' => '删除客服']);
+        //修改状态
+        Route::put('wechat/kefu/set_status/:id/:status', 'v1.kefu.StoreService/set_status')->option(['real_name' => '修改客服状态']);
+        //聊天记录
+        Route::get('wechat/kefu/record/:id', 'v1.kefu.StoreService/chat_user')->option(['real_name' => '聊天记录']);
+        //查看对话
+        Route::get('wechat/kefu/chat_list', 'v1.kefu.StoreService/chat_list')->option(['real_name' => '查看对话']);
+    })->option(['parent' => 'app', 'cate_name' => '客服相关']);
 
 })->middleware([
     \app\http\middleware\AllowOriginMiddleware::class,

+ 42 - 33
crmeb/app/adminapi/route/cms.php

@@ -14,39 +14,48 @@ use think\facade\Route;
  * 文章管理 相关路由
  */
 Route::group('cms', function () {
-    //文章资源路由
-    Route::resource('cms', 'v1.cms.Article')->option([
-        'real_name' => [
-            'index' => '获取文章列表',
-            'create' => '获取文章表单',
-            'read' => '获取文章详细信息',
-            'save' => '保存文章',
-            'edit' => '获取修改文章表单',
-            'update' => '修改文章',
-            'delete' => '删除文章'
-        ]
-    ]);
-    //关联商品
-    Route::put('cms/relation/:id', 'v1.cms.Article/relation')->name('Relation')->option(['real_name' => '文章关联商品']);
-    //取消关联
-    Route::put('cms/unrelation/:id', 'v1.cms.Article/unrelation')->name('UnRelation')->option(['real_name' => '取消文章关联商品']);
-    //文章分类资源路由
-    Route::resource('category', 'v1.cms.ArticleCategory')->except(['read'])->option([
-        'real_name' => [
-            'index' => '获取文章分类列表',
-            'create' => '获取文章分类表单',
-            'save' => '保存文章分类',
-            'edit' => '获取修改文章分类表单',
-            'update' => '修改文章分类',
-            'delete' => '删除文章分类'
-        ]
-    ]);
-    //修改状态
-    Route::put('category/set_status/:id/:status', 'v1.cms.ArticleCategory/set_status')->name('CategoryStatus')->option(['real_name' => '修改文章分类状态']);
-    //分类列表
-    Route::get('category_list', 'v1.cms.ArticleCategory/categoryList')->name('categoryList')->option(['real_name' => '分类列表', 'is_common' => true]);
-    //分类树形列表
-    Route::get('category_tree_list', 'v1.cms.ArticleCategory/getTreeList')->name('getTreeList')->option(['real_name' => '分类树形列表']);
+
+    /** 文章 */
+    Route::group(function () {
+        //文章资源路由
+        Route::resource('cms', 'v1.cms.Article')->option([
+            'real_name' => [
+                'index' => '获取文章列表',
+                'create' => '获取文章表单',
+                'read' => '获取文章详细信息',
+                'save' => '保存文章',
+                'edit' => '获取修改文章表单',
+                'update' => '修改文章',
+                'delete' => '删除文章'
+            ]
+        ]);
+        //关联商品
+        Route::put('cms/relation/:id', 'v1.cms.Article/relation')->name('Relation')->option(['real_name' => '文章关联商品']);
+        //取消关联
+        Route::put('cms/unrelation/:id', 'v1.cms.Article/unrelation')->name('UnRelation')->option(['real_name' => '取消文章关联商品']);
+    })->option(['parent' => 'cms', 'cate_name' => '文章']);
+
+    /** 文章分类 */
+    Route::group(function () {
+        //文章分类资源路由
+        Route::resource('category', 'v1.cms.ArticleCategory')->except(['read'])->option([
+            'real_name' => [
+                'index' => '获取文章分类列表',
+                'create' => '获取文章分类表单',
+                'save' => '保存文章分类',
+                'edit' => '获取修改文章分类表单',
+                'update' => '修改文章分类',
+                'delete' => '删除文章分类'
+            ]
+        ]);
+        //修改状态
+        Route::put('category/set_status/:id/:status', 'v1.cms.ArticleCategory/set_status')->name('CategoryStatus')->option(['real_name' => '修改文章分类状态']);
+        //分类列表
+        Route::get('category_list', 'v1.cms.ArticleCategory/categoryList')->name('categoryList')->option(['real_name' => '分类列表', 'is_common' => true]);
+        //分类树形列表
+        Route::get('category_tree_list', 'v1.cms.ArticleCategory/getTreeList')->name('getTreeList')->option(['real_name' => '分类树形列表']);
+    })->option(['parent' => 'cms', 'cate_name' => '文章分类']);
+
 })->middleware([
     \app\http\middleware\AllowOriginMiddleware::class,
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,

+ 3 - 4
crmeb/app/adminapi/route/common.php

@@ -14,7 +14,6 @@ use think\facade\Route;
  * 文件下载、导出相关路由
  */
 Route::group(function () {
-
     //下载备份记录表
     Route::get('backup/download', 'v1.system.SystemDatabackup/downloadFile')->option(['real_name' => '下载表备份记录']);
     //首页统计数据
@@ -23,9 +22,9 @@ Route::group(function () {
     Route::get('home/order', 'Common/orderChart')->option(['real_name' => '首页订单图表']);
     //首页用户图表
     Route::get('home/user', 'Common/userChart')->option(['real_name' => '首页用户图表']);
-    //
+    //首页交易额排行
     Route::get('home/rank', 'Common/purchaseRanking')->option(['real_name' => '首页交易额排行']);
-    // 消息提醒
+    //消息提醒
     Route::get('jnotice', 'Common/jnotice')->option(['real_name' => '消息提醒', 'is_common' => true]);
     //验证授权
     Route::get('check_auth', 'Common/auth')->option(['real_name' => '验证授权']);
@@ -48,5 +47,5 @@ Route::group(function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-])->option(['cate_name' => '公共']);
+])->option(['cate_name' => '系统数据']);
 

+ 0 - 1
crmeb/app/adminapi/route/diy.php

@@ -64,7 +64,6 @@ Route::group('diy', function () {
     Route::post('member_save', 'v1.diy.Diy/memberSaveData')->option(['real_name' => '个人中心保存']);
     //获取diy小程序二维码
     Route::get('get_routine_code/:id', 'v1.diy.Diy/getRoutineCode')->option(['real_name' => 'diy小程序预览码']);
-
     //开屏广告
     Route::get('open_adv/info', 'v1.diy.Diy/getOpenAdv')->option(['real_name' => '获取开屏广告']);
     Route::post('open_adv/add', 'v1.diy.Diy/openAdvAdd')->option(['real_name' => '保存开屏广告']);

+ 2 - 19
crmeb/app/adminapi/route/export.php

@@ -28,7 +28,8 @@ Route::group('export', function () {
     Route::get('seckill_list', 'v1.export.ExportExcel/seckillList')->option(['real_name' => '秒杀商品列表导出']);
     //导出会员卡
     Route::get('member_card/:id', 'v1.export.ExportExcel/memberCardList')->option(['real_name' => '会员卡导出']);
-
+    //分销用户推广列表
+    Route::get('userAgent', 'v1.export.ExportExcel/userAgent')->option(['real_name' => '分销员推广列表导出']);
     //用户资金监控
     Route::get('userFinance', 'v1.export.ExportExcel/userFinance')->option(['real_name' => '用户资金导出']);
     //用户佣金
@@ -37,24 +38,6 @@ Route::group('export', function () {
     Route::get('userPoint', 'v1.export.ExportExcel/userPoint')->option(['real_name' => '用户积分导出']);
     //用户充值
     Route::get('userRecharge', 'v1.export.ExportExcel/userRecharge')->option(['real_name' => '用户充值导出']);
-    //分销用户推广列表
-    Route::get('userAgent', 'v1.export.ExportExcel/userAgent')->option(['real_name' => '分销员推广列表导出']);
-    //微信用户
-    Route::get('wechatUser', 'v1.export.ExportExcel/wechatUser')->option(['real_name' => '微信用户导出']);
-    //商铺砍价活动
-    Route::get('storeBargain', 'v1.export.ExportExcel/storeBargain')->option(['real_name' => '砍价商品导出']);
-    //商铺拼团
-    Route::get('storeCombination', 'v1.export.ExportExcel/storeCombination')->option(['real_name' => '拼团商品导出']);
-    //商铺秒杀
-    Route::get('storeSeckill', 'v1.export.ExportExcel/storeSeckill')->option(['real_name' => '秒杀商品导出']);
-    //商铺产品
-    Route::get('storeProduct', 'v1.export.ExportExcel/storeProduct')->option(['real_name' => '商品导出']);
-    //商铺订单
-    Route::get('storeOrder', 'v1.export.ExportExcel/storeOrder')->option(['real_name' => '订单导出']);
-    //商铺提货点
-    Route::get('storeMerchant', 'v1.export.ExportExcel/storeMerchant')->option(['real_name' => '提货点导出']);
-    //导出会员卡
-    Route::get('memberCard/:id', 'v1.export.ExportExcel/memberCard')->option(['real_name' => '会员卡导出']);
 })->middleware([
     \app\http\middleware\AllowOriginMiddleware::class,
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,

+ 45 - 33
crmeb/app/adminapi/route/finance.php

@@ -14,40 +14,52 @@ use think\facade\Route;
  * 财务模块 相关路由
  */
 Route::group('finance', function () {
-    //筛选类型
-    Route::get('finance/bill_type', 'v1.finance.Finance/bill_type')->option(['real_name' => '资金记录类型']);
-    //资金记录
-    Route::get('finance/list', 'v1.finance.Finance/list')->option(['real_name' => '资金记录列表']);
-    //佣金记录
-    Route::get('finance/commission_list', 'v1.finance.Finance/get_commission_list')->option(['real_name' => '佣金记录列表']);
-    //佣金详情用户信息
-    Route::get('finance/user_info/:id', 'v1.finance.Finance/user_info')->option(['real_name' => '佣金详情用户信息']);
-    //佣金提现记录个人列表
-    Route::get('finance/extract_list/:id', 'v1.finance.Finance/get_extract_list')->option(['real_name' => '佣金提现记录个人列表']);
-    //申请列表
-    Route::get('extract', 'v1.finance.UserExtract/index')->option(['real_name' => '提现申请列表']);
-    //编辑表单
-    Route::get('extract/:id/edit', 'v1.finance.UserExtract/edit')->option(['real_name' => '提现记录修改表单']);
-    //保存修改
-    Route::put('extract/:id', 'v1.finance.UserExtract/update')->option(['real_name' => '提现记录修改']);
-    //拒绝申请
-    Route::put('extract/refuse/:id', 'v1.finance.UserExtract/refuse')->option(['real_name' => '拒绝提现申请']);
-    //通过申请
-    Route::put('extract/adopt/:id', 'v1.finance.UserExtract/adopt')->option(['real_name' => '通过提现申请']);
-    //充值记录列表
-    Route::get('recharge', 'v1.finance.UserRecharge/index')->option(['real_name' => '充值记录列表']);
-    //删除记录
-    Route::delete('recharge/:id', 'v1.finance.UserRecharge/delete')->option(['real_name' => '删除充值记录']);
-    //获取用户充值数据
-    Route::get('recharge/user_recharge', 'v1.finance.UserRecharge/user_recharge')->option(['real_name' => '获取用户充值数据']);
-    //退款表单
-    Route::get('recharge/:id/refund_edit', 'v1.finance.UserRecharge/refund_edit')->option(['real_name' => '充值退款表单']);
-    //退款
-    Route::put('recharge/:id', 'v1.finance.UserRecharge/refund_update')->option(['real_name' => '充值退款']);
 
-    /** 余额记录 */
-    Route::get('balance/list', 'v1.finance.UserBalance/balanceList')->option(['real_name' => '余额记录列表']);
-    Route::post('balance/set_mark/:id', 'v1.finance.UserBalance/balanceRecordRemark')->option(['real_name' => '余额记录备注']);
+    /** 提现 */
+    Route::group(function () {
+        //申请列表
+        Route::get('extract', 'v1.finance.UserExtract/index')->option(['real_name' => '提现申请列表']);
+        //编辑表单
+        Route::get('extract/:id/edit', 'v1.finance.UserExtract/edit')->option(['real_name' => '提现记录修改表单']);
+        //保存修改
+        Route::put('extract/:id', 'v1.finance.UserExtract/update')->option(['real_name' => '提现记录修改']);
+        //拒绝申请
+        Route::put('extract/refuse/:id', 'v1.finance.UserExtract/refuse')->option(['real_name' => '拒绝提现申请']);
+        //通过申请
+        Route::put('extract/adopt/:id', 'v1.finance.UserExtract/adopt')->option(['real_name' => '通过提现申请']);
+    })->option(['parent' => 'finance', 'cate_name' => '提现']);
+
+    /** 资金记录 */
+    Route::group(function () {
+        //筛选类型
+        Route::get('finance/bill_type', 'v1.finance.Finance/bill_type')->option(['real_name' => '资金记录类型']);
+        //资金记录
+        Route::get('finance/list', 'v1.finance.Finance/list')->option(['real_name' => '资金记录列表']);
+        //佣金记录
+        Route::get('finance/commission_list', 'v1.finance.Finance/get_commission_list')->option(['real_name' => '佣金记录列表']);
+        //佣金详情用户信息
+        Route::get('finance/user_info/:id', 'v1.finance.Finance/user_info')->option(['real_name' => '佣金详情用户信息']);
+        //佣金提现记录个人列表
+        Route::get('finance/extract_list/:id', 'v1.finance.Finance/get_extract_list')->option(['real_name' => '佣金提现记录个人列表']);
+        /** 余额记录 */
+        Route::get('balance/list', 'v1.finance.UserBalance/balanceList')->option(['real_name' => '余额记录列表']);
+        Route::post('balance/set_mark/:id', 'v1.finance.UserBalance/balanceRecordRemark')->option(['real_name' => '余额记录备注']);
+    })->option(['parent' => 'finance', 'cate_name' => '资金记录']);
+
+    /** 充值 */
+    Route::group(function () {
+        //充值记录列表
+        Route::get('recharge', 'v1.finance.UserRecharge/index')->option(['real_name' => '充值记录列表']);
+        //删除记录
+        Route::delete('recharge/:id', 'v1.finance.UserRecharge/delete')->option(['real_name' => '删除充值记录']);
+        //获取用户充值数据
+        Route::get('recharge/user_recharge', 'v1.finance.UserRecharge/user_recharge')->option(['real_name' => '获取用户充值数据']);
+        //退款表单
+        Route::get('recharge/:id/refund_edit', 'v1.finance.UserRecharge/refund_edit')->option(['real_name' => '充值退款表单']);
+        //退款
+        Route::put('recharge/:id', 'v1.finance.UserRecharge/refund_update')->option(['real_name' => '充值退款']);
+    })->option(['parent' => 'finance', 'cate_name' => '充值']);
+
 
 })->middleware([
     \app\http\middleware\AllowOriginMiddleware::class,

+ 51 - 44
crmeb/app/adminapi/route/live.php

@@ -16,52 +16,59 @@ use think\facade\Route;
  */
 Route::group('live', function () {
 
-    //主播列表
-    Route::get('anchor/list', 'v1.marketing.live.LiveAnchor/list')->option(['real_name' => '主播列表']);
-    //添加修改主播表单
-    Route::get('anchor/add/:id', 'v1.marketing.live.LiveAnchor/add')->option(['real_name' => '添加修改主播表单']);
-    //保存主播数据
-    Route::post('anchor/save', 'v1.marketing.live.LiveAnchor/save')->option(['real_name' => '保存主播数据']);
-    //删除主播
-    Route::delete('anchor/del/:id', 'v1.marketing.live.LiveAnchor/delete')->option(['real_name' => '删除主播']);
-    //设置是否显示
-    Route::get('anchor/set_show/:id/:is_show', 'v1.marketing.live.LiveAnchor/setShow')->option(['real_name' => '设置主播是否显示']);
-    //同步主播
-    Route::get('anchor/syncAnchor', 'v1.marketing.live.LiveAnchor/syncAnchor')->option(['real_name' => '同步主播']);
+    /** 主播 */
+    Route::group(function () {
+        //主播列表
+        Route::get('anchor/list', 'v1.marketing.live.LiveAnchor/list')->option(['real_name' => '主播列表']);
+        //添加修改主播表单
+        Route::get('anchor/add/:id', 'v1.marketing.live.LiveAnchor/add')->option(['real_name' => '添加修改主播表单']);
+        //保存主播数据
+        Route::post('anchor/save', 'v1.marketing.live.LiveAnchor/save')->option(['real_name' => '保存主播数据']);
+        //删除主播
+        Route::delete('anchor/del/:id', 'v1.marketing.live.LiveAnchor/delete')->option(['real_name' => '删除主播']);
+        //设置是否显示
+        Route::get('anchor/set_show/:id/:is_show', 'v1.marketing.live.LiveAnchor/setShow')->option(['real_name' => '设置主播是否显示']);
+    })->option(['parent' => 'live', 'cate_name' => '主播']);
 
-    //直播商品列表
-    Route::get('goods/list', 'v1.marketing.live.LiveGoods/list')->option(['real_name' => '直播商品列表']);
-    //生成直播商品
-    Route::post('goods/create', 'v1.marketing.live.LiveGoods/create')->option(['real_name' => '生成直播商品']);
-    //添加修改商品
-    Route::post('goods/add', 'v1.marketing.live.LiveGoods/add')->option(['real_name' => '添加修改直播商品']);
-    //商品详情
-    Route::get('goods/detail/:id', 'v1.marketing.live.LiveGoods/detail')->option(['real_name' => '直播商品详情']);
-    //商品重新审核
-    Route::get('goods/audit/:id', 'v1.marketing.live.LiveGoods/audit')->option(['real_name' => '直播商品重新审核']);
-    //商品撤回审核
-    Route::get('goods/resestAudit/:id', 'v1.marketing.live.LiveGoods/resetAudit')->option(['real_name' => '直播商品撤回审核']);
-    //删除商品
-    Route::delete('goods/del/:id', 'v1.marketing.live.LiveGoods/delete')->option(['real_name' => '删除直播商品']);
-    //设置是否显示
-    Route::get('goods/set_show/:id/:is_show', 'v1.marketing.live.liveGoods/setShow')->option(['real_name' => '设置直播商品是否显示']);
-    //同步直播商品状态
-    Route::get('goods/syncGoods', 'v1.marketing.live.liveGoods/syncGoods')->option(['real_name' => '同步直播商品状态']);
+    /** 直播商品 */
+    Route::group(function () {
+        //直播商品列表
+        Route::get('goods/list', 'v1.marketing.live.LiveGoods/list')->option(['real_name' => '直播商品列表']);
+        //生成直播商品
+        Route::post('goods/create', 'v1.marketing.live.LiveGoods/create')->option(['real_name' => '生成直播商品']);
+        //添加修改商品
+        Route::post('goods/add', 'v1.marketing.live.LiveGoods/add')->option(['real_name' => '添加修改直播商品']);
+        //商品详情
+        Route::get('goods/detail/:id', 'v1.marketing.live.LiveGoods/detail')->option(['real_name' => '直播商品详情']);
+        //商品重新审核
+        Route::get('goods/audit/:id', 'v1.marketing.live.LiveGoods/audit')->option(['real_name' => '直播商品重新审核']);
+        //商品撤回审核
+        Route::get('goods/resestAudit/:id', 'v1.marketing.live.LiveGoods/resetAudit')->option(['real_name' => '直播商品撤回审核']);
+        //删除商品
+        Route::delete('goods/del/:id', 'v1.marketing.live.LiveGoods/delete')->option(['real_name' => '删除直播商品']);
+        //设置是否显示
+        Route::get('goods/set_show/:id/:is_show', 'v1.marketing.live.liveGoods/setShow')->option(['real_name' => '设置直播商品是否显示']);
+        //同步直播商品状态
+        Route::get('goods/syncGoods', 'v1.marketing.live.liveGoods/syncGoods')->option(['real_name' => '同步直播商品状态']);
+    })->option(['parent' => 'live', 'cate_name' => '直播商品']);
 
-    //直播间列表
-    Route::get('room/list', 'v1.marketing.live.LiveRoom/list')->option(['real_name' => '直播间列表']);
-    //直播间添加
-    Route::post('room/add', 'v1.marketing.live.LiveRoom/add')->option(['real_name' => '直播间添加']);
-    //直播间详情
-    Route::get('room/detail/:id', 'v1.marketing.live.LiveRoom/detail')->option(['real_name' => '直播间详情']);
-    //直播间添加商品
-    Route::post('room/add_goods', 'v1.marketing.live.LiveRoom/addGoods')->option(['real_name' => '直播间添加商品']);
-    //删除直播
-    Route::delete('room/del/:id', 'v1.marketing.live.LiveRoom/delete')->option(['real_name' => '删除直播间']);
-    //设置是否显示
-    Route::get('room/set_show/:id/:is_show', 'v1.marketing.live.LiveRoom/setShow')->option(['real_name' => '设置直播间是否显示']);
-    //同步直播间状态
-    Route::get('room/syncRoom', 'v1.marketing.live.LiveRoom/syncRoom')->option(['real_name' => '同步直播间状态']);
+    /** 主播间 */
+    Route::group(function () {
+        //直播间列表
+        Route::get('room/list', 'v1.marketing.live.LiveRoom/list')->option(['real_name' => '直播间列表']);
+        //直播间添加
+        Route::post('room/add', 'v1.marketing.live.LiveRoom/add')->option(['real_name' => '直播间添加']);
+        //直播间详情
+        Route::get('room/detail/:id', 'v1.marketing.live.LiveRoom/detail')->option(['real_name' => '直播间详情']);
+        //直播间添加商品
+        Route::post('room/add_goods', 'v1.marketing.live.LiveRoom/addGoods')->option(['real_name' => '直播间添加商品']);
+        //删除直播
+        Route::delete('room/del/:id', 'v1.marketing.live.LiveRoom/delete')->option(['real_name' => '删除直播间']);
+        //设置是否显示
+        Route::get('room/set_show/:id/:is_show', 'v1.marketing.live.LiveRoom/setShow')->option(['real_name' => '设置直播间是否显示']);
+        //同步直播间状态
+        Route::get('room/syncRoom', 'v1.marketing.live.LiveRoom/syncRoom')->option(['real_name' => '同步直播间状态']);
+    })->option(['parent' => 'live', 'cate_name' => '主播间']);
 
 })->middleware([
     \app\http\middleware\AllowOriginMiddleware::class,

+ 177 - 170
crmeb/app/adminapi/route/marketing.php

@@ -14,182 +14,189 @@ use think\facade\Route;
  * 优惠卷,砍价,拼团,秒杀 路由
  */
 Route::group('marketing', function () {
-    //已发布优惠券列表
-    Route::get('coupon/released', 'v1.marketing.StoreCouponIssue/index')->option(['real_name' => '已发布优惠券列表']);
-    //添加优惠券
-    Route::post('coupon/save_coupon', 'v1.marketing.StoreCouponIssue/saveCoupon')->option(['real_name' => '添加优惠券']);
-    //修改优惠券状态
-    Route::get('coupon/status/:id/:status', 'v1.marketing.StoreCouponIssue/status')->option(['real_name' => '修改优惠券状态']);
-    //一键复制优惠券
-    Route::get('coupon/copy/:id', 'v1.marketing.StoreCouponIssue/copy')->option(['real_name' => '一键复制优惠券']);
-    //发送优惠券列表
-    Route::get('coupon/grant', 'v1.marketing.StoreCouponIssue/index')->option(['real_name' => '发送优惠券列表']);
-    //已发布优惠券删除
-    Route::delete('coupon/released/:id', 'v1.marketing.StoreCouponIssue/delete')->option(['real_name' => '已发布优惠券删除']);
-    //已发布优惠券修改状态表单
-    Route::get('coupon/released/:id/status', 'v1.marketing.StoreCouponIssue/edit')->option(['real_name' => '已发布优惠券修改状态表单']);
-    //已发布优惠券修改状态
-    Route::put('coupon/released/status/:id', 'v1.marketing.StoreCouponIssue/status')->option(['real_name' => '已发布优惠券修改状态']);
-    //已发布优惠券领取记录
-    Route::get('coupon/released/issue_log/:id', 'v1.marketing.StoreCouponIssue/issue_log')->option(['real_name' => '已发布优惠券领取记录']);
-    //会员领取记录
-    Route::get('coupon/user', 'v1.marketing.StoreCouponUser/index')->option(['real_name' => '会员领取记录']);
-    //发送优惠券
-    Route::post('coupon/user/grant', 'v1.marketing.StoreCouponUser/grant')->option(['real_name' => '发送优惠券']);
 
-    //砍价商品列表
-    Route::get('bargain', 'v1.marketing.StoreBargain/index')->option(['real_name' => '砍价商品列表']);
-    //砍价详情
-    Route::get('bargain/:id', 'v1.marketing.StoreBargain/read')->option(['real_name' => '砍价商品详情']);
-    //保存新增或编辑砍价
-    Route::post('bargain/:id', 'v1.marketing.StoreBargain/save')->option(['real_name' => '新增或编辑砍价商品']);
-    //删除砍价
-    Route::delete('bargain/:id', 'v1.marketing.StoreBargain/delete')->option(['real_name' => '删除砍价商品']);
-    //修改砍价状态
-    Route::put('bargain/set_status/:id/:status', 'v1.marketing.StoreBargain/set_status')->option(['real_name' => '修改砍价商品状态']);
-    //砍价列表
-    Route::get('bargain_list', 'v1.marketing.StoreBargain/bargainList')->option(['real_name' => '参与砍价列表']);
-    //砍价人列表
-    Route::get('bargain_list_info/:id', 'v1.marketing.StoreBargain/bargainListInfo')->option(['real_name' => '砍价人列表']);
-    //砍价统计
-    Route::get('bargain/statistics/head/:id', 'v1.marketing.StoreBargain/bargainStatistics')->option(['real_name' => '砍价统计']);
-    //砍价列表
-    Route::get('bargain/statistics/list/:id', 'v1.marketing.StoreBargain/bargainStatisticsList')->option(['real_name' => '砍价统计列表']);
-    //砍价订单
-    Route::get('bargain/statistics/order/:id', 'v1.marketing.StoreBargain/bargainStatisticsOrder')->option(['real_name' => '砍价统计订单']);
+    /** 优惠券 */
+    Route::group(function () {
+        //已发布优惠券列表
+        Route::get('coupon/released', 'v1.marketing.StoreCouponIssue/index')->option(['real_name' => '已发布优惠券列表']);
+        //添加优惠券
+        Route::post('coupon/save_coupon', 'v1.marketing.StoreCouponIssue/saveCoupon')->option(['real_name' => '添加优惠券']);
+        //修改优惠券状态
+        Route::get('coupon/status/:id/:status', 'v1.marketing.StoreCouponIssue/status')->option(['real_name' => '修改优惠券状态']);
+        //一键复制优惠券
+        Route::get('coupon/copy/:id', 'v1.marketing.StoreCouponIssue/copy')->option(['real_name' => '一键复制优惠券']);
+        //发送优惠券列表
+        Route::get('coupon/grant', 'v1.marketing.StoreCouponIssue/index')->option(['real_name' => '发送优惠券列表']);
+        //已发布优惠券删除
+        Route::delete('coupon/released/:id', 'v1.marketing.StoreCouponIssue/delete')->option(['real_name' => '已发布优惠券删除']);
+        //已发布优惠券修改状态表单
+        Route::get('coupon/released/:id/status', 'v1.marketing.StoreCouponIssue/edit')->option(['real_name' => '已发布优惠券修改状态表单']);
+        //已发布优惠券修改状态
+        Route::put('coupon/released/status/:id', 'v1.marketing.StoreCouponIssue/status')->option(['real_name' => '已发布优惠券修改状态']);
+        //已发布优惠券领取记录
+        Route::get('coupon/released/issue_log/:id', 'v1.marketing.StoreCouponIssue/issue_log')->option(['real_name' => '已发布优惠券领取记录']);
+        //会员领取记录
+        Route::get('coupon/user', 'v1.marketing.StoreCouponUser/index')->option(['real_name' => '会员领取记录']);
+        //发送优惠券
+        Route::post('coupon/user/grant', 'v1.marketing.StoreCouponUser/grant')->option(['real_name' => '发送优惠券']);
+    })->option(['parent' => 'marketing', 'cate_name' => '优惠券']);
 
-    //拼团商品列表
-    Route::get('combination', 'v1.marketing.StoreCombination/index')->option(['real_name' => '拼团商品列表']);
-    //拼团统计
-    Route::get('combination/statistics', 'v1.marketing.StoreCombination/statistics')->option(['real_name' => '拼团商品统计']);
-    //拼团商品详情
-    Route::get('combination/:id', 'v1.marketing.StoreCombination/read')->option(['real_name' => '拼团商品详情']);
-    //保存新疆或编辑
-    Route::post('combination/:id', 'v1.marketing.StoreCombination/save')->option(['real_name' => '新增或编辑拼团商品']);
-    //删除
-    Route::delete('combination/:id', 'v1.marketing.StoreCombination/delete')->option(['real_name' => '删除拼团商品']);
-    //修改拼团状态
-    Route::put('combination/set_status/:id/:status', 'v1.marketing.StoreCombination/set_status')->option(['real_name' => '修改拼团商品状态']);
-    //拼团列表
-    Route::get('combination/combine/list', 'v1.marketing.StoreCombination/combine_list')->option(['real_name' => '参与拼团列表']);
-    //拼团人列表
-    Route::get('combination/order_pink/:id', 'v1.marketing.StoreCombination/order_pink')->option(['real_name' => '拼团人列表']);
-    //拼团统计
-    Route::get('combination/statistics/head/:id', 'v1.marketing.StoreCombination/combinationStatistics')->option(['real_name' => '拼团统计']);
-    //拼团列表
-    Route::get('combination/statistics/list/:id', 'v1.marketing.StoreCombination/combinationStatisticsList')->option(['real_name' => '拼团统计列表']);
-    //拼团订单
-    Route::get('combination/statistics/order/:id', 'v1.marketing.StoreCombination/combinationStatisticsOrder')->option(['real_name' => '拼团统计订单']);
+    /** 砍价活动 */
+    Route::group(function () {
+        //砍价商品列表
+        Route::get('bargain', 'v1.marketing.StoreBargain/index')->option(['real_name' => '砍价商品列表']);
+        //砍价详情
+        Route::get('bargain/:id', 'v1.marketing.StoreBargain/read')->option(['real_name' => '砍价商品详情']);
+        //保存新增或编辑砍价
+        Route::post('bargain/:id', 'v1.marketing.StoreBargain/save')->option(['real_name' => '新增或编辑砍价商品']);
+        //删除砍价
+        Route::delete('bargain/:id', 'v1.marketing.StoreBargain/delete')->option(['real_name' => '删除砍价商品']);
+        //修改砍价状态
+        Route::put('bargain/set_status/:id/:status', 'v1.marketing.StoreBargain/set_status')->option(['real_name' => '修改砍价商品状态']);
+        //砍价列表
+        Route::get('bargain_list', 'v1.marketing.StoreBargain/bargainList')->option(['real_name' => '参与砍价列表']);
+        //砍价人列表
+        Route::get('bargain_list_info/:id', 'v1.marketing.StoreBargain/bargainListInfo')->option(['real_name' => '砍价人列表']);
+        //砍价统计
+        Route::get('bargain/statistics/head/:id', 'v1.marketing.StoreBargain/bargainStatistics')->option(['real_name' => '砍价统计']);
+        //砍价列表
+        Route::get('bargain/statistics/list/:id', 'v1.marketing.StoreBargain/bargainStatisticsList')->option(['real_name' => '砍价统计列表']);
+        //砍价订单
+        Route::get('bargain/statistics/order/:id', 'v1.marketing.StoreBargain/bargainStatisticsOrder')->option(['real_name' => '砍价统计订单']);
+    })->option(['parent' => 'marketing', 'cate_name' => '砍价活动']);
 
+    /** 拼团活动 */
+    Route::group(function () {
+        //拼团商品列表
+        Route::get('combination', 'v1.marketing.StoreCombination/index')->option(['real_name' => '拼团商品列表']);
+        //拼团统计
+        Route::get('combination/statistics', 'v1.marketing.StoreCombination/statistics')->option(['real_name' => '拼团商品统计']);
+        //拼团商品详情
+        Route::get('combination/:id', 'v1.marketing.StoreCombination/read')->option(['real_name' => '拼团商品详情']);
+        //保存新疆或编辑
+        Route::post('combination/:id', 'v1.marketing.StoreCombination/save')->option(['real_name' => '新增或编辑拼团商品']);
+        //删除
+        Route::delete('combination/:id', 'v1.marketing.StoreCombination/delete')->option(['real_name' => '删除拼团商品']);
+        //修改拼团状态
+        Route::put('combination/set_status/:id/:status', 'v1.marketing.StoreCombination/set_status')->option(['real_name' => '修改拼团商品状态']);
+        //拼团列表
+        Route::get('combination/combine/list', 'v1.marketing.StoreCombination/combine_list')->option(['real_name' => '参与拼团列表']);
+        //拼团人列表
+        Route::get('combination/order_pink/:id', 'v1.marketing.StoreCombination/order_pink')->option(['real_name' => '拼团人列表']);
+        //拼团统计
+        Route::get('combination/statistics/head/:id', 'v1.marketing.StoreCombination/combinationStatistics')->option(['real_name' => '拼团统计']);
+        //拼团列表
+        Route::get('combination/statistics/list/:id', 'v1.marketing.StoreCombination/combinationStatisticsList')->option(['real_name' => '拼团统计列表']);
+        //拼团订单
+        Route::get('combination/statistics/order/:id', 'v1.marketing.StoreCombination/combinationStatisticsOrder')->option(['real_name' => '拼团统计订单']);
+    })->option(['parent' => 'marketing', 'cate_name' => '拼团活动']);
 
-    //秒杀列表
-    Route::get('seckill', 'v1.marketing.StoreSeckill/index')->option(['real_name' => '秒杀商品列表']);
-    //秒杀时间段列表
-    Route::get('seckill/time_list', 'v1.marketing.StoreSeckill/time_list')->option(['real_name' => '秒杀时间段列表']);
-    //秒杀详情
-    Route::get('seckill/:id', 'v1.marketing.StoreSeckill/read')->option(['real_name' => '秒杀商品详情']);
-    //秒杀保存新增或编辑
-    Route::post('seckill/:id', 'v1.marketing.StoreSeckill/save')->option(['real_name' => '新增或编辑秒杀商品']);
-    //秒杀删除
-    Route::delete('seckill/:id', 'v1.marketing.StoreSeckill/delete')->option(['real_name' => '删除秒杀商品']);
-    //修改秒杀状态
-    Route::put('seckill/set_status/:id/:status', 'v1.marketing.StoreSeckill/set_status')->option(['real_name' => '修改秒杀商品状态']);
-    //秒杀统计
-    Route::get('seckill/statistics/head/:id', 'v1.marketing.StoreSeckill/seckillStatistics')->option(['real_name' => '秒杀统计']);
-    //参与活动人员
-    Route::get('seckill/statistics/people/:id', 'v1.marketing.StoreSeckill/seckillPeople')->option(['real_name' => '秒杀参与人']);
-    //秒杀订单
-    Route::get('seckill/statistics/order/:id', 'v1.marketing.StoreSeckill/seckillOrder')->option(['real_name' => '秒杀参与人']);
+    /** 秒杀活动 */
+    Route::group(function () {
+        //秒杀列表
+        Route::get('seckill', 'v1.marketing.StoreSeckill/index')->option(['real_name' => '秒杀商品列表']);
+        //秒杀时间段列表
+        Route::get('seckill/time_list', 'v1.marketing.StoreSeckill/time_list')->option(['real_name' => '秒杀时间段列表']);
+        //秒杀详情
+        Route::get('seckill/:id', 'v1.marketing.StoreSeckill/read')->option(['real_name' => '秒杀商品详情']);
+        //秒杀保存新增或编辑
+        Route::post('seckill/:id', 'v1.marketing.StoreSeckill/save')->option(['real_name' => '新增或编辑秒杀商品']);
+        //秒杀删除
+        Route::delete('seckill/:id', 'v1.marketing.StoreSeckill/delete')->option(['real_name' => '删除秒杀商品']);
+        //修改秒杀状态
+        Route::put('seckill/set_status/:id/:status', 'v1.marketing.StoreSeckill/set_status')->option(['real_name' => '修改秒杀商品状态']);
+        //秒杀统计
+        Route::get('seckill/statistics/head/:id', 'v1.marketing.StoreSeckill/seckillStatistics')->option(['real_name' => '秒杀统计']);
+        //参与活动人员
+        Route::get('seckill/statistics/people/:id', 'v1.marketing.StoreSeckill/seckillPeople')->option(['real_name' => '秒杀参与人']);
+        //秒杀订单
+        Route::get('seckill/statistics/order/:id', 'v1.marketing.StoreSeckill/seckillOrder')->option(['real_name' => '秒杀参与人']);
+    })->option(['parent' => 'marketing', 'cate_name' => '秒杀活动']);
 
-    //积分日志列表
-    Route::get('integral', 'v1.marketing.UserPoint/index')->option(['real_name' => '积分日志列表']);
-    //积分日志头部数据
-    Route::get('integral/statistics', 'v1.marketing.UserPoint/integral_statistics')->option(['real_name' => '积分日志头部数据']);
-    //积分配置编辑表单
-    Route::get('integral_config/edit_basics', 'v1.setting.SystemConfig/edit_basics')->option(['real_name' => '积分配置编辑表单']);
-    //积分配置保存数据
-    Route::post('integral_config/save_basics', 'v1.setting.SystemConfig/save_basics')->option(['real_name' => '积分配置保存数据']);
+    /** 积分活动 */
+    Route::group(function () {
+        //积分日志列表
+        Route::get('integral', 'v1.marketing.UserPoint/index')->option(['real_name' => '积分日志列表']);
+        //积分日志头部数据
+        Route::get('integral/statistics', 'v1.marketing.UserPoint/integral_statistics')->option(['real_name' => '积分日志头部数据']);
+        //积分配置编辑表单
+        Route::get('integral_config/edit_basics', 'v1.setting.SystemConfig/edit_basics')->option(['real_name' => '积分配置编辑表单']);
+        //积分配置保存数据
+        Route::post('integral_config/save_basics', 'v1.setting.SystemConfig/save_basics')->option(['real_name' => '积分配置保存数据']);
+        //积分商品列表
+        Route::get('integral_product', 'v1.marketing.integral.StoreIntegral/index')->option(['real_name' => '积分商品列表']);
+        //积分商品新增或编辑
+        Route::post('integral/:id', 'v1.marketing.integral.StoreIntegral/save')->option(['real_name' => '积分商品新增或编辑']);
+        //积分商品详情
+        Route::get('integral/:id', 'v1.marketing.integral.StoreIntegral/read')->option(['real_name' => '积分商品详情']);
+        //积分商品删除
+        Route::delete('integral/:id', 'v1.marketing.integral.StoreIntegral/delete')->option(['real_name' => '积分商品删除']);
+        //修改积分商品状态
+        Route::put('integral/set_show/:id/:is_show', 'v1.marketing.integral.StoreIntegral/set_show')->option(['real_name' => '修改积分商品状态']);
+        //积分商城订单列表
+        Route::get('integral/order/list', 'v1.marketing.integral.StoreIntegralOrder/lst')->option(['real_name' => '积分商城订单列表']);
+        //积分商城订单数据
+        Route::get('integral/order/chart', 'v1.marketing.integral.StoreIntegralOrder/chart')->option(['real_name' => '积分商城订单数据']);
+        //积分商城订单详情数据
+        Route::get('integral/order/info/:id', 'v1.marketing.integral.StoreIntegralOrder/order_info')->option(['real_name' => '积分商城订单详情数据']);
+        //修改积分商品订单备注信息
+        Route::put('integral/order/remark/:id', 'v1.marketing.integral.StoreIntegralOrder/remark')->option(['real_name' => '修改积分商品订单备注信息']);
+        //获取积分订单状态
+        Route::get('integral/order/status/:id', 'v1.marketing.integral.StoreIntegralOrder/status')->option(['real_name' => '获取积分订单状态']);
+        //删除积分订单
+        Route::delete('integral/order/del/:id', 'v1.marketing.integral.StoreIntegralOrder/del')->option(['real_name' => '删除积分订单']);
+        //积分订单发送货
+        Route::put('integral/order/delivery/:id', 'v1.marketing.integral.StoreIntegralOrder/update_delivery')->option(['real_name' => '积分订单发送货']);
+        //获取积分订单配送信息表单
+        Route::get('integral/order/distribution/:id', 'v1.marketing.integral.StoreIntegralOrder/distribution')->option(['real_name' => '获取积分订单配送信息表单']);
+        //修改积分订单配送信息
+        Route::put('integral/order/distribution/:id', 'v1.marketing.integral.StoreIntegralOrder/update_distribution')->option(['real_name' => '修改积分订单配送信息']);
+        //积分订单确认收货
+        Route::put('integral/order/take/:id', 'v1.marketing.integral.StoreIntegralOrder/take_delivery')->option(['real_name' => '积分订单确认收货']);
+        //积分订单获取物流公司
+        Route::get('integral/order/express_list', 'v1.marketing.integral.StoreIntegralOrder/express')->option(['real_name' => '积分订单获取物流公司']);
+        //积分订单快递公司电子面单模版
+        Route::get('integral/order/express/temp', 'v1.marketing.integral.StoreIntegralOrder/express_temp')->option(['real_name' => '积分订单快递公司电子面单模版']);
+        //积分订单获取物流信息
+        Route::get('integral/order/express/:id', 'v1.marketing.integral.StoreIntegralOrder/get_express')->option(['real_name' => '积分订单获取物流信息']);
+        //打印积分订单
+        Route::get('integral/order/print/:id', 'v1.marketing.integral.StoreIntegralOrder/order_print')->option(['real_name' => '打印积分订单']);
+        //积分订单列表获取配送员
+        Route::get('integral/order/delivery/list', 'v1.order.DeliveryService/get_delivery_list')->option(['real_name' => '积分订单列表获取配送员']);
+        //积分订单获取面单默认配置信息
+        Route::get('integral/order/sheet_info', 'v1.marketing.integral.StoreIntegralOrder/getDeliveryInfo')->option(['real_name' => '积分订单获取面单默认配置信息']);
+        //积分记录
+        Route::get('point_record', 'v1.marketing.integral.StorePointRecord/pointRecord')->option(['real_name' => '积分记录列表']);
+        Route::post('point_record/remark/:id', 'v1.marketing.integral.StorePointRecord/pointRecordRemark')->option(['real_name' => '积分记录列表备注']);
+        Route::get('point/get_basic', 'v1.marketing.integral.StorePointRecord/getBasic')->option(['real_name' => '积分统计基本信息']);
+        Route::get('point/get_trend', 'v1.marketing.integral.StorePointRecord/getTrend')->option(['real_name' => '积分统计趋势图']);
+        //积分来源统计
+        Route::get('point/get_channel', 'v1.marketing.integral.StorePointRecord/getChannel')->option(['real_name' => '积分来源统计']);
+        //积分消耗统计
+        Route::get('point/get_type', 'v1.marketing.integral.StorePointRecord/getType')->option(['real_name' => '积分消耗统计']);
+    })->option(['parent' => 'marketing', 'cate_name' => '积分活动']);
 
-    //预售列表
-    Route::get('advance/index', 'v1.marketing.StoreAdvance/index')->option(['real_name' => '预售商品列表']);
-    Route::get('advance/info/:id', 'v1.marketing.StoreAdvance/info')->option(['real_name' => '预售商品详情']);
-    Route::post('advance/save/:id', 'v1.marketing.StoreAdvance/save')->option(['real_name' => '保存预售商品']);
-    Route::delete('advance/:id', 'v1.marketing.StoreAdvance/del')->option(['real_name' => '删除预售商品']);
-    Route::put('advance/set_status/:id/:status', 'v1.marketing.StoreAdvance/setStatus')->option(['real_name' => '上下架预售商品']);
-
-    //积分商城
-    //积分商品列表
-    Route::get('integral_product', 'v1.marketing.integral.StoreIntegral/index')->option(['real_name' => '积分商品列表']);
-    //积分商品新增或编辑
-    Route::post('integral/:id', 'v1.marketing.integral.StoreIntegral/save')->option(['real_name' => '积分商品新增或编辑']);
-    //积分商品详情
-    Route::get('integral/:id', 'v1.marketing.integral.StoreIntegral/read')->option(['real_name' => '积分商品详情']);
-    //积分商品删除
-    Route::delete('integral/:id', 'v1.marketing.integral.StoreIntegral/delete')->option(['real_name' => '积分商品删除']);
-    //修改积分商品状态
-    Route::put('integral/set_show/:id/:is_show', 'v1.marketing.integral.StoreIntegral/set_show')->option(['real_name' => '修改积分商品状态']);
-    //积分商城订单列表
-    Route::get('integral/order/list', 'v1.marketing.integral.StoreIntegralOrder/lst')->option(['real_name' => '积分商城订单列表']);
-    //积分商城订单数据
-    Route::get('integral/order/chart', 'v1.marketing.integral.StoreIntegralOrder/chart')->option(['real_name' => '积分商城订单数据']);
-    //积分商城订单详情数据
-    Route::get('integral/order/info/:id', 'v1.marketing.integral.StoreIntegralOrder/order_info')->option(['real_name' => '积分商城订单详情数据']);
-    //修改积分商品订单备注信息
-    Route::put('integral/order/remark/:id', 'v1.marketing.integral.StoreIntegralOrder/remark')->option(['real_name' => '修改积分商品订单备注信息']);
-    //获取积分订单状态
-    Route::get('integral/order/status/:id', 'v1.marketing.integral.StoreIntegralOrder/status')->option(['real_name' => '获取积分订单状态']);
-    //删除积分订单
-    Route::delete('integral/order/del/:id', 'v1.marketing.integral.StoreIntegralOrder/del')->option(['real_name' => '删除积分订单']);
-    //积分订单发送货
-    Route::put('integral/order/delivery/:id', 'v1.marketing.integral.StoreIntegralOrder/update_delivery')->option(['real_name' => '积分订单发送货']);
-    //获取积分订单配送信息表单
-    Route::get('integral/order/distribution/:id', 'v1.marketing.integral.StoreIntegralOrder/distribution')->option(['real_name' => '获取积分订单配送信息表单']);
-    //修改积分订单配送信息
-    Route::put('integral/order/distribution/:id', 'v1.marketing.integral.StoreIntegralOrder/update_distribution')->option(['real_name' => '修改积分订单配送信息']);
-    //积分订单确认收货
-    Route::put('integral/order/take/:id', 'v1.marketing.integral.StoreIntegralOrder/take_delivery')->option(['real_name' => '积分订单确认收货']);
-    //积分订单获取物流公司
-    Route::get('integral/order/express_list', 'v1.marketing.integral.StoreIntegralOrder/express')->option(['real_name' => '积分订单获取物流公司']);
-    //积分订单快递公司电子面单模版
-    Route::get('integral/order/express/temp', 'v1.marketing.integral.StoreIntegralOrder/express_temp')->option(['real_name' => '积分订单快递公司电子面单模版']);
-    //积分订单获取物流信息
-    Route::get('integral/order/express/:id', 'v1.marketing.integral.StoreIntegralOrder/get_express')->option(['real_name' => '积分订单获取物流信息']);
-    //打印积分订单
-    Route::get('integral/order/print/:id', 'v1.marketing.integral.StoreIntegralOrder/order_print')->option(['real_name' => '打印积分订单']);
-    //积分订单列表获取配送员
-    Route::get('integral/order/delivery/list', 'v1.order.DeliveryService/get_delivery_list')->option(['real_name' => '积分订单列表获取配送员']);
-    //积分订单获取面单默认配置信息
-    Route::get('integral/order/sheet_info', 'v1.marketing.integral.StoreIntegralOrder/getDeliveryInfo')->option(['real_name' => '积分订单获取面单默认配置信息']);
-
-    //九宫格抽奖
-    //抽奖活动列表
-    Route::get('lottery/list', 'v1.marketing.lottery.LuckLottery/index')->option(['real_name' => '抽奖活动列表']);
-    //抽奖活动详情
-    Route::get('lottery/detail/:id', 'v1.marketing.lottery.LuckLottery/detail')->option(['real_name' => '抽奖活动详情']);
-    //抽奖活动详情
-    Route::get('lottery/factor_info/:factor', 'v1.marketing.lottery.LuckLottery/factorInfo')->option(['real_name' => '抽奖活动详情']);
-    //添加抽奖活动
-    Route::post('lottery/add', 'v1.marketing.lottery.LuckLottery/add')->option(['real_name' => '添加抽奖活动']);
-    //修改抽奖活动数据
-    Route::put('lottery/edit/:id', 'v1.marketing.lottery.LuckLottery/edit')->option(['real_name' => '修改抽奖活动数据']);
-    //删除抽奖活动
-    Route::delete('lottery/del/:id', 'v1.marketing.lottery.LuckLottery/delete')->option(['real_name' => '删除抽奖活动']);
-    //设置抽奖活动是否显示
-    Route::post('lottery/set_status/:id/:status', 'v1.marketing.lottery.LuckLottery/setStatus')->option(['real_name' => '设置抽奖活动是否显示']);
-    //抽奖记录列表
-    Route::get('lottery/record/list', 'v1.marketing.lottery.LuckLotteryRecord/index')->option(['real_name' => '抽奖记录列表']);
-    //抽奖中奖发货、备注处理
-    Route::post('lottery/record/deliver', 'v1.marketing.lottery.LuckLotteryRecord/deliver')->option(['real_name' => '抽奖中奖发货、备注处理']);
-
-    //积分记录
-    Route::get('point_record', 'v1.marketing.integral.StorePointRecord/pointRecord')->option(['real_name' => '积分记录列表']);
-    Route::post('point_record/remark/:id', 'v1.marketing.integral.StorePointRecord/pointRecordRemark')->option(['real_name' => '积分记录列表备注']);
-    Route::get('point/get_basic', 'v1.marketing.integral.StorePointRecord/getBasic')->option(['real_name' => '积分统计基本信息']);
-    Route::get('point/get_trend', 'v1.marketing.integral.StorePointRecord/getTrend')->option(['real_name' => '积分统计趋势图']);
-    //积分来源统计
-    Route::get('point/get_channel', 'v1.marketing.integral.StorePointRecord/getChannel')->option(['real_name' => '积分来源统计']);
-    //积分消耗统计
-    Route::get('point/get_type', 'v1.marketing.integral.StorePointRecord/getType')->option(['real_name' => '积分消耗统计']);
+    /** 抽奖活动 */
+    Route::group(function () {
+        //抽奖活动列表
+        Route::get('lottery/list', 'v1.marketing.lottery.LuckLottery/index')->option(['real_name' => '抽奖活动列表']);
+        //抽奖活动详情
+        Route::get('lottery/detail/:id', 'v1.marketing.lottery.LuckLottery/detail')->option(['real_name' => '抽奖活动详情']);
+        //抽奖活动详情
+        Route::get('lottery/factor_info/:factor', 'v1.marketing.lottery.LuckLottery/factorInfo')->option(['real_name' => '抽奖活动详情']);
+        //添加抽奖活动
+        Route::post('lottery/add', 'v1.marketing.lottery.LuckLottery/add')->option(['real_name' => '添加抽奖活动']);
+        //修改抽奖活动数据
+        Route::put('lottery/edit/:id', 'v1.marketing.lottery.LuckLottery/edit')->option(['real_name' => '修改抽奖活动数据']);
+        //删除抽奖活动
+        Route::delete('lottery/del/:id', 'v1.marketing.lottery.LuckLottery/delete')->option(['real_name' => '删除抽奖活动']);
+        //设置抽奖活动是否显示
+        Route::post('lottery/set_status/:id/:status', 'v1.marketing.lottery.LuckLottery/setStatus')->option(['real_name' => '设置抽奖活动是否显示']);
+        //抽奖记录列表
+        Route::get('lottery/record/list', 'v1.marketing.lottery.LuckLotteryRecord/index')->option(['real_name' => '抽奖记录列表']);
+        //抽奖中奖发货、备注处理
+        Route::post('lottery/record/deliver', 'v1.marketing.lottery.LuckLotteryRecord/deliver')->option(['real_name' => '抽奖中奖发货、备注处理']);
+    })->option(['parent' => 'marketing', 'cate_name' => '抽奖活动']);
 
 })->middleware([
     \app\http\middleware\AllowOriginMiddleware::class,

+ 47 - 34
crmeb/app/adminapi/route/merchant.php

@@ -14,40 +14,53 @@ use think\facade\Route;
  * 运费模板 相关路由
  */
 Route::group('merchant', function () {
-    //门店设置详情
-    Route::get('store', 'v1.merchant.SystemStore/index')->option(['real_name' => '门店列表']);
-    //门店列表数量
-    Route::get('store/get_header', 'v1.merchant.SystemStore/get_header')->option(['real_name' => '门店列表头部数据']);
-    //门店列表数量
-    Route::put('store/set_show/:id/:is_show', 'v1.merchant.SystemStore/set_show')->option(['real_name' => '门店上下架']);
-    //门店列表数量
-    Route::delete('store/del/:id', 'v1.merchant.SystemStore/delete')->option(['real_name' => '门店删除']);
-    //位置选择
-    Route::get('store/address', 'v1.merchant.SystemStore/select_address')->option(['real_name' => '门店位置选择']);
-    //门店设置详情
-    Route::get('store/get_info/:id', 'v1.merchant.SystemStore/get_info')->option(['real_name' => '门店详情']);
-    //保存修改门店信息
-    Route::post('store/:id', 'v1.merchant.SystemStore/save')->option(['real_name' => '保存修改门店信息']);
-    //获取店员列表
-    Route::get('store_staff', 'v1.merchant.SystemStoreStaff/index')->option(['real_name' => '获取门店店员列表']);
-    //添加店员表单
-    Route::get('store_staff/create', 'v1.merchant.SystemStoreStaff/create')->option(['real_name' => '添加门店店员表单']);
-    //门店搜索列表
-    Route::get('store_list', 'v1.merchant.SystemStoreStaff/store_list')->option(['real_name' => '门店搜索列表']);
-    //修改店员状态
-    Route::put('store_staff/set_show/:id/:is_show', 'v1.merchant.SystemStoreStaff/set_show')->option(['real_name' => '修改店员状态']);
-    //修改店员表单
-    Route::get('store_staff/:id/edit', 'v1.merchant.SystemStoreStaff/edit')->option(['real_name' => '修改店员表单']);
-    //保存店员
-    Route::post('store_staff/save/:id', 'v1.merchant.SystemStoreStaff/save')->option(['real_name' => '保存店员']);
-    //删除店员
-    Route::delete('store_staff/del/:id', 'v1.merchant.SystemStoreStaff/delete')->option(['real_name' => '删除店员']);
-    //获取核销订单列表
-    Route::get('verify_order', 'v1.merchant.SystemVerifyOrder/list')->option(['real_name' => '获取核销订单列表']);
-    //获取核销订单头部
-    Route::get('verify_badge', 'v1.merchant.SystemVerifyOrder/getVerifyBadge')->option(['real_name' => '获取核销订单头部']);
-    //获取核销订单头部
-    Route::get('verify/spread_info/:uid', 'v1.merchant.SystemVerifyOrder/order_spread_user')->option(['real_name' => '核销订单推荐人信息']);
+
+    /** 门店 */
+    Route::group(function () {
+        //门店设置详情
+        Route::get('store', 'v1.merchant.SystemStore/index')->option(['real_name' => '门店列表']);
+        //门店列表数量
+        Route::get('store/get_header', 'v1.merchant.SystemStore/get_header')->option(['real_name' => '门店列表头部数据']);
+        //门店列表数量
+        Route::put('store/set_show/:id/:is_show', 'v1.merchant.SystemStore/set_show')->option(['real_name' => '门店上下架']);
+        //门店列表数量
+        Route::delete('store/del/:id', 'v1.merchant.SystemStore/delete')->option(['real_name' => '门店删除']);
+        //位置选择
+        Route::get('store/address', 'v1.merchant.SystemStore/select_address')->option(['real_name' => '门店位置选择']);
+        //门店设置详情
+        Route::get('store/get_info/:id', 'v1.merchant.SystemStore/get_info')->option(['real_name' => '门店详情']);
+        //保存修改门店信息
+        Route::post('store/:id', 'v1.merchant.SystemStore/save')->option(['real_name' => '保存修改门店信息']);
+    })->option(['parent' => 'merchant', 'cate_name' => '门店']);
+
+    /** 店员 */
+    Route::group(function () {
+        //获取店员列表
+        Route::get('store_staff', 'v1.merchant.SystemStoreStaff/index')->option(['real_name' => '获取门店店员列表']);
+        //添加店员表单
+        Route::get('store_staff/create', 'v1.merchant.SystemStoreStaff/create')->option(['real_name' => '添加门店店员表单']);
+        //门店搜索列表
+        Route::get('store_list', 'v1.merchant.SystemStoreStaff/store_list')->option(['real_name' => '门店搜索列表']);
+        //修改店员状态
+        Route::put('store_staff/set_show/:id/:is_show', 'v1.merchant.SystemStoreStaff/set_show')->option(['real_name' => '修改店员状态']);
+        //修改店员表单
+        Route::get('store_staff/:id/edit', 'v1.merchant.SystemStoreStaff/edit')->option(['real_name' => '修改店员表单']);
+        //保存店员
+        Route::post('store_staff/save/:id', 'v1.merchant.SystemStoreStaff/save')->option(['real_name' => '保存店员']);
+        //删除店员
+        Route::delete('store_staff/del/:id', 'v1.merchant.SystemStoreStaff/delete')->option(['real_name' => '删除店员']);
+    })->option(['parent' => 'merchant', 'cate_name' => '店员']);
+
+    /** 核销订单 */
+    Route::group(function () {
+        //获取核销订单列表
+        Route::get('verify_order', 'v1.merchant.SystemVerifyOrder/list')->option(['real_name' => '获取核销订单列表']);
+        //获取核销订单头部
+        Route::get('verify_badge', 'v1.merchant.SystemVerifyOrder/getVerifyBadge')->option(['real_name' => '获取核销订单头部']);
+        //获取核销订单头部
+        Route::get('verify/spread_info/:uid', 'v1.merchant.SystemVerifyOrder/order_spread_user')->option(['real_name' => '核销订单推荐人信息']);
+    })->option(['parent' => 'merchant', 'cate_name' => '核销订单']);
+
 })->middleware([
     \app\http\middleware\AllowOriginMiddleware::class,
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,

+ 0 - 1
crmeb/app/adminapi/route/order.php

@@ -72,7 +72,6 @@ Route::group('order', function () {
     Route::post('dels', 'v1.order.StoreOrder/del_orders')->name('StoreOrderorDels')->option(['real_name' => '批量删除订单']);
     //面单默认配置信息
     Route::get('sheet_info', 'v1.order.StoreOrder/getDeliveryInfo')->option(['real_name' => '面单默认配置信息']);
-
     //获取线下付款二维码
     Route::get('offline_scan', 'v1.order.OtherOrder/offline_scan')->name('OfflineScan')->option(['real_name' => '获取线下付款二维码']);
     //线下收银列表

+ 98 - 85
crmeb/app/adminapi/route/product.php

@@ -12,93 +12,106 @@ use think\facade\Route;
 
 Route::group('product', function () {
 
-    Route::get('category', 'v1.product.StoreCategory/index')->option(['real_name' => '商品分类列表']);
-    //商品树形列表
-    Route::get('category/tree/:type', 'v1.product.StoreCategory/tree_list')->option(['real_name' => '商品分类树形列表', 'is_common' => true]);
-    //商品分类树形列表
-    Route::get('category/cascader/:type', 'v1.product.StoreCategory/cascader_list')->option(['real_name' => '商品分类树形列表', 'is_common' => true]);
-    //商品分类新增表单
-    Route::get('category/create', 'v1.product.StoreCategory/create')->option(['real_name' => '商品分类新增表单']);
-    //商品分类新增
-    Route::post('category', 'v1.product.StoreCategory/save')->option(['real_name' => '商品分类新增']);
-    //商品分类编辑表单
-    Route::get('category/:id', 'v1.product.StoreCategory/edit')->option(['real_name' => '商品分类编辑表单']);
-    //商品分类编辑
-    Route::put('category/:id', 'v1.product.StoreCategory/update')->option(['real_name' => '商品分类编辑']);
-    //删除商品分类
-    Route::delete('category/:id', 'v1.product.StoreCategory/delete')->option(['real_name' => '删除商品分类']);
-    //商品分类修改状态
-    Route::put('category/set_show/:id/:is_show', 'v1.product.StoreCategory/set_show')->option(['real_name' => '商品分类修改状态']);
-    //商品分类快捷编辑
-    Route::put('category/set_category/:id', 'v1.product.StoreCategory/set_category')->option(['real_name' => '商品分类快捷编辑']);
-    //商品列表
-    Route::get('product', 'v1.product.StoreProduct/index')->option(['real_name' => '商品列表']);
-    //获取退出未保存的数据
-    Route::get('cache', 'v1.product.StoreProduct/getCacheData')->option(['real_name' => '获取退出未保存的数据']);
-    //1分钟保存一次数据
-    Route::post('cache', 'v1.product.StoreProduct/saveCacheData')->option(['real_name' => '保存还未提交数据']);
-    //获取所有商品列表
-    Route::get('product/list', 'v1.product.StoreProduct/search_list')->option(['real_name' => '获取所有商品列表', 'is_common' => true]);
-    //获取商品规格
-    Route::get('product/attrs/:id/:type', 'v1.product.StoreProduct/get_attrs')->option(['real_name' => '获取商品规格']);
-    //商品列表头
-    Route::get('product/type_header', 'v1.product.StoreProduct/type_header')->option(['real_name' => '商品列表头部数据']);
-    //加入回收站
-    Route::delete('product/:id', 'v1.product.StoreProduct/delete')->option(['real_name' => '商品放入回收站']);
-    //保存新建或保存
-    Route::post('product/:id', 'v1.product.StoreProduct/save')->option(['real_name' => '新建或修改商品']);
-    //修改商品状态
-    Route::put('product/set_show/:id/:is_show', 'v1.product.StoreProduct/set_show')->option(['real_name' => '修改商品状态']);
-    //商品快速编辑
-    Route::put('product/set_product/:id', 'v1.product.StoreProduct/set_product')->option(['real_name' => '商品快速编辑']);
-    //设置批量商品上架
-    Route::put('product/product_show', 'v1.product.StoreProduct/product_show')->option(['real_name' => '设置批量商品上架']);
-    //设置批量商品下架
-    Route::put('product/product_unshow', 'v1.product.StoreProduct/product_unshow')->option(['real_name' => '设置批量商品下架']);
-    //规则列表
-    Route::get('product/rule', 'v1.product.StoreProductRule/index')->option(['real_name' => '商品规则列表']);
-    //规则 保存新建或编辑
-    Route::post('product/rule/:id', 'v1.product.StoreProductRule/save')->option(['real_name' => '新建或编辑商品规则']);
-    //规则详情
-    Route::get('product/rule/:id', 'v1.product.StoreProductRule/read')->option(['real_name' => '商品规则详情']);
-    //删除属性规则
-    Route::delete('product/rule/delete', 'v1.product.StoreProductRule/delete')->option(['real_name' => '删除商品规则']);
-    //商品详情
-    Route::get('product/:id', 'v1.product.StoreProduct/get_product_info')->option(['real_name' => '商品详情']);
-    //生成属性
-    Route::post('generate_attr/:id/:type', 'v1.product.StoreProduct/is_format_attr')->option(['real_name' => '生成商品规格列表']);
-    //评论列表
-    Route::get('reply', 'v1.product.StoreProductReply/index')->option(['real_name' => '商品评论列表']);
-    //回复评论
-    Route::put('reply/set_reply/:id', 'v1.product.StoreProductReply/set_reply')->option(['real_name' => '商品回复评论']);
-    //删除评论
-    Route::delete('reply/:id', 'v1.product.StoreProductReply/delete')->option(['real_name' => '删除商品评论']);
-    //获取商品数据
-    Route::post('crawl', 'v1.product.CopyTaobao/get_request_contents')->option(['real_name' => '获取采集商品数据']);
-    //获取复制商品配置
-    Route::get('copy_config', 'v1.product.CopyTaobao/getConfig')->option(['real_name' => '获取复制商品配置']);
-    //复制其他平台商品
-    Route::post('copy', 'v1.product.CopyTaobao/copyProduct')->option(['real_name' => '复制其他平台商品']);
-    //保存商品数据
-    Route::post('crawl/save', 'v1.product.CopyTaobao/save_product')->option(['real_name' => '保存采集商品数据']);
-    //调起虚拟评论表单
-    Route::get('reply/fictitious_reply/:product_id', 'v1.product.StoreProductReply/fictitious_reply')->option(['real_name' => '虚拟评论表单']);
-    //保存虚拟评论
-    Route::post('reply/save_fictitious_reply', 'v1.product.StoreProductReply/save_fictitious_reply')->option(['real_name' => '保存虚拟评论']);
-    //获取规则属性模板
-    Route::get('product/get_rule', 'v1.product.StoreProduct/get_rule')->option(['real_name' => '获取商品规则属性模板']);
-    //获取运费模板
-    Route::get('product/get_template', 'v1.product.StoreProduct/get_template')->option(['real_name' => '获取运费模板']);
-    //上传视频密钥接口
-    Route::get('product/get_temp_keys', 'v1.product.StoreProduct/getTempKeys')->option(['real_name' => '上传视频密钥接口']);
-    //检测是否有活动开启
-    Route::get('product/check_activity/:id', 'v1.product.StoreProduct/check_activity')->option(['real_name' => '检测是商品否有活动开启']);
-    //导入虚拟商品卡密
-    Route::get('product/import_card', 'v1.product.StoreProduct/import_card')->option(['real_name' => '导入虚拟商品卡密']);
+    /** 商品分类 */
+    Route::group(function () {
+        Route::get('category', 'v1.product.StoreCategory/index')->option(['real_name' => '商品分类列表']);
+        //商品树形列表
+        Route::get('category/tree/:type', 'v1.product.StoreCategory/tree_list')->option(['real_name' => '商品分类树形列表', 'is_common' => true]);
+        //商品分类树形列表
+        Route::get('category/cascader/:type', 'v1.product.StoreCategory/cascader_list')->option(['real_name' => '商品分类树形列表', 'is_common' => true]);
+        //商品分类新增表单
+        Route::get('category/create', 'v1.product.StoreCategory/create')->option(['real_name' => '商品分类新增表单']);
+        //商品分类新增
+        Route::post('category', 'v1.product.StoreCategory/save')->option(['real_name' => '商品分类新增']);
+        //商品分类编辑表单
+        Route::get('category/:id', 'v1.product.StoreCategory/edit')->option(['real_name' => '商品分类编辑表单']);
+        //商品分类编辑
+        Route::put('category/:id', 'v1.product.StoreCategory/update')->option(['real_name' => '商品分类编辑']);
+        //删除商品分类
+        Route::delete('category/:id', 'v1.product.StoreCategory/delete')->option(['real_name' => '删除商品分类']);
+        //商品分类修改状态
+        Route::put('category/set_show/:id/:is_show', 'v1.product.StoreCategory/set_show')->option(['real_name' => '商品分类修改状态']);
+        //商品分类快捷编辑
+        Route::put('category/set_category/:id', 'v1.product.StoreCategory/set_category')->option(['real_name' => '商品分类快捷编辑']);
+    })->option(['parent' => 'product', 'cate_name' => '商品分类']);
 
-    /** 商品批量操作 */
-    Route::post('batch/setting', 'v1.product.StoreProduct/batchSetting')->option(['real_name' => '商品批量设置']);
+    /** 商品 */
+    Route::group(function () {
+        //商品列表
+        Route::get('product', 'v1.product.StoreProduct/index')->option(['real_name' => '商品列表']);
+        //获取退出未保存的数据
+        Route::get('cache', 'v1.product.StoreProduct/getCacheData')->option(['real_name' => '获取退出未保存的数据']);
+        //1分钟保存一次数据
+        Route::post('cache', 'v1.product.StoreProduct/saveCacheData')->option(['real_name' => '保存还未提交数据']);
+        //获取所有商品列表
+        Route::get('product/list', 'v1.product.StoreProduct/search_list')->option(['real_name' => '获取所有商品列表', 'is_common' => true]);
+        //获取商品规格
+        Route::get('product/attrs/:id/:type', 'v1.product.StoreProduct/get_attrs')->option(['real_name' => '获取商品规格']);
+        //商品列表头
+        Route::get('product/type_header', 'v1.product.StoreProduct/type_header')->option(['real_name' => '商品列表头部数据']);
+        //加入回收站
+        Route::delete('product/:id', 'v1.product.StoreProduct/delete')->option(['real_name' => '商品放入回收站']);
+        //保存新建或保存
+        Route::post('product/:id', 'v1.product.StoreProduct/save')->option(['real_name' => '新建或修改商品']);
+        //修改商品状态
+        Route::put('product/set_show/:id/:is_show', 'v1.product.StoreProduct/set_show')->option(['real_name' => '修改商品状态']);
+        //商品快速编辑
+        Route::put('product/set_product/:id', 'v1.product.StoreProduct/set_product')->option(['real_name' => '商品快速编辑']);
+        //设置批量商品上架
+        Route::put('product/product_show', 'v1.product.StoreProduct/product_show')->option(['real_name' => '设置批量商品上架']);
+        //设置批量商品下架
+        Route::put('product/product_unshow', 'v1.product.StoreProduct/product_unshow')->option(['real_name' => '设置批量商品下架']);
+        //规则列表
+        Route::get('product/rule', 'v1.product.StoreProductRule/index')->option(['real_name' => '商品规则列表']);
+        //规则 保存新建或编辑
+        Route::post('product/rule/:id', 'v1.product.StoreProductRule/save')->option(['real_name' => '新建或编辑商品规则']);
+        //规则详情
+        Route::get('product/rule/:id', 'v1.product.StoreProductRule/read')->option(['real_name' => '商品规则详情']);
+        //删除属性规则
+        Route::delete('product/rule/delete', 'v1.product.StoreProductRule/delete')->option(['real_name' => '删除商品规则']);
+        //商品详情
+        Route::get('product/:id', 'v1.product.StoreProduct/get_product_info')->option(['real_name' => '商品详情']);
+        //生成属性
+        Route::post('generate_attr/:id/:type', 'v1.product.StoreProduct/is_format_attr')->option(['real_name' => '生成商品规格列表']);
+        //获取规则属性模板
+        Route::get('product/get_rule', 'v1.product.StoreProduct/get_rule')->option(['real_name' => '获取商品规则属性模板']);
+        //获取运费模板
+        Route::get('product/get_template', 'v1.product.StoreProduct/get_template')->option(['real_name' => '获取运费模板']);
+        //上传视频密钥接口
+        Route::get('product/get_temp_keys', 'v1.product.StoreProduct/getTempKeys')->option(['real_name' => '上传视频密钥接口']);
+        //检测是否有活动开启
+        Route::get('product/check_activity/:id', 'v1.product.StoreProduct/check_activity')->option(['real_name' => '检测是商品否有活动开启']);
+        //导入虚拟商品卡密
+        Route::get('product/import_card', 'v1.product.StoreProduct/import_card')->option(['real_name' => '导入虚拟商品卡密']);
+        //商品批量操作
+        Route::post('batch/setting', 'v1.product.StoreProduct/batchSetting')->option(['real_name' => '商品批量设置']);
+    })->option(['parent' => 'product', 'cate_name' => '商品']);
 
+    /** 商品评论 */
+    Route::group(function () {
+        //评论列表
+        Route::get('reply', 'v1.product.StoreProductReply/index')->option(['real_name' => '商品评论列表']);
+        //回复评论
+        Route::put('reply/set_reply/:id', 'v1.product.StoreProductReply/set_reply')->option(['real_name' => '商品回复评论']);
+        //删除评论
+        Route::delete('reply/:id', 'v1.product.StoreProductReply/delete')->option(['real_name' => '删除商品评论']);
+        //调起虚拟评论表单
+        Route::get('reply/fictitious_reply/:product_id', 'v1.product.StoreProductReply/fictitious_reply')->option(['real_name' => '虚拟评论表单']);
+        //保存虚拟评论
+        Route::post('reply/save_fictitious_reply', 'v1.product.StoreProductReply/save_fictitious_reply')->option(['real_name' => '保存虚拟评论']);
+    })->option(['parent' => 'product', 'cate_name' => '商品评论']);
+
+    /** 商品采集 */
+    Route::group(function () {
+        //获取商品数据
+        Route::post('crawl', 'v1.product.CopyTaobao/get_request_contents')->option(['real_name' => '获取采集商品数据']);
+        //获取复制商品配置
+        Route::get('copy_config', 'v1.product.CopyTaobao/getConfig')->option(['real_name' => '获取复制商品配置']);
+        //复制其他平台商品
+        Route::post('copy', 'v1.product.CopyTaobao/copyProduct')->option(['real_name' => '复制其他平台商品']);
+        //保存商品数据
+        Route::post('crawl/save', 'v1.product.CopyTaobao/save_product')->option(['real_name' => '保存采集商品数据']);
+    })->option(['parent' => 'product', 'cate_name' => '商品采集']);
 
 })->middleware([
     \app\http\middleware\AllowOriginMiddleware::class,

+ 333 - 294
crmeb/app/adminapi/route/setting.php

@@ -15,308 +15,347 @@ use think\facade\Route;
  */
 Route::group('setting', function () {
 
-    //管理员资源路由
-    Route::resource('admin', 'v1.setting.SystemAdmin')->except(['read'])->option([
-        'real_name' => [
-            'index' => '获取管理员列表',
-            'create' => '获取管理员表单',
-            'save' => '保存管理员',
-            'edit' => '获取修改管理员表单',
-            'update' => '修改管理员',
-            'delete' => '删除管理员'
-        ]
-    ]);
-    //退出登陆
-    Route::get('admin/logout', 'v1.setting.SystemAdmin/logout')->name('SystemAdminLogout')->option(['real_name' => '退出登陆']);
-    //修改状态
-    Route::put('set_status/:id/:status', 'v1.setting.SystemAdmin/set_status')->name('SystemAdminSetStatus')->option(['real_name' => '修改管理员状态']);
-    //获取当前管理员信息
-    Route::get('info', 'v1.setting.SystemAdmin/info')->name('SystemAdminInfo')->option(['real_name' => '获取当前管理员信息']);
-    //修改当前管理员信息
-    Route::put('update_admin', 'v1.setting.SystemAdmin/update_admin')->name('SystemAdminUpdateAdmin')->option(['real_name' => '修改当前管理员信息']);
-    //设置文件管理密码
-    Route::put('set_file_password', 'v1.setting.SystemAdmin/set_file_password')->name('SystemAdminSetFilePassword')->option(['real_name' => '设置当前文件管理密码']);
-    //获取菜单权限和权限标识
-    Route::get('menus/unique', 'v1.setting.SystemMenus/unique')->name('SystemMenusUnique')->option(['real_name' => '获取菜单权限和权限标识']);
-    //批量保存权限
-    Route::post('menus/batch', 'v1.setting.SystemMenus/batchSave')->name('SystemMenusBatchSave')->option(['real_name' => '批量保存权限']);
-    //权限菜单资源路由
-    Route::resource('menus', 'v1.setting.SystemMenus')->option([
-        'real_name' => [
-            'index' => '获取权限菜单列表',
-            'create' => '获取权限菜单表单',
-            'save' => '保存权限菜单',
-            'edit' => '获取修改权限菜单表单',
-            'read' => '查看权限菜单信息',
-            'update' => '修改权限菜单',
-            'delete' => '删除权限菜单'
-        ],
-    ]);
-    //未添加的权限规则列表
-    Route::get('ruleList', 'v1.setting.SystemMenus/ruleList')->option(['real_name' => '未添加的权限规则列表']);
-    //修改显示
-    Route::put('menus/show/:id', 'v1.setting.SystemMenus/show')->name('SystemMenusShow')->option(['real_name' => '修改权限规格显示状态']);
-    //身份列表
-    Route::get('role', 'v1.setting.SystemRole/index')->option(['real_name' => '管理员身份列表']);
-    //身份权限列表
-    Route::get('role/create', 'v1.setting.SystemRole/create')->option(['real_name' => '管理员身份权限列表']);
-    //编辑详情
-    Route::get('role/:id/edit', 'v1.setting.SystemRole/edit')->option(['real_name' => '编辑管理员详情']);
-    //保存新建或编辑
-    Route::post('role/:id', 'v1.setting.SystemRole/save')->option(['real_name' => '新建或编辑管理员']);
-    //修改身份状态
-    Route::put('role/set_status/:id/:status', 'v1.setting.SystemRole/set_status')->option(['real_name' => '修改管理员身份状态']);
-    //删除身份
-    Route::delete('role/:id', 'v1.setting.SystemRole/delete')->option(['real_name' => '删除管理员身份']);
-    //配置分类资源路由
-    Route::resource('config_class', 'v1.setting.SystemConfigTab')->except(['read'])->option([
-        'real_name' => [
-            'index' => '获取系统配置分类列表',
-            'create' => '获取系统配置分类表单',
-            'save' => '保存系统配置分类',
-            'edit' => '获取修改系统配置分类表单',
-            'update' => '修改系统配置分类',
-            'delete' => '删除系统配置分类'
-        ],
-    ]);
-    //修改配置分类状态
-    Route::put('config_class/set_status/:id/:status', 'v1.setting.SystemConfigTab/set_status')->option(['real_name' => '修改配置分类状态']);
-    //配置资源路由
-    Route::resource('config', 'v1.setting.SystemConfig')->except(['read'])->option([
-        'real_name' => [
-            'index' => '获取系统配置列表',
-            'create' => '获取系统配置表单',
-            'save' => '保存系统配置',
-            'edit' => '获取修改系统配置表单',
-            'update' => '修改系统配置',
-            'delete' => '删除系统配置'
-        ]
-    ]);
-    //修改配置状态
-    Route::put('config/set_status/:id/:status', 'v1.setting.SystemConfig/set_status')->option(['real_name' => '修改配置状态']);
-    //基本配置编辑表单
-    Route::get('config/header_basics', 'v1.setting.SystemConfig/header_basics')->option(['real_name' => '基本配置编辑头部数据']);
-    //基本配置编辑表单
-    Route::get('config/edit_basics', 'v1.setting.SystemConfig/edit_basics')->option(['real_name' => '基本配置编辑表单']);
-    //基本配置保存数据
-    Route::post('config/save_basics', 'v1.setting.SystemConfig/save_basics')->option(['real_name' => '基本配置保存数据']);
-    //基本配置上传文件
-    Route::post('config/upload', 'v1.setting.SystemConfig/file_upload')->option(['real_name' => '基本配置上传文件']);
-    //获取单个配置值
-    Route::get('config/get_system/:name', 'v1.setting.SystemConfig/get_system')->option(['real_name' => '基本配置编辑表单']);
-    //获取某个分类下的所有配置信息
-    Route::get('config_list/:tabId', 'v1.setting.SystemConfig/get_config_list')->option(['real_name' => '获取某个分类下的所有配置信息']);
-    //组合数据资源路由
-    Route::resource('group', 'v1.setting.SystemGroup')->except(['read'])->option([
-        'real_name' => [
-            'index' => '获取组合数据列表',
-            'create' => '获取组合数据表单',
-            'save' => '保存组合数据',
-            'edit' => '获取修改组合数据表单',
-            'update' => '修改组合数据',
-            'delete' => '删除组合数据'
-        ]
-    ]);
-    //组合数据全部
-    Route::get('group_all', 'v1.setting.SystemGroup/getGroup')->option(['real_name' => '组合数据全部']);
-    //组合数据子数据资源路由
-    Route::resource('group_data', 'v1.setting.SystemGroupData')->except(['read'])->option([
-        'real_name' => [
-            'index' => '获取组合数据子数据列表',
-            'create' => '获取组合数据子数据表单',
-            'save' => '保存组合数据子数据',
-            'edit' => '获取修改组合数据子数据表单',
-            'update' => '修改组合数据子数据',
-            'delete' => '删除组合数据子数据'
-        ]
-    ]);
-    //修改数据状态
-    Route::get('group_data/header', 'v1.setting.SystemGroupData/header')->option(['real_name' => '组合数据头部']);
-    //修改数据状态
-    Route::put('group_data/set_status/:id/:status', 'v1.setting.SystemGroupData/set_status')->option(['real_name' => '修改组合数据状态']);
-    //数据配置保存
-    Route::post('group_data/save_all', 'v1.setting.SystemGroupData/saveAll')->option(['real_name' => '提交数据配置']);
-    //获取城市数据完整列表
-    Route::get('city/full_list', 'v1.setting.SystemCity/fullList')->option(['real_name' => '获取城市数据完整列表']);
-    //获取城市数据列表
-    Route::get('city/list/:parent_id', 'v1.setting.SystemCity/index')->option(['real_name' => '获取城市数据列表']);
-    //添加城市数据表单
-    Route::get('city/add/:parent_id', 'v1.setting.SystemCity/add')->option(['real_name' => '添加城市数据表单']);
-    //修改城市数据表单
-    Route::get('city/:id/edit', 'v1.setting.SystemCity/edit')->option(['real_name' => '修改城市数据表单']);
-    //新增/修改城市数据
-    Route::post('city/save', 'v1.setting.SystemCity/save')->option(['real_name' => '新增/修改城市数据']);
-    //修改城市数据表单
-    Route::delete('city/del/:city_id', 'v1.setting.SystemCity/delete')->option(['real_name' => '删除城市数据']);
-    //清除城市数据缓存
-    Route::get('city/clean_cache', 'v1.setting.SystemCity/clean_cache')->option(['real_name' => '清除城市数据缓存']);
-    //运费模板列表
-    Route::get('shipping_templates/list', 'v1.setting.ShippingTemplates/temp_list')->option(['real_name' => '运费模板列表']);
-    //修改运费模板数据
-    Route::get('shipping_templates/:id/edit', 'v1.setting.ShippingTemplates/edit')->option(['real_name' => '修改运费模板数据']);
-    //保存新增修改
-    Route::post('shipping_templates/save/:id', 'v1.setting.ShippingTemplates/save')->option(['real_name' => '新增或修改运费模版']);
-    //删除运费模板
-    Route::delete('shipping_templates/del/:id', 'v1.setting.ShippingTemplates/delete')->option(['real_name' => '删除运费模板']);
-    //城市数据接口
-    Route::get('shipping_templates/city_list', 'v1.setting.ShippingTemplates/city_list')->option(['real_name' => '城市数据接口']);
-    //获取客服广告
-    Route::get('get_kf_adv', 'v1.setting.SystemGroupData/getKfAdv')->option(['real_name' => '获取客服广告']);
-    //设置客服广告
-    Route::post('set_kf_adv', 'v1.setting.SystemGroupData/setKfAdv')->option(['real_name' => '设置客服广告']);
-    //签到天数配置资源
-    Route::resource('sign_data', 'v1.setting.SystemGroupData')->except(['read'])->option([
-        'real_name' => [
-            'index' => '获取签到天数配置列表',
-            'create' => '获取签到天数配置表单',
-            'save' => '保存签到天数配置',
-            'edit' => '获取修改签到天数配置表单',
-            'update' => '修改签到天数配置',
-            'delete' => '删除签到天数配置'
-        ]
-    ]);
-    //签到数据字段
-    Route::get('sign_data/header', 'v1.setting.SystemGroupData/header')->option(['real_name' => '签到数据头部']);
-    //修改签到数据状态
-    Route::put('sign_data/set_status/:id/:status', 'v1.setting.SystemGroupData/set_status')->option(['real_name' => '修改签到数据状态']);
-    //订单详情动态图配置资源
-    Route::resource('order_data', 'v1.setting.SystemGroupData')->except(['read'])->option([
-        'real_name' => [
-            'index' => '获取订单详情动态图列表',
-            'create' => '获取订单详情动态图表单',
-            'save' => '保存订单详情动态图',
-            'edit' => '获取修改订单详情动态图表单',
-            'update' => '修改订单详情动态图',
-            'delete' => '删除订单详情动态图'
-        ]
-    ]);
-    //订单数据字段
-    Route::get('order_data/header', 'v1.setting.SystemGroupData/header')->option(['real_name' => '订单数据字段']);
-    //订单数据状态
-    Route::put('order_data/set_status/:id/:status', 'v1.setting.SystemGroupData/set_status')->option(['real_name' => '订单数据状态']);
-    //个人中心菜单配置资源
-    Route::resource('usermenu_data', 'v1.setting.SystemGroupData')->except(['read'])->option([
-        'real_name' => [
-            'index' => '获取个人中心菜单列表',
-            'create' => '获取个人中心菜单表单',
-            'save' => '保存个人中心菜单',
-            'edit' => '获取修改个人中心菜单表单',
-            'update' => '修改个人中心菜单',
-            'delete' => '删除个人中心菜单'
-        ]
-    ]);
-    //个人中心菜单数据字段
-    Route::get('usermenu_data/header', 'v1.setting.SystemGroupData/header')->option(['real_name' => '个人中心菜单数据字段']);
-    //个人中心菜单数据状态
-    Route::put('usermenu_data/set_status/:id/:status', 'v1.setting.SystemGroupData/set_status')->option(['real_name' => '个人中心菜单数据状态']);
-    //分享海报配置资源
-    Route::resource('poster_data', 'v1.setting.SystemGroupData')->except(['read'])->option([
-        'real_name' => [
-            'index' => '获取分享海报列表',
-            'create' => '获取分享海报表单',
-            'save' => '保存分享海报',
-            'edit' => '获取修改分享海报表单',
-            'update' => '修改分享海报',
-            'delete' => '删除分享海报'
-        ]
-    ]);
-    //分享海报数据字段
-    Route::get('poster_data/header', 'v1.setting.SystemGroupData/header')->option(['real_name' => '分享海报数据字段']);
-    //分享海报数据状态
-    Route::put('poster_data/set_status/:id/:status', 'v1.setting.SystemGroupData/set_status')->option(['real_name' => '分享海报数据状态']);
-    //秒杀配置资源
-    Route::resource('seckill_data', 'v1.setting.SystemGroupData')->except(['read'])->option([
-        'real_name' => [
-            'index' => '获取分秒杀配置列表',
-            'create' => '获取秒杀配置表单',
-            'save' => '保存秒杀配置',
-            'edit' => '获取修改秒杀配置表单',
-            'update' => '修改秒杀配置',
-            'delete' => '删除秒杀配置'
-        ]
-    ]);
-    //秒杀数据字段
-    Route::get('seckill_data/header', 'v1.setting.SystemGroupData/header')->option(['real_name' => '秒杀数据字段']);
-    //秒杀数据状态
-    Route::put('seckill_data/set_status/:id/:status', 'v1.setting.SystemGroupData/set_status')->option(['real_name' => '秒杀数据状态']);
-    //获取隐私协议
-    Route::get('get_user_agreement', 'v1.setting.SystemGroupData/getUserAgreement')->option(['real_name' => '获取隐私协议']);
-    //设置隐私协议
-    Route::post('set_user_agreement', 'v1.setting.SystemGroupData/setUserAgreement')->option(['real_name' => '设置隐私协议']);
+    /** 管理员 */
+    Route::group(function () {
+        //管理员资源路由
+        Route::resource('admin', 'v1.setting.SystemAdmin')->except(['read'])->option([
+            'real_name' => [
+                'index' => '获取管理员列表',
+                'create' => '获取管理员表单',
+                'save' => '保存管理员',
+                'edit' => '获取修改管理员表单',
+                'update' => '修改管理员',
+                'delete' => '删除管理员'
+            ]
+        ]);
+        //退出登陆
+        Route::get('admin/logout', 'v1.setting.SystemAdmin/logout')->name('SystemAdminLogout')->option(['real_name' => '退出登陆']);
+        //修改状态
+        Route::put('set_status/:id/:status', 'v1.setting.SystemAdmin/set_status')->name('SystemAdminSetStatus')->option(['real_name' => '修改管理员状态']);
+        //获取当前管理员信息
+        Route::get('info', 'v1.setting.SystemAdmin/info')->name('SystemAdminInfo')->option(['real_name' => '获取当前管理员信息']);
+        //修改当前管理员信息
+        Route::put('update_admin', 'v1.setting.SystemAdmin/update_admin')->name('SystemAdminUpdateAdmin')->option(['real_name' => '修改当前管理员信息']);
+        //设置文件管理密码
+        Route::put('set_file_password', 'v1.setting.SystemAdmin/set_file_password')->name('SystemAdminSetFilePassword')->option(['real_name' => '设置当前文件管理密码']);
+    })->option(['parent' => 'setting', 'cate_name' => '管理员']);
 
-    //系统通知
-    //系统通知列表
-    Route::get('notification/index', 'v1.setting.SystemNotification/index')->option(['real_name' => '系统通知列表']);
-    //获取单条数据
-    Route::get('notification/info', 'v1.setting.SystemNotification/info')->option(['real_name' => '获取单条通知数据']);
-    //保存通知设置
-    Route::post('notification/save', 'v1.setting.SystemNotification/save')->option(['real_name' => '保存通知设置']);
-    //修改消息状态
-    Route::put('notification/set_status/:type/:status/:id', 'v1.setting.SystemNotification/set_status')->option(['real_name' => '修改消息状态']);
+    /** 权限菜单 */
+    Route::group(function () {
+        //获取菜单权限和权限标识
+        Route::get('menus/unique', 'v1.setting.SystemMenus/unique')->name('SystemMenusUnique')->option(['real_name' => '获取菜单权限和权限标识']);
+        //批量保存权限
+        Route::post('menus/batch', 'v1.setting.SystemMenus/batchSave')->name('SystemMenusBatchSave')->option(['real_name' => '批量保存权限']);
+        //权限菜单资源路由
+        Route::resource('menus', 'v1.setting.SystemMenus')->option([
+            'real_name' => [
+                'index' => '获取权限菜单列表',
+                'create' => '获取权限菜单表单',
+                'save' => '保存权限菜单',
+                'edit' => '获取修改权限菜单表单',
+                'read' => '查看权限菜单信息',
+                'update' => '修改权限菜单',
+                'delete' => '删除权限菜单'
+            ],
+        ]);
+        //未添加的权限规则列表
+        Route::get('ruleList', 'v1.setting.SystemMenus/ruleList')->option(['real_name' => '未添加的权限规则列表']);
+        //修改显示
+        Route::put('menus/show/:id', 'v1.setting.SystemMenus/show')->name('SystemMenusShow')->option(['real_name' => '修改权限规格显示状态']);
+    })->option(['parent' => 'setting', 'cate_name' => '权限菜单']);
 
-    //协议设置
-    Route::get('get_agreement/:type', 'v1.setting.SystemAgreement/getAgreement')->option(['real_name' => '获取协议内容']);
-    Route::post('save_agreement', 'v1.setting.SystemAgreement/saveAgreement')->option(['real_name' => '设置协议内容']);
+    /** 管理员身份 */
+    Route::group(function () {
+        //身份列表
+        Route::get('role', 'v1.setting.SystemRole/index')->option(['real_name' => '管理员身份列表']);
+        //身份权限列表
+        Route::get('role/create', 'v1.setting.SystemRole/create')->option(['real_name' => '管理员身份权限列表']);
+        //编辑详情
+        Route::get('role/:id/edit', 'v1.setting.SystemRole/edit')->option(['real_name' => '编辑管理员详情']);
+        //保存新建或编辑
+        Route::post('role/:id', 'v1.setting.SystemRole/save')->option(['real_name' => '新建或编辑管理员']);
+        //修改身份状态
+        Route::put('role/set_status/:id/:status', 'v1.setting.SystemRole/set_status')->option(['real_name' => '修改管理员身份状态']);
+        //删除身份
+        Route::delete('role/:id', 'v1.setting.SystemRole/delete')->option(['real_name' => '删除管理员身份']);
+    })->option(['parent' => 'setting', 'cate_name' => '管理员身份']);
 
-    //获取版权信息
-    Route::get('get_version', 'v1.setting.SystemConfig/getVersion')->option(['real_name' => '获取版权信息']);
+    /** 系统配置 */
+    Route::group(function () {
+        //配置分类资源路由
+        Route::resource('config_class', 'v1.setting.SystemConfigTab')->except(['read'])->option([
+            'real_name' => [
+                'index' => '获取系统配置分类列表',
+                'create' => '获取系统配置分类表单',
+                'save' => '保存系统配置分类',
+                'edit' => '获取修改系统配置分类表单',
+                'update' => '修改系统配置分类',
+                'delete' => '删除系统配置分类'
+            ],
+        ]);
+        //修改配置分类状态
+        Route::put('config_class/set_status/:id/:status', 'v1.setting.SystemConfigTab/set_status')->option(['real_name' => '修改配置分类状态']);
+        //配置资源路由
+        Route::resource('config', 'v1.setting.SystemConfig')->except(['read'])->option([
+            'real_name' => [
+                'index' => '获取系统配置列表',
+                'create' => '获取系统配置表单',
+                'save' => '保存系统配置',
+                'edit' => '获取修改系统配置表单',
+                'update' => '修改系统配置',
+                'delete' => '删除系统配置'
+            ]
+        ]);
+        //修改配置状态
+        Route::put('config/set_status/:id/:status', 'v1.setting.SystemConfig/set_status')->option(['real_name' => '修改配置状态']);
+        //基本配置编辑表单
+        Route::get('config/header_basics', 'v1.setting.SystemConfig/header_basics')->option(['real_name' => '基本配置编辑头部数据']);
+        //基本配置编辑表单
+        Route::get('config/edit_basics', 'v1.setting.SystemConfig/edit_basics')->option(['real_name' => '基本配置编辑表单']);
+        //基本配置保存数据
+        Route::post('config/save_basics', 'v1.setting.SystemConfig/save_basics')->option(['real_name' => '基本配置保存数据']);
+        //基本配置上传文件
+        Route::post('config/upload', 'v1.setting.SystemConfig/file_upload')->option(['real_name' => '基本配置上传文件']);
+        //获取单个配置值
+        Route::get('config/get_system/:name', 'v1.setting.SystemConfig/get_system')->option(['real_name' => '基本配置编辑表单']);
+        //获取某个分类下的所有配置信息
+        Route::get('config_list/:tabId', 'v1.setting.SystemConfig/get_config_list')->option(['real_name' => '获取某个分类下的所有配置信息']);
+    })->option(['parent' => 'setting', 'cate_name' => '系统配置']);
 
-    //对外接口账号信息
-    Route::get('system_out_account/index', 'v1.setting.SystemOutAccount/index')->option(['real_name' => '对外接口账号信息']);
-    //对外接口账号添加
-    Route::post('system_out_account/save', 'v1.setting.SystemOutAccount/save')->option(['real_name' => '对外接口账号添加']);
-    //对外接口账号修改
-    Route::post('system_out_account/update/:id', 'v1.setting.SystemOutAccount/update')->option(['real_name' => '对外接口账号修改']);
-    //设置账号是否禁用
-    Route::put('system_out_account/set_status/:id/:status', 'v1.setting.SystemOutAccount/set_status')->option(['real_name' => '设置账号是否禁用']);
-    //设置账号推送接口
-    Route::put('system_out_account/set_up/:id', 'v1.setting.SystemOutAccount/outSetUpSave')->option(['real_name' => '设置账号推送接口']);
-    //删除账号
-    Route::delete('system_out_account/:id', 'v1.setting.SystemOutAccount/delete')->option(['real_name' => '删除账号']);
-    //测试获取token接口
-    Route::post('system_out_account/text_out_url', 'v1.setting.SystemOutAccount/textOutUrl')->option(['real_name' => '测试获取token接口']);
+    /** 组合数据 */
+    Route::group(function () {
+        //组合数据资源路由
+        Route::resource('group', 'v1.setting.SystemGroup')->except(['read'])->option([
+            'real_name' => [
+                'index' => '获取组合数据列表',
+                'create' => '获取组合数据表单',
+                'save' => '保存组合数据',
+                'edit' => '获取修改组合数据表单',
+                'update' => '修改组合数据',
+                'delete' => '删除组合数据'
+            ]
+        ]);
+        //组合数据全部
+        Route::get('group_all', 'v1.setting.SystemGroup/getGroup')->option(['real_name' => '组合数据全部']);
+        //组合数据子数据资源路由
+        Route::resource('group_data', 'v1.setting.SystemGroupData')->except(['read'])->option([
+            'real_name' => [
+                'index' => '获取组合数据子数据列表',
+                'create' => '获取组合数据子数据表单',
+                'save' => '保存组合数据子数据',
+                'edit' => '获取修改组合数据子数据表单',
+                'update' => '修改组合数据子数据',
+                'delete' => '删除组合数据子数据'
+            ]
+        ]);
+        //修改数据状态
+        Route::get('group_data/header', 'v1.setting.SystemGroupData/header')->option(['real_name' => '组合数据头部']);
+        //修改数据状态
+        Route::put('group_data/set_status/:id/:status', 'v1.setting.SystemGroupData/set_status')->option(['real_name' => '修改组合数据状态']);
+        //数据配置保存
+        Route::post('group_data/save_all', 'v1.setting.SystemGroupData/saveAll')->option(['real_name' => '提交数据配置']);
+        //获取客服广告
+        Route::get('get_kf_adv', 'v1.setting.SystemGroupData/getKfAdv')->option(['real_name' => '获取客服广告']);
+        //设置客服广告
+        Route::post('set_kf_adv', 'v1.setting.SystemGroupData/setKfAdv')->option(['real_name' => '设置客服广告']);
+        //签到天数配置资源
+        Route::resource('sign_data', 'v1.setting.SystemGroupData')->except(['read'])->option([
+            'real_name' => [
+                'index' => '获取签到天数配置列表',
+                'create' => '获取签到天数配置表单',
+                'save' => '保存签到天数配置',
+                'edit' => '获取修改签到天数配置表单',
+                'update' => '修改签到天数配置',
+                'delete' => '删除签到天数配置'
+            ]
+        ]);
+        //签到数据字段
+        Route::get('sign_data/header', 'v1.setting.SystemGroupData/header')->option(['real_name' => '签到数据头部']);
+        //修改签到数据状态
+        Route::put('sign_data/set_status/:id/:status', 'v1.setting.SystemGroupData/set_status')->option(['real_name' => '修改签到数据状态']);
+        //订单详情动态图配置资源
+        Route::resource('order_data', 'v1.setting.SystemGroupData')->except(['read'])->option([
+            'real_name' => [
+                'index' => '获取订单详情动态图列表',
+                'create' => '获取订单详情动态图表单',
+                'save' => '保存订单详情动态图',
+                'edit' => '获取修改订单详情动态图表单',
+                'update' => '修改订单详情动态图',
+                'delete' => '删除订单详情动态图'
+            ]
+        ]);
+        //订单数据字段
+        Route::get('order_data/header', 'v1.setting.SystemGroupData/header')->option(['real_name' => '订单数据字段']);
+        //订单数据状态
+        Route::put('order_data/set_status/:id/:status', 'v1.setting.SystemGroupData/set_status')->option(['real_name' => '订单数据状态']);
+        //个人中心菜单配置资源
+        Route::resource('usermenu_data', 'v1.setting.SystemGroupData')->except(['read'])->option([
+            'real_name' => [
+                'index' => '获取个人中心菜单列表',
+                'create' => '获取个人中心菜单表单',
+                'save' => '保存个人中心菜单',
+                'edit' => '获取修改个人中心菜单表单',
+                'update' => '修改个人中心菜单',
+                'delete' => '删除个人中心菜单'
+            ]
+        ]);
+        //个人中心菜单数据字段
+        Route::get('usermenu_data/header', 'v1.setting.SystemGroupData/header')->option(['real_name' => '个人中心菜单数据字段']);
+        //个人中心菜单数据状态
+        Route::put('usermenu_data/set_status/:id/:status', 'v1.setting.SystemGroupData/set_status')->option(['real_name' => '个人中心菜单数据状态']);
+        //分享海报配置资源
+        Route::resource('poster_data', 'v1.setting.SystemGroupData')->except(['read'])->option([
+            'real_name' => [
+                'index' => '获取分享海报列表',
+                'create' => '获取分享海报表单',
+                'save' => '保存分享海报',
+                'edit' => '获取修改分享海报表单',
+                'update' => '修改分享海报',
+                'delete' => '删除分享海报'
+            ]
+        ]);
+        //分享海报数据字段
+        Route::get('poster_data/header', 'v1.setting.SystemGroupData/header')->option(['real_name' => '分享海报数据字段']);
+        //分享海报数据状态
+        Route::put('poster_data/set_status/:id/:status', 'v1.setting.SystemGroupData/set_status')->option(['real_name' => '分享海报数据状态']);
+        //秒杀配置资源
+        Route::resource('seckill_data', 'v1.setting.SystemGroupData')->except(['read'])->option([
+            'real_name' => [
+                'index' => '获取分秒杀配置列表',
+                'create' => '获取秒杀配置表单',
+                'save' => '保存秒杀配置',
+                'edit' => '获取修改秒杀配置表单',
+                'update' => '修改秒杀配置',
+                'delete' => '删除秒杀配置'
+            ]
+        ]);
+        //秒杀数据字段
+        Route::get('seckill_data/header', 'v1.setting.SystemGroupData/header')->option(['real_name' => '秒杀数据字段']);
+        //秒杀数据状态
+        Route::put('seckill_data/set_status/:id/:status', 'v1.setting.SystemGroupData/set_status')->option(['real_name' => '秒杀数据状态']);
+        //获取隐私协议
+        Route::get('get_user_agreement', 'v1.setting.SystemGroupData/getUserAgreement')->option(['real_name' => '获取隐私协议']);
+        //设置隐私协议
+        Route::post('set_user_agreement', 'v1.setting.SystemGroupData/setUserAgreement')->option(['real_name' => '设置隐私协议']);
+    })->option(['parent' => 'setting', 'cate_name' => '组合数据']);
 
-    //对外接口列表
-    Route::get('system_out_interface/list', 'v1.setting.SystemOutAccount/outInterfaceList')->option(['real_name' => '对外接口列表']);
-    //新增修改对外接口
-    Route::post('system_out_interface/save/:id', 'v1.setting.SystemOutAccount/saveInterface')->option(['real_name' => '新增修改对外接口']);
-    //对外接口信息
-    Route::get('system_out_interface/info/:id', 'v1.setting.SystemOutAccount/interfaceInfo')->option(['real_name' => '对外接口信息']);
-    //修改接口名称
-    Route::put('system_out_interface/edit_name', 'v1.setting.SystemOutAccount/editInterfaceName')->option(['real_name' => '修改接口名称']);
-    //删除接口
-    Route::delete('system_out_interface/del/:id', 'v1.setting.SystemOutAccount/delInterface')->option(['real_name' => '删除接口']);
+    /** 城市数据 */
+    Route::group(function () {
+        //获取城市数据完整列表
+        Route::get('city/full_list', 'v1.setting.SystemCity/fullList')->option(['real_name' => '获取城市数据完整列表']);
+        //获取城市数据列表
+        Route::get('city/list/:parent_id', 'v1.setting.SystemCity/index')->option(['real_name' => '获取城市数据列表']);
+        //添加城市数据表单
+        Route::get('city/add/:parent_id', 'v1.setting.SystemCity/add')->option(['real_name' => '添加城市数据表单']);
+        //修改城市数据表单
+        Route::get('city/:id/edit', 'v1.setting.SystemCity/edit')->option(['real_name' => '修改城市数据表单']);
+        //新增/修改城市数据
+        Route::post('city/save', 'v1.setting.SystemCity/save')->option(['real_name' => '新增/修改城市数据']);
+        //修改城市数据表单
+        Route::delete('city/del/:city_id', 'v1.setting.SystemCity/delete')->option(['real_name' => '删除城市数据']);
+        //清除城市数据缓存
+        Route::get('city/clean_cache', 'v1.setting.SystemCity/clean_cache')->option(['real_name' => '清除城市数据缓存']);
+    })->option(['parent' => 'setting', 'cate_name' => '城市数据']);
+
+    /** 运费模版 */
+    Route::group(function () {
+        //运费模板列表
+        Route::get('shipping_templates/list', 'v1.setting.ShippingTemplates/temp_list')->option(['real_name' => '运费模板列表']);
+        //修改运费模板数据
+        Route::get('shipping_templates/:id/edit', 'v1.setting.ShippingTemplates/edit')->option(['real_name' => '修改运费模板数据']);
+        //保存新增修改
+        Route::post('shipping_templates/save/:id', 'v1.setting.ShippingTemplates/save')->option(['real_name' => '新增或修改运费模版']);
+        //删除运费模板
+        Route::delete('shipping_templates/del/:id', 'v1.setting.ShippingTemplates/delete')->option(['real_name' => '删除运费模板']);
+        //城市数据接口
+        Route::get('shipping_templates/city_list', 'v1.setting.ShippingTemplates/city_list')->option(['real_name' => '城市数据接口']);
+    })->option(['parent' => 'setting', 'cate_name' => '运费模版']);
+
+
+    /** 系统通知 */
+    Route::group(function () {
+        //系统通知列表
+        Route::get('notification/index', 'v1.setting.SystemNotification/index')->option(['real_name' => '系统通知列表']);
+        //获取单条数据
+        Route::get('notification/info', 'v1.setting.SystemNotification/info')->option(['real_name' => '获取单条通知数据']);
+        //保存通知设置
+        Route::post('notification/save', 'v1.setting.SystemNotification/save')->option(['real_name' => '保存通知设置']);
+        //修改消息状态
+        Route::put('notification/set_status/:type/:status/:id', 'v1.setting.SystemNotification/set_status')->option(['real_name' => '修改消息状态']);
+    })->option(['parent' => 'setting', 'cate_name' => '系统通知']);
+
+    /** 协议版权 */
+    Route::group(function () {
+        //协议设置
+        Route::get('get_agreement/:type', 'v1.setting.SystemAgreement/getAgreement')->option(['real_name' => '获取协议内容']);
+        Route::post('save_agreement', 'v1.setting.SystemAgreement/saveAgreement')->option(['real_name' => '设置协议内容']);
+        //获取版权信息
+        Route::get('get_version', 'v1.setting.SystemConfig/getVersion')->option(['real_name' => '获取版权信息']);
+    })->option(['parent' => 'setting', 'cate_name' => '协议版权']);
+
+
+    /** 对外接口 */
+    Route::group(function () {
+        //对外接口账号信息
+        Route::get('system_out_account/index', 'v1.setting.SystemOutAccount/index')->option(['real_name' => '对外接口账号信息']);
+        //对外接口账号添加
+        Route::post('system_out_account/save', 'v1.setting.SystemOutAccount/save')->option(['real_name' => '对外接口账号添加']);
+        //对外接口账号修改
+        Route::post('system_out_account/update/:id', 'v1.setting.SystemOutAccount/update')->option(['real_name' => '对外接口账号修改']);
+        //设置账号是否禁用
+        Route::put('system_out_account/set_status/:id/:status', 'v1.setting.SystemOutAccount/set_status')->option(['real_name' => '设置账号是否禁用']);
+        //设置账号推送接口
+        Route::put('system_out_account/set_up/:id', 'v1.setting.SystemOutAccount/outSetUpSave')->option(['real_name' => '设置账号推送接口']);
+        //删除账号
+        Route::delete('system_out_account/:id', 'v1.setting.SystemOutAccount/delete')->option(['real_name' => '删除账号']);
+        //测试获取token接口
+        Route::post('system_out_account/text_out_url', 'v1.setting.SystemOutAccount/textOutUrl')->option(['real_name' => '测试获取token接口']);
+
+        //对外接口列表
+        Route::get('system_out_interface/list', 'v1.setting.SystemOutAccount/outInterfaceList')->option(['real_name' => '对外接口列表']);
+        //新增修改对外接口
+        Route::post('system_out_interface/save/:id', 'v1.setting.SystemOutAccount/saveInterface')->option(['real_name' => '新增修改对外接口']);
+        //对外接口信息
+        Route::get('system_out_interface/info/:id', 'v1.setting.SystemOutAccount/interfaceInfo')->option(['real_name' => '对外接口信息']);
+        //修改接口名称
+        Route::put('system_out_interface/edit_name', 'v1.setting.SystemOutAccount/editInterfaceName')->option(['real_name' => '修改接口名称']);
+        //删除接口
+        Route::delete('system_out_interface/del/:id', 'v1.setting.SystemOutAccount/delInterface')->option(['real_name' => '删除接口']);
+    })->option(['parent' => 'setting', 'cate_name' => '对外接口']);
 
 
     /** 多语言 */
-    //语言国家列表
-    Route::get('lang_country/list', 'v1.setting.LangCountry/langCountryList')->option(['real_name' => '语言国家列表']);
-    //添加语言地区表单
-    Route::get('lang_country/form/:id', 'v1.setting.LangCountry/langCountryForm')->option(['real_name' => '添加语言地区表单']);
-    //保存语言地区
-    Route::post('lang_country/save/:id', 'v1.setting.LangCountry/langCountrySave')->option(['real_name' => '保存语言地区']);
-    //删除语言地区
-    Route::delete('lang_country/del/:id', 'v1.setting.LangCountry/langCountryDel')->option(['real_name' => '删除语言地区']);
-    //语言类型列表
-    Route::get('lang_type/list', 'v1.setting.LangType/langTypeList')->option(['real_name' => '语言类型列表']);
-    //新增修改语言类型表单
-    Route::get('lang_type/form/:id', 'v1.setting.LangType/langTypeForm')->option(['real_name' => '新增修改语言类型表单']);
-    //保存新增修改语言
-    Route::post('lang_type/save/:id', 'v1.setting.LangType/langTypeSave')->option(['real_name' => '保存新增修改语言']);
-    //删除语言
-    Route::delete('lang_type/del/:id', 'v1.setting.LangType/langTypeDel')->option(['real_name' => '删除语言']);
-    //修改语言类型状态
-    Route::put('lang_type/status/:id/:status', 'v1.setting.LangType/langTypeStatus')->option(['real_name' => '修改语言类型状态']);
-    //获取语言列表
-    Route::get('lang_code/list', 'v1.setting.LangCode/langCodeList')->option(['real_name' => '语言列表']);
-    //获取语言信息
-    Route::get('lang_code/info', 'v1.setting.LangCode/langCodeInfo')->option(['real_name' => '语言详情']);
-    //保存修改语言
-    Route::post('lang_code/save', 'v1.setting.LangCode/langCodeSave')->option(['real_name' => '保存修改语言']);
-    //删除语言
-    Route::delete('lang_code/del/:id', 'v1.setting.LangCode/langCodeDel')->option(['real_name' => '删除语言']);
-    //机器翻译
-    Route::post('lang_code/translate', 'v1.setting.LangCode/langCodeTranslate')->option(['real_name' => '机器翻译']);
+    Route::group(function () {
+        //语言国家列表
+        Route::get('lang_country/list', 'v1.setting.LangCountry/langCountryList')->option(['real_name' => '语言国家列表']);
+        //添加语言地区表单
+        Route::get('lang_country/form/:id', 'v1.setting.LangCountry/langCountryForm')->option(['real_name' => '添加语言地区表单']);
+        //保存语言地区
+        Route::post('lang_country/save/:id', 'v1.setting.LangCountry/langCountrySave')->option(['real_name' => '保存语言地区']);
+        //删除语言地区
+        Route::delete('lang_country/del/:id', 'v1.setting.LangCountry/langCountryDel')->option(['real_name' => '删除语言地区']);
+        //语言类型列表
+        Route::get('lang_type/list', 'v1.setting.LangType/langTypeList')->option(['real_name' => '语言类型列表']);
+        //新增修改语言类型表单
+        Route::get('lang_type/form/:id', 'v1.setting.LangType/langTypeForm')->option(['real_name' => '新增修改语言类型表单']);
+        //保存新增修改语言
+        Route::post('lang_type/save/:id', 'v1.setting.LangType/langTypeSave')->option(['real_name' => '保存新增修改语言']);
+        //删除语言
+        Route::delete('lang_type/del/:id', 'v1.setting.LangType/langTypeDel')->option(['real_name' => '删除语言']);
+        //修改语言类型状态
+        Route::put('lang_type/status/:id/:status', 'v1.setting.LangType/langTypeStatus')->option(['real_name' => '修改语言类型状态']);
+        //获取语言列表
+        Route::get('lang_code/list', 'v1.setting.LangCode/langCodeList')->option(['real_name' => '语言列表']);
+        //获取语言信息
+        Route::get('lang_code/info', 'v1.setting.LangCode/langCodeInfo')->option(['real_name' => '语言详情']);
+        //保存修改语言
+        Route::post('lang_code/save', 'v1.setting.LangCode/langCodeSave')->option(['real_name' => '保存修改语言']);
+        //删除语言
+        Route::delete('lang_code/del/:id', 'v1.setting.LangCode/langCodeDel')->option(['real_name' => '删除语言']);
+        //机器翻译
+        Route::post('lang_code/translate', 'v1.setting.LangCode/langCodeTranslate')->option(['real_name' => '机器翻译']);
+    })->option(['parent' => 'setting', 'cate_name' => '多语言']);
+
 })->middleware([
     \app\http\middleware\AllowOriginMiddleware::class,
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,

+ 57 - 44
crmeb/app/adminapi/route/statistic.php

@@ -15,61 +15,74 @@ use think\facade\Route;
  * 分销管理 相关路由
  */
 Route::group('statistic', function () {
+
     /** 用户统计 */
-    //用户基础
-    Route::get('user/get_basic', 'v1.statistic.UserStatistic/getBasic')->option(['real_name' => '用户基础统计']);
-    //用户增长趋势
-    Route::get('user/get_trend', 'v1.statistic.UserStatistic/getTrend')->option(['real_name' => '用户增长趋势']);
-    //微信用户
-    Route::get('user/get_wechat', 'v1.statistic.UserStatistic/getWechat')->option(['real_name' => '微信用户统计']);
-    //微信用户成长趋势
-    Route::get('user/get_wechat_trend', 'v1.statistic.UserStatistic/getWechatTrend')->option(['real_name' => '微信用户成长趋势']);
-    //用户地域排行
-    Route::get('user/get_region', 'v1.statistic.UserStatistic/getRegion')->option(['real_name' => '用户地域排行']);
-    //用户性别
-    Route::get('user/get_sex', 'v1.statistic.UserStatistic/getSex')->option(['real_name' => '用户性别分布']);
-    //商品数据导出
-    Route::get('user/get_excel', 'v1.statistic.UserStatistic/getExcel')->option(['real_name' => '用户数据导出']);
+    Route::group(function () {
+        //用户基础
+        Route::get('user/get_basic', 'v1.statistic.UserStatistic/getBasic')->option(['real_name' => '用户基础统计']);
+        //用户增长趋势
+        Route::get('user/get_trend', 'v1.statistic.UserStatistic/getTrend')->option(['real_name' => '用户增长趋势']);
+        //微信用户
+        Route::get('user/get_wechat', 'v1.statistic.UserStatistic/getWechat')->option(['real_name' => '微信用户统计']);
+        //微信用户成长趋势
+        Route::get('user/get_wechat_trend', 'v1.statistic.UserStatistic/getWechatTrend')->option(['real_name' => '微信用户成长趋势']);
+        //用户地域排行
+        Route::get('user/get_region', 'v1.statistic.UserStatistic/getRegion')->option(['real_name' => '用户地域排行']);
+        //用户性别
+        Route::get('user/get_sex', 'v1.statistic.UserStatistic/getSex')->option(['real_name' => '用户性别分布']);
+        //商品数据导出
+        Route::get('user/get_excel', 'v1.statistic.UserStatistic/getExcel')->option(['real_name' => '用户数据导出']);
+    })->option(['parent' => 'statistic', 'cate_name' => '用户统计']);
 
     /** 商品统计 */
-    //商品基础
-    Route::get('product/get_basic', 'v1.statistic.ProductStatistic/getBasic')->option(['real_name' => '商品基础统计']);
-    //商品趋势
-    Route::get('product/get_trend', 'v1.statistic.ProductStatistic/getTrend')->option(['real_name' => '商品趋势']);
-    //商品排行
-    Route::get('product/get_product_ranking', 'v1.statistic.ProductStatistic/getProductRanking')->option(['real_name' => '商品排行']);
-    //商品数据导出
-    Route::get('product/get_excel', 'v1.statistic.ProductStatistic/getExcel')->option(['real_name' => '商品数据导出']);
+    Route::group(function () {
+        //商品基础
+        Route::get('product/get_basic', 'v1.statistic.ProductStatistic/getBasic')->option(['real_name' => '商品基础统计']);
+        //商品趋势
+        Route::get('product/get_trend', 'v1.statistic.ProductStatistic/getTrend')->option(['real_name' => '商品趋势']);
+        //商品排行
+        Route::get('product/get_product_ranking', 'v1.statistic.ProductStatistic/getProductRanking')->option(['real_name' => '商品排行']);
+        //商品数据导出
+        Route::get('product/get_excel', 'v1.statistic.ProductStatistic/getExcel')->option(['real_name' => '商品数据导出']);
+    })->option(['parent' => 'statistic', 'cate_name' => '商品统计']);
 
     /** 交易统计 */
-    //今日营业额统计
-    Route::get('trade/top_trade', 'v1.statistic.TradeStatistic/topTrade')->option(['real_name' => '今日营业额统计']);
-    Route::get('trade/bottom_trade', 'v1.statistic.TradeStatistic/bottomTrade')->option(['real_name' => '交易统计底部数据']);
+    Route::group(function () {
+        //今日营业额统计
+        Route::get('trade/top_trade', 'v1.statistic.TradeStatistic/topTrade')->option(['real_name' => '今日营业额统计']);
+        Route::get('trade/bottom_trade', 'v1.statistic.TradeStatistic/bottomTrade')->option(['real_name' => '交易统计底部数据']);
+    })->option(['parent' => 'statistic', 'cate_name' => '交易统计']);
 
     /** 订单统计 */
-    //订单基础
-    Route::get('order/get_basic', 'v1.statistic.OrderStatistic/getBasic')->option(['real_name' => '订单基础统计']);
-    //订单趋势
-    Route::get('order/get_trend', 'v1.statistic.OrderStatistic/getTrend')->option(['real_name' => '订单趋势']);
-    //订单来源
-    Route::get('order/get_channel', 'v1.statistic.OrderStatistic/getChannel')->option(['real_name' => '订单来源']);
-    //订单类型
-    Route::get('order/get_type', 'v1.statistic.OrderStatistic/getType')->option(['real_name' => '订单类型']);
+    Route::group(function () {
+        //订单基础
+        Route::get('order/get_basic', 'v1.statistic.OrderStatistic/getBasic')->option(['real_name' => '订单基础统计']);
+        //订单趋势
+        Route::get('order/get_trend', 'v1.statistic.OrderStatistic/getTrend')->option(['real_name' => '订单趋势']);
+        //订单来源
+        Route::get('order/get_channel', 'v1.statistic.OrderStatistic/getChannel')->option(['real_name' => '订单来源']);
+        //订单类型
+        Route::get('order/get_type', 'v1.statistic.OrderStatistic/getType')->option(['real_name' => '订单类型']);
+    })->option(['parent' => 'statistic', 'cate_name' => '订单统计']);
 
     /** 资金流水 */
-    Route::get('flow/get_list', 'v1.statistic.FlowStatistic/getFlowList')->option(['real_name' => '资金流水']);
-    Route::post('flow/set_mark/:id', 'v1.statistic.FlowStatistic/setMark')->option(['real_name' => '设置备注']);
-    Route::get('flow/get_record', 'v1.statistic.FlowStatistic/getFlowRecord')->option(['real_name' => '账单记录']);
+    Route::group(function () {
+        Route::get('flow/get_list', 'v1.statistic.FlowStatistic/getFlowList')->option(['real_name' => '资金流水']);
+        Route::post('flow/set_mark/:id', 'v1.statistic.FlowStatistic/setMark')->option(['real_name' => '设置备注']);
+        Route::get('flow/get_record', 'v1.statistic.FlowStatistic/getFlowRecord')->option(['real_name' => '账单记录']);
+    })->option(['parent' => 'statistic', 'cate_name' => '资金流水']);
 
     /** 余额统计 */
-    //余额基础统计
-    Route::get('balance/get_basic', 'v1.statistic.BalanceStatistic/getBasic')->option(['real_name' => '余额基础统计']);
-    //余额趋势
-    Route::get('balance/get_trend', 'v1.statistic.BalanceStatistic/getTrend')->option(['real_name' => '余额趋势']);
-    //余额来源
-    Route::get('balance/get_channel', 'v1.statistic.BalanceStatistic/getChannel')->option(['real_name' => '余额来源']);
-    //余额消耗
-    Route::get('balance/get_type', 'v1.statistic.BalanceStatistic/getType')->option(['real_name' => '余额消耗']);
+    Route::group(function () {
+        //余额基础统计
+        Route::get('balance/get_basic', 'v1.statistic.BalanceStatistic/getBasic')->option(['real_name' => '余额基础统计']);
+        //余额趋势
+        Route::get('balance/get_trend', 'v1.statistic.BalanceStatistic/getTrend')->option(['real_name' => '余额趋势']);
+        //余额来源
+        Route::get('balance/get_channel', 'v1.statistic.BalanceStatistic/getChannel')->option(['real_name' => '余额来源']);
+        //余额消耗
+        Route::get('balance/get_type', 'v1.statistic.BalanceStatistic/getType')->option(['real_name' => '余额消耗']);
+    })->option(['parent' => 'statistic', 'cate_name' => '余额统计']);
 
 })->middleware([
     \app\http\middleware\AllowOriginMiddleware::class,

+ 166 - 135
crmeb/app/adminapi/route/system.php

@@ -15,144 +15,175 @@ use think\facade\Route;
  * 维护 相关路由
  */
 Route::group('system', function () {
-    //云存储列表
-    Route::get('config/storage/save_type/:type', 'v1.setting.SystemStorage/uploadType')->name('SystemStorageUploadType')->option(['real_name' => '选择存储方式']);
-    //云存储列表
-    Route::get('config/storage', 'v1.setting.SystemStorage/index')->name('SystemStorageIndex')->option(['real_name' => '云存储列表']);
-    //获取云存储创建表单
-    Route::get('config/storage/create/:type', 'v1.setting.SystemStorage/create')->name('SystemStorageCreate')->option(['real_name' => '获取云存储创建表单']);
-    //获取云存储配置表单
-    Route::get('config/storage/form/:type', 'v1.setting.SystemStorage/getConfigForm')->name('getConfigForm')->option(['real_name' => '获取云存储配置表单']);
-    //获取云存储配置
-    Route::get('config/storage/config', 'v1.setting.SystemStorage/getConfig')->name('SystemStorageConfig')->option(['real_name' => '获取云存储配置']);
-    //保存云存储配置
-    Route::post('config/storage/config', 'v1.setting.SystemStorage/saveConfig')->name('SystemStorageSaveConfig')->option(['real_name' => '保存云存储配置']);
-    //同步云存储列表
-    Route::put('config/storage/synch/:type', 'v1.setting.SystemStorage/synch')->name('SystemStorageSynch')->option(['real_name' => '同步云存储列表']);
-    //获取修改云存储域名表单
-    Route::get('config/storage/domain/:id', 'v1.setting.SystemStorage/getUpdateDomainForm')->name('getUpdateDomainForm')->option(['real_name' => '获取修改云存储域名表单']);
-    //修改云存储域名
-    Route::post('config/storage/domain/:id', 'v1.setting.SystemStorage/updateDomain')->name('updateDomain')->option(['real_name' => '修改云存储域名']);
-    //保存云存储数据
-    Route::post('config/storage/:type', 'v1.setting.SystemStorage/save')->name('SystemStorageSave')->option(['real_name' => '保存云存储数据']);
-    //删除云存储
-    Route::delete('config/storage/:id', 'v1.setting.SystemStorage/delete')->name('SystemStorageDelete')->option(['real_name' => '删除云存储']);
-    //修改云存储状态
-    Route::put('config/storage/status/:id', 'v1.setting.SystemStorage/status')->name('SystemStorageStatus')->option(['real_name' => '修改云存储状态']);
-    //系统日志
-    Route::get('log', 'v1.system.SystemLog/index')->name('SystemLog')->option(['real_name' => '系统日志']);
-    //系统日志管理员搜索条件
-    Route::get('log/search_admin', 'v1.system.SystemLog/search_admin')->option(['real_name' => '系统日志管理员搜索条件']);
-    //文件校验
-    Route::get('file', 'v1.system.SystemFile/index')->name('SystemFile')->option(['real_name' => '文件校验']);
-    //数据所有表
-    Route::get('backup', 'v1.system.SystemDatabackup/index')->option(['real_name' => '数据库所有表']);
-    //数据备份详情
-    Route::get('backup/read', 'v1.system.SystemDatabackup/read')->option(['real_name' => '数据备份详情']);
-    //更新数据表或者表字段备注
-    Route::post('database/update_mark', 'v1.system.SystemDatabackup/updateMark')->option(['real_name' => '更新数据表或者表字段备注']);
-    //数据备份 优化表
-    Route::put('backup/optimize', 'v1.system.SystemDatabackup/optimize')->option(['real_name' => '数据备份优化表']);
-    //数据备份 修复表
-    Route::put('backup/repair', 'v1.system.SystemDatabackup/repair')->option(['real_name' => '数据备份修复表']);
-    //数据备份 备份表
-    Route::put('backup/backup', 'v1.system.SystemDatabackup/backup')->option(['real_name' => '数据备份备份表']);
-    //备份记录
-    Route::get('backup/file_list', 'v1.system.SystemDatabackup/fileList')->option(['real_name' => '数据库备份记录']);
-    //删除备份记录
-    Route::delete('backup/del_file', 'v1.system.SystemDatabackup/delFile')->option(['real_name' => '删除数据库备份记录']);
-    //导入备份记录表
-    Route::post('backup/import', 'v1.system.SystemDatabackup/import')->option(['real_name' => '导入数据库备份记录']);
-    //下载备份记录表
-//        Route::get('backup/download', 'v1.system.SystemDatabackup/downloadFile');
-    //清除用户数据
-    Route::get('clear/:type', 'v1.system.SystemClearData/index')->option(['real_name' => '清除用户数据']);
-    //清除缓存
-    Route::get('refresh_cache/cache', 'v1.system.Clear/refresh_cache')->option(['real_name' => '清除系统缓存']);
-    //清除日志
-    Route::get('refresh_cache/log', 'v1.system.Clear/delete_log')->option(['real_name' => '清除系统日志']);
-    //域名替换接口
-    Route::post('replace_site_url', 'v1.system.SystemClearData/replaceSiteUrl')->option(['real_name' => '域名替换']);
-    //获取APP版本列表
-    Route::get('version_list', 'v1.system.AppVersion/list')->option(['real_name' => '获取APP版本列表']);
-    //添加版本信息
-    Route::get('version_crate/:id', 'v1.system.AppVersion/crate')->option(['real_name' => '添加版本']);
-    //添加版本信息
-    Route::post('version_save', 'v1.system.AppVersion/save')->option(['real_name' => '添加版本']);
 
-    //升级状态
-    Route::get('upgrade_status', 'UpgradeController/upgradeStatus')->option(['real_name' => '升级状态']);
-    //升级包列表
-    Route::get('upgrade/list', 'UpgradeController/upgradeList')->option(['real_name' => '升级包列表']);
-    //可升级包列表
-    Route::get('upgradeable/list', 'UpgradeController/upgradeableList')->option(['real_name' => '可升级包列表']);
-    //升级协议
-    Route::get('upgrade/agreement', 'UpgradeController/agreement')->option(['real_name' => '升级协议']);
-    //升级包下载
-    Route::post('upgrade_download/:package_key', 'UpgradeController/download')->option(['real_name' => '升级包下载']);
-    //升级进度
-    Route::get('upgrade_progress', 'UpgradeController/progress')->option(['real_name' => '升级进度']);
-    //升级记录
-    Route::get('upgrade_log/list', 'UpgradeController/upgradeLogList')->option(['real_name' => '升级记录']);
-    //导出备份项目
-    Route::get('upgrade_export/:id/:type', 'UpgradeController/export')->option(['real_name' => '导出备份']);
-    //文件管理登录
-    Route::post('file/login', 'v1.system.SystemFile/login')->option(['real_name' => '文件管理登录']);
+    /** 存储配置 */
+    Route::group(function () {
+        //云存储列表
+        Route::get('config/storage/save_type/:type', 'v1.setting.SystemStorage/uploadType')->name('SystemStorageUploadType')->option(['real_name' => '选择存储方式']);
+        //云存储列表
+        Route::get('config/storage', 'v1.setting.SystemStorage/index')->name('SystemStorageIndex')->option(['real_name' => '云存储列表']);
+        //获取云存储创建表单
+        Route::get('config/storage/create/:type', 'v1.setting.SystemStorage/create')->name('SystemStorageCreate')->option(['real_name' => '获取云存储创建表单']);
+        //获取云存储配置表单
+        Route::get('config/storage/form/:type', 'v1.setting.SystemStorage/getConfigForm')->name('getConfigForm')->option(['real_name' => '获取云存储配置表单']);
+        //获取云存储配置
+        Route::get('config/storage/config', 'v1.setting.SystemStorage/getConfig')->name('SystemStorageConfig')->option(['real_name' => '获取云存储配置']);
+        //保存云存储配置
+        Route::post('config/storage/config', 'v1.setting.SystemStorage/saveConfig')->name('SystemStorageSaveConfig')->option(['real_name' => '保存云存储配置']);
+        //同步云存储列表
+        Route::put('config/storage/synch/:type', 'v1.setting.SystemStorage/synch')->name('SystemStorageSynch')->option(['real_name' => '同步云存储列表']);
+        //获取修改云存储域名表单
+        Route::get('config/storage/domain/:id', 'v1.setting.SystemStorage/getUpdateDomainForm')->name('getUpdateDomainForm')->option(['real_name' => '获取修改云存储域名表单']);
+        //修改云存储域名
+        Route::post('config/storage/domain/:id', 'v1.setting.SystemStorage/updateDomain')->name('updateDomain')->option(['real_name' => '修改云存储域名']);
+        //保存云存储数据
+        Route::post('config/storage/:type', 'v1.setting.SystemStorage/save')->name('SystemStorageSave')->option(['real_name' => '保存云存储数据']);
+        //删除云存储
+        Route::delete('config/storage/:id', 'v1.setting.SystemStorage/delete')->name('SystemStorageDelete')->option(['real_name' => '删除云存储']);
+        //修改云存储状态
+        Route::put('config/storage/status/:id', 'v1.setting.SystemStorage/status')->name('SystemStorageStatus')->option(['real_name' => '修改云存储状态']);
+    })->option(['parent' => 'system', 'cate_name' => '存储配置']);
+
+    /** 系统日志 */
+    Route::group(function () {
+        //系统日志
+        Route::get('log', 'v1.system.SystemLog/index')->name('SystemLog')->option(['real_name' => '系统日志']);
+        //系统日志管理员搜索条件
+        Route::get('log/search_admin', 'v1.system.SystemLog/search_admin')->option(['real_name' => '系统日志管理员搜索条件']);
+        //文件校验
+        Route::get('file', 'v1.system.SystemFile/index')->name('SystemFile')->option(['real_name' => '文件校验']);
+    })->option(['parent' => 'system', 'cate_name' => '系统日志']);
+
+
+    /** 数据备份 */
+    Route::group(function () {
+        //数据所有表
+        Route::get('backup', 'v1.system.SystemDatabackup/index')->option(['real_name' => '数据库所有表']);
+        //数据备份详情
+        Route::get('backup/read', 'v1.system.SystemDatabackup/read')->option(['real_name' => '数据备份详情']);
+        //更新数据表或者表字段备注
+        Route::post('database/update_mark', 'v1.system.SystemDatabackup/updateMark')->option(['real_name' => '更新数据表或者表字段备注']);
+        //数据备份 优化表
+        Route::put('backup/optimize', 'v1.system.SystemDatabackup/optimize')->option(['real_name' => '数据备份优化表']);
+        //数据备份 修复表
+        Route::put('backup/repair', 'v1.system.SystemDatabackup/repair')->option(['real_name' => '数据备份修复表']);
+        //数据备份 备份表
+        Route::put('backup/backup', 'v1.system.SystemDatabackup/backup')->option(['real_name' => '数据备份备份表']);
+        //备份记录
+        Route::get('backup/file_list', 'v1.system.SystemDatabackup/fileList')->option(['real_name' => '数据库备份记录']);
+        //删除备份记录
+        Route::delete('backup/del_file', 'v1.system.SystemDatabackup/delFile')->option(['real_name' => '删除数据库备份记录']);
+        //导入备份记录表
+        Route::post('backup/import', 'v1.system.SystemDatabackup/import')->option(['real_name' => '导入数据库备份记录']);
+        //下载备份记录表
+        //Route::get('backup/download', 'v1.system.SystemDatabackup/downloadFile');
+    })->option(['parent' => 'system', 'cate_name' => '数据备份']);
+
+    /** 数据清除 */
+    Route::group(function () {
+        //清除用户数据
+        Route::get('clear/:type', 'v1.system.SystemClearData/index')->option(['real_name' => '清除用户数据']);
+        //清除缓存
+        Route::get('refresh_cache/cache', 'v1.system.Clear/refresh_cache')->option(['real_name' => '清除系统缓存']);
+        //清除日志
+        Route::get('refresh_cache/log', 'v1.system.Clear/delete_log')->option(['real_name' => '清除系统日志']);
+        //域名替换接口
+        Route::post('replace_site_url', 'v1.system.SystemClearData/replaceSiteUrl')->option(['real_name' => '域名替换']);
+        //获取APP版本列表
+        Route::get('version_list', 'v1.system.AppVersion/list')->option(['real_name' => '获取APP版本列表']);
+        //添加版本信息
+        Route::get('version_crate/:id', 'v1.system.AppVersion/crate')->option(['real_name' => '添加版本']);
+        //添加版本信息
+        Route::post('version_save', 'v1.system.AppVersion/save')->option(['real_name' => '添加版本']);
+    })->option(['parent' => 'system', 'cate_name' => '数据清除']);
+
+    /** 在线升级 */
+    Route::group(function () {
+        //升级状态
+        Route::get('upgrade_status', 'UpgradeController/upgradeStatus')->option(['real_name' => '升级状态']);
+        //升级包列表
+        Route::get('upgrade/list', 'UpgradeController/upgradeList')->option(['real_name' => '升级包列表']);
+        //可升级包列表
+        Route::get('upgradeable/list', 'UpgradeController/upgradeableList')->option(['real_name' => '可升级包列表']);
+        //升级协议
+        Route::get('upgrade/agreement', 'UpgradeController/agreement')->option(['real_name' => '升级协议']);
+        //升级包下载
+        Route::post('upgrade_download/:package_key', 'UpgradeController/download')->option(['real_name' => '升级包下载']);
+        //升级进度
+        Route::get('upgrade_progress', 'UpgradeController/progress')->option(['real_name' => '升级进度']);
+        //升级记录
+        Route::get('upgrade_log/list', 'UpgradeController/upgradeLogList')->option(['real_name' => '升级记录']);
+        //导出备份项目
+        Route::get('upgrade_export/:id/:type', 'UpgradeController/export')->option(['real_name' => '导出备份']);
+        //文件管理登录
+        Route::post('file/login', 'v1.system.SystemFile/login')->option(['real_name' => '文件管理登录']);
+    })->option(['parent' => 'system', 'cate_name' => '在线升级']);
 
     /** 定时任务 */
-    //定时任务列表
-    Route::get('crontab/list', 'v1.system.SystemCrontab/getTimerList')->option(['real_name' => '定时任务列表']);
-    //定时任务类型
-    Route::get('crontab/mark', 'v1.system.SystemCrontab/getMarkList')->option(['real_name' => '定时任务类型']);
-    //定时任务详情
-    Route::get('crontab/info/:id', 'v1.system.SystemCrontab/getTimerInfo')->option(['real_name' => '定时任务详情']);
-    //定时任务添加编辑
-    Route::post('crontab/save', 'v1.system.SystemCrontab/saveTimer')->option(['real_name' => '定时任务添加编辑']);
-    //删除定时任务
-    Route::delete('crontab/del/:id', 'v1.system.SystemCrontab/delTimer')->option(['real_name' => '删除定时任务']);
-    //定时任务是否开启开关
-    Route::get('crontab/set_open/:id/:is_open', 'v1.system.SystemCrontab/setTimerStatus')->option(['real_name' => '定时任务是否开启开关']);
-    //同步路由接口
-    Route::get('route/sync_route/[:appName]', 'v1.setting.SystemRoute/syncRoute')->option(['real_name' => '同步路由']);
-    //获取路由tree行数据
-    Route::get('route/tree', 'v1.setting.SystemRoute/tree')->option(['real_name' => '获取路由tree']);
-    //权限路由
-    Route::delete('route/:id', 'v1.setting.SystemRoute/delete')->option(['real_name' => '删除路由权限']);
-    //查看路由权限
-    Route::get('route/:id', 'v1.setting.SystemRoute/read')->option(['real_name' => '查看路由权限']);
-    //保存路由权限
-    Route::post('route/:id', 'v1.setting.SystemRoute/save')->option(['real_name' => '保存路由权限']);
-    //路由分类
-    Route::resource('route_cate', 'v1.setting.SystemRouteCate')->except(['read'])->option([
-        'real_name' => [
-            'index' => '获取路由分类列表',
-            'create' => '获取创建路由分类表单',
-            'save' => '保存路由分类',
-            'edit' => '获取修改路由分类表单',
-            'update' => '修改路由分类',
-            'delete' => '删除路由分类'
-        ],
-    ]);
-    //保存CRUD修改的文件
-    Route::post('crud/save_file/:id', 'v1.setting.SystemCrud/savefile')->option(['real_name' => '保存CRUD修改的文件']);
-    //获取CRUD配置
-    Route::get('crud/config/:tableName', 'v1.setting.SystemCrud/getRouteList')->option(['real_name' => '获取CRUD配置', 'is_common' => true]);
-    //下载生成的文件
-    Route::get('crud/download/:id', 'v1.setting.SystemCrud/download')->option(['real_name' => '下载生成的文件']);
-    //获取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
-    Route::delete('crud/:id', 'v1.setting.SystemCrud/delete')->option(['real_name' => '删除CRUD']);
-    //查看CRUD
-    Route::get('crud/:id', 'v1.setting.SystemCrud/read')->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']);
+    Route::group(function () {
+        //定时任务列表
+        Route::get('crontab/list', 'v1.system.SystemCrontab/getTimerList')->option(['real_name' => '定时任务列表']);
+        //定时任务类型
+        Route::get('crontab/mark', 'v1.system.SystemCrontab/getMarkList')->option(['real_name' => '定时任务类型']);
+        //定时任务详情
+        Route::get('crontab/info/:id', 'v1.system.SystemCrontab/getTimerInfo')->option(['real_name' => '定时任务详情']);
+        //定时任务添加编辑
+        Route::post('crontab/save', 'v1.system.SystemCrontab/saveTimer')->option(['real_name' => '定时任务添加编辑']);
+        //删除定时任务
+        Route::delete('crontab/del/:id', 'v1.system.SystemCrontab/delTimer')->option(['real_name' => '删除定时任务']);
+        //定时任务是否开启开关
+        Route::get('crontab/set_open/:id/:is_open', 'v1.system.SystemCrontab/setTimerStatus')->option(['real_name' => '定时任务是否开启开关']);
+    })->option(['parent' => 'system', 'cate_name' => '定时任务']);
+
+    /** 系统路由 */
+    Route::group(function () {
+        //同步路由接口
+        Route::get('route/sync_route/[:appName]', 'v1.setting.SystemRoute/syncRoute')->option(['real_name' => '同步路由']);
+        //获取路由tree行数据
+        Route::get('route/tree', 'v1.setting.SystemRoute/tree')->option(['real_name' => '获取路由tree']);
+        //权限路由
+        Route::delete('route/:id', 'v1.setting.SystemRoute/delete')->option(['real_name' => '删除路由权限']);
+        //查看路由权限
+        Route::get('route/:id', 'v1.setting.SystemRoute/read')->option(['real_name' => '查看路由权限']);
+        //保存路由权限
+        Route::post('route/:id', 'v1.setting.SystemRoute/save')->option(['real_name' => '保存路由权限']);
+        //路由分类
+        Route::resource('route_cate', 'v1.setting.SystemRouteCate')->except(['read'])->option([
+            'real_name' => [
+                'index' => '获取路由分类列表',
+                'create' => '获取创建路由分类表单',
+                'save' => '保存路由分类',
+                'edit' => '获取修改路由分类表单',
+                'update' => '修改路由分类',
+                'delete' => '删除路由分类'
+            ],
+        ]);
+    })->option(['parent' => 'system', 'cate_name' => '系统路由']);
+
+    /** 代码生成 */
+    Route::group(function () {
+        //保存CRUD修改的文件
+        Route::post('crud/save_file/:id', 'v1.setting.SystemCrud/savefile')->option(['real_name' => '保存CRUD修改的文件']);
+        //获取CRUD配置
+        Route::get('crud/config/:tableName', 'v1.setting.SystemCrud/getRouteList')->option(['real_name' => '获取CRUD配置', 'is_common' => true]);
+        //下载生成的文件
+        Route::get('crud/download/:id', 'v1.setting.SystemCrud/download')->option(['real_name' => '下载生成的文件']);
+        //获取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
+        Route::delete('crud/:id', 'v1.setting.SystemCrud/delete')->option(['real_name' => '删除CRUD']);
+        //查看CRUD
+        Route::get('crud/:id', 'v1.setting.SystemCrud/read')->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']);
+    })->option(['parent' => 'system', 'cate_name' => '代码生成']);
+
 })->middleware([
     \app\http\middleware\AllowOriginMiddleware::class,
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,

+ 162 - 141
crmeb/app/adminapi/route/user.php

@@ -14,150 +14,171 @@ use think\facade\Route;
  * 用户模块 相关路由
  */
 Route::group('user', function () {
-    //用户管理资源路由
-    Route::resource('user', 'v1.user.user')->option([
-        'real_name' => [
-            'index' => '获取用户列表',
-            'create' => '获取用户表单',
-            'save' => '保存用户',
-            'read' => '获取用户详情',
-            'edit' => '获取修改用户表单',
-            'update' => '修改用户',
-            'delete' => '删除用户'
-        ]
-    ]);
-    //添加用户保存
-    Route::post('user/save', 'v1.user.user/save_info')->option(['real_name' => '添加用户']);
-    //同步微信用户
-    Route::get('user/syncUsers', 'v1.user.user/syncWechatUsers')->option(['real_name' => '同步微信用户']);
-    //用户信息
-    Route::get('user/user_save_info/:uid', 'v1.user.user/userSaveInfo')->option(['real_name' => '添加编辑用户信息时候的信息']);
-    //赠送会员等级
-    Route::get('give_level/:id', 'v1.user.user/give_level')->option(['real_name' => '赠送用户等级']);
-    //执行赠送会员等级
-    Route::put('save_give_level/:id', 'v1.user.user/save_give_level')->option(['real_name' => '执行赠送用户等级']);
-    //赠送付费会员时长
-    Route::get('give_level_time/:id', 'v1.user.user/give_level_time')->option(['real_name' => '赠送付费会员时长']);
-    //执行赠送付费会员时长
-    Route::put('save_give_level_time/:id', 'v1.user.user/save_give_level_time')->option(['real_name' => '执行赠送付费会员时长']);
-    //清除会员等级
-    Route::delete('del_level/:id', 'v1.user.user/del_level')->option(['real_name' => '清除用户等级']);
-    //编辑其他
-    Route::get('edit_other/:id', 'v1.user.user/edit_other')->option(['real_name' => '修改积分余额表单']);
-    //编辑其他
-    Route::put('update_other/:id', 'v1.user.user/update_other')->option(['real_name' => '修改积分余额']);
-    //修改用户状态
-    Route::put('set_status/:status/:id', 'v1.user.user/set_status')->option(['real_name' => '修改用户状态']);
-    //获取指定用户的信息
-    Route::get('one_info/:id', 'v1.user.user/oneUserInfo')->option(['real_name' => '获取指定用户的信息']);
-    /*会员设置模块*/
-    //获取添加会员等级表单
-    Route::get('user_level/create', 'v1.user.UserLevel/create')->option(['real_name' => '添加用户等级表单']);
-    //添加或修改会员等级
-    Route::post('user_level', 'v1.user.UserLevel/save')->option(['real_name' => '添加或修改用户等级']);
-    //等级详情
-    Route::get('user_level/read/:id', 'v1.user.UserLevel/read')->option(['real_name' => '用户等级详情']);
-    //获取系统设置的vip列表
-    Route::get('user_level/vip_list', 'v1.user.UserLevel/get_system_vip_list')->option(['real_name' => '获取系统设置的用户等级列表']);
-    //删除会员等级
-    Route::put('user_level/delete/:id', 'v1.user.UserLevel/delete')->option(['real_name' => '删除用户等级']);
-    //设置单个商品上架|下架
-    Route::put('user_level/set_show/:id/:is_show', 'v1.user.UserLevel/set_show')->option(['real_name' => '设置用户等级上下架']);
-    //等级列表快速编辑
-    Route::put('user_level/set_value/:id', 'v1.user.UserLevel/set_value')->option(['real_name' => '用户等级列表快速编辑']);
-    //等级任务列表
-    Route::get('user_level/task/:level_id', 'v1.user.UserLevel/get_task_list')->option(['real_name' => '用户等级任务列表']);
-    //快速编辑等级任务
-    Route::put('user_level/set_task/:id', 'v1.user.UserLevel/set_task_value')->option(['real_name' => '快速编辑用户等级任务']);
-    //设置等级任务显示|隐藏
-    Route::put('user_level/set_task_show/:id/:is_show', 'v1.user.UserLevel/set_task_show')->option(['real_name' => '设置用户等级任务显示|隐藏']);
-    //设置是否务必达成
-    Route::put('user_level/set_task_must/:id/:is_must', 'v1.user.UserLevel/set_task_must')->option(['real_name' => '设置用户等级任务是否务必达成']);
-    //添加等级任务表单
-    Route::get('user_level/create_task', 'v1.user.UserLevel/create_task')->option(['real_name' => '添加用户等级任务表单']);
-    //保存或者修改任务
-    Route::post('user_level/save_task', 'v1.user.UserLevel/save_task')->option(['real_name' => '保存或修改用户等级任务']);
-    //删除任务
-    Route::delete('user_level/delete_task/:id', 'v1.user.UserLevel/delete_task')->option(['real_name' => '删除用户等级任务']);
-    //获取用户分组列表
-    Route::get('user_group/list', 'v1.user.UserGroup/index')->option(['real_name' => '获取用户分组列表']);
-    //添加修改分组表单
-    Route::get('user_group/add/:id', 'v1.user.UserGroup/add')->option(['real_name' => '添加修改分组表单']);
-    //保存分组表单数据
-    Route::post('user_group/save', 'v1.user.UserGroup/save')->option(['real_name' => '保存分组表单数据']);
-    //删除分组数据
-    Route::delete('user_group/del/:id', 'v1.user.UserGroup/delete')->option(['real_name' => '删除用户分组数据']);
-    //设置会员分组
-    Route::post('set_group', 'v1.user.user/set_group')->option(['real_name' => '用户分组表单']);
-    //执行设置会员分组
-    Route::put('save_set_group', 'v1.user.user/save_set_group')->option(['real_name' => '设置用户分组']);
-    //会员标签列表
-    Route::get('user_label', 'v1.user.UserLabel/index')->option(['real_name' => '用户标签列表']);
-    //会员标签添加修改表单
-    Route::get('user_label/add/:id', 'v1.user.UserLabel/add')->option(['real_name' => '添加或修改用户标签表单']);
-    //保存标签表单数据
-    Route::post('user_label/save', 'v1.user.UserLabel/save')->option(['real_name' => '添加或修改用户标签']);
-    //删除会员标签
-    Route::delete('user_label/del/:id', 'v1.user.UserLabel/delete')->option(['real_name' => '删除用户标签']);
-    //设置会员分组
-    Route::post('set_label', 'v1.user.user/set_label')->option(['real_name' => '设置用户标签']);
-    //获取用户标签
-    Route::get('label/:uid', 'v1.user.UserLabel/getUserLabel')->option(['real_name' => '获取用户标签']);
-    //设置和取消用户标签
-    Route::post('label/:uid', 'v1.user.UserLabel/setUserLabel')->option(['real_name' => '设置和取消用户标签']);
-    //设置会员分组
-    Route::put('save_set_label', 'v1.user.user/save_set_label')->option(['real_name' => '保存用户标签']);
-    //标签分类
-    Route::resource('user_label_cate', 'v1.user.UserLabelCate')->except(['read'])->option([
-        'real_name' => [
-            'index' => '获取标签分类',
-            'create' => '获取标签分类表单',
-            'save' => '保存标签分类',
-            'edit' => '获取修改标签分类表单',
-            'update' => '修改标签分类',
-            'delete' => '删除标签分类'
-        ]
-    ]);
-    Route::get('user_label_cate/all', 'v1.user.user_label_cate/getAll')->option(['real_name' => '获取用户标签分类全部']);
 
-    //会员卡批次列表资源
-    Route::get('member_batch/index', 'v1.user.member.MemberCardBatch/index')->option(['real_name' => '会员卡批次列表']);
-    //添加会员卡批次
-    Route::post('member_batch/save/:id', 'v1.user.member.MemberCardBatch/save')->option(['real_name' => '添加会员卡批次']);
-    //会员卡列表
-    Route::get('member_card/index/:card_batch_id', 'v1.user.member.MemberCard/index')->option(['real_name' => '会员卡列表']);
-    //会员卡修改状态
-    Route::get('member_card/set_status', 'v1.user.member.MemberCard/set_status')->option(['real_name' => '会员卡修改状态']);
-    //列表单字段修改操作
-    Route::get('member_batch/set_value/:id', 'v1.user.member.MemberCardBatch/set_value')->option(['real_name' => '会员卡批次快速修改']);
-    //会员类型
-    Route::get('member/ship', 'v1.user.member.MemberCard/member_ship')->option(['real_name' => '会员类型列表']);
-    //会员类型删除
-    Route::delete('member_ship/delete/:id', 'v1.user.member.MemberCard/delete')->option(['real_name' => '会员类型删除']);
-    //会员类型修改状态
-    Route::get('member_ship/set_ship_status', 'v1.user.member.MemberCard/set_ship_status')->option(['real_name' => '会员类型修改状态']);
-    //会员卡类型编辑
-    Route::post('member_ship/save/:id', 'v1.user.member.MemberCard/ship_save')->option(['real_name' => '会员卡类型编辑']);
-    //兑换会员卡二维码
-    Route::get('member_scan', 'v1.user.member.MemberCardBatch/member_scan')->option(['real_name' => '兑换会员卡二维码']);
-    //会员记录
-    Route::get('member/record', 'v1.user.member.MemberCard/member_record')->option(['real_name' => '会员记录']);
-    //会员权益
-    Route::get('member/right', 'v1.user.member.MemberCard/member_right')->option(['real_name' => '会员权益列表']);
-    //会员权益修改
-    Route::post('member_right/save/:id', 'v1.user.member.MemberCard/right_save')->option(['real_name' => '会员权益修改']);
-    //会员协议
-    Route::post('member_agreement/save/:id', 'v1.user.member.MemberCardBatch/save_member_agreement')->option(['real_name' => '会员协议']);
-    //获取会员协议
-    Route::get('member/agreement', 'v1.user.member.MemberCardBatch/getAgreement')->option(['real_name' => '获取会员协议']);
-    //用户标签(分类)树形列表
-    Route::get('user_tree_label', 'v1.user.UserLabel/tree_list')->option(['real_name' => '用户标签(分类)树形列表']);
+    /** 用户 */
+    Route::group(function () {
+        //用户管理资源路由
+        Route::resource('user', 'v1.user.User')->option([
+            'real_name' => [
+                'index' => '获取用户列表',
+                'create' => '获取用户表单',
+                'save' => '保存用户',
+                'read' => '获取用户详情',
+                'edit' => '获取修改用户表单',
+                'update' => '修改用户',
+                'delete' => '删除用户'
+            ]
+        ]);
+        //添加用户保存
+        Route::post('user/save', 'v1.user.User/save_info')->option(['real_name' => '添加用户']);
+        //同步微信用户
+        Route::get('user/syncUsers', 'v1.user.User/syncWechatUsers')->option(['real_name' => '同步微信用户']);
+        //用户信息
+        Route::get('user/user_save_info/:uid', 'v1.user.User/userSaveInfo')->option(['real_name' => '添加编辑用户信息时候的信息']);
+        //赠送会员等级
+        Route::get('give_level/:id', 'v1.user.User/give_level')->option(['real_name' => '赠送用户等级']);
+        //执行赠送会员等级
+        Route::put('save_give_level/:id', 'v1.user.User/save_give_level')->option(['real_name' => '执行赠送用户等级']);
+        //赠送付费会员时长
+        Route::get('give_level_time/:id', 'v1.user.User/give_level_time')->option(['real_name' => '赠送付费会员时长']);
+        //执行赠送付费会员时长
+        Route::put('save_give_level_time/:id', 'v1.user.User/save_give_level_time')->option(['real_name' => '执行赠送付费会员时长']);
+        //清除会员等级
+        Route::delete('del_level/:id', 'v1.user.User/del_level')->option(['real_name' => '清除用户等级']);
+        //编辑其他
+        Route::get('edit_other/:id', 'v1.user.User/edit_other')->option(['real_name' => '修改积分余额表单']);
+        //编辑其他
+        Route::put('update_other/:id', 'v1.user.User/update_other')->option(['real_name' => '修改积分余额']);
+        //修改用户状态
+        Route::put('set_status/:status/:id', 'v1.user.User/set_status')->option(['real_name' => '修改用户状态']);
+        //获取指定用户的信息
+        Route::get('one_info/:id', 'v1.user.User/oneUserInfo')->option(['real_name' => '获取指定用户的信息']);
+        //设置会员分组
+        Route::post('set_group', 'v1.user.User/set_group')->option(['real_name' => '用户分组表单']);
+        //执行设置会员分组
+        Route::put('save_set_group', 'v1.user.User/save_set_group')->option(['real_name' => '设置用户分组']);
+        //设置会员标签
+        Route::post('set_label', 'v1.user.User/set_label')->option(['real_name' => '设置用户标签']);
+    })->option(['parent' => 'user', 'cate_name' => '用户']);
+
+    /** 用户等级 */
+    Route::group(function () {
+        //获取添加会员等级表单
+        Route::get('user_level/create', 'v1.user.UserLevel/create')->option(['real_name' => '添加用户等级表单']);
+        //添加或修改会员等级
+        Route::post('user_level', 'v1.user.UserLevel/save')->option(['real_name' => '添加或修改用户等级']);
+        //等级详情
+        Route::get('user_level/read/:id', 'v1.user.UserLevel/read')->option(['real_name' => '用户等级详情']);
+        //获取系统设置的vip列表
+        Route::get('user_level/vip_list', 'v1.user.UserLevel/get_system_vip_list')->option(['real_name' => '获取系统设置的用户等级列表']);
+        //删除会员等级
+        Route::put('user_level/delete/:id', 'v1.user.UserLevel/delete')->option(['real_name' => '删除用户等级']);
+        //设置单个商品上架|下架
+        Route::put('user_level/set_show/:id/:is_show', 'v1.user.UserLevel/set_show')->option(['real_name' => '设置用户等级上下架']);
+        //等级列表快速编辑
+        Route::put('user_level/set_value/:id', 'v1.user.UserLevel/set_value')->option(['real_name' => '用户等级列表快速编辑']);
+        //等级任务列表
+        Route::get('user_level/task/:level_id', 'v1.user.UserLevel/get_task_list')->option(['real_name' => '用户等级任务列表']);
+        //快速编辑等级任务
+        Route::put('user_level/set_task/:id', 'v1.user.UserLevel/set_task_value')->option(['real_name' => '快速编辑用户等级任务']);
+        //设置等级任务显示|隐藏
+        Route::put('user_level/set_task_show/:id/:is_show', 'v1.user.UserLevel/set_task_show')->option(['real_name' => '设置用户等级任务显示|隐藏']);
+        //设置是否务必达成
+        Route::put('user_level/set_task_must/:id/:is_must', 'v1.user.UserLevel/set_task_must')->option(['real_name' => '设置用户等级任务是否务必达成']);
+        //添加等级任务表单
+        Route::get('user_level/create_task', 'v1.user.UserLevel/create_task')->option(['real_name' => '添加用户等级任务表单']);
+        //保存或者修改任务
+        Route::post('user_level/save_task', 'v1.user.UserLevel/save_task')->option(['real_name' => '保存或修改用户等级任务']);
+        //删除任务
+        Route::delete('user_level/delete_task/:id', 'v1.user.UserLevel/delete_task')->option(['real_name' => '删除用户等级任务']);
+    })->option(['parent' => 'user', 'cate_name' => '用户等级']);
+
+    /** 用户分组 */
+    Route::group(function () {
+        //获取用户分组列表
+        Route::get('user_group/list', 'v1.user.UserGroup/index')->option(['real_name' => '获取用户分组列表']);
+        //添加修改分组表单
+        Route::get('user_group/add/:id', 'v1.user.UserGroup/add')->option(['real_name' => '添加修改分组表单']);
+        //保存分组表单数据
+        Route::post('user_group/save', 'v1.user.UserGroup/save')->option(['real_name' => '保存分组表单数据']);
+        //删除分组数据
+        Route::delete('user_group/del/:id', 'v1.user.UserGroup/delete')->option(['real_name' => '删除用户分组数据']);
+    })->option(['parent' => 'user', 'cate_name' => '用户分组']);
+
+    /** 用户标签 */
+    Route::group(function () {
+        //会员标签列表
+        Route::get('user_label', 'v1.user.UserLabel/index')->option(['real_name' => '用户标签列表']);
+        //会员标签添加修改表单
+        Route::get('user_label/add/:id', 'v1.user.UserLabel/add')->option(['real_name' => '添加或修改用户标签表单']);
+        //保存标签表单数据
+        Route::post('user_label/save', 'v1.user.UserLabel/save')->option(['real_name' => '添加或修改用户标签']);
+        //删除会员标签
+        Route::delete('user_label/del/:id', 'v1.user.UserLabel/delete')->option(['real_name' => '删除用户标签']);
+        //获取用户标签
+        Route::get('label/:uid', 'v1.user.UserLabel/getUserLabel')->option(['real_name' => '获取用户标签']);
+        //设置和取消用户标签
+        Route::post('label/:uid', 'v1.user.UserLabel/setUserLabel')->option(['real_name' => '设置和取消用户标签']);
+        //设置会员分组
+        Route::put('save_set_label', 'v1.user.user/save_set_label')->option(['real_name' => '保存用户标签']);
+        //标签分类
+        Route::resource('user_label_cate', 'v1.user.UserLabelCate')->except(['read'])->option([
+            'real_name' => [
+                'index' => '获取标签分类',
+                'create' => '获取标签分类表单',
+                'save' => '保存标签分类',
+                'edit' => '获取修改标签分类表单',
+                'update' => '修改标签分类',
+                'delete' => '删除标签分类'
+            ]
+        ]);
+        Route::get('user_label_cate/all', 'v1.user.UserLabelCate/getAll')->option(['real_name' => '获取用户标签分类全部']);
+        //用户标签(分类)树形列表
+        Route::get('user_tree_label', 'v1.user.UserLabel/tree_list')->option(['real_name' => '用户标签(分类)树形列表']);
+    })->option(['parent' => 'user', 'cate_name' => '用户标签']);
+
+    /** 付费会员 */
+    Route::group(function () {
+        //会员卡批次列表资源
+        Route::get('member_batch/index', 'v1.user.member.MemberCardBatch/index')->option(['real_name' => '会员卡批次列表']);
+        //添加会员卡批次
+        Route::post('member_batch/save/:id', 'v1.user.member.MemberCardBatch/save')->option(['real_name' => '添加会员卡批次']);
+        //会员卡列表
+        Route::get('member_card/index/:card_batch_id', 'v1.user.member.MemberCard/index')->option(['real_name' => '会员卡列表']);
+        //会员卡修改状态
+        Route::get('member_card/set_status', 'v1.user.member.MemberCard/set_status')->option(['real_name' => '会员卡修改状态']);
+        //列表单字段修改操作
+        Route::get('member_batch/set_value/:id', 'v1.user.member.MemberCardBatch/set_value')->option(['real_name' => '会员卡批次快速修改']);
+        //会员类型
+        Route::get('member/ship', 'v1.user.member.MemberCard/member_ship')->option(['real_name' => '会员类型列表']);
+        //会员类型删除
+        Route::delete('member_ship/delete/:id', 'v1.user.member.MemberCard/delete')->option(['real_name' => '会员类型删除']);
+        //会员类型修改状态
+        Route::get('member_ship/set_ship_status', 'v1.user.member.MemberCard/set_ship_status')->option(['real_name' => '会员类型修改状态']);
+        //会员卡类型编辑
+        Route::post('member_ship/save/:id', 'v1.user.member.MemberCard/ship_save')->option(['real_name' => '会员卡类型编辑']);
+        //兑换会员卡二维码
+        Route::get('member_scan', 'v1.user.member.MemberCardBatch/member_scan')->option(['real_name' => '兑换会员卡二维码']);
+        //会员记录
+        Route::get('member/record', 'v1.user.member.MemberCard/member_record')->option(['real_name' => '会员记录']);
+        //会员权益
+        Route::get('member/right', 'v1.user.member.MemberCard/member_right')->option(['real_name' => '会员权益列表']);
+        //会员权益修改
+        Route::post('member_right/save/:id', 'v1.user.member.MemberCard/right_save')->option(['real_name' => '会员权益修改']);
+        //会员协议
+        Route::post('member_agreement/save/:id', 'v1.user.member.MemberCardBatch/save_member_agreement')->option(['real_name' => '会员协议']);
+        //获取会员协议
+        Route::get('member/agreement', 'v1.user.member.MemberCardBatch/getAgreement')->option(['real_name' => '获取会员协议']);
+    })->option(['parent' => 'user', 'cate_name' => '付费会员']);
+
 
     /** 用户注销 */
-    Route::get('cancel_list', 'v1.user.UserCancel/getCancelList')->option(['real_name' => '用户注销列表']);
-    Route::post('cancel/set_mark', 'v1.user.UserCancel/setMark')->option(['real_name' => '注销列表备注']);
-    Route::get('cancel/agree/:id', 'v1.user.UserCancel/agreeCancel')->option(['real_name' => '同意注销']);
-    Route::get('cancel/refuse/:id', 'v1.user.UserCancel/refuseCancel')->option(['real_name' => '拒绝注销']);
+    Route::group(function () {
+        Route::get('cancel_list', 'v1.user.UserCancel/getCancelList')->option(['real_name' => '用户注销列表']);
+        Route::post('cancel/set_mark', 'v1.user.UserCancel/setMark')->option(['real_name' => '注销列表备注']);
+        Route::get('cancel/agree/:id', 'v1.user.UserCancel/agreeCancel')->option(['real_name' => '同意注销']);
+        Route::get('cancel/refuse/:id', 'v1.user.UserCancel/refuseCancel')->option(['real_name' => '拒绝注销']);
+    })->option(['parent' => 'user', 'cate_name' => '用户注销']);
 
 })->middleware([
     \app\http\middleware\AllowOriginMiddleware::class,