Expand publishing and virtual product workflows
This commit is contained in:
140
sql/source_code_technology_backfill.sql
Normal file
140
sql/source_code_technology_backfill.sql
Normal file
@@ -0,0 +1,140 @@
|
||||
-- 将旧版 tt_code.code_technology 中的混合技术栈拆分到前端、后端和数据库字段。
|
||||
--
|
||||
-- 安全性:
|
||||
-- 1. 只填充 NULL 或空字符串,不覆盖已经维护的新字段;
|
||||
-- 2. 保留 code_technology 原值,便于核对和回退;
|
||||
-- 3. 可重复执行,第二次执行不会再次修改已经填充的数据。
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
UPDATE `tt_code`
|
||||
SET
|
||||
`frontend_technology` = CASE
|
||||
WHEN NULLIF(TRIM(`frontend_technology`), '') IS NOT NULL
|
||||
THEN `frontend_technology`
|
||||
WHEN LOWER(`code_technology`) LIKE '%vue3%'
|
||||
THEN CONCAT(
|
||||
'Vue 3',
|
||||
IF(LOWER(`code_technology`) LIKE '%elementui%', ' + Element UI', ''),
|
||||
IF(LOWER(`code_technology`) LIKE '%nodejs14%', ' + Node.js 14',
|
||||
IF(LOWER(`code_technology`) LIKE '%nodejs%', ' + Node.js', '')),
|
||||
IF(`code_technology` LIKE '%微信小程序%', ' + 微信小程序', ''),
|
||||
IF(`code_technology` LIKE '%原生小程序%', ' + 原生小程序', '')
|
||||
)
|
||||
WHEN LOWER(`code_technology`) LIKE '%vue2%'
|
||||
THEN CONCAT(
|
||||
'Vue 2',
|
||||
IF(LOWER(`code_technology`) LIKE '%elementui%', ' + Element UI', ''),
|
||||
IF(LOWER(`code_technology`) LIKE '%nodejs14%', ' + Node.js 14',
|
||||
IF(LOWER(`code_technology`) LIKE '%nodejs%', ' + Node.js', '')),
|
||||
IF(`code_technology` LIKE '%微信小程序%', ' + 微信小程序', ''),
|
||||
IF(`code_technology` LIKE '%原生小程序%', ' + 原生小程序', '')
|
||||
)
|
||||
WHEN LOWER(`code_technology`) LIKE '%vue%'
|
||||
THEN CONCAT(
|
||||
'Vue',
|
||||
IF(LOWER(`code_technology`) LIKE '%elementui%', ' + Element UI', ''),
|
||||
IF(LOWER(`code_technology`) LIKE '%nodejs14%', ' + Node.js 14',
|
||||
IF(LOWER(`code_technology`) LIKE '%nodejs%', ' + Node.js', ''))
|
||||
)
|
||||
WHEN LOWER(`code_technology`) LIKE '%thymeleaf%'
|
||||
THEN CONCAT(
|
||||
'Thymeleaf',
|
||||
IF(LOWER(`code_technology`) LIKE '%bootstrap%', ' + Bootstrap', ''),
|
||||
IF(LOWER(`code_technology`) LIKE '%jquery%', ' + jQuery', '')
|
||||
)
|
||||
WHEN LOWER(`code_technology`) LIKE '%jsp%'
|
||||
THEN CONCAT(
|
||||
'JSP',
|
||||
IF(LOWER(`code_technology`) LIKE '%jstl%', ' + JSTL', ''),
|
||||
IF(LOWER(`code_technology`) LIKE '%bootstrap%', ' + Bootstrap', ''),
|
||||
IF(LOWER(`code_technology`) LIKE '%layui%', ' + Layui', '')
|
||||
)
|
||||
WHEN LOWER(`code_technology`) LIKE '%html%'
|
||||
THEN 'HTML'
|
||||
WHEN LOWER(`code_technology`) LIKE '%bootstrap%'
|
||||
THEN CONCAT(
|
||||
'Bootstrap',
|
||||
IF(LOWER(`code_technology`) LIKE '%highcharts%', ' + Highcharts', '')
|
||||
)
|
||||
ELSE '未单独记录'
|
||||
END,
|
||||
`backend_technology` = CASE
|
||||
WHEN NULLIF(TRIM(`backend_technology`), '') IS NOT NULL
|
||||
THEN `backend_technology`
|
||||
WHEN LOWER(`code_technology`) LIKE '%php%'
|
||||
THEN 'PHP'
|
||||
WHEN LOWER(`code_technology`) LIKE '%servlet%'
|
||||
THEN CONCAT(
|
||||
'Java 8 + Servlet',
|
||||
IF(LOWER(`code_technology`) LIKE '%jdbc%', ' + JDBC', '')
|
||||
)
|
||||
WHEN LOWER(`code_technology`) LIKE '%springboot2%'
|
||||
THEN CONCAT(
|
||||
'Java 8 + Spring Boot 2',
|
||||
IF(LOWER(`code_technology`) LIKE '%mybatis-plus%'
|
||||
OR LOWER(`code_technology`) LIKE '%mybatisplus%', ' + MyBatis-Plus',
|
||||
IF(LOWER(`code_technology`) LIKE '%mybatis%', ' + MyBatis', ''))
|
||||
)
|
||||
WHEN LOWER(`code_technology`) LIKE '%springboot%'
|
||||
THEN CONCAT(
|
||||
'Java 8 + Spring Boot',
|
||||
IF(LOWER(`code_technology`) LIKE '%mybatis-plus%'
|
||||
OR LOWER(`code_technology`) LIKE '%mybatisplus%', ' + MyBatis-Plus',
|
||||
IF(LOWER(`code_technology`) LIKE '%mybatis%', ' + MyBatis', ''))
|
||||
)
|
||||
WHEN LOWER(`code_technology`) LIKE '%springmvc%'
|
||||
OR LOWER(`code_technology`) LIKE '%springmmvc%'
|
||||
OR LOWER(`code_technology`) LIKE '%ssm%'
|
||||
THEN CONCAT(
|
||||
'Java 8 + Spring + Spring MVC',
|
||||
IF(LOWER(`code_technology`) LIKE '%mybatis-plus%'
|
||||
OR LOWER(`code_technology`) LIKE '%mybatisplus%', ' + MyBatis-Plus',
|
||||
IF(LOWER(`code_technology`) LIKE '%mybatis%'
|
||||
OR LOWER(`code_technology`) LIKE '%mabtis%', ' + MyBatis', ''))
|
||||
)
|
||||
ELSE '未单独记录'
|
||||
END,
|
||||
`database_technology` = CASE
|
||||
WHEN NULLIF(TRIM(`database_technology`), '') IS NOT NULL
|
||||
THEN `database_technology`
|
||||
WHEN LOWER(`code_environment`) LIKE '%mysql8.0%'
|
||||
OR LOWER(`code_environment`) LIKE '%mysql 8.0%'
|
||||
OR LOWER(`code_environment`) LIKE '%mysql8%'
|
||||
OR LOWER(`code_environment`) LIKE '%mysql 8%'
|
||||
THEN CONCAT(
|
||||
'MySQL 8.0',
|
||||
IF(LOWER(`code_environment`) LIKE '%redis%', ' + Redis', '')
|
||||
)
|
||||
WHEN LOWER(`code_environment`) LIKE '%mysql5.7%'
|
||||
OR LOWER(`code_environment`) LIKE '%mysql 5.7%'
|
||||
THEN CONCAT(
|
||||
'MySQL 5.7',
|
||||
IF(LOWER(`code_environment`) LIKE '%redis%', ' + Redis', '')
|
||||
)
|
||||
WHEN LOWER(`code_environment`) LIKE '%mysql%'
|
||||
OR LOWER(`code_technology`) LIKE '%mysql%'
|
||||
THEN CONCAT(
|
||||
'MySQL',
|
||||
IF(LOWER(`code_environment`) LIKE '%redis%', ' + Redis', '')
|
||||
)
|
||||
ELSE '未单独记录'
|
||||
END
|
||||
WHERE NULLIF(TRIM(`code_technology`), '') IS NOT NULL
|
||||
AND (
|
||||
NULLIF(TRIM(`frontend_technology`), '') IS NULL
|
||||
OR NULLIF(TRIM(`backend_technology`), '') IS NULL
|
||||
OR NULLIF(TRIM(`database_technology`), '') IS NULL
|
||||
);
|
||||
|
||||
SELECT ROW_COUNT() AS `backfilled_rows`;
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- 执行结果检查:三个 blank_* 都应为 0。
|
||||
SELECT
|
||||
COUNT(*) AS `total`,
|
||||
SUM(NULLIF(TRIM(`frontend_technology`), '') IS NULL) AS `frontend_blank`,
|
||||
SUM(NULLIF(TRIM(`backend_technology`), '') IS NULL) AS `backend_blank`,
|
||||
SUM(NULLIF(TRIM(`database_technology`), '') IS NULL) AS `database_blank`
|
||||
FROM `tt_code`;
|
||||
@@ -1,5 +1,6 @@
|
||||
-- 源码信息新增前端、后端、数据库技术字段。
|
||||
-- 执行前请先备份数据库。适用于当前项目的 MySQL 数据库。
|
||||
-- 新增字段后,可执行 source_code_technology_backfill.sql 补齐旧数据。
|
||||
|
||||
ALTER TABLE `tt_code`
|
||||
ADD COLUMN `frontend_technology` VARCHAR(255) NULL COMMENT '前端' AFTER `code_technology`,
|
||||
|
||||
@@ -60,8 +60,8 @@ CREATE TABLE app_resource_entitlement (
|
||||
|
||||
-- 执行迁移后:
|
||||
-- 1. 在微信公众平台创建各价格档位的道具并发布;
|
||||
-- 2. 在若依后台编辑付费资源,填写“价格(分)”和对应的 productId;
|
||||
-- 3. 同一价格填写同一个 productId,后台会自动维护 app_virtual_product 映射。
|
||||
-- 2. 执行 sql/virtual_product_menu.sql,重新登录后在“虚拟道具管理”中维护相同的 productId 和价格;
|
||||
-- 3. 在若依后台编辑付费资源,规格只需填写“价格(分)”,系统按价格自动匹配已启用道具。
|
||||
|
||||
-- 当前小程序已发布的微信虚拟道具价格映射。
|
||||
-- product_id 必须与微信后台保持完全一致(包括 resourse 的现有拼写)。
|
||||
|
||||
69
sql/virtual_product_menu.sql
Normal file
69
sql/virtual_product_menu.sql
Normal file
@@ -0,0 +1,69 @@
|
||||
-- 虚拟道具管理菜单(可重复执行)
|
||||
-- 默认与“虚拟支付订单”或“支付订单”同级;均未找到时作为一级菜单显示。
|
||||
|
||||
SET @virtual_product_parent_id := COALESCE(
|
||||
(SELECT parent_id FROM sys_menu WHERE perms = 'app:virtualOrder:list' LIMIT 1),
|
||||
(SELECT parent_id FROM sys_menu WHERE perms = 'app:order:list' LIMIT 1),
|
||||
0
|
||||
);
|
||||
|
||||
SET @virtual_product_order_num := COALESCE(
|
||||
(SELECT MAX(order_num) + 1 FROM sys_menu WHERE parent_id = @virtual_product_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
|
||||
'虚拟道具管理', @virtual_product_parent_id, @virtual_product_order_num,
|
||||
'virtualProduct', 'app/virtualProduct/index', '', 1, 0,
|
||||
'C', '0', '0', 'app:virtualProduct:list', 'shopping', 'admin', NOW(), '', NULL,
|
||||
'微信虚拟支付价格档位与道具映射管理'
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_menu WHERE perms = 'app:virtualProduct:list'
|
||||
);
|
||||
|
||||
SET @virtual_product_menu_id := (
|
||||
SELECT menu_id FROM sys_menu WHERE perms = 'app:virtualProduct: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 '虚拟道具查询', @virtual_product_menu_id, 1, '', '', '', 1, 0,
|
||||
'F', '0', '0', 'app:virtualProduct:query', '#', 'admin', NOW(), '', NULL, ''
|
||||
WHERE @virtual_product_menu_id IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'app:virtualProduct: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 '虚拟道具新增', @virtual_product_menu_id, 2, '', '', '', 1, 0,
|
||||
'F', '0', '0', 'app:virtualProduct:add', '#', 'admin', NOW(), '', NULL, ''
|
||||
WHERE @virtual_product_menu_id IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'app:virtualProduct: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 '虚拟道具修改', @virtual_product_menu_id, 3, '', '', '', 1, 0,
|
||||
'F', '0', '0', 'app:virtualProduct:edit', '#', 'admin', NOW(), '', NULL, ''
|
||||
WHERE @virtual_product_menu_id IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'app:virtualProduct: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 '虚拟道具删除', @virtual_product_menu_id, 4, '', '', '', 1, 0,
|
||||
'F', '0', '0', 'app:virtualProduct:remove', '#', 'admin', NOW(), '', NULL, ''
|
||||
WHERE @virtual_product_menu_id IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'app:virtualProduct:remove');
|
||||
|
||||
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 '虚拟道具导出', @virtual_product_menu_id, 5, '', '', '', 1, 0,
|
||||
'F', '0', '0', 'app:virtualProduct:export', '#', 'admin', NOW(), '', NULL, ''
|
||||
WHERE @virtual_product_menu_id IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'app:virtualProduct:export');
|
||||
Reference in New Issue
Block a user