diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/email/EmailServiceManager.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/email/EmailServiceManager.java index 572e9aaf..b5548832 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/email/EmailServiceManager.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/email/EmailServiceManager.java @@ -566,14 +566,17 @@ public class EmailServiceManager { final String emlPath = spectrumPathProperties.getEmlPath(); emlFile = new File(rootPath + emlPath + File.separator + fileName); /* 如果邮件内容经过Base64编码 需要解码后再生成.eml文件 否则直接生成.eml文件 */ - List specified = ListUtil.toList(""); - if (CollUtil.contains(specified, from)){ // 来自指定邮箱 此邮箱对邮件内容进行了Base64编码 + final String BASE64_FLAG = "Base64"; + String content = (String) message.getContent(); + // 将正文内容分割为两部分: Base64 和 MD5|压缩前大小|压缩后大小|正文Base64编码 + List 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 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())); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/GardsAlertSystemServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/GardsAlertSystemServiceImpl.java index c7f03d93..9e7e9ce3 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/GardsAlertSystemServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/GardsAlertSystemServiceImpl.java @@ -50,6 +50,7 @@ public class GardsAlertSystemServiceImpl extends ServiceImpl items = dictService.getItems(DictConstant.ALERT_SYSTEM_CODE); + DynamicDataSourceContextHolder.clear(); Map 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 saveOrUpdate1(GardsAlertSystem alertSystem) { + String id = alertSystem.getId(); String code = alertSystem.getCode(); LambdaQueryWrapper 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