crm-permission-init.sql 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. -- 系统管理权限
  2. INSERT INTO permission (code, name, type, module, action, description, sort_order, is_active, parent_id) VALUES
  3. ('system:user:create', '创建用户', 'operation', 'system', 'user:create', '允许创建新用户', 110, 1, NULL),
  4. ('system:user:update', '编辑用户', 'operation', 'system', 'user:update', '允许编辑用户信息', 120, 1, NULL),
  5. ('system:user:delete', '删除用户', 'operation', 'system', 'user:delete', '允许删除用户', 130, 1, NULL),
  6. ('system:user:view:own', '查看个人用户', 'data', 'system', 'user:view', '仅查看自己创建的用户', 141, 1, NULL),
  7. ('system:user:view:department', '查看部门用户', 'data', 'system', 'user:view', '查看所在部门用户', 142, 1, NULL),
  8. ('system:user:view:sub_department', '查看部门及下级用户', 'data', 'system', 'user:view', '查看所在部门及下级部门用户', 143, 1, NULL),
  9. ('system:user:view:all', '查看所有用户', 'data', 'system', 'user:view', '查看系统所有用户', 144, 1, NULL),
  10. ('system:role:create', '创建角色', 'operation', 'system', 'role:create', '允许创建新角色', 210, 1, NULL),
  11. ('system:role:update', '编辑角色', 'operation', 'system', 'role:update', '允许编辑角色信息', 220, 1, NULL),
  12. ('system:role:delete', '删除角色', 'operation', 'system', 'role:delete', '允许删除角色', 230, 1, NULL),
  13. ('system:role:view', '查看角色', 'operation', 'system', 'role:view', '允许查看角色列表', 240, 1, NULL),
  14. ('system:department:create', '创建部门', 'operation', 'system', 'department:create', '允许创建新部门', 310, 1, NULL),
  15. ('system:department:update', '编辑部门', 'operation', 'system', 'department:update', '允许编辑部门信息', 320, 1, NULL),
  16. ('system:department:delete', '删除部门', 'operation', 'system', 'department:delete', '允许删除部门', 330, 1, NULL),
  17. ('system:department:view', '查看部门', 'operation', 'system', 'department:view', '允许查看部门列表', 340, 1, NULL),
  18. -- 客户管理权限
  19. ('client:create', '创建客户', 'operation', 'client', 'create', '允许创建新客户', 410, 1, NULL),
  20. ('client:update', '编辑客户', 'operation', 'client', 'update', '允许编辑客户信息', 420, 1, NULL),
  21. ('client:delete', '删除客户', 'operation', 'client', 'delete', '允许删除客户', 430, 1, NULL),
  22. ('client:view:own', '查看个人客户', 'data', 'client', 'view', '仅查看自己创建的客户', 441, 1, NULL),
  23. ('client:view:department', '查看部门客户', 'data', 'client', 'view', '查看所在部门客户', 442, 1, NULL),
  24. ('client:view:sub_department', '查看部门及下级客户', 'data', 'client', 'view', '查看所在部门及下级部门客户', 443, 1, NULL),
  25. ('client:view:all', '查看所有客户', 'data', 'client', 'view', '查看系统所有客户', 444, 1, NULL),
  26. ('client:assign', '分配客户', 'operation', 'client', 'assign', '允许将客户分配给其他用户', 450, 1, NULL),
  27. ('client:transfer', '转移客户', 'operation', 'client', 'transfer', '允许将客户转移到其他部门', 460, 1, NULL),
  28. -- 合同管理权限
  29. ('contract:create', '创建合同', 'operation', 'contract', 'create', '允许创建新合同', 510, 1, NULL),
  30. ('contract:update', '编辑合同', 'operation', 'contract', 'update', '允许编辑合同信息', 520, 1, NULL),
  31. ('contract:delete', '删除合同', 'operation', 'contract', 'delete', '允许删除合同', 530, 1, NULL),
  32. ('contract:view:own', '查看个人合同', 'data', 'contract', 'view', '仅查看自己创建的合同', 541, 1, NULL),
  33. ('contract:view:department', '查看部门合同', 'data', 'contract', 'view', '查看所在部门合同', 542, 1, NULL),
  34. ('contract:view:sub_department', '查看部门及下级合同', 'data', 'contract', 'view', '查看所在部门及下级部门合同', 543, 1, NULL),
  35. ('contract:view:all', '查看所有合同', 'data', 'contract', 'view', '查看系统所有合同', 544, 1, NULL),
  36. ('contract:approve', '审批合同', 'operation', 'contract', 'approve', '允许审批合同', 550, 1, NULL),
  37. ('contract:renew', '续签合同', 'operation', 'contract', 'renew', '允许续签合同', 560, 1, NULL),
  38. -- 合同续签管理权限
  39. ('contract_renew:create', '创建合同续签', 'operation', 'contract_renew', 'create', '允许创建合同续签记录', 1010, 1, NULL),
  40. ('contract_renew:update', '编辑合同续签', 'operation', 'contract_renew', 'update', '允许编辑合同续签信息', 1020, 1, NULL),
  41. ('contract_renew:delete', '删除合同续签', 'operation', 'contract_renew', 'delete', '允许删除合同续签记录', 1030, 1, NULL),
  42. ('contract_renew:view:own', '查看个人合同续签', 'data', 'contract_renew', 'view', '仅查看自己创建的合同续签记录', 1041, 1, NULL),
  43. ('contract_renew:view:department', '查看部门合同续签', 'data', 'contract_renew', 'view', '查看所在部门合同续签记录', 1042, 1, NULL),
  44. ('contract_renew:view:sub_department', '查看部门及下级合同续签', 'data', 'contract_renew', 'view', '查看所在部门及下级部门合同续签记录', 1043, 1, NULL),
  45. ('contract_renew:view:all', '查看所有合同续签', 'data', 'contract_renew', 'view', '查看系统所有合同续签记录', 1044, 1, NULL),
  46. ('contract_renew:approve', '审批合同续签', 'operation', 'contract_renew', 'approve', '允许审批合同续签申请', 1050, 1, NULL),
  47. ('contract_renew:remind', '合同续签提醒', 'operation', 'contract_renew', 'remind', '允许设置合同续签提醒', 1060, 1, NULL),
  48. ('contract_renew:export', '导出合同续签', 'operation', 'contract_renew', 'export', '允许导出合同续签数据', 1070, 1, NULL),
  49. -- 跟进记录权限
  50. ('follow_up:create', '创建跟进', 'operation', 'follow_up', 'create', '允许创建跟进记录', 610, 1, NULL),
  51. ('follow_up:update', '编辑跟进', 'operation', 'follow_up', 'update', '允许编辑跟进记录', 620, 1, NULL),
  52. ('follow_up:delete', '删除跟进', 'operation', 'follow_up', 'delete', '允许删除跟进记录', 630, 1, NULL),
  53. ('follow_up:view:own', '查看个人跟进', 'data', 'follow_up', 'view', '仅查看自己创建的跟进记录', 641, 1, NULL),
  54. ('follow_up:view:department', '查看部门跟进', 'data', 'follow_up', 'view', '查看所在部门跟进记录', 642, 1, NULL),
  55. ('follow_up:view:sub_department', '查看部门及下级跟进', 'data', 'follow_up', 'view', '查看所在部门及下级部门跟进记录', 643, 1, NULL),
  56. ('follow_up:view:all', '查看所有跟进', 'data', 'follow_up', 'view', '查看系统所有跟进记录', 644, 1, NULL),
  57. -- 订单管理权限
  58. ('order:create', '创建订单', 'operation', 'order', 'create', '允许创建新订单', 710, 1, NULL),
  59. ('order:update', '编辑订单', 'operation', 'order', 'update', '允许编辑订单信息', 720, 1, NULL),
  60. ('order:delete', '删除订单', 'operation', 'order', 'delete', '允许删除订单', 730, 1, NULL),
  61. ('order:view:own', '查看个人订单', 'data', 'order', 'view', '仅查看自己创建的订单', 741, 1, NULL),
  62. ('order:view:department', '查看部门订单', 'data', 'order', 'view', '查看所在部门订单', 742, 1, NULL),
  63. ('order:view:sub_department', '查看部门及下级订单', 'data', 'order', 'view', '查看所在部门及下级部门订单', 743, 1, NULL),
  64. ('order:view:all', '查看所有订单', 'data', 'order', 'view', '查看系统所有订单', 744, 1, NULL),
  65. -- 费用管理权限
  66. ('expense:create', '创建费用', 'operation', 'expense', 'create', '允许创建新费用记录', 810, 1, NULL),
  67. ('expense:update', '编辑费用', 'operation', 'expense', 'update', '允许编辑费用记录', 820, 1, NULL),
  68. ('expense:delete', '删除费用', 'operation', 'expense', 'delete', '允许删除费用记录', 830, 1, NULL),
  69. ('expense:view:own', '查看个人费用', 'data', 'expense', 'view', '仅查看自己创建的费用记录', 841, 1, NULL),
  70. ('expense:view:department', '查看部门费用', 'data', 'expense', 'view', '查看所在部门费用记录', 842, 1, NULL),
  71. ('expense:view:sub_department', '查看部门及下级费用', 'data', 'expense', 'view', '查看所在部门及下级部门费用记录', 843, 1, NULL),
  72. ('expense:view:all', '查看所有费用', 'data', 'expense', 'view', '查看系统所有费用记录', 844, 1, NULL),
  73. -- 文件管理权限
  74. ('file:upload', '上传文件', 'operation', 'file', 'upload', '允许上传文件', 910, 1, NULL),
  75. ('file:delete', '删除文件', 'operation', 'file', 'delete', '允许删除文件', 930, 1, NULL),
  76. ('file:view:own', '查看个人文件', 'data', 'file', 'view', '仅查看自己上传的文件', 941, 1, NULL),
  77. ('file:view:department', '查看部门文件', 'data', 'file', 'view', '查看所在部门文件', 942, 1, NULL),
  78. ('file:view:sub_department', '查看部门及下级文件', 'data', 'file', 'view', '查看所在部门及下级部门文件', 943, 1, NULL),
  79. ('file:view:all', '查看所有文件', 'data', 'file', 'view', '查看系统所有文件', 944, 1, NULL);
  80. -- 超级管理员角色
  81. INSERT INTO role (name, description, created_at, updated_at) VALUES
  82. ('超级管理员', '超级管理员,拥有系统所有权限', NOW(), NOW()),
  83. -- 系统管理员角色
  84. ('系统管理员', '系统管理员,管理用户、角色、部门等', NOW(), NOW()),
  85. -- 部门经理角色
  86. ('部门经理', '部门经理,管理部门内所有数据', NOW(), NOW()),
  87. -- 销售经理角色
  88. ('销售经理', '销售经理,管理客户和销售数据', NOW(), NOW()),
  89. -- 销售人员角色
  90. ('销售人员', '销售人员,管理个人客户和数据', NOW(), NOW()),
  91. -- 财务角色
  92. ('财务人员', '财务人员,管理费用和财务数据', NOW(), NOW()),
  93. -- 合同管理员角色
  94. ('合同管理员', '合同管理员,管理合同和续签', NOW(), NOW()),
  95. -- 访客角色(只读权限)
  96. ('访客', '访客,只读权限', NOW(), NOW());
  97. -- 为超级管理员角色添加所有权限
  98. INSERT INTO role_permission (role_id, permission_id, data_scope_type, created_at)
  99. SELECT r.id, p.id, 'COMPANY', NOW()
  100. FROM role r, permission p
  101. WHERE r.name = '超级管理员';
  102. -- 为系统管理员角色添加系统管理权限
  103. INSERT INTO role_permission (role_id, permission_id, data_scope_type, created_at)
  104. SELECT r.id, p.id, 'COMPANY', NOW()
  105. FROM role r, permission p
  106. WHERE r.name = '系统管理员' AND p.code LIKE 'system:%';
  107. -- 为部门经理角色添加相应权限
  108. INSERT INTO role_permission (role_id, permission_id, data_scope_type, created_at)
  109. SELECT r.id, p.id, 'DEPARTMENT', NOW()
  110. FROM role r, permission p
  111. WHERE r.name = '部门经理'
  112. AND (p.code LIKE 'system:%' OR p.code LIKE 'client:%' OR p.code LIKE 'contract:%'
  113. OR p.code LIKE 'follow_up:%' OR p.code LIKE 'order:%' OR p.code LIKE 'expense:%'
  114. OR p.code LIKE 'file:%')
  115. AND p.code NOT LIKE '%:all';
  116. -- 为销售经理角色添加相应权限
  117. INSERT INTO role_permission (role_id, permission_id, data_scope_type, created_at)
  118. SELECT r.id, p.id, 'SUB_DEPARTMENT', NOW()
  119. FROM role r, permission p
  120. WHERE r.name = '销售经理'
  121. AND (p.code LIKE 'client:%' OR p.code LIKE 'contract:%' OR p.code LIKE 'follow_up:%'
  122. OR p.code LIKE 'order:%' OR p.code LIKE 'expense:%' OR p.code LIKE 'file:%')
  123. AND p.code NOT LIKE '%:all';
  124. -- 为销售人员角色添加相应权限
  125. INSERT INTO role_permission (role_id, permission_id, data_scope_type, created_at)
  126. SELECT r.id, p.id, 'PERSONAL', NOW()
  127. FROM role r, permission p
  128. WHERE r.name = '销售人员'
  129. AND (p.code LIKE 'client:%' OR p.code LIKE 'contract:%' OR p.code LIKE 'follow_up:%'
  130. OR p.code LIKE 'order:%' OR p.code LIKE 'expense:%' OR p.code LIKE 'file:%')
  131. AND p.code NOT LIKE '%:all';
  132. -- 为财务角色添加相应权限
  133. INSERT INTO role_permission (role_id, permission_id, data_scope_type, created_at)
  134. SELECT r.id, p.id, 'COMPANY', NOW()
  135. FROM role r, permission p
  136. WHERE r.name = '财务人员'
  137. AND (p.code LIKE 'contract:view:%' OR p.code LIKE 'order:view:%'
  138. OR p.code LIKE 'expense:%' OR p.code LIKE 'file:%');
  139. -- 为合同管理员角色添加相应权限
  140. INSERT INTO role_permission (role_id, permission_id, data_scope_type, created_at)
  141. SELECT r.id, p.id, 'COMPANY', NOW()
  142. FROM role r, permission p
  143. WHERE r.name = '合同管理员'
  144. AND (p.code LIKE 'contract:%' OR p.code LIKE 'contract_renew:%' OR p.code LIKE 'file:%');
  145. -- 为部门经理角色添加合同续签权限(部门级)
  146. INSERT INTO role_permission (role_id, permission_id, data_scope_type, created_at)
  147. SELECT r.id, p.id, 'DEPARTMENT', NOW()
  148. FROM role r, permission p
  149. WHERE r.name = '部门经理'
  150. AND p.code LIKE 'contract_renew:%'
  151. AND p.code NOT LIKE '%:all';
  152. -- 为销售经理角色添加合同续签权限(子部门级)
  153. INSERT INTO role_permission (role_id, permission_id, data_scope_type, created_at)
  154. SELECT r.id, p.id, 'SUB_DEPARTMENT', NOW()
  155. FROM role r, permission p
  156. WHERE r.name = '销售经理'
  157. AND p.code LIKE 'contract_renew:%'
  158. AND p.code NOT LIKE '%:all';
  159. -- 为销售人员角色添加合同续签权限(个人级)
  160. INSERT INTO role_permission (role_id, permission_id, data_scope_type, created_at)
  161. SELECT r.id, p.id, 'PERSONAL', NOW()
  162. FROM role r, permission p
  163. WHERE r.name = '销售人员'
  164. AND p.code LIKE 'contract_renew:%'
  165. AND p.code NOT LIKE '%:all';
  166. -- 补充联系人管理权限(复用客户权限)
  167. -- 注意:联系人管理实际使用客户权限进行控制
  168. -- 补充区域管理权限(复用部门权限)
  169. -- 注意:区域管理实际使用部门权限进行控制
  170. -- 补充系统日志权限(复用用户权限)
  171. -- 注意:系统日志实际使用用户权限进行控制
  172. -- 补充权限管理权限(复用角色权限)
  173. -- 注意:权限管理实际使用角色权限进行控制
  174. -- 为访客角色添加相应权限
  175. INSERT INTO role_permission (role_id, permission_id, data_scope_type, created_at)
  176. SELECT r.id, p.id, 'PERSONAL', NOW()
  177. FROM role r, permission p
  178. WHERE r.name = '访客'
  179. AND (p.code LIKE 'system:user:view:own' OR p.code LIKE 'client:view:own'
  180. OR p.code LIKE 'contract:view:own' OR p.code LIKE 'follow_up:view:own'
  181. OR p.code LIKE 'order:view:own' OR p.code LIKE 'expense:view:own'
  182. OR p.code LIKE 'file:view:own');