package foundation.system; import java.sql.SQLException; import java.util.Date; import java.util.List; import java.util.Set; import foundation.action.ActionProvider; import foundation.dao.Domain; import foundation.dao.Filter; import foundation.data.entity.Entity; import foundation.data.meta.DataMetaCenter; import foundation.data.object.DataObject; import foundation.data.object.DataObjectContainer; import foundation.data.object.EntitySaver; import foundation.data.object.Sequence; import foundation.json.JArrayReader; import foundation.json.JSONReader; import foundation.json.JType; import foundation.persist.NamedSQL; import foundation.persist.SQLRunner; import foundation.user.OnlineUser; import foundation.util.ID; import foundation.util.Util; import foundation.variant.provider.VariantCenter; public class SystemHandler extends ActionProvider { @Override protected void publishMethod() { //1. addMethod("getVariantListeners"); //2. 得到下一个变量的值 addMethod("getOneVariantValue"); //3. 重新加载配置 addMethod("reload"); //4. 同步字段配置(所有对象) addMethod("synchronizFields"); //4. 同步属性配置(所有对象) addMethod("synchronizPropertys"); //4. 同步字段+属性配置 addMethod("synchronizOneObjectMeta"); //4. 同步字段配置 addMethod("synchronizOneObjectFields"); //4. 同步属性配置 addMethod("synchronizOneObjectPropertys"); //5. 得到数据源配置 addMethod("getDataSourceList"); //6. 获取数据对象 addMethod("getDataObjectList"); //7. 得到指定sequence的当前值 addMethod("getSequence"); //8. 修改表字符集 addMethod("alterTablesCharset"); //9. 保存角色菜单 addMethod("saveRoleMenus"); //10. 保存角色菜单的button、tab addMethod("saveBtnAndTab"); //11. 操作数据权限明细配置 addMethod("operateSightLine"); //12. 计算过期 addMethod("refreshExpire"); //13. 重新加载角色 addMethod("reloadRole"); //13. 重新加载角色页面 addMethod("reloadRolePage"); } public void alterTablesCharset() throws Exception { List tables = SQLRunner.getTableList(); NamedSQL namedSQL = NamedSQL.getInstance("alterTableCharset"); for (String table: tables) { namedSQL.setTableName(table); namedSQL.execute(); } } public void getVariantListeners() throws Exception { VariantCenter variantCenter = VariantCenter.getInstance(); dataWriter.addValue("variantListeners", variantCenter); } public void getOneVariantValue() throws Exception { OnlineUser user = OnlineUser.getInstance(); String variantName = dataReader.getString(ISystem.VariantName); Object value = VariantCenter.getValue(null, variantName, user); dataWriter.addValue(value); } public void reload() throws Exception { } public void synchronizMetas() throws Exception { String tablePrefix = dataReader.getString("prefix"); DataMetaCenter.synchronizMetas(tablePrefix); } public void synchronizFields() throws Exception { String tablePrefix = dataReader.getString("prefix"); DataMetaCenter.synchronizFields(tablePrefix, null, null); } public void synchronizPropertys() throws Exception { String tablePrefix = dataReader.getString("prefix"); DataMetaCenter.synchronizPropertys(tablePrefix, null, null); } public void synchronizOneObjectMeta() throws Exception { String dataName = dataReader.getString("dataName"); Set includeFields = dataReader.getStringSet("includeFields"); if (Util.isEmpty(dataName)) { return; } DataObject dataObject = DataObject.getInstance(dataName); DataMetaCenter.synchronizOneObjectMeta(dataObject, includeFields, null); } public void synchronizOneObjectFields() throws Exception { String dataName = dataReader.getString("dataName"); Set includeFields = dataReader.getStringSet("includeFields"); if (Util.isEmpty(dataName)) { return; } DataObject dataObject = DataObject.getInstance(dataName); DataMetaCenter.synchronizOneObjectFields(dataObject, includeFields, null); } public void synchronizOneObjectPropertys() throws Exception { String dataName = dataReader.getString("dataName"); Set includeFields = dataReader.getStringSet("includeFields"); if (Util.isEmpty(dataName)) { return; } DataObject dataObject = DataObject.getInstance(dataName); DataMetaCenter.synchronizOneObjectPropertys(dataObject, includeFields, null); } public void getDataSourceList() throws Exception { } public void getDataObjectList() throws Exception { DataObjectContainer objectContainer = DataObjectContainer.getInstance(); dataWriter.addValue(objectContainer); } public void getSequence() throws Exception { String dataName = dataReader.getString("dataName"); DataObject dataObject = DataObject.getInstance(dataName); if (dataObject == null) { return; } String tableName = dataObject.getTableName(); Sequence sequence = new Sequence(tableName); long result = sequence.current(); dataWriter.addValue("sequence", result); } public void saveRoleMenus() throws Exception{ //1.获取接口传过来的值 String dataName = dataReader.getString("dataName"); String roleId = dataReader.getString("roleId"); JArrayReader menusList = dataReader.getReader("menus", JType.Array); //2.创建连接 DataObject dataObject = null; Filter filter = null; SQLRunner.beginTrans(); try { //3.删除(角色菜单表)sys_role_page dataObject = DataObject.getInstance(dataName); filter = new Filter(); filter.add("role_id", roleId); dataObject.deleteEntitySet(filter); //4.将menus列表中的菜单插入 for (JSONReader menu : menusList) { dataObject = DataObject.getInstance(dataName); EntitySaver saver = dataObject.createEntitySaver(); saver.set("id", ID.newValue()); saver.set("role_id", roleId); saver.set("page_id", menu.getString("pageId")); saver.set("menu_id", menu.getString("menuId")); saver.set("remark", menu.getString("remark")); saver.set("is_active", "T"); saver.insert(); } SQLRunner.commit(); } catch(Exception e) { e.printStackTrace(); try { SQLRunner.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } } SystemLoader.reloadRole(roleId, null); } public void saveBtnAndTab() throws Exception{ //1.获取接口传过来的值 String roleId = dataReader.getString("roleId"); String roleCode = dataReader.getString("roleCode"); String pageId = dataReader.getString("pageId"); String menuId = dataReader.getString("menuId"); JArrayReader buttons = dataReader.getReader("buttons", JType.Array); List tabs = dataReader.getStringList("tabs"); SQLRunner.beginTrans(); try { //3.保存角色页面按钮(sys_role_page_button) saveButton(roleId, roleCode, menuId, pageId, buttons); //4.保存角色页面Tab(sys_role_page_tab) saveTab(roleId, roleCode, menuId, pageId, tabs); SQLRunner.commit(); } catch(Exception e) { e.printStackTrace(); try { SQLRunner.rollback(); } catch (SQLException e1) { } } } public void refreshExpire() throws Exception { Domain domain = dataReader.getDomain(); String dataName = domain.getDataName(); if (Util.isEmpty(domain)) { return; } DataObject dataObject = DataObject.getInstance("sys_expire"); Entity entity = dataObject.getTableEntity(new Filter("data_name", dataName)); if (entity == null || !entity.getBoolean("is_active", true)) { return; } String field_expire_tag = entity.getString("field_expire_tag", "is_expire"); String field_date_to = entity.getString("field_date_to", "date_to"); NamedSQL namedSQL = NamedSQL.getInstance("refreshExpire"); namedSQL.setTableName(dataName); namedSQL.setParam("expire_tag", field_expire_tag); namedSQL.setParam("date_to", field_date_to); namedSQL.setParam("now", new Date()); int cnt = namedSQL.execute(); dataWriter.addValue(cnt); } public void reloadRole() throws Exception { String roleId = dataReader.getString("role_id"); SystemLoader.reloadRole(roleId, null); } public void reloadRolePage() throws Exception { String roleId = dataReader.getString("role_id"); String pageId = dataReader.getString("page_id"); SystemLoader.reloadRole(roleId, pageId); } public void saveTab(String roleId, String roleCode, String menuId, String pageId, List tabs) throws Exception { DataObject dataObject = null; Filter filter = null; Entity entity = null; if (tabs == null || tabs.isEmpty()) { return; } dataObject = DataObject.getInstance("sys_right_role_page_tab"); filter = new Filter(); filter.add("role_id", roleId); filter.add("page_id", pageId); filter.add("menu_id", menuId); dataObject.deleteEntitySet(filter); //1.将buttons列表中的菜单插入 for (String tabId : tabs) { //1.1 保存(角色菜单表)sys_role_page dataObject = DataObject.getInstance("sys_right_role_page_tab"); entity = dataObject.createTableEntity(true); entity.set("id", ID.newValue()); entity.set("role_id", roleId); entity.set("role_code", roleCode); entity.set("menu_id", menuId); entity.set("page_id", pageId); entity.set("tab_id", tabId); entity.set("is_visible", "T"); entity.set("is_active", "T"); dataObject.insertEntity(entity); } } public void saveButton(String roleId, String roleCode, String menuId, String pageId, JArrayReader buttons) throws Exception { DataObject dataObject = null; Filter filter = null; Entity entity = null; if (buttons == null || buttons.isEmpty()) { return; } dataObject = DataObject.getInstance("sys_right_role_page_button"); filter = new Filter(); filter.add("role_id", roleId); filter.add("page_id", pageId); filter.add("menu_id", menuId); dataObject.deleteEntitySet(filter); //1.将buttons列表中的菜单插入 for (JSONReader button : buttons) { //1.1 保存(角色菜单表)sys_role_page dataObject = DataObject.getInstance("sys_right_role_page_button"); entity = dataObject.createTableEntity(true); entity.set("id", ID.newValue()); entity.set("role_id", roleId); entity.set("role_code", roleCode); entity.set("page_id", pageId); entity.set("menu_id", menuId); entity.set("tab_id", button.getString("tab_id")); entity.set("button_id", button.getString("button_id")); entity.set("is_visible", "T"); entity.set("is_active", "T"); dataObject.insertEntity(entity); } } }