Foxnic-Web 代碼生成 (10) —— 生成菜單與授權
概述
模塊代碼生成之後,我們需要為配置菜單。配置菜單是一系列的過程,包括創建資源、創建菜單並關聯資源,並將菜單授權給指定的角色。
本文中的示例代碼均可在 https://gitee.com/LeeFJ/foxni... 項目中找到,本文對照 webfull 項目講解。
完整示例
Foxnic-Web 項目提供代碼生成的完整示例,請大家參考:
https://gitee.com/LeeFJ/foxni...
生成菜單
生成菜單包含若干步驟,涉及到資源、菜單、角色等系統表。示例項目 webfull 中的 generator 模塊下的 MenuGenerator 類已經實現菜單生成與授權的全過程。以下是菜單生成時使用的部分代碼:
/**
* 超級管理員角色ID
* */
public static final String SUPER_ADMIN_ROLE_ID="110352963290923110";
public static void main(String[] args) {
MenuGenerator mg=null;
// 創建一個 MenuGenerator,並傳入必要的參數
mg=new MenuGenerator(WebFullTables.WEBFULL_EXAMPLE_REIMBURSEMENT.$TABLE, ReimbursementServiceProxy.class, ReimbursementPageController.class);
// 生成菜單
mg.generate("643084271635922944");
}
上面的代碼中,我們可以看到,MenuGenerator 使用一個常量指定了默認授權的角色。MenuGenerator 類在生成菜單時需要傳入數據表元數據對象、Proxy 類、PageController 類,以提取資源路徑。
生成菜單時調用 generate 方法,該方法需要傳入一個上級菜單ID作為參數。由於 generate 方法會操作多表,改方法在內部使用了事務管控,不會因為某個步驟失敗而產生垃圾數據。
generate 方法執行後會在控制枱輸出 batchId , 這個 batchId 也被存入菜單表中,batchId 可以用於以生成菜單的回滾。
回滾菜單
生成菜單時也有可能因為一些誤操作而生成了錯誤的菜單,這時我們就需要撤銷已經生成的菜單、資源以及角色授權。我們需要找到 batchId,然後調用 MenuGenerator.removeByBatchId() 。如下代碼所示:
public static void main(String[] args) {
MenuGenerator mg=null;
mg=new MenuGenerator(WebFullTables.WEBFULL_EXAMPLE_REIMBURSEMENT.$TABLE, ReimbursementServiceProxy.class, ReimbursementPageController.class);
//mg.generate("643084271635922944");
mg.removeByBatchId("608188281577799680");
}
小結
本節主介紹瞭如何生成模塊菜單,以及如果模塊菜單生成錯誤,如何通過 batchId 回滾撤銷已經生成的菜單。MenuGenerator 並沒有要求提供更多細節的菜單屬性,這些配置請到系統管理的菜單管理維護。
相關項目
https://gitee.com/LeeFJ/foxnic
https://gitee.com/LeeFJ/foxni...
https://gitee.com/lank/eam
https://gitee.com/LeeFJ/foxni...
官方文檔
http://foxnicweb.com/docs/doc...