diff --git a/hb-file/src/main/java/com/ruoyi/file/controller/FiletransferController.java b/hb-file/src/main/java/com/ruoyi/file/controller/FiletransferController.java index 1e6223b..69dce8a 100644 --- a/hb-file/src/main/java/com/ruoyi/file/controller/FiletransferController.java +++ b/hb-file/src/main/java/com/ruoyi/file/controller/FiletransferController.java @@ -146,10 +146,11 @@ public class FiletransferController { httpServletResponse.addHeader("Content-Disposition", "attachment;fileName=" + fileName);// 设置文件名 filetransferService.downloadFile(httpServletResponse, downloadFileDTO); + List userFileIds = Arrays.asList(downloadFileDTO.getUserFileId()); // 保存下载记录 - downloadRecordService.saveDownloadRecord(Arrays.asList(downloadFileDTO.getUserFileId())); + downloadRecordService.saveDownloadRecord(userFileIds); // 增加下载次数 - userFileService.incrementDownloadCount(Arrays.asList(downloadFileDTO.getUserFileId())); + userFileService.incrementDownloadCount(userFileIds); } @Operation(summary = "批量下载文件", description = "批量下载文件", tags = {"filetransfer"}) diff --git a/hb-file/src/main/java/com/ruoyi/file/domain/DownloadRecord.java b/hb-file/src/main/java/com/ruoyi/file/domain/DownloadRecord.java index 7dbdddb..29fda82 100644 --- a/hb-file/src/main/java/com/ruoyi/file/domain/DownloadRecord.java +++ b/hb-file/src/main/java/com/ruoyi/file/domain/DownloadRecord.java @@ -29,6 +29,9 @@ public class DownloadRecord extends BaseEntity @Excel(name = "用户id") private Long userId; + @Excel(name = "文件名称") + private String fileNames; + /** 下载时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "下载时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") @@ -56,6 +59,4 @@ public class DownloadRecord extends BaseEntity /** 用户昵称 */ private String nickName; - /** 文件名称(多个用,隔开) */ - private String fileNames; } diff --git a/hb-file/src/main/java/com/ruoyi/file/service/impl/DownloadRecordServiceImpl.java b/hb-file/src/main/java/com/ruoyi/file/service/impl/DownloadRecordServiceImpl.java index 9e463e3..8373c90 100644 --- a/hb-file/src/main/java/com/ruoyi/file/service/impl/DownloadRecordServiceImpl.java +++ b/hb-file/src/main/java/com/ruoyi/file/service/impl/DownloadRecordServiceImpl.java @@ -8,6 +8,7 @@ import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.ip.AddressUtils; import com.ruoyi.common.utils.ip.IpUtils; import com.ruoyi.file.domain.UserFile; +import com.ruoyi.file.mapper.UserFileMapper; import eu.bitwalker.useragentutils.UserAgent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -36,6 +37,9 @@ public class DownloadRecordServiceImpl implements IDownloadRecordService @Autowired private DownloadRecordMapper downloadRecordMapper; + @Autowired + private UserFileMapper userFileMapper; + /** * 查询下载记录 * @@ -57,30 +61,7 @@ public class DownloadRecordServiceImpl implements IDownloadRecordService @Override public List selectDownloadRecordList(DownloadRecord downloadRecord) { - List recordList = downloadRecordMapper.selectDownloadRecordList(downloadRecord); - for (DownloadRecord record : recordList) { - List itemList = record.getDownloadRecordItemList(); - if (itemList != null && !itemList.isEmpty()) { - String fileNames = itemList.stream() - .map(DownloadRecordItem::getUserFile) // 取出 UserFile - .filter(Objects::nonNull) - .map(userFile -> { - String name = userFile.getFileName(); - String ext = userFile.getExtendName(); - if (ext != null && !ext.isEmpty()) { - return name + "." + ext; - } else { - return name; - } - }) - .filter(Objects::nonNull) - .collect(Collectors.joining(",")); - record.setFileNames(fileNames); - } else { - record.setFileNames(""); - } - } - return recordList; + return downloadRecordMapper.selectDownloadRecordList(downloadRecord); } /** @@ -164,6 +145,21 @@ public class DownloadRecordServiceImpl implements IDownloadRecordService downloadRecord.setBrowser(browser); downloadRecord.setDownloadTime(DateUtils.getNowDate()); List itemList = new ArrayList<>(); + List userFileList = userFileMapper.selectByUserFileIds(userFileIds); + String fileNames = userFileList.stream() + .filter(Objects::nonNull) + .map(userFile -> { + String name = userFile.getFileName(); + String ext = userFile.getExtendName(); + if (ext != null && !ext.isEmpty()) { + return name + "." + ext; + } else { + return name; + } + }) + .filter(Objects::nonNull) + .collect(Collectors.joining(",")); + downloadRecord.setFileNames(fileNames); for (String userFileId : userFileIds) { DownloadRecordItem downloadRecordItem = new DownloadRecordItem(); downloadRecordItem.setUserFileId(userFileId); diff --git a/hb-file/src/main/resources/mapper/DownloadRecordMapper.xml b/hb-file/src/main/resources/mapper/DownloadRecordMapper.xml index e296f79..f1bb9de 100644 --- a/hb-file/src/main/resources/mapper/DownloadRecordMapper.xml +++ b/hb-file/src/main/resources/mapper/DownloadRecordMapper.xml @@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -28,23 +29,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select record_id, user_id, download_time, ipaddr, location, browser, os from download_record + select record_id, user_id, file_names, download_time, ipaddr, location, browser, os from download_record - + select a.record_id, a.user_id, a.file_names, a.download_time, a.ipaddr, a.location, a.browser, a.os, u.nick_name as nick_name from download_record a - left join download_record_item b on b.record_id = a.record_id left join sys_user u on u.user_id = a.user_id and download_time between #{params.beginDownloadTime} and #{params.endDownloadTime} and location like concat('%', #{location}, '%') + order by a.download_time desc