1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| @Override @Transactional public ResponseResult addNotice(AddNoticeDto addNoticeDto) { String content = addNoticeDto.getContent(); if (ImageUrlUtils.containsTempImages(content)) { content = processContentImages(content, addNoticeDto.getTitle()); addNoticeDto.setContent(content); }
SysNotice sysNotice = BeanCopyUtils.copyBean(addNoticeDto, SysNotice.class); sysNotice.setTargetUserIds(convertTargetUserIds(addNoticeDto.getTargetUserIds())); sysNotice.setPublisherId(SecurityUtils.getUserId()); sysNotice.setPublishTime(new Date());
boolean save = this.save(sysNotice); if (!save) { return ResponseResult.errorResult(AppHttpCodeEnum.SYSTEM_ERROR, "添加通知失败"); }
return ResponseResult.okResult(); }
private String processContentImages(String content, String noticeTitle) { List<String> tempImageUrls = ImageUrlUtils.extractTempImageUrls(content); String result = content;
List<String> distinctTempImageUrls = tempImageUrls.stream().distinct().toList();
for (String tempUrl : distinctTempImageUrls) { UploadFileMetaVo uploadFileMetaVo = ossFileService.moveTempToFormal(tempUrl); if (uploadFileMetaVo == null || !StringUtils.hasText(uploadFileMetaVo.getUrl())) { throw new RuntimeException("通知内容图片保存失败,无法保存通知记录: " + tempUrl); }
result = ImageUrlUtils.replaceImageUrl(result, tempUrl, uploadFileMetaVo.getUrl());
if (StringUtils.hasText(uploadFileMetaVo.getFilePath())) { saveFileRecord(uploadFileMetaVo.getName(), uploadFileMetaVo.getFilePath(), uploadFileMetaVo.getUrl(), uploadFileMetaVo.getSize(), uploadFileMetaVo.getMimeType(), "通知《" + noticeTitle + "》中的图片"); } }
return result; }
private String convertTargetUserIds(List<Long> targetUsers) { if (targetUsers == null || targetUsers.isEmpty()) { return null; } return targetUsers.stream().map(String::valueOf).collect(Collectors.joining(",")); }
private void saveFileRecord(String fileName, String filePath, String url, Long size, String mimeType, String fileSource) { SysFile sysFile = new SysFile(); sysFile.setName(fileName); sysFile.setFilePath(filePath); sysFile.setUrl(url); sysFile.setSize(size); sysFile.setMimeType(mimeType); sysFile.setFileSource(fileSource); sysFileService.save(sysFile); }
|