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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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);
|
}
|
}
|
}
|