Files
RuoYi-Vue/sql/custom_request.sql
2026-09-16 16:53:24 +08:00

176 lines
9.0 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 项目定制需求(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');