20260827_add_agent_profile.sql 4.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. -- 代理运营档案、修改信息页面及接口权限,可重复执行。
  2. CREATE TABLE IF NOT EXISTS `sa_agent_profile` (
  3. `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '档案编号',
  4. `agent_id` BIGINT UNSIGNED NOT NULL COMMENT 'sa_system_user.id',
  5. `business_mode` VARCHAR(20) NOT NULL DEFAULT 'agent' COMMENT 'agent代理模式、employee员工模式',
  6. `product_codes` JSON NOT NULL COMMENT '运营产品编码',
  7. `profit_rates` JSON NOT NULL COMMENT '各产品分润比例',
  8. `permissions` JSON NOT NULL COMMENT '代理业务权限',
  9. `province` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '省份',
  10. `city` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '城市',
  11. `district` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '区县',
  12. `company_address` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '公司详细地址',
  13. `created_by` BIGINT UNSIGNED NULL COMMENT '创建者',
  14. `updated_by` BIGINT UNSIGNED NULL COMMENT '更新者',
  15. `create_time` DATETIME NOT NULL COMMENT '创建时间',
  16. `update_time` DATETIME NOT NULL COMMENT '修改时间',
  17. PRIMARY KEY (`id`),
  18. UNIQUE KEY `uk_agent_profile_agent` (`agent_id`)
  19. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理运营档案';
  20. INSERT INTO `sa_system_menu` (
  21. `parent_id`, `name`, `code`, `slug`, `type`, `path`, `component`, `method`, `icon`, `sort`,
  22. `link_url`, `is_iframe`, `is_keep_alive`, `is_hidden`, `is_fixed_tab`, `is_full_page`,
  23. `generate_id`, `generate_key`, `status`, `remark`, `created_by`, `updated_by`, `create_time`, `update_time`, `delete_time`
  24. )
  25. SELECT agent_menu.`id`, '修改代理信息', 'AgentEdit', NULL, 2,
  26. 'edit-agent', '/agent/edit-agent', NULL, NULL, 70,
  27. NULL, 2, 2, 1, 2, 2, 0, NULL, 1,
  28. '修改下级代理运营资料', 1, 1, NOW(), NOW(), NULL
  29. FROM `sa_system_menu` agent_menu
  30. WHERE agent_menu.`code` = 'Agent' AND agent_menu.`delete_time` IS NULL
  31. AND NOT EXISTS (SELECT 1 FROM `sa_system_menu` WHERE `code` = 'AgentEdit' AND `delete_time` IS NULL);
  32. UPDATE `sa_system_menu`
  33. SET `name` = '修改代理信息', `path` = 'edit-agent', `component` = '/agent/edit-agent',
  34. `is_hidden` = 1, `remark` = '修改下级代理运营资料', `update_time` = NOW()
  35. WHERE `code` = 'AgentEdit' AND `delete_time` IS NULL;
  36. INSERT INTO `sa_system_menu` (
  37. `parent_id`, `name`, `code`, `slug`, `type`, `path`, `component`, `method`, `icon`, `sort`,
  38. `link_url`, `is_iframe`, `is_keep_alive`, `is_hidden`, `is_fixed_tab`, `is_full_page`,
  39. `generate_id`, `generate_key`, `status`, `remark`, `created_by`, `updated_by`, `create_time`, `update_time`, `delete_time`
  40. )
  41. SELECT agent_menu.`id`, permission_data.`name`, permission_data.`code`, permission_data.`slug`, 3,
  42. NULL, NULL, permission_data.`method`, NULL, permission_data.`sort`,
  43. NULL, 2, 2, 2, 2, 2, 0, NULL, 1, permission_data.`remark`, 1, 1, NOW(), NOW(), NULL
  44. FROM `sa_system_menu` agent_menu
  45. INNER JOIN (
  46. SELECT '代理详情' AS `name`, 'AgentRead' AS `code`, 'core:agent:read' AS `slug`, 'GET' AS `method`, 90 AS `sort`, '读取有权管理的代理资料' AS `remark`
  47. UNION ALL SELECT '修改代理信息', 'AgentUpdate', 'core:agent:update', 'PUT', 89, '保存有权管理的代理资料'
  48. ) permission_data
  49. LEFT JOIN `sa_system_menu` existing_menu
  50. ON existing_menu.`slug` = permission_data.`slug` AND existing_menu.`delete_time` IS NULL
  51. WHERE agent_menu.`code` = 'Agent' AND agent_menu.`delete_time` IS NULL
  52. AND existing_menu.`id` IS NULL;
  53. UPDATE `sa_system_menu`
  54. SET `name` = '代理详情', `method` = 'GET', `remark` = '读取有权管理的代理资料', `update_time` = NOW()
  55. WHERE `slug` = 'core:agent:read' AND `delete_time` IS NULL;
  56. UPDATE `sa_system_menu`
  57. SET `name` = '修改代理信息', `method` = 'PUT', `remark` = '保存有权管理的代理资料', `update_time` = NOW()
  58. WHERE `slug` = 'core:agent:update' AND `delete_time` IS NULL;
  59. -- 已有代理列表权限的角色自动获得修改页和读写接口权限。
  60. INSERT INTO `sa_system_role_menu` (`role_id`, `menu_id`)
  61. SELECT DISTINCT source_role.`role_id`, target_menu.`id`
  62. FROM `sa_system_role_menu` source_role
  63. INNER JOIN `sa_system_menu` source_menu
  64. ON source_menu.`id` = source_role.`menu_id`
  65. AND source_menu.`code` IN ('MyAgent', 'SubordinateAgent')
  66. AND source_menu.`delete_time` IS NULL
  67. INNER JOIN `sa_system_menu` target_menu
  68. ON (target_menu.`code` = 'AgentEdit' OR target_menu.`slug` IN ('core:agent:read', 'core:agent:update'))
  69. AND target_menu.`delete_time` IS NULL
  70. LEFT JOIN `sa_system_role_menu` existing_role
  71. ON existing_role.`role_id` = source_role.`role_id`
  72. AND existing_role.`menu_id` = target_menu.`id`
  73. WHERE existing_role.`id` IS NULL;