176 lines
9.0 KiB
SQL
176 lines
9.0 KiB
SQL
-- 项目定制需求(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');
|