feat:修改是否对文件内容解码逻辑

This commit is contained in:
nieziyan 2024-04-10 19:09:32 +08:00
parent eedcd67113
commit 0c8019ad15
2 changed files with 29 additions and 14 deletions

View File

@ -566,14 +566,17 @@ public class EmailServiceManager {
final String emlPath = spectrumPathProperties.getEmlPath();
emlFile = new File(rootPath + emlPath + File.separator + fileName);
/* 如果邮件内容经过Base64编码 需要解码后再生成.eml文件 否则直接生成.eml文件 */
List<String> specified = ListUtil.toList("");
if (CollUtil.contains(specified, from)){ // 来自指定邮箱 此邮箱对邮件内容进行了Base64编码
final String BASE64_FLAG = "Base64";
String content = (String) message.getContent();
// 将正文内容分割为两部分: Base64 MD5|压缩前大小|压缩后大小|正文Base64编码
List<String> contents = StrUtil.split(content, '|', 2);
if (StrUtil.equals(contents.get(0), BASE64_FLAG)){
// 先将未解码的内容保存为.eml文件
FileUtil.writeFromStream(message.getInputStream(), emlFile);
// 对正文内容进行解码
String content = (String) message.getContent();
// String content = FileUtil.readUtf8String(emlFile);
List<String> contents = ListUtil.toList(StrUtil.split(content, '|', 2));
// content: MD5|压缩前大小|压缩后大小|正文Base64编
content = contents.get(1);
// 将content分割为: MD5 压缩前大小|压缩后大小|正文Base64编码
contents = StrUtil.split(content, '|', 2);
String md5 = contents.get(0);
content = contents.get(1);
if (StrUtil.isBlank(content)) return emlFile;
@ -581,7 +584,7 @@ public class EmailServiceManager {
String md5Verified = MD5.create().digestHex(content);
// 如果md5验证失败 则不进行解码
if (!StrUtil.equals(md5, md5Verified)) return emlFile;
contents = ListUtil.toList(StrUtil.split(content, "|"));
contents = StrUtil.split(content, '|');
String base64 = contents.get(contents.size() - 1);
// 解码Base64字符串 并用解码后的内容覆盖未解码内容
byte[] data = Base64.decode(base64);
@ -589,7 +592,7 @@ public class EmailServiceManager {
InflaterOutputStream inflaterOutputStream = new InflaterOutputStream(out)) {
inflaterOutputStream.write(data);
} catch (Exception e) {
log.error("Create the base64 decoded file[{}] error: {}", emlFile.getAbsolutePath(), e.getMessage());
log.error("Create the Base64 decoded file[{}] error: {}", emlFile.getAbsolutePath(), e.getMessage());
}
} else { // 直接生成.eml文件
message.writeTo(Files.newOutputStream(emlFile.toPath()));

View File

@ -50,6 +50,7 @@ public class GardsAlertSystemServiceImpl extends ServiceImpl<GardsAlertSystemMap
// 手动切换为主数据源
DynamicDataSourceContextHolder.push("master");
List<DictModel> items = dictService.getItems(DictConstant.ALERT_SYSTEM_CODE);
DynamicDataSourceContextHolder.clear();
Map<String, String> typeMap = items.stream().collect(Collectors
.toMap(DictModel::getValue, DictModel::getText, (oldValue, newValue) -> newValue));
page.getRecords().forEach(item -> {
@ -62,15 +63,26 @@ public class GardsAlertSystemServiceImpl extends ServiceImpl<GardsAlertSystemMap
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW)
public Result<?> saveOrUpdate1(GardsAlertSystem alertSystem) {
String id = alertSystem.getId();
String code = alertSystem.getCode();
LambdaQueryWrapper<GardsAlertSystem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(GardsAlertSystem::getCode, code);
if (CollUtil.isNotEmpty(this.list(wrapper)))
return Result.error("Code " + code + "is exist!");
boolean success = this.saveOrUpdate(alertSystem);
if (success)
return Result.OK(Prompt.UPDATE_SUCC);
return Result.error(Prompt.UPDATE_ERR);
if (StrUtil.isBlank(id)){ // 如果是新增,判断code是否已经存在
if (CollUtil.isNotEmpty(this.list(wrapper)))
return Result.error("Code " + code + " is exist!");
if (this.saveOrUpdate(alertSystem))
return Result.OK(Prompt.ADD_SUCC);
return Result.error(Prompt.ADD_ERR);
} else { // 如果是修改,判断code是否修改,如果code修改,判断修改的code是否已经存在
GardsAlertSystem alertSystemOld = this.getById(id);
String oldCode = alertSystemOld.getCode();
if (!StrUtil.equals(code, oldCode))
if (CollUtil.isNotEmpty(this.list(wrapper)))
return Result.error("Code " + code + " is exist!");
if (this.saveOrUpdate(alertSystem))
return Result.OK(Prompt.UPDATE_SUCC);
return Result.error(Prompt.UPDATE_ERR);
}
}
@Override