app.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. use think\facade\Route;
  12. /**
  13. * 应用模块 相关路由
  14. */
  15. Route::group('app', function () {
  16. /** 公众号 */
  17. Route::group(function () {
  18. //菜单值
  19. Route::get('wechat/menu', 'v1.application.wechat.menus/index')->option(['real_name' => '微信公众号菜单列表']);
  20. //保存菜单
  21. Route::post('wechat/menu', 'v1.application.wechat.menus/save')->option(['real_name' => '保存微信公众号菜单']);
  22. //图文列表
  23. Route::get('wechat/news', 'v1.application.wechat.WechatNewsCategory/index')->option(['real_name' => '图文列表']);
  24. //详情
  25. Route::get('wechat/news/:id', 'v1.application.wechat.WechatNewsCategory/read')->option(['real_name' => '图文详情']);
  26. //保存图文
  27. Route::post('wechat/news', 'v1.application.wechat.WechatNewsCategory/save')->option(['real_name' => '保存图文']);
  28. //删除图文
  29. Route::delete('wechat/news/:id', 'v1.application.wechat.WechatNewsCategory/delete')->option(['real_name' => '删除图文']);
  30. //发送图文消息
  31. Route::post('wechat/push', 'v1.application.wechat.WechatNewsCategory/push')->option(['real_name' => '发送图文消息']);
  32. //关注回复
  33. Route::get('wechat/reply', 'v1.application.wechat.Reply/reply')->option(['real_name' => '关注回复']);
  34. //获取关注回复二维码
  35. Route::get('wechat/code_reply/:id', 'v1.application.wechat.Reply/code_reply')->option(['real_name' => '获取关注回复二维码']);
  36. //关键字回复列表
  37. Route::get('wechat/keyword', 'v1.application.wechat.Reply/index')->option(['real_name' => '关键字回复列表']);
  38. //关键字详情
  39. Route::get('wechat/keyword/:id', 'v1.application.wechat.Reply/read')->option(['real_name' => '关键字回复详情']);
  40. //保存关键字修改
  41. Route::post('wechat/keyword/:id', 'v1.application.wechat.Reply/save')->option(['real_name' => '保存关键字回复']);
  42. //删除关键字
  43. Route::delete('wechat/keyword/:id', 'v1.application.wechat.Reply/delete')->option(['real_name' => '删除关键字回复']);
  44. //修改关键字状态
  45. Route::put('wechat/keyword/set_status/:id/:status', 'v1.application.wechat.Reply/set_status')->option(['real_name' => '修改关键字回复状态']);
  46. //一键同步微信模版消息消息
  47. Route::get('wechat/syncSubscribe', 'v1.application.wechat.WechatTemplate/syncSubscribe')->name('syncSubscribe')->option(['real_name' => '一键同步模版消息']);
  48. })->option(['parent' => 'app', 'cate_name' => '公众号']);
  49. /** 小程序 */
  50. Route::group(function () {
  51. //一键同步订阅消息
  52. Route::get('routine/syncSubscribe', 'v1.application.routine.RoutineTemplate/syncSubscribe')->name('syncSubscribe')->option(['real_name' => '一键同步订阅消息']);
  53. //下载小程序模版页面数据
  54. Route::get('routine/info', 'v1.application.routine.RoutineTemplate/getDownloadInfo')->option(['real_name' => '下载小程序页面数据']);
  55. //下载小程序模版
  56. Route::post('routine/download', 'v1.application.routine.RoutineTemplate/downloadTemp')->option(['real_name' => '下载小程序模版']);
  57. // ==================== 小程序 CI 自动化上传 ====================
  58. //获取运行环境状态
  59. Route::get('routine/ci/environment', 'v1.application.routine.RoutineCI/environment')->option(['real_name' => '获取小程序CI运行环境']);
  60. //获取安装指南
  61. Route::get('routine/ci/guide', 'v1.application.routine.RoutineCI/installGuide')->option(['real_name' => '获取环境安装指南']);
  62. //获取上传配置
  63. Route::get('routine/ci/config', 'v1.application.routine.RoutineCI/uploadConfig')->option(['real_name' => '获取小程序上传配置']);
  64. //保存上传密钥
  65. Route::post('routine/ci/private_key', 'v1.application.routine.RoutineCI/savePrivateKey')->option(['real_name' => '保存小程序上传密钥']);
  66. //上传小程序代码
  67. Route::post('routine/ci/upload', 'v1.application.routine.RoutineCI/upload')->option(['real_name' => '上传小程序代码']);
  68. //获取预览二维码
  69. Route::post('routine/ci/preview', 'v1.application.routine.RoutineCI/preview')->option(['real_name' => '获取小程序预览二维码']);
  70. Route::get('routine/scheme_list', 'v1.application.routine.RoutineScheme/schemeList')->name('schemeList')->option(['real_name' => '小程序外链列表']);
  71. Route::get('routine/scheme_form/:id', 'v1.application.routine.RoutineScheme/schemeForm')->name('schemeForm')->option(['real_name' => '小程序外链添加修改表单']);
  72. Route::post('routine/scheme_save/:id', 'v1.application.routine.RoutineScheme/schemeSave')->name('schemeSave')->option(['real_name' => '小程序外链添加修改保存']);
  73. Route::delete('routine/scheme_del/:id', 'v1.application.routine.RoutineScheme/schemeDel')->name('schemeDel')->option(['real_name' => '小程序外链删除']);
  74. })->option(['parent' => 'app', 'cate_name' => '小程序']);
  75. /** 公众号渠道码 */
  76. Route::group(function () {
  77. Route::get('wechat_qrcode/cate/list', 'v1.application.wechat.WechatQrcode/getCateList')->option(['real_name' => '渠道码分类列表']);
  78. Route::get('wechat_qrcode/cate/create/:id', 'v1.application.wechat.WechatQrcode/createForm')->option(['real_name' => '渠道码分类添加编辑表单']);
  79. Route::post('wechat_qrcode/cate/save', 'v1.application.wechat.WechatQrcode/saveCate')->option(['real_name' => '渠道码分类保存']);
  80. Route::delete('wechat_qrcode/cate/del/:id', 'v1.application.wechat.WechatQrcode/delCate')->option(['real_name' => '渠道码分类删除']);
  81. Route::post('wechat_qrcode/save/:id', 'v1.application.wechat.WechatQrcode/saveQrcode')->option(['real_name' => '保存渠道码']);
  82. Route::get('wechat_qrcode/info/:id', 'v1.application.wechat.WechatQrcode/qrcodeInfo')->option(['real_name' => '渠道码详情']);
  83. Route::get('wechat_qrcode/list', 'v1.application.wechat.WechatQrcode/qrcodeList')->option(['real_name' => '渠道码列表']);
  84. Route::delete('wechat_qrcode/del/:id', 'v1.application.wechat.WechatQrcode/delQrcode')->option(['real_name' => '删除渠道码']);
  85. Route::put('wechat_qrcode/set_status/:id/:status', 'v1.application.wechat.WechatQrcode/setStatus')->option(['real_name' => '切换渠道码状态']);
  86. Route::get('wechat_qrcode/user_list/:qid', 'v1.application.wechat.WechatQrcode/userList')->option(['real_name' => '渠道码用户列表']);
  87. Route::get('wechat_qrcode/statistic/:qid', 'v1.application.wechat.WechatQrcode/qrcodeStatistic')->option(['real_name' => '渠道码统计']);
  88. })->option(['parent' => 'app', 'cate_name' => '公众号渠道码']);
  89. /** 客服相关 */
  90. Route::group(function () {
  91. //客服反馈接口
  92. Route::resource('feedback', 'v1.kefu.StoreServiceFeedback')->only(['index', 'delete', 'update', 'edit'])->option([
  93. 'real_name' => [
  94. 'index' => '获取用户反馈列表',
  95. 'edit' => '获取修改用户反馈表单',
  96. 'update' => '修改用户反馈',
  97. 'delete' => '删除用户反馈'
  98. ]
  99. ]);
  100. //话术接口
  101. Route::resource('wechat/speechcraft', 'v1.kefu.StoreServiceSpeechcraft')->except(['read'])->option([
  102. 'real_name' => [
  103. 'index' => '获取客服话术列表',
  104. 'create' => '获取客服话术表单',
  105. 'save' => '保存客服话术',
  106. 'edit' => '获取修改客服话术表单',
  107. 'update' => '修改客服话术',
  108. 'delete' => '删除客服话术'
  109. ]
  110. ]);
  111. //话术分类接口
  112. Route::resource('wechat/speechcraftcate', 'v1.kefu.StoreServiceSpeechcraftCate')->except(['read'])->option([
  113. 'real_name' => [
  114. 'index' => '获取客服话术分类列表',
  115. 'create' => '获取客服话术分类表单',
  116. 'save' => '保存客服话术分类',
  117. 'edit' => '获取修改客服话术分类表单',
  118. 'update' => '修改客服话术分类',
  119. 'delete' => '删除客服话术分类'
  120. ]
  121. ]);
  122. //客服列表
  123. Route::get('wechat/kefu', 'v1.kefu.StoreService/index')->option(['real_name' => '客服列表']);
  124. //客服登录
  125. Route::get('wechat/kefu/login/:id', 'v1.kefu.StoreService/keufLogin')->option(['real_name' => '客服登录']);
  126. //新增客服选择用户列表
  127. Route::get('wechat/kefu/create', 'v1.kefu.StoreService/create')->option(['real_name' => '新增客服选择用户列表']);
  128. //新增客服表单
  129. Route::get('wechat/kefu/add', 'v1.kefu.StoreService/add')->option(['real_name' => '添加客服表单']);
  130. //保存新建的数据
  131. Route::post('wechat/kefu', 'v1.kefu.StoreService/save')->option(['real_name' => '添加客服']);
  132. //编辑客服表单
  133. Route::get('wechat/kefu/:id/edit', 'v1.kefu.StoreService/edit')->option(['real_name' => '修改客服表单']);
  134. //保存编辑的数据
  135. Route::put('wechat/kefu/:id', 'v1.kefu.StoreService/update')->option(['real_name' => '修改客服']);
  136. //删除
  137. Route::delete('wechat/kefu/:id', 'v1.kefu.StoreService/delete')->option(['real_name' => '删除客服']);
  138. //修改状态
  139. Route::put('wechat/kefu/set_status/:id/:status', 'v1.kefu.StoreService/set_status')->option(['real_name' => '修改客服状态']);
  140. //聊天记录
  141. Route::get('wechat/kefu/record/:id', 'v1.kefu.StoreService/chat_user')->option(['real_name' => '聊天记录']);
  142. //查看对话
  143. Route::get('wechat/kefu/chat_list', 'v1.kefu.StoreService/chat_list')->option(['real_name' => '查看对话']);
  144. //客服自动回复列表
  145. Route::get('kefu/auto_reply/list', 'v1.kefu.StoreServiceAutoReply/autoReplyList')->option(['real_name' => '客服自动回复列表']);
  146. //客服自动回复添加修改表单
  147. Route::get('kefu/auto_reply/form/:id', 'v1.kefu.StoreServiceAutoReply/autoReplyForm')->option(['real_name' => '客服自动回复添加修改表单']);
  148. //客服自动回复添加修改保存
  149. Route::post('kefu/auto_reply/save/:id', 'v1.kefu.StoreServiceAutoReply/autoReplySave')->option(['real_name' => '客服自动回复添加修改保存']);
  150. //客服自动回复修改状态
  151. Route::put('kefu/auto_reply/status/:id/:status', 'v1.kefu.StoreServiceAutoReply/autoReplyStatus')->option(['real_name' => '客服自动回复修改状态']);
  152. //客服自动回复删除
  153. Route::delete('kefu/auto_reply/del/:id', 'v1.kefu.StoreServiceAutoReply/autoReplyDel')->option(['real_name' => '客服自动回复删除']);
  154. })->option(['parent' => 'app', 'cate_name' => '客服相关']);
  155. })->middleware([
  156. \app\http\middleware\AllowOriginMiddleware::class,
  157. \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
  158. \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
  159. \app\adminapi\middleware\AdminLogMiddleware::class
  160. ])->option(['mark' => 'app', 'mark_name' => '应用模块']);