| package com.stylefeng.guns.generator.engine.config; | 
|   | 
| import com.baomidou.mybatisplus.toolkit.IdWorker; | 
| import com.stylefeng.guns.core.constant.IsMenu; | 
| import com.stylefeng.guns.core.util.ToolUtil; | 
|   | 
| import java.sql.Connection; | 
| import java.sql.PreparedStatement; | 
| import java.sql.ResultSet; | 
| import java.sql.SQLException; | 
| import java.util.ArrayList; | 
| import java.util.List; | 
|   | 
| /** | 
|  * 全局配置 | 
|  * | 
|  * @author fengshuonan | 
|  * @date 2017-05-08 20:21 | 
|  */ | 
| public class SqlConfig { | 
|   | 
|     private String sqlPathTemplate; | 
|   | 
|     private ContextConfig contextConfig; | 
|   | 
|     private Connection connection; | 
|   | 
|     private String parentMenuName; | 
|   | 
|     private List<Menu> menus = new ArrayList<>(6); | 
|   | 
|     public void init() { | 
|   | 
|         this.sqlPathTemplate = "\\src\\main\\java\\{}.sql"; | 
|   | 
|         if (parentMenuName == null) { | 
|             return; | 
|         } | 
|   | 
|         //根据父菜单查询数据库中的pcode和pcodes | 
|         String[] pcodeAndPcodes = getPcodeAndPcodes(); | 
|         if (pcodeAndPcodes == null) { | 
|             System.err.println("父级菜单名称输入有误!!!!"); | 
|             return; | 
|         } | 
|   | 
|         //业务菜单 | 
|         Menu menu = new Menu(); | 
|         menu.setId(IdWorker.getId()); | 
|         menu.setCode(contextConfig.getBizEnName()); | 
|         menu.setPcode(pcodeAndPcodes[0]); | 
|         menu.setPcodes(pcodeAndPcodes[1] + "[" + pcodeAndPcodes[0] + "],"); | 
|         menu.setName(contextConfig.getBizChName()); | 
|         menu.setIcon(""); | 
|         menu.setUrl("/" + contextConfig.getBizEnName()); | 
|         menu.setNum(99); | 
|   | 
|         if (parentMenuName.equals("顶级")) { | 
|             menu.setLevels(1); | 
|         } else { | 
|             menu.setLevels(2); | 
|         } | 
|         menu.setIsmenu(IsMenu.YES.getCode()); | 
|         menu.setStatus(1); | 
|         menu.setIsopen(0); | 
|         menus.add(menu); | 
|   | 
|         //列表 | 
|         Menu list = createSubMenu(menu); | 
|         list.setCode(contextConfig.getBizEnName() + "_list"); | 
|         list.setName(contextConfig.getBizChName() + "列表"); | 
|         list.setUrl("/" + contextConfig.getBizEnName() + "/list"); | 
|         menus.add(list); | 
|   | 
|         //添加 | 
|         Menu add = createSubMenu(menu); | 
|         add.setCode(contextConfig.getBizEnName() + "_add"); | 
|         add.setName(contextConfig.getBizChName() + "添加"); | 
|         add.setUrl("/" + contextConfig.getBizEnName() + "/add"); | 
|         menus.add(add); | 
|   | 
|         //更新 | 
|         Menu update = createSubMenu(menu); | 
|         update.setCode(contextConfig.getBizEnName() + "_update"); | 
|         update.setName(contextConfig.getBizChName() + "更新"); | 
|         update.setUrl("/" + contextConfig.getBizEnName() + "/update"); | 
|         menus.add(update); | 
|   | 
|         //删除 | 
|         Menu delete = createSubMenu(menu); | 
|         delete.setCode(contextConfig.getBizEnName() + "_delete"); | 
|         delete.setName(contextConfig.getBizChName() + "删除"); | 
|         delete.setUrl("/" + contextConfig.getBizEnName() + "/delete"); | 
|         menus.add(delete); | 
|   | 
|         //详情 | 
|         Menu detail = createSubMenu(menu); | 
|         detail.setCode(contextConfig.getBizEnName() + "_detail"); | 
|         detail.setName(contextConfig.getBizChName() + "详情"); | 
|         detail.setUrl("/" + contextConfig.getBizEnName() + "/detail"); | 
|         menus.add(detail); | 
|     } | 
|   | 
|     private Menu createSubMenu(Menu parentMenu) { | 
|         Menu menu = new Menu(); | 
|         menu.setId(IdWorker.getId()); | 
|         menu.setPcode(parentMenu.getCode()); | 
|         menu.setPcodes(parentMenu.getPcodes() + "[" + parentMenu.getCode() + "],"); | 
|         menu.setIcon(""); | 
|         menu.setNum(99); | 
|         menu.setLevels(parentMenu.getLevels() + 1); | 
|         menu.setIsmenu(IsMenu.NO.getCode()); | 
|         menu.setStatus(1); | 
|         menu.setIsopen(0); | 
|         return menu; | 
|     } | 
|   | 
|     public String[] getPcodeAndPcodes() { | 
|         if (parentMenuName.equals("顶级")) { | 
|             return new String[]{"0", ""}; | 
|         } | 
|         PreparedStatement preparedStatement = null; | 
|         try { | 
|             preparedStatement = connection.prepareStatement("select * from sys_menu where name like ?"); | 
|             preparedStatement.setString(1, "%" + parentMenuName + "%"); | 
|             ResultSet results = preparedStatement.executeQuery(); | 
|             while (results.next()) { | 
|                 String pcode = results.getString("code"); | 
|                 String pcodes = results.getString("pcodes"); | 
|                 if (ToolUtil.isNotEmpty(pcode) && ToolUtil.isNotEmpty(pcodes)) { | 
|                     String[] strings = {pcode, pcodes}; | 
|                     return strings; | 
|                 } else { | 
|                     return null; | 
|                 } | 
|             } | 
|         } catch (SQLException e) { | 
|             e.printStackTrace(); | 
|         } finally { | 
|             // 释放资源 | 
|             try { | 
|                 if (preparedStatement != null) { | 
|                     preparedStatement.close(); | 
|                 } | 
|                 if (connection != null) { | 
|                     connection.close(); | 
|                 } | 
|             } catch (SQLException e) { | 
|                 e.printStackTrace(); | 
|             } | 
|         } | 
|         return null; | 
|     } | 
|   | 
|     public ContextConfig getContextConfig() { | 
|         return contextConfig; | 
|     } | 
|   | 
|     public void setContextConfig(ContextConfig contextConfig) { | 
|         this.contextConfig = contextConfig; | 
|     } | 
|   | 
|     public String getParentMenuName() { | 
|         return parentMenuName; | 
|     } | 
|   | 
|     public void setParentMenuName(String parentMenuName) { | 
|         this.parentMenuName = parentMenuName; | 
|     } | 
|   | 
|     public Connection getConnection() { | 
|         return connection; | 
|     } | 
|   | 
|     public void setConnection(Connection connection) { | 
|         this.connection = connection; | 
|     } | 
|   | 
|     public String getSqlPathTemplate() { | 
|         return sqlPathTemplate; | 
|     } | 
|   | 
|     public void setSqlPathTemplate(String sqlPathTemplate) { | 
|         this.sqlPathTemplate = sqlPathTemplate; | 
|     } | 
|   | 
|     public List<Menu> getMenus() { | 
|         return menus; | 
|     } | 
|   | 
|     public void setMenus(List<Menu> menus) { | 
|         this.menus = menus; | 
|     } | 
| } |