125 lines
4.2 KiB
Plaintext
125 lines
4.2 KiB
Plaintext
DELIMITER //
|
|
|
|
CREATE OR REPLACE FUNCTION udf_myfavor(
|
|
p_moduleid VARCHAR(100),
|
|
p_userid VARCHAR(20),
|
|
p_ver_type VARCHAR(10),
|
|
p_ip VARCHAR(100),
|
|
p_db2 VARCHAR(100)
|
|
)
|
|
RETURNS LONGTEXT
|
|
DETERMINISTIC
|
|
/*
|
|
function : 將傳入的字串, 依 @split 固定切割為 2筆資料, 仍傳回 table, 這是特殊的用法
|
|
description:
|
|
呼叫範例 SELECT udf_myfavor('eip','admin','beta','','')
|
|
build date : 2023/11/01
|
|
|
|
modify history
|
|
item who date modify docs
|
|
==== ========== ========== ================================================
|
|
1 michael 2023/11/01 新增
|
|
*/
|
|
BEGIN
|
|
DECLARE v_ret_menu LONGTEXT;
|
|
DECLARE v_imax2 INT;
|
|
DECLARE v_y2 INT;
|
|
DECLARE v_comma VARCHAR(1);
|
|
DECLARE v_id2 VARCHAR(100);
|
|
DECLARE v_name2 VARCHAR(100);
|
|
DECLARE v_isLocalMenu VARCHAR(1);
|
|
DECLARE v_crlf VARCHAR(2);
|
|
|
|
-- 創建臨時表來存儲數據
|
|
DROP TEMPORARY TABLE IF EXISTS temp_menu_favor;
|
|
CREATE TEMPORARY TABLE temp_menu_favor (
|
|
menuid VARCHAR(100),
|
|
caption VARCHAR(100),
|
|
isLocalMenu VARCHAR(1),
|
|
rowid INT AUTO_INCREMENT PRIMARY KEY
|
|
) ENGINE=MEMORY;
|
|
|
|
-- 插入數據到臨時表
|
|
INSERT INTO temp_menu_favor (menuid, caption, isLocalMenu)
|
|
SELECT a.functiontag, b.caption, IFNULL(b.isLocalMenu, 'N')
|
|
FROM sys_myfavor a
|
|
LEFT JOIN sys_menutable b ON a.functiontag = b.menuid
|
|
WHERE module = p_moduleid AND userid = p_userid;
|
|
|
|
SET v_ret_menu = '';
|
|
SET v_crlf = CHAR(10);
|
|
|
|
-- 內層迴圈
|
|
SELECT IFNULL(MAX(rowid), 0) INTO v_imax2 FROM temp_menu_favor;
|
|
SELECT IFNULL(MIN(rowid), 0) INTO v_y2 FROM temp_menu_favor;
|
|
|
|
WHILE v_y2 <= v_imax2 AND v_imax2 > 0 DO
|
|
IF v_y2 = v_imax2 THEN
|
|
SET v_comma = '';
|
|
ELSE
|
|
SET v_comma = ',';
|
|
END IF;
|
|
|
|
SELECT menuid, caption, isLocalMenu
|
|
INTO v_id2, v_name2, v_isLocalMenu
|
|
FROM temp_menu_favor
|
|
WHERE rowid = v_y2;
|
|
|
|
IF v_isLocalMenu = 'Y' THEN
|
|
-- 本地端 json 程式
|
|
SET v_ret_menu = CONCAT(
|
|
v_ret_menu,
|
|
' {', v_crlf,
|
|
' "label": "', v_name2, '",', v_crlf,
|
|
' "url": "/', p_moduleid, '/', v_id2, '",', v_crlf,
|
|
' "schemaApi": "get:/pages/', v_id2, '.json"', v_crlf,
|
|
' }', v_comma, v_crlf
|
|
);
|
|
ELSE
|
|
-- 真正的動態載入 code(test ok, but wait to use)
|
|
SET v_ret_menu = CONCAT(
|
|
v_ret_menu,
|
|
' {', v_crlf,
|
|
' "label": "', v_name2, '",', v_crlf,
|
|
' "url": "/', p_moduleid, '/', v_id2, '",', v_crlf,
|
|
' "schemaApi": {', v_crlf,
|
|
' "method": "post",', v_crlf,
|
|
' "url": "', p_ip, '/xapi/v2/', p_db2, '/zen_showsource/0/",', v_crlf,
|
|
' "data": {', v_crlf,
|
|
' "para01": "', v_id2, '",', v_crlf,
|
|
' "para02": "', p_ver_type, '",', v_crlf,
|
|
' "para03": "', p_ip, '"', v_crlf,
|
|
' },', v_crlf,
|
|
' "dataType": "form"', v_crlf,
|
|
' }', v_crlf,
|
|
' }', v_comma, v_crlf
|
|
);
|
|
END IF;
|
|
|
|
SET v_y2 = v_y2 + 1;
|
|
END WHILE;
|
|
|
|
IF v_ret_menu <> '' THEN
|
|
SET v_ret_menu = CONCAT(
|
|
' {', v_crlf,
|
|
' "children": [', v_crlf,
|
|
' {', v_crlf,
|
|
' "label": "我的最愛",', v_crlf,
|
|
' "url": "/sys",', v_crlf,
|
|
' "icon": "fa fa-heart-o",', v_crlf,
|
|
' "children": [', v_crlf,
|
|
v_ret_menu,
|
|
' ]', v_crlf,
|
|
' }', v_crlf,
|
|
' ]', v_crlf,
|
|
' },', v_crlf
|
|
);
|
|
END IF;
|
|
|
|
-- 清理臨時表
|
|
DROP TEMPORARY TABLE IF EXISTS temp_menu_favor;
|
|
|
|
RETURN v_ret_menu;
|
|
END //
|
|
|
|
DELIMITER ; |