package com.kidgrow.filecenter.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.kidgrow.common.model.PageResult; import com.kidgrow.filecenter.mapper.FileMapper; import com.kidgrow.filecenter.model.FileInfo; import com.kidgrow.filecenter.service.IFileService; import com.kidgrow.filecenter.util.FileUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; import org.springframework.web.multipart.MultipartFile; import java.util.List; import java.util.Map; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020
* * @Description:
* @Project:
* @CreateDate: Created in 2020/2/18 11:24
* @Author: liuke */ @Slf4j public abstract class AbstractIFileService extends ServiceImpl implements IFileService { private static final String FILE_SPLIT = "."; @Override public FileInfo upload(MultipartFile file) throws Exception { FileInfo fileInfo = FileUtil.getFileInfo(file); FileInfo oldFileInfo = baseMapper.selectById(fileInfo.getId()); if (oldFileInfo != null) { return oldFileInfo; } if (!fileInfo.getName().contains(FILE_SPLIT)) { throw new IllegalArgumentException("缺少后缀名"); } uploadFile(file, fileInfo); // 设置文件来源 fileInfo.setSource(fileType()); // 将文件信息保存到数据库 baseMapper.insert(fileInfo); return fileInfo; } /** * 文件来源 * * @return */ protected abstract String fileType(); /** * 上传文件 * * @param file * @param fileInfo */ protected abstract void uploadFile(MultipartFile file, FileInfo fileInfo) throws Exception; /** * 删除文件 * @param id 文件id */ @Override public void delete(String id) { FileInfo fileInfo = baseMapper.selectById(id); if (fileInfo != null) { baseMapper.deleteById(fileInfo.getId()); this.deleteFile(fileInfo); } } /** * 删除文件资源 * * @param fileInfo * @return */ protected abstract boolean deleteFile(FileInfo fileInfo); @Override public PageResult findList(Map params) { Page page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit")); List list = baseMapper.findList(page, params); return PageResult.builder().data(list).code(0).count(page.getTotal()).build(); } }