PermissionCatalog.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. const PermissionCategory = {
  2. PAGE: 'page',
  3. ACTION: 'action'
  4. }
  5. /** 抢课助手页面:抢课权限或任一抢课管理页权限均可访问 */
  6. const QK_ASSISTANT_ACCESS_CODES = [
  7. 'page.qk.taskList',
  8. 'page.admin.qk.client',
  9. 'page.admin.qk.batch',
  10. 'page.admin.qk.task',
  11. 'page.admin.qk.report'
  12. ]
  13. const QK_ASSISTANT_SUBMIT_CODES = [
  14. 'action.qk.task.submit',
  15. 'action.qk.admin.taskManage'
  16. ]
  17. const QK_ASSISTANT_CONTROL_CODES = [
  18. 'action.qk.task.control',
  19. 'action.qk.admin.taskManage'
  20. ]
  21. const DEFAULT_PERMISSION_POINTS = [
  22. { code: 'page.admin.userList', name: '用户管理', category: PermissionCategory.PAGE, scope_type: 'page', page_route_name: 'admin.userList', remark: '访问后台用户管理页面' },
  23. { code: 'page.admin.lepaoAccount', name: '乐跑账号管理', category: PermissionCategory.PAGE, scope_type: 'page', page_route_name: 'admin.lepaoAccount', remark: '访问后台乐跑账号管理页面' },
  24. { code: 'page.admin.service.orderList', name: '工单管理', category: PermissionCategory.PAGE, scope_type: 'page', page_route_name: 'admin.service.orderList', remark: '访问后台工单管理页面' },
  25. { code: 'page.admin.aiChat', name: 'AI对话管理', category: PermissionCategory.PAGE, scope_type: 'page', page_route_name: 'admin.aiChat.list', remark: '访问后台AI助手对话管理页面' },
  26. { code: 'page.admin.goods.sendCountRequestList', name: '赠送审核', category: PermissionCategory.PAGE, scope_type: 'page', page_route_name: 'admin.goods.sendCountRequestList', remark: '访问乐跑次数赠送审核页面' },
  27. { code: 'page.service.createOrder', name: '提交工单', category: PermissionCategory.PAGE, scope_type: 'page', page_route_name: 'service.createOrder', remark: '访问用户提交工单页面' },
  28. { code: 'page.lepao.accountList', name: '乐跑账号', category: PermissionCategory.PAGE, scope_type: 'page', page_route_name: 'lepao.accountList', remark: '访问用户乐跑账号页面' },
  29. { code: 'page.qk.taskList', name: '抢课助手', category: PermissionCategory.PAGE, scope_type: 'page', page_route_name: 'qk.taskList', remark: '访问抢课助手任务列表;拥有抢课管理页权限的管理员也可直接访问' },
  30. { code: 'page.admin.qk.client', name: '抢课客户端管理', category: PermissionCategory.PAGE, scope_type: 'page', page_route_name: 'qkManage.client', remark: '访问后台抢课客户端管理页面' },
  31. { code: 'page.admin.qk.task', name: '抢课任务管理', category: PermissionCategory.PAGE, scope_type: 'page', page_route_name: 'qkManage.task', remark: '访问后台抢课任务管理页面' },
  32. { code: 'page.admin.qk.batch', name: '抢课批次管理', category: PermissionCategory.PAGE, scope_type: 'page', page_route_name: 'qkManage.batch', remark: '访问后台抢课批次管理页面' },
  33. { code: 'page.admin.qk.report', name: '抢课回报记录', category: PermissionCategory.PAGE, scope_type: 'page', page_route_name: 'qkManage.report', remark: '查看抢课客户端回报记录' },
  34. { code: 'action.user.changeCount', name: '更改乐跑次数', category: PermissionCategory.ACTION, scope_type: 'action', remark: '管理员调整用户乐跑次数' },
  35. { code: 'action.user.ban', name: '封禁账户', category: PermissionCategory.ACTION, scope_type: 'action', remark: '封禁或解封用户账户' },
  36. { code: 'action.user.permissionManage', name: '权限管理', category: PermissionCategory.ACTION, scope_type: 'action', remark: '查看和编辑用户权限、权限规则' },
  37. { code: 'action.user.setSendCountAutoApprove', name: '赠送免审配置', category: PermissionCategory.ACTION, scope_type: 'action', remark: '配置用户赠送乐跑次数免审白名单' },
  38. { code: 'action.lepao.addAccount', name: '新增乐跑账号', category: PermissionCategory.ACTION, scope_type: 'action', remark: '用户新增或绑定乐跑账号' },
  39. { code: 'action.lepao.singleRun', name: '发起单次乐跑', category: PermissionCategory.ACTION, scope_type: 'action', remark: '用户发起单次乐跑' },
  40. { code: 'action.lepao.changeAutoRun', name: '配置自动乐跑', category: PermissionCategory.ACTION, scope_type: 'action', remark: '用户开启或关闭自动乐跑' },
  41. { code: 'action.lepao.updateAccount', name: '更新乐跑账号', category: PermissionCategory.ACTION, scope_type: 'action', remark: '更新乐跑账号信息' },
  42. { code: 'action.lepao.deleteAccount', name: '解绑乐跑账号', category: PermissionCategory.ACTION, scope_type: 'action', remark: '解绑乐跑账号' },
  43. { code: 'action.lepao.admin.updateAccount', name: '后台更新乐跑账号', category: PermissionCategory.ACTION, scope_type: 'action', remark: '管理员更新乐跑账号信息' },
  44. { code: 'action.qk.task.submit', name: '提交抢课任务', category: PermissionCategory.ACTION, scope_type: 'action', remark: '提交、更新或取消抢课任务' },
  45. { code: 'action.qk.task.control', name: '控制抢课任务', category: PermissionCategory.ACTION, scope_type: 'action', remark: '开启或暂停抢课任务' },
  46. { code: 'action.qk.admin.clientManage', name: '管理抢课客户端', category: PermissionCategory.ACTION, scope_type: 'action', remark: '管理员禁用抢课客户端' },
  47. { code: 'action.qk.admin.batchManage', name: '管理抢课批次', category: PermissionCategory.ACTION, scope_type: 'action', remark: '管理员新建或编辑抢课批次' },
  48. { code: 'action.qk.admin.taskManage', name: '管理抢课任务', category: PermissionCategory.ACTION, scope_type: 'action', remark: '管理员编辑、重试或取消抢课任务' },
  49. { code: 'action.goods.sendCount', name: '赠送乐跑次数', category: PermissionCategory.ACTION, scope_type: 'action', remark: '用户向他人赠送乐跑次数' },
  50. { code: 'action.goods.reviewSendCount', name: '审核赠送次数', category: PermissionCategory.ACTION, scope_type: 'action', remark: '管理员审核乐跑次数赠送申请' },
  51. { code: 'action.service.createOrder', name: '发起工单', category: PermissionCategory.ACTION, scope_type: 'action', remark: '用户提交新工单或回复自己的工单' },
  52. { code: 'action.service.replyOrder', name: '回复工单', category: PermissionCategory.ACTION, scope_type: 'action', remark: '客服或管理员回复工单' }
  53. ]
  54. const DEFAULT_PERMISSION_RESOURCE_RULES = [
  55. { resource_type: 'page', resource_key: 'admin.userList', required_codes: ['page.admin.userList'] },
  56. { resource_type: 'page', resource_key: 'admin.lepaoAccount', required_codes: ['page.admin.lepaoAccount'] },
  57. { resource_type: 'page', resource_key: 'admin.service.orderList', required_codes: ['page.admin.service.orderList'] },
  58. { resource_type: 'page', resource_key: 'admin.aiChat.list', required_codes: ['page.admin.aiChat'] },
  59. { resource_type: 'page', resource_key: 'admin.aiChat.detail', required_codes: ['page.admin.aiChat'] },
  60. { resource_type: 'page', resource_key: 'admin.goods.sendCountRequestList', required_codes: ['page.admin.goods.sendCountRequestList'] },
  61. { resource_type: 'page', resource_key: 'service.createOrder', required_codes: ['page.service.createOrder'] },
  62. { resource_type: 'page', resource_key: 'lepao.accountList', required_codes: ['page.lepao.accountList'] },
  63. { resource_type: 'page', resource_key: 'qk.taskList', required_codes: QK_ASSISTANT_ACCESS_CODES },
  64. { resource_type: 'page', resource_key: 'qkManage.client', required_codes: ['page.admin.qk.client'] },
  65. { resource_type: 'page', resource_key: 'qkManage.task', required_codes: ['page.admin.qk.task'] },
  66. { resource_type: 'page', resource_key: 'qkManage.batch', required_codes: ['page.admin.qk.batch'] },
  67. { resource_type: 'page', resource_key: 'qkManage.report', required_codes: ['page.admin.qk.report'] },
  68. { resource_type: 'action', resource_key: 'action.user.changeCount', required_codes: ['action.user.changeCount'] },
  69. { resource_type: 'action', resource_key: 'action.user.ban', required_codes: ['action.user.ban'] },
  70. { resource_type: 'action', resource_key: 'action.user.permissionManage', required_codes: ['action.user.permissionManage'] },
  71. { resource_type: 'action', resource_key: 'action.user.setSendCountAutoApprove', required_codes: ['action.user.setSendCountAutoApprove'] },
  72. { resource_type: 'action', resource_key: 'action.lepao.addAccount', required_codes: ['action.lepao.addAccount'] },
  73. { resource_type: 'action', resource_key: 'action.lepao.singleRun', required_codes: ['action.lepao.singleRun'] },
  74. { resource_type: 'action', resource_key: 'action.lepao.changeAutoRun', required_codes: ['action.lepao.changeAutoRun'] },
  75. { resource_type: 'action', resource_key: 'action.lepao.updateAccount', required_codes: ['action.lepao.updateAccount'] },
  76. { resource_type: 'action', resource_key: 'action.lepao.deleteAccount', required_codes: ['action.lepao.deleteAccount'] },
  77. { resource_type: 'action', resource_key: 'action.lepao.admin.updateAccount', required_codes: ['action.lepao.admin.updateAccount'] },
  78. { resource_type: 'action', resource_key: 'action.qk.task.submit', required_codes: ['action.qk.task.submit'] },
  79. { resource_type: 'action', resource_key: 'action.qk.task.control', required_codes: ['action.qk.task.control'] },
  80. { resource_type: 'action', resource_key: 'action.qk.admin.clientManage', required_codes: ['action.qk.admin.clientManage'] },
  81. { resource_type: 'action', resource_key: 'action.qk.admin.batchManage', required_codes: ['action.qk.admin.batchManage'] },
  82. { resource_type: 'action', resource_key: 'action.qk.admin.taskManage', required_codes: ['action.qk.admin.taskManage'] },
  83. { resource_type: 'action', resource_key: 'action.goods.sendCount', required_codes: ['action.goods.sendCount'] },
  84. { resource_type: 'action', resource_key: 'action.goods.reviewSendCount', required_codes: ['action.goods.reviewSendCount'] },
  85. { resource_type: 'action', resource_key: 'action.service.createOrder', required_codes: ['action.service.createOrder'] },
  86. { resource_type: 'action', resource_key: 'action.service.replyOrder', required_codes: ['action.service.replyOrder'] },
  87. { resource_type: 'api', resource_key: 'GET /Admin/User/GetUserList', api_method: 'GET', api_path: '/Admin/User/GetUserList', required_codes: ['page.admin.userList'] },
  88. { resource_type: 'api', resource_key: 'POST /Admin/User/ChangeLepaoCount', api_method: 'POST', api_path: '/Admin/User/ChangeLepaoCount', required_codes: ['action.user.changeCount'] },
  89. { resource_type: 'api', resource_key: 'POST /Admin/User/SetUserBan', api_method: 'POST', api_path: '/Admin/User/SetUserBan', required_codes: ['action.user.ban'] },
  90. { resource_type: 'api', resource_key: 'POST /Admin/User/SetSendCountAutoApprove', api_method: 'POST', api_path: '/Admin/User/SetSendCountAutoApprove', required_codes: ['action.user.setSendCountAutoApprove'] },
  91. { resource_type: 'api', resource_key: 'GET /Admin/Lepao/Account', api_method: 'GET', api_path: '/Admin/Lepao/Account', required_codes: ['page.admin.lepaoAccount'] },
  92. { resource_type: 'api', resource_key: 'POST /Admin/Lepao/Account/UpdateAccountInfo', api_method: 'POST', api_path: '/Admin/Lepao/Account/UpdateAccountInfo', required_codes: ['action.lepao.admin.updateAccount'] },
  93. { resource_type: 'api', resource_key: 'POST /Lepao/Account', api_method: 'POST', api_path: '/Lepao/Account', required_codes: ['action.lepao.addAccount'] },
  94. { resource_type: 'api', resource_key: 'GET /Lepao/SingleRun', api_method: 'GET', api_path: '/Lepao/SingleRun', required_codes: ['action.lepao.singleRun'] },
  95. { resource_type: 'api', resource_key: 'GET /Lepao/ChangeAutoRun', api_method: 'GET', api_path: '/Lepao/ChangeAutoRun', required_codes: ['action.lepao.changeAutoRun'] },
  96. { resource_type: 'api', resource_key: 'POST /Lepao/Account/UpdateSelfAccount', api_method: 'POST', api_path: '/Lepao/Account/UpdateSelfAccount', required_codes: ['action.lepao.updateAccount'] },
  97. { resource_type: 'api', resource_key: 'DELETE /Lepao/Account', api_method: 'DELETE', api_path: '/Lepao/Account', required_codes: ['action.lepao.deleteAccount'] },
  98. { resource_type: 'api', resource_key: 'GET /QK/Task', api_method: 'GET', api_path: '/QK/Task', required_codes: QK_ASSISTANT_ACCESS_CODES },
  99. { resource_type: 'api', resource_key: 'GET /QK/Task/Detail', api_method: 'GET', api_path: '/QK/Task/Detail', required_codes: QK_ASSISTANT_ACCESS_CODES },
  100. { resource_type: 'api', resource_key: 'POST /QK/Task', api_method: 'POST', api_path: '/QK/Task', required_codes: QK_ASSISTANT_SUBMIT_CODES },
  101. { resource_type: 'api', resource_key: 'DELETE /QK/Task', api_method: 'DELETE', api_path: '/QK/Task', required_codes: QK_ASSISTANT_SUBMIT_CODES },
  102. { resource_type: 'api', resource_key: 'POST /QK/Task/Start', api_method: 'POST', api_path: '/QK/Task/Start', required_codes: QK_ASSISTANT_CONTROL_CODES },
  103. { resource_type: 'api', resource_key: 'POST /QK/Task/Pause', api_method: 'POST', api_path: '/QK/Task/Pause', required_codes: QK_ASSISTANT_CONTROL_CODES },
  104. { resource_type: 'api', resource_key: 'GET /Admin/QK/Client/List', api_method: 'GET', api_path: '/Admin/QK/Client/List', required_codes: ['page.admin.qk.client'] },
  105. { resource_type: 'api', resource_key: 'DELETE /Admin/QK/Client/Delete', api_method: 'DELETE', api_path: '/Admin/QK/Client/Delete', required_codes: ['action.qk.admin.clientManage'] },
  106. { resource_type: 'api', resource_key: 'POST /Admin/QK/Client/Enable', api_method: 'POST', api_path: '/Admin/QK/Client/Enable', required_codes: ['action.qk.admin.clientManage'] },
  107. { resource_type: 'api', resource_key: 'GET /Admin/QK/Task/List', api_method: 'GET', api_path: '/Admin/QK/Task/List', required_codes: ['page.admin.qk.task'] },
  108. { resource_type: 'api', resource_key: 'GET /Admin/QK/Task/Detail', api_method: 'GET', api_path: '/Admin/QK/Task/Detail', required_codes: ['page.admin.qk.task'] },
  109. { resource_type: 'api', resource_key: 'POST /Admin/QK/Task/Update', api_method: 'POST', api_path: '/Admin/QK/Task/Update', required_codes: ['action.qk.admin.taskManage'] },
  110. { resource_type: 'api', resource_key: 'DELETE /Admin/QK/Task/Cancel', api_method: 'DELETE', api_path: '/Admin/QK/Task/Cancel', required_codes: ['action.qk.admin.taskManage'] },
  111. { resource_type: 'api', resource_key: 'POST /Admin/QK/Task/Retry', api_method: 'POST', api_path: '/Admin/QK/Task/Retry', required_codes: ['action.qk.admin.taskManage'] },
  112. { resource_type: 'api', resource_key: 'POST /Admin/QK/Task/Start', api_method: 'POST', api_path: '/Admin/QK/Task/Start', required_codes: ['action.qk.admin.taskManage'] },
  113. { resource_type: 'api', resource_key: 'POST /Admin/QK/Task/Pause', api_method: 'POST', api_path: '/Admin/QK/Task/Pause', required_codes: ['action.qk.admin.taskManage'] },
  114. { resource_type: 'api', resource_key: 'GET /QK/Batch', api_method: 'GET', api_path: '/QK/Batch', required_codes: QK_ASSISTANT_ACCESS_CODES },
  115. { resource_type: 'api', resource_key: 'GET /Admin/QK/Batch/List', api_method: 'GET', api_path: '/Admin/QK/Batch/List', required_codes: ['page.admin.qk.batch'] },
  116. { resource_type: 'api', resource_key: 'POST /Admin/QK/Batch/Save', api_method: 'POST', api_path: '/Admin/QK/Batch/Save', required_codes: ['action.qk.admin.batchManage'] },
  117. { resource_type: 'api', resource_key: 'GET /Admin/QK/Report/List', api_method: 'GET', api_path: '/Admin/QK/Report/List', required_codes: ['page.admin.qk.report'] },
  118. { resource_type: 'api', resource_key: 'POST /Goods/SendCount', api_method: 'POST', api_path: '/Goods/SendCount', required_codes: ['action.goods.sendCount'] },
  119. { resource_type: 'api', resource_key: 'POST /Kefu/Order', api_method: 'POST', api_path: '/Kefu/Order', required_codes: ['action.service.createOrder'] },
  120. { resource_type: 'api', resource_key: 'GET /Admin/Kefu/Order', api_method: 'GET', api_path: '/Admin/Kefu/Order', required_codes: ['page.admin.service.orderList'] },
  121. { resource_type: 'api', resource_key: 'GET /Admin/Kefu/OrderDetail', api_method: 'GET', api_path: '/Admin/Kefu/OrderDetail', required_codes: ['page.admin.service.orderList'] },
  122. { resource_type: 'api', resource_key: 'PUT /Admin/Kefu/Order', api_method: 'PUT', api_path: '/Admin/Kefu/Order', required_codes: ['action.service.replyOrder'] },
  123. { resource_type: 'api', resource_key: 'GET /Admin/AIChat/Conversation/List', api_method: 'GET', api_path: '/Admin/AIChat/Conversation/List', required_codes: ['page.admin.aiChat'] },
  124. { resource_type: 'api', resource_key: 'GET /Admin/AIChat/Conversation/Detail', api_method: 'GET', api_path: '/Admin/AIChat/Conversation/Detail', required_codes: ['page.admin.aiChat'] },
  125. { resource_type: 'api', resource_key: 'GET /Admin/Goods/SendCountRequest/List', api_method: 'GET', api_path: '/Admin/Goods/SendCountRequest/List', required_codes: ['page.admin.goods.sendCountRequestList'] },
  126. { resource_type: 'api', resource_key: 'POST /Admin/Goods/SendCountRequest/Approve', api_method: 'POST', api_path: '/Admin/Goods/SendCountRequest/Approve', required_codes: ['action.goods.reviewSendCount'] },
  127. { resource_type: 'api', resource_key: 'POST /Admin/Goods/SendCountRequest/Reject', api_method: 'POST', api_path: '/Admin/Goods/SendCountRequest/Reject', required_codes: ['action.goods.reviewSendCount'] }
  128. ]
  129. // 所有登录用户默认拥有的基础操作权限(无需在后台单独勾选)
  130. const DEFAULT_BASIC_USER_PERMISSION_CODES = [
  131. 'page.lepao.accountList',
  132. 'action.lepao.addAccount',
  133. 'action.lepao.singleRun',
  134. 'action.lepao.changeAutoRun',
  135. 'action.lepao.updateAccount',
  136. 'action.lepao.deleteAccount',
  137. 'action.goods.sendCount',
  138. 'page.service.createOrder',
  139. 'action.service.createOrder'
  140. ]
  141. const LEGACY_ROLE_PERMISSION_MAP = {
  142. service: [
  143. 'page.admin.userList',
  144. 'page.admin.lepaoAccount',
  145. 'page.admin.service.orderList',
  146. 'page.admin.aiChat',
  147. 'page.admin.goods.sendCountRequestList',
  148. 'action.user.changeCount',
  149. 'action.user.ban',
  150. 'action.user.setSendCountAutoApprove',
  151. 'action.lepao.admin.updateAccount',
  152. 'action.goods.reviewSendCount',
  153. 'action.service.replyOrder'
  154. ],
  155. product: [
  156. 'action.goods.reviewSendCount'
  157. ],
  158. path: []
  159. }
  160. module.exports = {
  161. DEFAULT_PERMISSION_POINTS,
  162. DEFAULT_PERMISSION_RESOURCE_RULES,
  163. DEFAULT_BASIC_USER_PERMISSION_CODES,
  164. LEGACY_ROLE_PERMISSION_MAP,
  165. QK_ASSISTANT_ACCESS_CODES,
  166. QK_ASSISTANT_SUBMIT_CODES,
  167. QK_ASSISTANT_CONTROL_CODES
  168. }