This commit is contained in:
owenchen committed 2026-10-22 13:55:27 +08:00
1 parent c6eb00b406
commit 1c91f62ff6
58 files changed
+3888 -69

No files matched your search

+87
View File
@@ -0,0 +1,87 @@
const mysql = require("mysql2/promise");
const NOW = () => new Date();
const AUD = ["created_datetime", "created_by", "updated_datetime", "updated_by"];
(async () => {
const conn = await mysql.createConnection({
host: "nas.youjiala.com", port: 3307, user: "root",
password: "Root@1237890", database: "Furion", charset: "utf8mb4",
multipleStatements: false,
});
const run = async (sql, params, label) => {
const [res] = await conn.execute(sql, params);
console.log(` [${label}] changedRows=${res.changedRows ?? res.affectedRows}`);
return res;
};
try {
await conn.query("START TRANSACTION");
// 1) 权限 security_permission
await run(
`INSERT INTO security_permission (${AUD.join(",")},permission_name,dependent,description,delegate_indc)
VALUES (?,?,?,?,'Article','','有家文化传承','')
ON DUPLICATE KEY UPDATE updated_datetime=VALUES(updated_datetime),description=VALUES(description)`,
[NOW(), "001", NOW(), "001"], "permission");
// 2) 功能 security_function(容器 + 查询 + 管理,镜像 photo_dic 家族)
const funcs = [
["article_dic", "有家文化", "article_dic", "N", "", "", "picture", ""],
["ArticleEnquiry", "文化传承查询", "ArticleEnquiry", "Y", "/src/views/master/ArticleEnquiry.vue", "/master/ArticleEnquiry", "wenjiansousuo", ""],
["ArticleOperation", "文化传承管理", "ArticleOperation", "Y", "/src/views/master/ArticleOperation.vue", "/master/ArticleOperation", "picture", ""],
];
for (const f of funcs) {
await run(
`INSERT INTO security_function (${AUD.join(",")},function_name,function_local_name,function_eng_name,function_indc,page_url,api_route,icon,page_name)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?)
ON DUPLICATE KEY UPDATE updated_datetime=VALUES(updated_datetime),function_local_name=VALUES(function_local_name),page_url=VALUES(page_url),api_route=VALUES(api_route),icon=VALUES(icon)`,
[NOW(), "001", NOW(), "001", f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]], "function:" + f[0]);
}
// 3) 功能树 security_function_map(挂到 BOOTUP 下,并把两个子功能挂进 article_dic)
const fmap = [["BOOTUP", "article_dic", 7], ["article_dic", "ArticleEnquiry", 1], ["article_dic", "ArticleOperation", 2]];
for (const m of fmap) {
await run(
`INSERT INTO security_function_map (${AUD.join(",")},function_name_parent,function_name_son,orderby)
VALUES (?,?,?,?,?,?,?)
ON DUPLICATE KEY UPDATE updated_datetime=VALUES(updated_datetime),orderby=VALUES(orderby)`,
[NOW(), "001", NOW(), "001", m[0], m[1], m[2]], "fmap:" + m[0] + ">" + m[1]);
}
// 4) 权限-功能映射 security_permission_function_map
const pfmap = [["Article", "ArticleEnquiry"], ["Article", "ArticleOperation"]];
for (const m of pfmap) {
await run(
`INSERT INTO security_permission_function_map (${AUD.join(",")},permission_name,function_name)
VALUES (?,?,?,?,?,?)
ON DUPLICATE KEY UPDATE updated_datetime=VALUES(updated_datetime)`,
[NOW(), "001", NOW(), "001", m[0], m[1]], "pfmap:" + m[1]);
}
// 5) 组权限分配 security_group_permission(授 vip_group 四动作全 Y,镜像 PublishPhoto)
await run(
`INSERT INTO security_group_permission (${AUD.join(",")},group_name,permission_name,view_indc,create_indc,amend_indc,delete_indc,dependent)
VALUES (?,?,?,?,'vip_group','Article','Y','Y','Y','Y','')
ON DUPLICATE KEY UPDATE updated_datetime=VALUES(updated_datetime),view_indc='Y',create_indc='Y',amend_indc='Y',delete_indc='Y'`,
[NOW(), "001", NOW(), "001"], "group_perm:vip_group");
await conn.query("COMMIT");
console.log("\nCOMMIT OK");
// 回读校验
const check = async (t, s) => { const [r] = await conn.query(s); console.log("\n== " + t + " =="); console.log(JSON.stringify(r)); };
await check("permission", "SELECT permission_name,description FROM security_permission WHERE permission_name='Article'");
await check("function", "SELECT function_name,function_local_name,function_indc,icon FROM security_function WHERE function_name LIKE 'article%' OR function_name LIKE 'Article%'");
await check("function_map", "SELECT function_name_parent,function_name_son,orderby FROM security_function_map WHERE function_name_son LIKE 'article%' OR function_name_son LIKE 'Article%'");
await check("perm_function_map", "SELECT permission_name,function_name FROM security_permission_function_map WHERE permission_name='Article'");
await check("group_permission", "SELECT group_name,permission_name,view_indc,create_indc,amend_indc,delete_indc FROM security_group_permission WHERE permission_name='Article'");
} catch (e) {
await conn.query("ROLLBACK");
console.log("ERROR -> ROLLBACK: " + e.message);
process.exitCode = 1;
} finally {
await conn.end();
}
})();