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<Menu> menuList = new ArrayList<Menu>();
|
Iterator<Menu> menuIterator = menuTree.iterator();
|
|
while(menuIterator.hasNext()) {
|
Menu menu = menuIterator.next();
|
if (Util.isEmpty(menu.getParentId())) {
|
menuList.add(menuTree.get(menu.getId()));
|
}
|
}
|
|
resultPool.addValue("menus", menuList);
|
}
|
|
public void getMenuTree() throws Exception {
|
JObjectReader dataReader = dataPool.getJObjectReader();
|
String actorId = dataReader.getString("actor_id");
|
|
//1. 当前用获取自己的菜单
|
if (Util.isEmpty(actorId)) {
|
OnlineUser user = OnlineUser.getInstance();
|
ActorTarget actor = user.getCurrentActor();
|
|
if (actor == null) {
|
return;
|
}
|
|
Role role = actor.getRoleRuntime();
|
Tree<RoleMenu> roleMenuTree = role.getMenuTree();
|
|
resultPool.addValue("menus", roleMenuTree);
|
return;
|
}
|
|
//2. 根据角色获取菜单
|
Actor actor = ActorBucket.getInstance().get(actorId);
|
|
if (actor == null) {
|
return;
|
}
|
|
Role role = actor.getRoleRuntime();
|
Tree<RoleMenu> roleMenuTree = role.getMenuTree();
|
|
resultPool.addValue("roleAddress", role.toString());
|
resultPool.addValue("menus", roleMenuTree);
|
}
|
|
public void getPageByRole() throws Exception {
|
JObjectReader dataReader = dataPool.getJObjectReader();
|
String actorId = dataReader.getString("actor_id");
|
|
//1. 根据角色获取菜单
|
Actor actor = ActorBucket.getInstance().get(actorId);
|
|
if (actor == null) {
|
return;
|
}
|
|
Role role = actor.getRoleRuntime();
|
Bucket<RolePage> pages = role.getPages();
|
|
resultPool.addValue("pages", pages);
|
}
|
|
public void getPage() throws Exception {
|
JObjectReader dataReader = dataPool.getJObjectReader();
|
String pageId = dataReader.getString(ISystem.PageId);
|
String menuId = dataReader.getString(ISystem.MenuId);
|
|
OnlineUser user = OnlineUser.getInstance();
|
|
if (user == null) {
|
return;
|
}
|
|
ActorTarget actor = user.getCurrentActor();
|
|
if (actor == null) {
|
return;
|
}
|
|
Role role = actor.getRoleRuntime();
|
String pageKey = RolePage.createKey(menuId, pageId);
|
RolePage rolePage = role.getPageById(pageKey);
|
resultPool.addValue("page", rolePage);
|
}
|
|
public void getDictionarys() throws Exception {
|
DictionaryBucket dictionarys = DictionaryBucket.getInstance();
|
resultPool.addValue("dictionarys", dictionarys);
|
}
|
|
public void getOneDictionary() throws Exception {
|
JObjectReader dataReader = dataPool.getJObjectReader();
|
String dictionaryName = dataReader.getString(ISystem.DictionaryCode);
|
|
DictionaryBucket dictionaryBucket = DictionaryBucket.getInstance();
|
IDictionary dictionary = dictionaryBucket.getDictionary(dictionaryName);
|
|
resultPool.addValue("dictionary", dictionary);
|
}
|
|
public void getProvinceList() throws Exception {
|
ProvinceBucket provinceBucket = ProvinceBucket.getInstance();
|
resultPool.addValue("provinces", provinceBucket);
|
}
|
|
public void getCityList() throws Exception {
|
CityBucket cityBucket = CityBucket.getInstance();
|
resultPool.addValue("citys", cityBucket);
|
}
|
|
public void getCountyList() throws Exception {
|
CountyBucket countyBucket = CountyBucket.getInstance();
|
resultPool.addValue("countys", countyBucket);
|
}
|
|
public void getCalendar() throws Exception {
|
//1.
|
Date now = new Date();
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(now);
|
|
//2.
|
int year = calendar.get(Calendar.YEAR);
|
int month = calendar.get(Calendar.MONTH) + 1;
|
|
String monthNo = year + "" + (month < 10 ? "0" + month : month);
|
String date = dateFormat.format(now);
|
|
//3.
|
JSONBuilder builder = new JSONBuilder();
|
|
builder.beginObject();
|
builder.write("year", year);
|
builder.write("month", month);
|
builder.write("monthNo", monthNo);
|
builder.write("day", calendar.get(Calendar.DAY_OF_MONTH));
|
builder.write("date", date);
|
builder.endObject();
|
|
resultPool.addValue("calendar", builder);
|
}
|
|
}
|