用户管理列表,手机号和邮箱加密查询(精准查询)

This commit is contained in:
zer0Black
2023-05-30 13:53:18 +08:00
parent c3c877f947
commit 492261a391
3 changed files with 120 additions and 1 deletions
@@ -125,7 +125,13 @@ public class SysUserController {
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) {
Results<IPage<SysUser>> result = new Results<>();
QueryWrapper<SysUser> queryWrapper = QueryGenerator.initQueryWrapper(user, req.getParameterMap());
// 处理手机号和邮箱,进行对应加密
Map<String, String[]> parameterMap = req.getParameterMap();
this.sysUserService.encryptReqMapData(parameterMap);
user.setEmail(this.sysUserService.proceedEmailEncrypt(user.getEmail()));
user.setPhone(this.sysUserService.proceedPhoneEncrypt(user.getPhone()));
QueryWrapper<SysUser> queryWrapper = QueryGenerator.initQueryWrapper(user, parameterMap);
Page<SysUser> page = new Page<>(pageNo, pageSize);
List<String> subDepIds = null;
@@ -292,4 +292,38 @@ public interface ISysUserService extends IService<SysUser> {
* @Remarks: 对手机号、邮箱进行加密处理
**/
void proceedUserInfoEncrypt(SysUser user);
/**
* 单独对邮箱解密
* @param email
* @return
*/
String proceedEmailDecrypt(String email);
/**
* 单独对手机号解密
* @param phone
* @return
*/
String proceedPhoneDecrypt(String phone);
/**
* 单独对邮箱加密
* @param email
* @return
*/
String proceedEmailEncrypt(String email);
/**
* 单独对手机号加密
* @param phone
* @return
*/
String proceedPhoneEncrypt(String phone);
/**
* 解密http请求的参数,只处理其中的phone和email
* @return
*/
void encryptReqMapData(Map<String, String[]> parameterMap);
}
@@ -540,6 +540,85 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
}
}
@Override
public String proceedEmailDecrypt(String email) {
if (StrUtil.isNotEmpty(email)){
// 对邮箱地址进行解密
try {
email = PasswordUtil.decrypt(email);
} catch (Exception e) {
log.error("邮箱解密字符串原文有误,解密错误");
}
}
return email;
}
@Override
public String proceedPhoneDecrypt(String phone) {
if (StrUtil.isNotEmpty(phone)){
// 对手机号地址进行解密
try {
phone = PasswordUtil.decrypt(phone);
} catch (Exception e) {
log.error("手机号解密字符串原文有误,解密错误");
}
}
return phone;
}
@Override
public String proceedEmailEncrypt(String email) {
if (StrUtil.isNotEmpty(email)){
// 对邮箱地址进行加密
try {
email = PasswordUtil.encrypt(email);
} catch (Exception e) {
log.error("邮箱加密字符串原文有误,加密错误");
}
}
return email;
}
@Override
public String proceedPhoneEncrypt(String phone) {
if (StrUtil.isNotEmpty(phone)){
// 对手机号地址进行加密
try {
phone = PasswordUtil.encrypt(phone);
} catch (Exception e) {
log.error("手机号加密字符串原文有误,加密错误");
}
}
return phone;
}
@Override
public void encryptReqMapData(Map<String, String[]> parameterMap) {
final String EMAIL_KEY = "email";
final String PHONE_KEY = "phone";
String[] emailArr = parameterMap.get(EMAIL_KEY);
String[] phoneArr = parameterMap.get(PHONE_KEY);
if (emailArr != null && emailArr.length > 0){
String email = emailArr[0];
email = this.proceedEmailEncrypt(email);
emailArr[0] = email;
parameterMap.put(EMAIL_KEY, emailArr);
}
if (phoneArr != null && phoneArr.length > 0){
String phone = phoneArr[0];
phone = this.proceedPhoneEncrypt(phone);
phoneArr[0] = phone;
parameterMap.put(PHONE_KEY, phoneArr);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
@CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true)