package foundation.system; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.Iterator; import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import foundation.capacity.Actor; import foundation.capacity.ActorBucket; import foundation.capacity.ActorTarget; import foundation.capacity.ActorsRuntime; import foundation.capacity.role.Role; import foundation.capacity.role.RoleMenu; import foundation.capacity.role.RolePage; import foundation.dao.preload.Bucket; import foundation.dao.preload.Tree; import foundation.data.entity.Entity; import foundation.data.entity.IDictionary; import foundation.dictionary.DictionaryBucket; import foundation.geography.CityBucket; import foundation.geography.CountyBucket; import foundation.geography.ProvinceBucket; import foundation.handler.Handler; import foundation.json.JObjectReader; import foundation.json.JSONBuilder; import foundation.menu.Menu; import foundation.menu.MenuTree; import foundation.persist.NamedSQL; import foundation.persist.SQLRunner; import foundation.token.UserToken; import foundation.user.OnlineUser; import foundation.user.User; import foundation.user.UserBucket; import foundation.util.Util; public class ClientHandler extends Handler { protected static Logger logger; private static DateFormat dateFormat; static { logger = LogManager.getLogger(ClientHandler.class); dateFormat = new SimpleDateFormat("yyyy-MM-dd"); } @Override protected void publishMethod() { //1. login addMethod("login"); //2. login addMethod("systemLogin"); //3. get user addMethod("getUser"); //4. change password addMethod("changePassword"); //5. get user capacity addMethod("getCapacity"); //6. change user actor addMethod("changeCurrentActor"); //7. get menu tree addMethod("getMenuTree"); //8. get menu tree all addMethod("getMenuTreeAll"); //9. get page addMethod("getPage"); //10. 获取字典 addMethod("getDictionarys"); //11. 获取一个字典 addMethod("getOneDictionary"); //12. 获取省份列表 addMethod("getProvinceList"); //13. 获取城市列表 addMethod("getCityList"); //14. 得到区县列表 addMethod("getCountyList"); //15. 得到系统当前日期 addMethod("getCalendar"); //16. 得到对应角色的菜单页面 addMethod("getPageByRole"); //1. 获取角色页面button、tab addMethod("getBtnTabByRolePage"); } public void login() throws Exception { JObjectReader dataReader = dataPool.getJObjectReader(); if (dataReader.isEmpty()) { resultPool.setSuccess(false); return; } String userName = dataReader.getString("userName"); String password = dataReader.getString("password"); NamedSQL namedSQL = NamedSQL.getInstance("getUser"); namedSQL.setParam("userName", userName); namedSQL.setParam("password", password); namedSQL.setParam("is_active", "T"); Entity entity = SQLRunner.getEntity(namedSQL); if (entity == null) { resultPool.setSuccess(false); return; } String userCaption = entity.getString("employee_name"); if (Util.isEmpty(userCaption)) { userCaption = entity.getString("name"); } LoginResult result = new LoginResult(entity); resultPool.addValue("data", result); } public void systemLogin() throws Exception { JObjectReader dataReader = dataPool.getJObjectReader(); if (dataReader.isEmpty()) { resultPool.setSuccess(false); return; } String secret = dataReader.getString("secret"); String systemId = dataReader.getString("systemId"); String userSecret = dataReader.getString("userSecret"); String oaAccount = dataReader.getString("oaAccount"); //1. 进行secret合法性检查 boolean systemIdentify = "SystemOAWeaver".equalsIgnoreCase(systemId); boolean systemSecretentify = "KCMSIEUASKEOIQWANTVWOWPOWPPWIEIR".equalsIgnoreCase(secret); if (systemIdentify && systemSecretentify) { //2. 进行用户存在检查 NamedSQL namedSQL = NamedSQL.getInstance("getUserByUsername"); namedSQL.setParam("oaAccount", oaAccount); namedSQL.setParam("userSecret", userSecret); namedSQL.setParam("isActive", "T"); Entity entity = SQLRunner.getEntity(namedSQL); if (entity == null) { resultPool.setSuccess(false); return; } String userCaption = entity.getString("employee_name"); if (Util.isEmpty(userCaption)) { userCaption = entity.getString("name"); } LoginResult result = new LoginResult(entity); resultPool.addValue("data", result); } else { resultPool.setSuccess(false); return; } } public void getUser() throws Exception { JObjectReader dataReader = dataPool.getJObjectReader(); if (dataReader.isEmpty()) { resultPool.setSuccess(false); return; } OnlineUser user = OnlineUser.getInstance(); if (user == null) { return; } user.collectActors(); resultPool.addValue("user", user); } public void changePassword() throws Exception { JObjectReader dataReader = dataPool.getJObjectReader(); if (dataReader.isEmpty()) { resultPool.setSuccess(false); return; } OnlineUser user = OnlineUser.getInstance(); if (user == null) { return; } String oldPass = dataReader.getString("old_pass"); String newPass = dataReader.getString("new_pass"); if (Util.isEmpty(newPass) || Util.isEmpty(oldPass)) { resultPool.reportOneError("密码修改", "新密码或旧密码为空,不能修改"); return; } if (!oldPass.equals(user.getPassword())) { resultPool.reportOneError("密码修改", "用户输入的旧密码不对,不能修改"); return; } user.chagnePassword(newPass); resultPool.reportOneMessage("密码修改", "密码修改成功"); } public void getActor() throws Exception { JObjectReader dataReader = dataPool.getJObjectReader(); String token = null; if (dataReader.isEmpty()) { resultPool.setSuccess(false); return; } String userId = dataReader.getString("userId"); UserToken userToken = null; if (Util.isEmpty(userId)) { token = dataReader.getString("token"); userToken = UserToken.getInstance(token); } UserBucket userBucket = UserBucket.getInstance(); if (!Util.isEmpty(token) && userToken != null) { userId = userToken.getUserId(); } User user = userBucket.get(userId); if (user == null) { return; } ActorsRuntime actors = user.getActorsRuntime(); resultPool.addValue("actors", actors); } public void changeCurrentActor() throws Exception { JObjectReader dataReader = dataPool.getJObjectReader(); String actorId = dataReader.getString("actor_target_id"); OnlineUser user = OnlineUser.getInstance(); if (user == null) { return; } ActorTarget actor = user.changeCurrentCapacity(actorId); resultPool.addValue("capacity", actor); } public void getMenuTreeAll() throws Exception { LoadMonitor monitor = new LoadMonitor(); MenuTree menuTree = monitor.get(MenuTree.class); List