Commit cca7de71 authored by 李德才's avatar 李德才

将用户、系统、机构信息保存到redis,提供保存和查询的方式

parent 2bfe1e9d
......@@ -5,6 +5,8 @@ import com.archser.aserver.model.System;
import com.archser.aserver.service.LogService;
import com.archser.aserver.service.SystemService;
import com.archser.aserver.util.JwtUtils;
import com.archser.aserver.util.redis.InfoSystem;
import com.archser.aserver.util.redis.RedisConvert;
import com.jfinal.aop.Before;
import com.jfinal.aop.Clear;
import com.jfinal.aop.Inject;
......@@ -13,6 +15,7 @@ import com.jfinal.kit.Ret;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.tx.Tx;
import com.jfinal.plugin.redis.Redis;
import java.util.List;
/**
......@@ -46,6 +49,7 @@ public class SystemController extends Controller {
System system = getModel(System.class, "", true);
if (system == null) {
renderJson(Ret.fail("msg", "请填写完整数据"));
return ;
} else if (system.getId() == null || system.getId() == 0) {
system.set("ID", System.SEQ_NEXTVAL);
system.save();
......@@ -58,6 +62,9 @@ public class SystemController extends Controller {
logService.saveAsLog("operate", getAttr("username"), JwtInterceptor.getIpAddr(getRequest()),
"修改-" + system.getName() + "-系统模块成功", "aserver");
}
new Thread(() ->{
InfoSystem.saveSystem(system);
}).start();
}
/**
......@@ -80,6 +87,10 @@ public class SystemController extends Controller {
}
if (success) {
renderJson(Ret.ok());
String finalSystemName = systemName;
new Thread(() ->{
InfoSystem.deleteSystem(finalSystemName);
}).start();
logService.saveAsLog("operate", getAttr("username"), JwtInterceptor.getIpAddr(getRequest()),
"删除" + systemName, "aserver");
} else {
......
package com.archser.aserver.controller;
import com.archser.aserver.util.redis.InfoUser;
import com.jfinal.upload.UploadFile;
import java.io.File;
import java.io.FileInputStream;
......@@ -17,6 +18,7 @@ import com.jfinal.kit.Ret;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.redis.Redis;
import javax.sound.sampled.Line.Info;
import org.apache.commons.codec.binary.Base64;
/**
......@@ -27,8 +29,6 @@ import org.apache.commons.codec.binary.Base64;
*/
public class UserController extends Controller {
@Inject
UserService userService;
private static final String _INFO = "_INFO";
......@@ -37,8 +37,8 @@ public class UserController extends Controller {
*/
public void info() {
String username = this.getAttr("username");
User user = User.dao.template("getUser", username).findFirst();
user.remove("password");
User user = InfoUser.getUser(username);
user.remove("password");
Organ organ = Organ.dao.findById(user.getOrganId());
if (organ != null) {
Iterator<Entry<String, Object>> organIterator = organ._getAttrsEntrySet().iterator();
......@@ -55,21 +55,17 @@ public class UserController extends Controller {
* 修改用户密码
* @throws SQLException
*/
public void updatePwd() {
String username = this.getAttr("username");
String password = this.getPara("newPwd");
password = HashKit.sha256(password);
int flag = Db.update(Db.getSql("updatePassword"), password, username);
if (flag == 0) {
this.renderJson(Ret.fail("msg","修改失败"));
return ;
}
try {
Redis.use().hset(username+ _INFO, "password", password);
}catch (Exception e) {
e.printStackTrace();
}
this.renderJson(Ret.ok("msg","修改成功"));
public void updatePwd() {
String username = this.getAttr("username");
String password = this.getPara("newPwd");
password = HashKit.sha256(password);
int flag = Db.update(Db.getSql("updatePassword"), password, username);
if (flag == 0) {
this.renderJson(Ret.fail("msg", "修改失败"));
return;
}
this.renderJson(Ret.ok("msg", "修改成功"));
InfoUser.saveUser(InfoUser.getUser(username).setPassword(password));
}
/**
......@@ -83,56 +79,36 @@ public class UserController extends Controller {
}
boolean flag = user.update();
if (flag) {
updateUserForRedis(user);
renderJson(Ret.ok("msg", "数据修改成功!"));
return;
InfoUser.saveUser(user);
} else {
renderJson(Ret.fail("msg", "Error ! 请联系管理员解决。"));
}
}
/**
* 修改Redis中的用户信息
*@Time:2020年7月10日 - 上午8:48:48
* @author:李德才
* @param: @param user
* @return: void
* @throws
*/
public void updateUserForRedis(User user) {
try {
Iterator<Entry<String, Object>> userIterator = user._getAttrsEntrySet().iterator();
Map<Object, Object> userMap = new HashMap<>();
Entry<String, Object> userAttr = null;
while (userIterator.hasNext()) {
userAttr = userIterator.next();
userMap.put(userAttr.getKey().toString().trim().toLowerCase(), userAttr.getValue());
}
Redis.use().hmset(user.getUsername() + _INFO, userMap);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 查询角色
*/
public void getRoleData() {
String username = this.getAttr("username");
User user = User.dao.template("getUser", username).findFirst();
int userId = user.getId();
List<Record> records = Db.find(Db.getSql("getRolesByUserId"), userId);
List<Integer> ids = new ArrayList<Integer>();
for (Record record : records) {
ids.add(record.getInt("ROLE_ID"));
}
List<Record> dataList = Db.find(Db.getSqlPara("getRole",Kv.by("ids", ids)));
if (dataList != null) {
this.renderJson(Ret.ok("list", dataList));
} else {
this.renderJson(Ret.fail("msg", "未找到数据"));
}
String username = this.getAttr("username");
if ("admin".equals(username)) {
this.renderJson(Ret.ok("list", null));
return;
}
User user = InfoUser.getUser(username);
int userId = user.getId();
List<Record> records = Db.find(Db.getSql("getRolesByUserId"), userId);
List<Integer> ids = new ArrayList<Integer>();
for (Record record : records) {
ids.add(record.getInt("ROLE_ID"));
}
List<Record> dataList = Db.find(Db.getSqlPara("getRole", Kv.by("ids", ids)));
if (dataList != null) {
this.renderJson(Ret.ok("list", dataList));
} else {
this.renderJson(Ret.fail("msg", "未找到数据"));
}
}
/**
......@@ -162,6 +138,9 @@ public class UserController extends Controller {
if (imgBase != null) {
user.setImage(imgBase);
user.update();
new Thread(() -> {
InfoUser.saveUser(InfoUser.getUser(username).setImage(imgBase));
}).start();
}
} catch (Exception e) {
e.printStackTrace();
......@@ -188,7 +167,7 @@ public class UserController extends Controller {
public void getImage() {
String username = this.getAttr("username");
User user = User.dao.template("getUser", username).findFirst();
User user = InfoUser.getUser(username);
byte[] image = user.getImage();
if (image == null) {
renderJson(Ret.ok("baseStr", image));
......
package com.archser.aserver.util.redis;
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);
}
}
......@@ -38,4 +38,26 @@ public class InfoSystem {
return system;
}
/**
* 保存系统信息
*
* @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;
}
}
......@@ -2,9 +2,11 @@ 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 {
/**
* 20201127 lidecai 操作redis中的用户信息
*/
public class InfoUser {
private static final String _INFO = "_INFO";
private static final String USER = "USER_";
......@@ -19,22 +21,26 @@ public class InfoUser implements Serializable {
Object object = RedisConvert.getObject(USER + userName + _INFO);
User user = JSONObject.parseObject(JSONObject.toJSONString(object), User.class);
if (user.getId() == null) {
return getUserByDataBase(userName);
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
*/
private static User getUserByDataBase(String userName) {
User user = User.dao.template("getUser", userName).findFirst();
RedisConvert.saveObject(USER + userName + _INFO, user);
return user;
public static User getUserByDataBase(String userName) {
return User.dao.template("getUser", userName).findFirst();
}
......
......@@ -38,8 +38,9 @@ public class RedisConvert {
* @param key
* @param object
*/
public static void saveObject(String key, Object object) {
Redis.use().hmset(key, objectToMap(object));
public static boolean saveObject(String key, Object object) {
String hamlet = Redis.use().hmset(key, objectToMap(object));
return hamlet.equalsIgnoreCase("Ok");
}
/**
......@@ -52,13 +53,20 @@ public class RedisConvert {
return Redis.use().hgetAll(key);
}
public static Long deleteKey(String key){
return Redis.use().del(key);
}
/**
* 反射获取对象全部属性
*
* 对象转map
* @param obj
* @return
*/
public static Map objectToMap(Object obj) {
return JSONObject.parseObject(JSONObject.toJSONString(obj), Map.class);
}
}
cron4j=task
#凌晨4点执行一次
##每间隔一分钟删除一次
##task.cron=*/1 * * * *
##凌晨一点执行一次
task.cron=0 1 * * *
task.class=com.archser.aserver.itask.GoodSync
task.enable=true
#task1用于删除批量导出时产生的临时文件
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