Commit 4f8c9a93 authored by 成亚卿's avatar 成亚卿

Merge remote-tracking branch 'origin/SZDAS_V2.0' into SZDAS_V2.0

parents 6f38b7c6 2bfe1e9d
package com.archser.aserver.controller; package com.archser.aserver.controller;
import com.archser.aserver.util.redis.InfoSystem;
import com.archser.aserver.util.redis.InfoUser;
import com.archser.aserver.util.redis.RedisConvert;
import com.jfinal.kit.JsonKit;
import java.math.BigInteger; import java.math.BigInteger;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
...@@ -41,7 +45,7 @@ import io.jsonwebtoken.SignatureAlgorithm; ...@@ -41,7 +45,7 @@ import io.jsonwebtoken.SignatureAlgorithm;
/** /**
* IndexController 指向系统访问首页 * IndexController 指向系统访问首页
* *
* @author jbolt.cn * @author jbolt.cn
* @email 909854136@qq.com * @email 909854136@qq.com
* @date 2018年11月4日 下午9:02:52 * @date 2018年11月4日 下午9:02:52
...@@ -118,7 +122,7 @@ public class IndexController extends Controller { ...@@ -118,7 +122,7 @@ public class IndexController extends Controller {
//校验密码是否符合强度设置 //校验密码是否符合强度设置
String verify = password; String verify = password;
password = HashKit.sha256(password); password = HashKit.sha256(password);
User user = User.dao.template("getUser", username).findFirst(); User 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", username, JwtInterceptor.getIpAddr(getRequest()), "该用户非本系统用户正在非法登录", app); logService.saveAsLog("login", username, JwtInterceptor.getIpAddr(getRequest()), "该用户非本系统用户正在非法登录", app);
...@@ -148,14 +152,14 @@ public class IndexController extends Controller { ...@@ -148,14 +152,14 @@ public class IndexController extends Controller {
// 一旦开启三员 admin用户不能使用 // 一旦开启三员 admin用户不能使用
if ("admin".equals(user.getUsername())) { if ("admin".equals(user.getUsername())) {
Integer userCount = Db.queryInt(Db.getSql("hasThreeMemberUsersCount")); Integer userCount = Db.queryInt(Db.getSql("hasThreeMemberUsersCount"));
boolean isExistThreeMemberUsers = userCount == null ? false : (userCount > 0 ? true : false); boolean isExistThreeMemberUsers = userCount != null && (userCount > 0);
if (isExistThreeMemberUsers) { if (isExistThreeMemberUsers) {
this.renderJson(Ret.fail("msg", "已开启三员管理,admin失效了。")); this.renderJson(Ret.fail("msg", "已开启三员管理,admin失效了。"));
logService.saveAsLog("login", username, JwtInterceptor.getIpAddr(getRequest()), "登录失败,原因:已开启三员管理", app); logService.saveAsLog("login", username, JwtInterceptor.getIpAddr(getRequest()), "登录失败,原因:已开启三员管理", app);
return; return;
} }
} }
if (Integer.valueOf(user.getLocked()) == 1) { if (user.getLocked() != null && Integer.parseInt(user.getLocked()) == 1) {
this.renderJson(Ret.fail("msg", "当前账户已被锁定")); this.renderJson(Ret.fail("msg", "当前账户已被锁定"));
logService.saveAsLog("login", username, JwtInterceptor.getIpAddr(getRequest()), "登录失败,原因:该用户已被锁定", app); logService.saveAsLog("login", username, JwtInterceptor.getIpAddr(getRequest()), "登录失败,原因:该用户已被锁定", app);
return; return;
...@@ -163,19 +167,17 @@ public class IndexController extends Controller { ...@@ -163,19 +167,17 @@ public class IndexController extends Controller {
if (!password.equals(user.getPassword())) { if (!password.equals(user.getPassword())) {
if (this.checkErrorCount(user)) { if (this.checkErrorCount(user)) {
this.renderJson(Ret.fail("msg", "您的错误次数已达5次以上,请稍后再试!")); this.renderJson(Ret.fail("msg", "您的错误次数已达5次以上,请稍后再试!"));
return;
} else { } else {
int errorCount = permitLoginTimes - (user.getErrorcount() == null ? 0 : user.getErrorcount()) - 1; int errorCount = permitLoginTimes - (user.getErrorcount() == null ? 0 : user.getErrorcount()) - 1;
if (user.getErrorcount() == 4) { if (user.getErrorcount() !=null && user.getErrorcount() == 4) {
this.renderJson(Ret.fail("msg", "用户名或密码验证失败,您的账户于两小时后才可登录!")); this.renderJson(Ret.fail("msg", "用户名或密码验证失败,您的账户于两小时后才可登录!"));
return;
} else { } else {
this.renderJson(Ret.fail("msg", "用户名或密码验证失败,您还有" + errorCount + "次机会!")); this.renderJson(Ret.fail("msg", "用户名或密码验证失败,您还有" + errorCount + "次机会!"));
logService.saveAsLog("login", username, JwtInterceptor.getIpAddr(getRequest()), "登录失败,原因:密码验证错误", logService.saveAsLog("login", username, JwtInterceptor.getIpAddr(getRequest()), "登录失败,原因:密码验证错误",
app); app);
return;
} }
} }
return ;
} }
Integer errorcount = user.getErrorcount(); Integer errorcount = user.getErrorcount();
if (errorcount != null && errorcount != 0) { if (errorcount != null && errorcount != 0) {
...@@ -197,7 +199,7 @@ public class IndexController extends Controller { ...@@ -197,7 +199,7 @@ public class IndexController extends Controller {
if (!"admin".equals(user.getUsername())) { if (!"admin".equals(user.getUsername())) {
Integer noLockedRolesCount = Db.queryInt(Db.getSql("hasNoLockedRolesCount"), user.getUsername()); Integer noLockedRolesCount = Db.queryInt(Db.getSql("hasNoLockedRolesCount"), user.getUsername());
boolean noLockedRolesFlag = noLockedRolesCount == null ? false : (noLockedRolesCount.intValue() > 0 ? true : false); boolean noLockedRolesFlag = noLockedRolesCount != null && (noLockedRolesCount > 0);
if (!noLockedRolesFlag) { if (!noLockedRolesFlag) {
this.renderJson(Ret.fail("msg", "拥有的角色全部被锁定,不能登录系统了。")); this.renderJson(Ret.fail("msg", "拥有的角色全部被锁定,不能登录系统了。"));
logService.saveAsLog("login", username, JwtInterceptor.getIpAddr(getRequest()), "登录失败,原因:该用户拥有的角色全部被锁定", logService.saveAsLog("login", username, JwtInterceptor.getIpAddr(getRequest()), "登录失败,原因:该用户拥有的角色全部被锁定",
...@@ -205,7 +207,7 @@ public class IndexController extends Controller { ...@@ -205,7 +207,7 @@ public class IndexController extends Controller {
return; return;
} }
} }
System system = System.dao.template("getSystemPrivatekey", app).findFirst(); System 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", username, JwtInterceptor.getIpAddr(getRequest()), "登录失败,原因:没有找到应用" + app, logService.saveAsLog("login", username, JwtInterceptor.getIpAddr(getRequest()), "登录失败,原因:没有找到应用" + app,
...@@ -273,7 +275,7 @@ public class IndexController extends Controller { ...@@ -273,7 +275,7 @@ public class IndexController extends Controller {
while(userIterator.hasNext()) { while(userIterator.hasNext()) {
nextAttr = userIterator.next(); nextAttr = userIterator.next();
userInfo.put(nextAttr.getKey().trim().toLowerCase(), nextAttr.getValue()); userInfo.put(nextAttr.getKey().trim().toLowerCase(), nextAttr.getValue());
} }
try { try {
Redis.use().hmset(username + "_INFO", userInfo); Redis.use().hmset(username + "_INFO", userInfo);
// 设置过期时间 // 设置过期时间
...@@ -294,6 +296,7 @@ public class IndexController extends Controller { ...@@ -294,6 +296,7 @@ public class IndexController extends Controller {
} }
} }
/** /**
* @Description: 验证密码强度 * @Description: 验证密码强度
* @authorAndDate: ChengYaqing create on 2020/10/30 10:38 * @authorAndDate: ChengYaqing create on 2020/10/30 10:38
...@@ -365,7 +368,7 @@ public class IndexController extends Controller { ...@@ -365,7 +368,7 @@ public class IndexController extends Controller {
/** /**
* 通过门户系统单点登录 * 通过门户系统单点登录
* *
* @author Guo XJ * @author Guo XJ
* @date 2019-12-13 15:08:00 * @date 2019-12-13 15:08:00
*/ */
...@@ -421,7 +424,7 @@ public class IndexController extends Controller { ...@@ -421,7 +424,7 @@ public class IndexController extends Controller {
/** /**
* 根据邮政门户传回的code 获取用户信息 * 根据邮政门户传回的code 获取用户信息
* *
* @Title: getUserInfoForH5 * @Title: getUserInfoForH5
* @author LDC * @author LDC
* @date 2019-11-19 03:22:34 * @date 2019-11-19 03:22:34
...@@ -512,10 +515,10 @@ public class IndexController extends Controller { ...@@ -512,10 +515,10 @@ public class IndexController extends Controller {
} }
/** /**
* 退出系统,清空Redis 中的用户信息 * 退出系统,清空Redis 中的用户信息
* @Time:2020年7月6日 - 下午5:19:58 * @Time:2020年7月6日 - 下午5:19:58
* @author:李德才 * @author:李德才
* @param: * @param:
* @return: void * @return: void
* @throws * @throws
*/ */
......
package com.archser.aserver.util.redis;
import com.alibaba.fastjson.JSONObject;
import com.archser.aserver.model.System;
/**
* 获取系统信息 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;
}
}
package com.archser.aserver.util.redis;
import com.alibaba.fastjson.JSONObject;
import com.archser.aserver.model.User;
import java.io.Serializable;
public class InfoUser implements Serializable {
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 = JSONObject.parseObject(JSONObject.toJSONString(object), User.class);
if (user.getId() == null) {
return getUserByDataBase(userName);
}
return user;
}
/**
* 备用方案,从数据库获取用户信息
*
* @param userName
* @return
*/
private static User getUserByDataBase(String userName) {
User user = User.dao.template("getUser", userName).findFirst();
RedisConvert.saveObject(USER + userName + _INFO, user);
return user;
}
}
package com.archser.aserver.util.redis;
import com.alibaba.fastjson.JSONObject;
import com.jfinal.plugin.redis.Redis;
import java.util.Map;
/**
* Redis常用工具类 20201126 lidecai
*/
public class RedisConvert {
/**
* 单独存储对象属性
*
* @param key
* @param attribute
* @param value
*/
public static void saveObjectAttr(String key, String attribute, String value) {
Redis.use().hset(key, attribute, value);
}
/**
* 单独获取对象属性
*
* @param key
* @param attribute
* @return
*/
public static Object getObjectAttr(String key, String attribute) {
return Redis.use().hget(key, attribute);
}
/**
* 存储整个对象
*
* @param key
* @param object
*/
public static void saveObject(String key, Object object) {
Redis.use().hmset(key, objectToMap(object));
}
/**
* 获取整个对象
*
* @param key
* @return
*/
public static Object getObject(String key) {
return Redis.use().hgetAll(key);
}
/**
* 反射获取对象全部属性
*
* @param obj
* @return
*/
public static Map objectToMap(Object obj) {
return JSONObject.parseObject(JSONObject.toJSONString(obj), Map.class);
}
}
...@@ -4,7 +4,7 @@ jdbcUrl=jdbc:dm://39.104.21.218:5236 ...@@ -4,7 +4,7 @@ jdbcUrl=jdbc:dm://39.104.21.218:5236
jdbc.driver=dm.jdbc.driver.DmDriver jdbc.driver=dm.jdbc.driver.DmDriver
user=archser_hywdtest user=archser_hywdtest
password=archser_hywdtest password=archser_hywdtest
basic.url=http://39.104.174.12:11028 basic.url=http://39.104.21.218:11028
devMode =true devMode =true
engineDevMode=true engineDevMode=true
......
...@@ -87,7 +87,7 @@ select * from AS_USER where "USERNAME"=#para(0) ...@@ -87,7 +87,7 @@ select * from AS_USER where "USERNAME"=#para(0)
### 获取指定系统私钥 ### 获取指定系统私钥
#sql("getSystemPrivatekey") #sql("getSystemPrivatekey")
select "TYPE", KEYID, PRIVATEKEY, URL,TITLE from AS_SYSTEM where "NAME"=#para(0) and rownum =1 select * from AS_SYSTEM where "NAME"=#para(0) and rownum =1
#end #end
### 获取所有菜单 ### 获取所有菜单
......
package com.archser;
import com.archser.aserver.model._MappingKit;
import com.jfinal.kit.Prop;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory;
import com.jfinal.plugin.activerecord.dialect.OracleDialect;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.plugin.redis.RedisPlugin;
public class PublicDataSource {
static {
// 初始化配置文件
Prop use = PropKit.use("config-pro.properties");
// 初始化数据库
DruidPlugin dbPlugin = new DruidPlugin(use.get("jdbcUrl"), use.get("user"), use.get("password"), use.get("jdbc.driver"));
dbPlugin.start();
// 初始化 ActiveRecord
ActiveRecordPlugin arp = new ActiveRecordPlugin(dbPlugin);
arp.setShowSql(use.getBoolean("devMode"));
arp.setContainerFactory(new CaseInsensitiveContainerFactory(true));
arp.setDialect(new OracleDialect());
// 添加映射
_MappingKit.mapping(arp);
// 初始化Redis
RedisPlugin redis = new RedisPlugin("redis", use.get("redis.url"), use.get("redis.password"));
redis.start();
}
}
package com.archser.redis;
import com.alibaba.fastjson.JSONObject;
import com.archser.PublicDataSource;
import com.archser.aserver.model.User;
import com.jfinal.plugin.redis.Redis;
import java.util.Map;
public class RedisDataFormat {
static {
new PublicDataSource();
}
public static void main(String[] args) {
Redis.use().hset("USER_INFO","ID","1");
Redis.use().hset("USER_INFO","USERNAME","DAGLY");
Redis.use().hset("USER_INFO","PASSWORD","Admin@123456");
Redis.use().hset("USER_INFO","NAME","档案管理员");
// 测试正常获取
System.err.println(Redis.use().hget("USER_INFO", "USERNAME").toString());
// 测试中文乱码
System.err.println(Redis.use().hget("USER_INFO", "NAME").toString());
// 测试获取整个对象
Map user_info = Redis.use().hgetAll("USER_INFO");
User user = JSONObject.parseObject(JSONObject.toJSONString(user_info), User.class);
System.err.println(user.toString());
}
}
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