Commit 5c523da6 by 宋振民

feat:用户信息密码加密、支持选择多科室

parent 8995c661
package com.hs.admin.common.utils;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
public class AESUtil {
public static final String AES_KEY = "edFabJn3ZA==7JVk";//密钥自定义16位
/**
* AES加密+Base64转码
*
* @param data 明文(16进制)
* @return
*/
public static String encrypt(String data) {
byte[] keyb = null;
try {
keyb = AES_KEY.getBytes("utf-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
} // 明文
SecretKeySpec sKeySpec = new SecretKeySpec(keyb, "AES");
Cipher cipher = null;
try {
cipher = Cipher.getInstance("AES");
} catch (Exception e) {
e.printStackTrace();
}
try {
cipher.init(Cipher.ENCRYPT_MODE, sKeySpec);
} catch (InvalidKeyException e) {
e.printStackTrace();
}
byte[] bjiamihou = null;
String miwen = "";
try {
bjiamihou = cipher.doFinal(data.getBytes("utf-8"));
// byte加密后
miwen = Base64.encodeBase64String(bjiamihou);// 密文用base64加密
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
}
return miwen;
}
/**
* Base64解码 + AES解码
*
* @param data 密文 (16进制)
* @return
*/
public static String decrypt(String data){
byte[] keyb = null;
try {
keyb = AES_KEY.getBytes("utf-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
byte[] miwen = Base64.decodeBase64(data);
SecretKeySpec sKeySpec = new SecretKeySpec(keyb, "AES");
Cipher cipher = null;
try {
cipher = Cipher.getInstance("AES");
} catch (Exception e) {
e.printStackTrace();
}
try {
cipher.init(Cipher.DECRYPT_MODE, sKeySpec);
} catch (InvalidKeyException e) {
e.printStackTrace();
}
byte[] bjiemihou = null;
String mingwen = "";
try {
bjiemihou = cipher.doFinal(miwen);
// byte加密后
mingwen = new String(bjiemihou,"utf-8");
} catch (Exception e) {
e.printStackTrace();
}
return mingwen;
}
public static void main(String[] args) throws Exception {
// 测试加密工具类
String data = "{\"appCode\":\"portal\",\"createtime\":1592981430336,\"msgContent\":\"这里是通知的正文\",\"msgSignature\":\"中心(Janson)\",\"msgStatus\":0,\"msgTitle\":\"测试通知任务\",\"msgType\":1,\"objectCreateTime\":1592981430322,\"objectId\":\"123123123Id\",\"permission\":0,\"receiveUsers\":\"450503\",\"sendObject\":1,\"status\":0,\"userType\":1}";//明文
String miwen = encrypt(" ");// 加密
System.out.println(miwen);
System.out.println(decrypt(miwen));// 解密
}
}
\ No newline at end of file
......@@ -7,6 +7,6 @@ import lombok.Data;
public class SysUserList extends SysUser {
private Integer roleId;
private String roleName;
private Integer orgId;
private String orgId;
private String orgName;
}
......@@ -6,6 +6,7 @@ import com.github.pagehelper.PageInfo;
import com.hs.admin.common.base.PageRequest;
import com.hs.admin.common.base.PageResult;
import com.hs.admin.common.enums.StateType;
import com.hs.admin.common.utils.AESUtil;
import com.hs.admin.common.utils.PageUtil;
import com.hs.admin.mapper.SysUserMapper;
import com.hs.admin.model.SysUser;
......@@ -20,6 +21,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
......@@ -123,6 +125,13 @@ public class UserServiceImpl implements UserService {
PageRequest page = user.getPage();
PageHelper.startPage(page.getPageNum(), page.getPageSize());
List<SysUserList> sysMenus = sysUserMapper.selectUserList();
List<SysUserList> sysUserLists = new ArrayList<>();
sysMenus.forEach(sysUserList -> {
String password = sysUserList.getPassword();
String encrypt = AESUtil.encrypt(password);
sysUserList.setPassword(encrypt);
sysUserLists.add(sysUserList);
});
PageResult pageResult = PageUtil.getPageResult(page, new PageInfo<SysUserList>(sysMenus));
return pageResult;
}
......@@ -130,6 +139,7 @@ public class UserServiceImpl implements UserService {
@Override
public SysUserList info(Integer userId) {
SysUserList sysUser = sysUserMapper.selectUserById(userId);
sysUser.setPassword(AESUtil.encrypt(sysUser.getPassword()));
return sysUser;
}
}
......@@ -120,16 +120,16 @@
and `STATE` != 0
</select>
<select id="selectUserList" resultMap="SysUserList">
select r.ID as ROLE_ID, r.ROLE_NAME, s.ID as ORG_ID, s.ORG_NAME, u.*
select r.ID as ROLE_ID, r.ROLE_NAME, GROUP_CONCAT(s.ID) ORG_ID, GROUP_CONCAT(s.ORG_NAME) ORG_NAME, u.*
from sys_user u
join sys_user_role_rs ur on ur.USER_ID = u.ID and ur.STATE = 1
join sys_role r on r.ID = ur.ROLE_ID and r.STATE = 1
join sys_user_sbj_rs us on us.USER_ID = u.ID and us.STATE = 1
join sys_subject s on s.ID = us.ORG_ID and s.STATE = 1 and ((s.PARENT_ID != 0 and r.ROLE_CODE != 1) or
(s.PARENT_ID = 0 and r.ROLE_CODE = 1))
(s.PARENT_ID = 0 and r.ROLE_CODE = 1)) group by u.id
</select>
<select id="selectUserById" resultMap="SysUserList">
select r.ID as ROLE_ID, r.ROLE_NAME, s.ID as ORG_ID, s.ORG_NAME, u.*
select r.ID as ROLE_ID, r.ROLE_NAME, GROUP_CONCAT(s.ID) ORG_ID, GROUP_CONCAT(s.ORG_NAME) ORG_NAME, u.*
from sys_user u
join sys_user_role_rs ur on ur.USER_ID = u.ID and ur.STATE = 1
join sys_role r on r.ID = ur.ROLE_ID and r.STATE = 1
......@@ -137,5 +137,6 @@
join sys_subject s on s.ID = us.ORG_ID and s.STATE = 1 and ((s.PARENT_ID != 0 and r.ROLE_CODE != 1) or
(s.PARENT_ID = 0 and r.ROLE_CODE = 1))
where u.id = #{id}
group by u.id
</select>
</mapper>
\ No newline at end of file
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