88 lines
4.8 KiB
JavaScript
88 lines
4.8 KiB
JavaScript
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();
|
||
}
|
||
})();
|