Files
RuoYi-Vue/sql/custom_request.sql

176 lines
9.0 KiB
MySQL
Raw Permalink Normal View History

2026-09-16 16:53:24 +08:00
-- 项目定制需求(99积分提交,审核不通过自动退回)
-- 可重复执行菜单部分;建表仅在表不存在时执行。
CREATE TABLE IF NOT EXISTS `app_tech_stack` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(50) NOT NULL COMMENT '技术栈名称',
`sort` int NOT NULL DEFAULT 0 COMMENT '显示排序',
`status` char(1) NOT NULL DEFAULT '0' COMMENT '0启用 1停用',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_app_tech_stack_name` (`name`),
KEY `idx_app_tech_stack_status_sort` (`status`, `sort`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目定制技术栈表';
INSERT INTO `app_tech_stack` (`name`, `sort`, `status`, `remark`, `create_by`, `create_time`)
SELECT 'UniApp + Spring Boot', 1, '0', '适合跨端小程序项目', 'admin', NOW()
WHERE NOT EXISTS (SELECT 1 FROM `app_tech_stack` WHERE `name` = 'UniApp + Spring Boot');
INSERT INTO `app_tech_stack` (`name`, `sort`, `status`, `remark`, `create_by`, `create_time`)
SELECT 'Vue + Spring Boot', 2, '0', '适合管理系统和Web项目', 'admin', NOW()
WHERE NOT EXISTS (SELECT 1 FROM `app_tech_stack` WHERE `name` = 'Vue + Spring Boot');
INSERT INTO `app_tech_stack` (`name`, `sort`, `status`, `remark`, `create_by`, `create_time`)
SELECT '微信小程序原生 + Spring Boot', 3, '0', '适合微信原生小程序项目', 'admin', NOW()
WHERE NOT EXISTS (SELECT 1 FROM `app_tech_stack` WHERE `name` = '微信小程序原生 + Spring Boot');
INSERT INTO `app_tech_stack` (`name`, `sort`, `status`, `remark`, `create_by`, `create_time`)
SELECT '其他(请在需求中说明)', 99, '0', '未确定或需要其他技术栈', 'admin', NOW()
WHERE NOT EXISTS (SELECT 1 FROM `app_tech_stack` WHERE `name` = '其他(请在需求中说明)');
CREATE TABLE IF NOT EXISTS `app_custom_request` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`request_no` varchar(32) NOT NULL COMMENT '需求单号',
`user_id` bigint NOT NULL COMMENT '用户ID',
`project_name` varchar(30) NOT NULL COMMENT '项目名称',
`requirement_content` varchar(500) NOT NULL COMMENT '项目需求',
`tech_stack_id` bigint DEFAULT NULL COMMENT '技术栈ID',
`tech_stack_name` varchar(50) DEFAULT NULL COMMENT '提交时技术栈名称',
`status` tinyint NOT NULL DEFAULT 0 COMMENT '0待审核 1审核中 2已接单 3开发中 4已完成 5审核未通过',
`progress_note` varchar(300) DEFAULT NULL COMMENT '当前进度说明',
`point_amount` int NOT NULL DEFAULT 99 COMMENT '提交扣除积分',
`point_status` tinyint NOT NULL DEFAULT 0 COMMENT '0已扣除 1已退回',
`reject_reason` varchar(300) DEFAULT NULL COMMENT '审核未通过原因',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_custom_request_no` (`request_no`),
KEY `idx_custom_request_user_time` (`user_id`, `update_time`),
KEY `idx_custom_request_status_time` (`status`, `update_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目定制需求表';
-- 兼容已经创建过 app_custom_request 的数据库。
SET @tech_stack_id_exists := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'app_custom_request' AND COLUMN_NAME = 'tech_stack_id'
);
SET @tech_stack_id_sql := IF(
@tech_stack_id_exists = 0,
'ALTER TABLE `app_custom_request` ADD COLUMN `tech_stack_id` bigint DEFAULT NULL COMMENT ''技术栈ID'' AFTER `requirement_content`',
'SELECT 1'
);
PREPARE tech_stack_id_stmt FROM @tech_stack_id_sql;
EXECUTE tech_stack_id_stmt;
DEALLOCATE PREPARE tech_stack_id_stmt;
SET @tech_stack_name_exists := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'app_custom_request' AND COLUMN_NAME = 'tech_stack_name'
);
SET @tech_stack_name_sql := IF(
@tech_stack_name_exists = 0,
'ALTER TABLE `app_custom_request` ADD COLUMN `tech_stack_name` varchar(50) DEFAULT NULL COMMENT ''提交时技术栈名称'' AFTER `tech_stack_id`',
'SELECT 1'
);
PREPARE tech_stack_name_stmt FROM @tech_stack_name_sql;
EXECUTE tech_stack_name_stmt;
DEALLOCATE PREPARE tech_stack_name_stmt;
SET @custom_request_parent_id := COALESCE(
(SELECT parent_id FROM sys_menu WHERE perms = 'app:resource:list' LIMIT 1),
(SELECT parent_id FROM sys_menu WHERE perms = 'app:article:list' LIMIT 1),
0
);
SET @custom_request_order_num := COALESCE(
(SELECT MAX(order_num) + 1 FROM sys_menu WHERE parent_id = @custom_request_parent_id),
1
);
INSERT INTO sys_menu
(menu_name, parent_id, order_num, path, component, query, is_frame, is_cache,
menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT
'项目定制', @custom_request_parent_id, @custom_request_order_num,
'customRequest', 'app/customRequest/index', '', 1, 0,
'C', '0', '0', 'app:customRequest:list', 'form', 'admin', NOW(), '', NULL,
'项目定制需求管理'
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'app:customRequest:list');
SET @custom_request_menu_id := (
SELECT menu_id FROM sys_menu WHERE perms = 'app:customRequest:list' LIMIT 1
);
INSERT INTO sys_menu
(menu_name, parent_id, order_num, path, component, query, is_frame, is_cache,
menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '定制需求查询', @custom_request_menu_id, 1, '', '', '', 1, 0,
'F', '0', '0', 'app:customRequest:query', '#', 'admin', NOW(), '', NULL, ''
WHERE @custom_request_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'app:customRequest:query');
INSERT INTO sys_menu
(menu_name, parent_id, order_num, path, component, query, is_frame, is_cache,
menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '定制状态修改', @custom_request_menu_id, 2, '', '', '', 1, 0,
'F', '0', '0', 'app:customRequest:edit', '#', 'admin', NOW(), '', NULL, ''
WHERE @custom_request_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'app:customRequest:edit');
SET @tech_stack_order_num := COALESCE(
(SELECT MAX(order_num) + 1 FROM sys_menu WHERE parent_id = @custom_request_parent_id),
1
);
INSERT INTO sys_menu
(menu_name, parent_id, order_num, path, component, query, is_frame, is_cache,
menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT
'技术栈管理', @custom_request_parent_id, @tech_stack_order_num,
'techStack', 'app/techStack/index', '', 1, 0,
'C', '0', '0', 'app:techStack:list', 'tree-table', 'admin', NOW(), '', NULL,
'项目定制技术栈管理'
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'app:techStack:list');
SET @tech_stack_menu_id := (
SELECT menu_id FROM sys_menu WHERE perms = 'app:techStack:list' LIMIT 1
);
INSERT INTO sys_menu
(menu_name, parent_id, order_num, path, component, query, is_frame, is_cache,
menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '技术栈查询', @tech_stack_menu_id, 1, '', '', '', 1, 0,
'F', '0', '0', 'app:techStack:query', '#', 'admin', NOW(), '', NULL, ''
WHERE @tech_stack_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'app:techStack:query');
INSERT INTO sys_menu
(menu_name, parent_id, order_num, path, component, query, is_frame, is_cache,
menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '技术栈新增', @tech_stack_menu_id, 2, '', '', '', 1, 0,
'F', '0', '0', 'app:techStack:add', '#', 'admin', NOW(), '', NULL, ''
WHERE @tech_stack_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'app:techStack:add');
INSERT INTO sys_menu
(menu_name, parent_id, order_num, path, component, query, is_frame, is_cache,
menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '技术栈修改', @tech_stack_menu_id, 3, '', '', '', 1, 0,
'F', '0', '0', 'app:techStack:edit', '#', 'admin', NOW(), '', NULL, ''
WHERE @tech_stack_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'app:techStack:edit');
INSERT INTO sys_menu
(menu_name, parent_id, order_num, path, component, query, is_frame, is_cache,
menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '技术栈删除', @tech_stack_menu_id, 4, '', '', '', 1, 0,
'F', '0', '0', 'app:techStack:remove', '#', 'admin', NOW(), '', NULL, ''
WHERE @tech_stack_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'app:techStack:remove');