package com.iplatform.file.support; import com.iplatform.base.util.UserUtils; import com.iplatform.file.FileStoreCallback; import com.iplatform.file.service.FileServiceImpl; import com.iplatform.model.po.S_file; import com.iplatform.model.po.S_file_mapper; import com.walker.file.DefaultFileInfo; import com.walker.file.FileInfo; import com.walker.file.FileStoreType; import com.walker.infrastructure.utils.DateUtils; import com.walker.infrastructure.utils.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import java.util.ArrayList; import java.util.List; /** * 通过数据库写入上传的文件记录。 * @author 时克英 * @date 2023-02-14 * @date 2023-06-05 使用新附件表(sf_attachment),参考:{@linkplain AttachmentJdbcCallback} */ @Deprecated public class JdbcCallback implements FileStoreCallback { protected final transient Logger logger = LoggerFactory.getLogger(getClass()); @Override public void onCallback(FileInfo fileInfo, FileStoreType fileStoreType) { if(logger.isDebugEnabled()){ logger.debug("保存文件:{}", fileInfo); } S_file s_file = new S_file(); s_file.setId(Long.parseLong(fileInfo.getId())); s_file.setCreate_time(DateUtils.getDateTimeNumber(System.currentTimeMillis())); s_file.setUser_name(UserUtils.getUserInfo().getUser_name()); s_file.setFile_name(fileInfo.getFileName()); s_file.setFile_ext(fileInfo.getFileExt()); s_file.setContent_type(""); s_file.setFile_path(fileInfo.getUrl()); s_file.setFile_size(fileInfo.getFileSize()); s_file.setFile_store_type(fileStoreType.getIndex()); if(StringUtils.isNotEmpty(fileInfo.getGroupId())){ s_file.setGroup_id(fileInfo.getGroupId()); } this.fileService.insert(s_file); // String fileExt = fileInfo.getFileExt(); // // SfAttachment attachment = new SfAttachment(); // attachment.setAttId(Long.parseLong(fileInfo.getId())); // attachment.setCreateTime(DateUtils.getDateTimeNumber()); // attachment.setUpdateTime(attachment.getCreateTime()); // attachment.setUserName(UserUtils.getUserInfo().getUser_name()); // attachment.setName(fileInfo.getFileName()); // attachment.setSattDir(fileInfo.getUrl()); // attachment.setAttType(fileExt); // 这里目前是后缀名,后续可参考电商系统存放:mimeType // attachment.setAttSize(fileInfo.getFileSize()); // attachment.setFileStoreType(fileStoreType.getIndex()); // if(StringUtils.isNotEmpty(fileInfo.getGroupId())){ // attachment.setGroupId(fileInfo.getGroupId()); // } // if(ImageUtils.isImage(fileExt) || ImageUtils.isVideo(fileExt)){ // // 暂时存放为1,表示媒体格式 // attachment.setImageType(1); // } else { // // 非媒体格式 // attachment.setImageType(0); // } // // pid 和 owner 需要传过来 // attachment.setPid(0); // attachment.setOwner(-1); // this.fileService.insert(attachment); } @Override public FileInfo onAcquireFileInfo(String id) { S_file s_file = this.fileService.get(new S_file(Long.parseLong(id))); return toFileInfo(s_file); } @Override public List onAcquireFileInfoList(List ids) { if(StringUtils.isEmptyList(ids)){ return null; } MapSqlParameterSource sqlParameterSource = new MapSqlParameterSource(); sqlParameterSource.addValue("ids", ids); List list = this.fileService.sqlListObjectWhereIn("select * from s_file where id in(:ids)" , S_file_mapper.ROW_MAPPER, sqlParameterSource); if(StringUtils.isEmptyList(list)){ return null; } List fileInfoList = new ArrayList<>(list.size()); for(S_file s_file : list){ fileInfoList.add(this.toFileInfo(s_file)); } return fileInfoList; } private FileInfo toFileInfo(S_file s_file){ if(s_file == null){ return null; } DefaultFileInfo fileInfo = new DefaultFileInfo(); fileInfo.setId(String.valueOf(s_file.getId())); fileInfo.setFileSize(s_file.getFile_size()); fileInfo.setUrl(s_file.getFile_path()); fileInfo.setFileExt(s_file.getFile_ext()); fileInfo.setFileName(s_file.getFile_name()); fileInfo.setFileStoreType(FileStoreType.getType(s_file.getFile_store_type())); fileInfo.setGroupId(s_file.getGroup_id()); return fileInfo; } public void setFileService(FileServiceImpl fileService) { this.fileService = fileService; } private FileServiceImpl fileService; }