Commit 36ae69dc authored by 胡文斌's avatar 胡文斌

使用公共包方法

parent ea7930fa
...@@ -126,6 +126,11 @@ ...@@ -126,6 +126,11 @@
<artifactId>jfinal</artifactId> <artifactId>jfinal</artifactId>
<version>${jfinal.version}</version> <version>${jfinal.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.archser</groupId>
<artifactId>archser-commons</artifactId>
<version>1.2.2</version>
</dependency>
<!-- 东方通依赖 --> <!-- 东方通依赖 -->
<!-- <dependency> <!-- <dependency>
<groupId>io.swagger</groupId> <groupId>io.swagger</groupId>
......
package com.archser.aserver.common.config; package com.archser.aserver.common.config;
import com.alibaba.druid.filter.logging.Log4jFilter;
import com.alibaba.druid.filter.logging.LogFilter;
import com.alibaba.druid.filter.stat.StatFilter; import com.alibaba.druid.filter.stat.StatFilter;
import com.archser.aserver.common.config.plugins.DBUpgrade; import com.archser.aserver.common.config.plugins.DBUpgrade;
import com.archser.aserver.common.config.plugins.RedisConfig;
import com.archser.aserver.controller.*; import com.archser.aserver.controller.*;
import com.archser.aserver.interceptor.JwtInterceptor; import com.archser.aserver.interceptor.JwtInterceptor;
import com.archser.aserver.itask.GoodSync;
import com.archser.aserver.model._MappingKit; import com.archser.aserver.model._MappingKit;
import com.archser.aserver.util.SharedDisk; import com.archser.aserver.util.SharedDisk;
import com.archser.aserver.websocket.MessageWebSocket; import com.archser.aserver.websocket.MessageWebSocket;
import com.archser.commons.AppStartConfig;
import com.archser.plugin.redis.RedisConfig;
import com.jfinal.config.*; import com.jfinal.config.*;
import com.jfinal.ext.handler.RequestHandler; import com.jfinal.ext.handler.RequestHandler;
import com.jfinal.ext.handler.UrlSkipHandler; import com.jfinal.ext.handler.UrlSkipHandler;
import com.jfinal.ext.proxy.CglibProxyFactory; import com.jfinal.ext.proxy.CglibProxyFactory;
import com.jfinal.json.MixedJsonFactory; import com.jfinal.json.MixedJsonFactory;
import com.jfinal.kit.Kv;
import com.jfinal.kit.PathKit; import com.jfinal.kit.PathKit;
import com.jfinal.kit.Prop; import com.jfinal.kit.Prop;
import com.jfinal.kit.PropKit; import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory; import com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory;
import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.dialect.DialectFactory;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.dialect.*;
import com.jfinal.plugin.cron4j.Cron4jPlugin; import com.jfinal.plugin.cron4j.Cron4jPlugin;
import com.jfinal.plugin.druid.DruidPlugin; import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.plugin.druid.RecordSqlFilter; import com.jfinal.plugin.druid.RecordSqlFilter;
...@@ -32,6 +27,7 @@ import com.jfinal.render.ViewType; ...@@ -32,6 +27,7 @@ import com.jfinal.render.ViewType;
import com.jfinal.server.undertow.UndertowServer; import com.jfinal.server.undertow.UndertowServer;
import com.jfinal.server.undertow.WebBuilder; import com.jfinal.server.undertow.WebBuilder;
import com.jfinal.template.Engine; import com.jfinal.template.Engine;
import java.io.File; import java.io.File;
public class MainConfig extends JFinalConfig { public class MainConfig extends JFinalConfig {
...@@ -181,12 +177,13 @@ public class MainConfig extends JFinalConfig { ...@@ -181,12 +177,13 @@ public class MainConfig extends JFinalConfig {
/******** 在此添加数据库 表-Model 映射 *********/ /******** 在此添加数据库 表-Model 映射 *********/
// 如果使用了JFinal Model 生成器 生成了BaseModel 把下面注释解开即可 // 如果使用了JFinal Model 生成器 生成了BaseModel 把下面注释解开即可
_MappingKit.mapping(arp); _MappingKit.mapping(arp);
AppStartConfig.configActiveRecordPlugin(arp);
// 添加到插件列表中 // 添加到插件列表中
me.add(dbPlugin); me.add(dbPlugin);
me.add(arp); me.add(arp);
// 配置Redis信息,自动判断单实例和集群并加入JFinal插件列表 // 配置Redis信息,自动判断单实例和集群并加入JFinal插件列表
new RedisConfig(me, p); new RedisConfig(me);
// 添加定时任务 // 添加定时任务
me.add(new Cron4jPlugin(PropKit.append("task.properties"))); me.add(new Cron4jPlugin(PropKit.append("task.properties")));
...@@ -222,6 +219,7 @@ public class MainConfig extends JFinalConfig { ...@@ -222,6 +219,7 @@ public class MainConfig extends JFinalConfig {
*/ */
@Override @Override
public void onStart() { public void onStart() {
AppStartConfig.onStart("aserver");
// new GoodSync().run(); // new GoodSync().run();
} }
......
package com.archser.aserver.controller; package com.archser.aserver.controller;
import com.archser.aserver.util.FinalStringUtil;
import java.io.File;
import java.net.URLEncoder;
import javax.servlet.http.HttpServletRequest;
import com.archser.aserver.interceptor.JwtInterceptor;
import com.archser.aserver.model.Helper; import com.archser.aserver.model.Helper;
import com.archser.aserver.model.Menu;
import com.archser.aserver.service.HelperService; import com.archser.aserver.service.HelperService;
import com.archser.aserver.service.LogService;
import com.archser.aserver.util.DownLoadFileUtil; import com.archser.aserver.util.DownLoadFileUtil;
import com.archser.aserver.util.FinalStringUtil;
import com.archser.commons.services.LogService;
import com.jfinal.aop.Inject; import com.jfinal.aop.Inject;
import com.jfinal.core.Controller; import com.jfinal.core.Controller;
import com.jfinal.kit.Kv; import com.jfinal.kit.Kv;
import com.jfinal.kit.Ret; import com.jfinal.kit.Ret;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Page; import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.upload.UploadFile; import com.jfinal.upload.UploadFile;
import dm.jdbc.a.d;
import java.net.URLEncoder;
/** /**
* 帮助中心 * 帮助中心
......
package com.archser.aserver.controller; package com.archser.aserver.controller;
import com.archser.aserver.model.User;
import com.archser.commons.db.InfoSystem;
import com.archser.commons.db.InfoUser;
import com.archser.commons.model.AsSystem;
import com.archser.commons.model.AsUser;
import com.archser.commons.services.LogService;
import com.archser.aserver.util.AesEncryptUtil; import com.archser.aserver.util.AesEncryptUtil;
import com.archser.aserver.util.FinalStringUtil; import com.archser.aserver.util.FinalStringUtil;
import com.archser.aserver.util.redis.InfoSystem;
import com.archser.aserver.util.redis.InfoUser;
import java.math.BigInteger; import java.math.BigInteger;
import java.util.Date; import java.util.Date;
import java.util.Iterator; import java.util.Iterator;
...@@ -18,8 +22,6 @@ import org.bouncycastle.pqc.math.linearalgebra.ByteUtils; ...@@ -18,8 +22,6 @@ import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.archser.aserver.interceptor.JwtInterceptor; import com.archser.aserver.interceptor.JwtInterceptor;
import com.archser.aserver.model.System; import com.archser.aserver.model.System;
import com.archser.aserver.model.User;
import com.archser.aserver.service.LogService;
import com.archser.aserver.service.UserService; import com.archser.aserver.service.UserService;
import com.archser.aserver.util.HttpRequestUtil; import com.archser.aserver.util.HttpRequestUtil;
import com.archser.aserver.util.KeysUtil; import com.archser.aserver.util.KeysUtil;
...@@ -115,8 +117,8 @@ public class IndexController extends Controller { ...@@ -115,8 +117,8 @@ public class IndexController extends Controller {
String callback = this.getPara("callback"); String callback = this.getPara("callback");
// 解密用户名和密码 // 解密用户名和密码
try { try {
username = AesEncryptUtil.desEncrypt(username); username = decrypt(username);
password = AesEncryptUtil.desEncrypt(password); password = decrypt(password);
} catch (Exception e1) { } catch (Exception e1) {
e1.printStackTrace(); e1.printStackTrace();
username = this.getPara("username"); username = this.getPara("username");
...@@ -125,7 +127,7 @@ public class IndexController extends Controller { ...@@ -125,7 +127,7 @@ public class IndexController extends Controller {
//校验密码是否符合强度设置 //校验密码是否符合强度设置
String verify = password; String verify = password;
password = HashKit.sha256(password); password = HashKit.sha256(password);
User user = InfoUser.getUser(username); AsUser user = InfoUser.getUser(username);
if (user == null) { if (user == null) {
this.renderJson(Ret.fail("msg", "用户名或密码不存在: " + username)); this.renderJson(Ret.fail("msg", "用户名或密码不存在: " + username));
logService.saveAsLog("login", "该用户非本系统用户正在非法登录", FinalStringUtil.QUERY); logService.saveAsLog("login", "该用户非本系统用户正在非法登录", FinalStringUtil.QUERY);
...@@ -209,7 +211,7 @@ public class IndexController extends Controller { ...@@ -209,7 +211,7 @@ public class IndexController extends Controller {
} }
} }
System system = InfoSystem.getSystem(app); AsSystem system = InfoSystem.getSystem(app);
if (system == null) { if (system == null) {
this.renderJson(Ret.fail("msg", "没有找到应用:" + app)); this.renderJson(Ret.fail("msg", "没有找到应用:" + app));
logService.saveAsLog("login", "登录失败,原因:没有找到应用" + app, FinalStringUtil.QUERY); logService.saveAsLog("login", "登录失败,原因:没有找到应用" + app, FinalStringUtil.QUERY);
...@@ -230,7 +232,7 @@ public class IndexController extends Controller { ...@@ -230,7 +232,7 @@ public class IndexController extends Controller {
// return; // return;
// } // }
List<System> systemList = userService.findSystemWithUserPermission(user.getId()); List<AsSystem> systemList = userService.findSystemWithUserPermission(user.getId());
/** 修改如果登陆用户为admin用户则直接登陆 huwenbin 2020/5/20 start */ /** 修改如果登陆用户为admin用户则直接登陆 huwenbin 2020/5/20 start */
if (!"admin".equals(user.getUsername())) { if (!"admin".equals(user.getUsername())) {
if ((systemList == null || systemList.isEmpty())) { if ((systemList == null || systemList.isEmpty())) {
...@@ -240,7 +242,7 @@ public class IndexController extends Controller { ...@@ -240,7 +242,7 @@ public class IndexController extends Controller {
return; return;
} }
Optional<System> systemOptional = userService.getSystemByName(app, systemList); Optional<AsSystem> systemOptional = userService.getSystemByName(app, systemList);
if (!systemOptional.isPresent()) {// 没有当前系统的权限 if (!systemOptional.isPresent()) {// 没有当前系统的权限
system = systemList.get(0); system = systemList.get(0);
app = system.getName(); app = system.getName();
...@@ -331,12 +333,12 @@ public class IndexController extends Controller { ...@@ -331,12 +333,12 @@ public class IndexController extends Controller {
} }
// 密码正确时错误次数清零 // 密码正确时错误次数清零
private void setErrZero(User user) { private void setErrZero(AsUser user) {
Db.update(Db.getSqlPara("updateForOk", Kv.by("id", user.getId()))); Db.update(Db.getSqlPara("updateForOk", Kv.by("id", user.getId())));
} }
//密码错误时判断错误次数是否为5次 //密码错误时判断错误次数是否为5次
private boolean checkErrorCount(User user) { private boolean checkErrorCount(AsUser user) {
Kv cond = Kv.by("id", user.getId()).set("hour", hour).set("permitLoginTimes", permitLoginTimes); Kv cond = Kv.by("id", user.getId()).set("hour", hour).set("permitLoginTimes", permitLoginTimes);
List<Record> currentList = Db.find(Db.getSqlPara("getErrorCount", cond)); List<Record> currentList = Db.find(Db.getSqlPara("getErrorCount", cond));
int currentNum = 0; int currentNum = 0;
...@@ -349,14 +351,14 @@ public class IndexController extends Controller { ...@@ -349,14 +351,14 @@ public class IndexController extends Controller {
//执行+1或=1的操作 //执行+1或=1的操作
Db.update(Db.getSqlPara("updateForErr", cond)); Db.update(Db.getSqlPara("updateForErr", cond));
//同步到redis ChengYaqing 20210224 //同步到redis ChengYaqing 20210224
User byId = User.dao.findById(user.getId()); AsUser byId = AsUser.dao.findById(user.getId());
InfoUser.saveUser(byId); InfoUser.saveUser(byId);
return false; return false;
} }
} }
//密码正确时判断次数和锁定时间是否在指定范围内 //密码正确时判断次数和锁定时间是否在指定范围内
private boolean checkWhenPwdOk(User user) { private boolean checkWhenPwdOk(AsUser user) {
List<Record> currentList = Db.find(Db.getSqlPara("checkWhenPwdOk", List<Record> currentList = Db.find(Db.getSqlPara("checkWhenPwdOk",
Kv.by("id", user.getId()).set("hour", hour).set("permitLoginTimes", permitLoginTimes))); Kv.by("id", user.getId()).set("hour", hour).set("permitLoginTimes", permitLoginTimes)));
int currentNum = 0; int currentNum = 0;
......
package com.archser.aserver.controller; package com.archser.aserver.controller;
import com.archser.aserver.util.FinalStringUtil; import com.archser.aserver.util.FinalStringUtil;
import com.archser.aserver.util.redis.InfoSystem;
import com.archser.aserver.util.redis.InfoUser;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
...@@ -10,11 +8,13 @@ import java.util.List; ...@@ -10,11 +8,13 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.archser.commons.db.InfoSystem;
import com.archser.commons.db.InfoUser;
import com.archser.commons.services.LogService;
import com.archser.aserver.interceptor.JwtInterceptor; import com.archser.aserver.interceptor.JwtInterceptor;
import com.archser.aserver.model.Menu; import com.archser.aserver.model.Menu;
import com.archser.aserver.model.MenuStar; import com.archser.aserver.model.MenuStar;
import com.archser.aserver.model.System; import com.archser.aserver.model.System;
import com.archser.aserver.service.LogService;
import com.archser.aserver.service.MenuService; import com.archser.aserver.service.MenuService;
import com.archser.aserver.util.CollectionUtil; import com.archser.aserver.util.CollectionUtil;
import com.jfinal.aop.Inject; import com.jfinal.aop.Inject;
......
package com.archser.aserver.controller; package com.archser.aserver.controller;
import com.archser.aserver.service.MessageService;
import com.archser.aserver.util.FinalStringUtil; import com.archser.aserver.util.FinalStringUtil;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.archser.aserver.interceptor.JwtInterceptor; import com.archser.aserver.interceptor.JwtInterceptor;
import com.archser.aserver.model.Message; import com.archser.aserver.model.Message;
import com.archser.aserver.service.LogService; import com.archser.aserver.service.LogService;
import com.archser.aserver.service.MessageService;
import com.archser.aserver.websocket.MessageRefreshTrigger; import com.archser.aserver.websocket.MessageRefreshTrigger;
import com.jfinal.aop.Clear; import com.jfinal.aop.Clear;
import com.jfinal.aop.Inject; import com.jfinal.aop.Inject;
......
package com.archser.aserver.itask; package com.archser.aserver.itask;
import com.archser.aserver.model.Organ; import com.archser.commons.db.InfoOrgan;
import com.archser.aserver.model.System; import com.archser.commons.db.InfoSystem;
import com.archser.aserver.model.User; import com.archser.commons.db.InfoUser;
import com.archser.aserver.util.redis.InfoOrgan; import com.archser.commons.model.AsOrgan;
import com.archser.aserver.util.redis.InfoSystem; import com.archser.commons.model.AsSystem;
import com.archser.aserver.util.redis.InfoUser; import com.archser.commons.model.AsUser;
import com.jfinal.kit.PropKit; import com.jfinal.kit.PropKit;
import com.jfinal.plugin.cron4j.ITask; import com.jfinal.plugin.cron4j.ITask;
...@@ -25,13 +25,13 @@ public class GoodSync implements ITask { ...@@ -25,13 +25,13 @@ public class GoodSync implements ITask {
if (PropKit.getBoolean("updateRedis")) { if (PropKit.getBoolean("updateRedis")) {
// 同步用户数据 // 同步用户数据
java.lang.System.err.println("同步用户信息"); java.lang.System.err.println("同步用户信息");
User.dao.findAll().forEach(InfoUser::saveUser); AsUser.dao.findAll().forEach(InfoUser::saveUser);
// 同步系统数据 // 同步系统数据
java.lang.System.err.println("同步系统数据"); java.lang.System.err.println("同步系统数据");
System.dao.findAll().forEach(InfoSystem::saveSystem); AsSystem.dao.findAll().forEach(InfoSystem::saveSystem);
// 同步机构数据 // 同步机构数据
java.lang.System.err.println("同步机构数据"); java.lang.System.err.println("同步机构数据");
Organ.dao.findAll().forEach(InfoOrgan::saveOrgan); AsOrgan.dao.findAll().forEach(InfoOrgan::saveOrgan);
} }
} }
......
package com.archser.aserver.util.redis;
import com.alibaba.fastjson.JSONObject;
import com.archser.aserver.model.Organ;
/**
* 20201127 lidecai
* 操作redis中的机构信息
*/
public class InfoOrgan {
private static final String ORGAN = "ORGAN_";
/**
* 保存机构信息
*
* @param organ
* @return
*/
public static boolean saveOrgan(Organ organ) {
return RedisConvert.saveObject(ORGAN + organ.getId(), organ);
}
/**
* 获取机构信息
* @param organId
* @return
*/
public static Organ getOrgan(Integer organId){
Object organObj = RedisConvert.getObject(ORGAN + organId);
Organ organ = JSONObject.parseObject(JSONObject.toJSONString(organObj), Organ.class);
if(organ == null ){
organ = Organ.dao.findById(organId);
saveOrgan(organ);
}
return JSONObject.parseObject(JSONObject.toJSONString(organObj), Organ.class);
}
}
package com.archser.aserver.util.redis;
import com.alibaba.fastjson.JSONObject;
import com.archser.aserver.model.System;
import com.jfinal.plugin.redis.Redis;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 获取系统信息 20201126 lidecai
*/
public class InfoSystem {
private static final String _INFO = "_INFO";
private static final String SYSTEM = "SYSTEM_";
/**
* 根据名称获取系统信息
*
* @param systemName
* @return
*/
public static System getSystem(String systemName) {
Object object = RedisConvert.getObject(SYSTEM + systemName + _INFO);
System system = JSONObject.parseObject(JSONObject.toJSONString(object), System.class);
if (system == null || system.getKeyid() == null) {
return getSystemByDatabase(systemName);
}
return system;
}
/**
* 备用方案,从数据库获取
*
* @param systemName
* @return
*/
public static System getSystemByDatabase(String systemName) {
System system = System.dao.template("getSystemPrivatekey", systemName).findFirst();
RedisConvert.saveObject(SYSTEM + systemName + _INFO, system);
return system;
}
/**
* 获取所有系统
* @return
*/
public static List<System> getAllSystem() {
Set<String> keys = Redis.use().keys(SYSTEM + "*");
List<System> systemList = new ArrayList<System>();
keys.forEach(system -> {
systemList.add(JSONObject
.parseObject(JSONObject.toJSONString(Redis.use().hgetAll(system)), System.class));
});
return systemList;
}
/**
* 保存系统信息
*
* @param system
* @return
*/
public static boolean saveSystem(System system) {
return RedisConvert.saveObject(SYSTEM + system.getName() + _INFO, system);
}
/**
* 删除系统信息
*
* @param systemName
* @return
*/
public static boolean deleteSystem(String systemName) {
return RedisConvert.deleteKey(SYSTEM + systemName + _INFO) > 0;
}
}
package com.archser.aserver.util.redis;
import com.archser.aserver.model.User;
import com.jfinal.kit.JsonKit;
/**
* 20201127 lidecai 操作redis中的用户信息
*/
public class InfoUser {
private static final String _INFO = "_INFO";
private static final String USER = "USER_";
/**
* 获取用户信息
*
* @param userName
* @return
*/
public static User getUser(String userName) {
Object object = RedisConvert.getObject(USER + userName + _INFO);
User user = JsonKit.parse(JsonKit.toJson(object), User.class);
if (user.getId() == null) {
User userByDataBase = getUserByDataBase(userName);
saveUser(userByDataBase);
return userByDataBase;
}
return user;
}
public static boolean saveUser(User user) {
return RedisConvert.saveObject(USER + user.getUsername() + _INFO, user);
}
/**
* 备用方案,从数据库获取用户信息
*
* @param userName
* @return
*/
public static User getUserByDataBase(String userName) {
return User.dao.template("getUser", userName).findFirst();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment