package com.oying.service.impl; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import com.oying.config.properties.FileProperties; import com.oying.utils.FileUtil; import com.oying.utils.PageResult; import com.oying.utils.PageUtil; import com.oying.utils.StringUtils; import com.oying.domain.LocalStorage; import com.oying.domain.dto.LocalStorageQueryCriteria; import com.oying.exception.BadRequestException; import com.oying.mapper.LocalStorageMapper; import com.oying.service.LocalStorageService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; /** * @author Z * @date 2019-09-05 */ @Service @RequiredArgsConstructor public class LocalStorageServiceImpl extends ServiceImpl implements LocalStorageService { private final LocalStorageMapper localStorageMapper; private final FileProperties properties; @Override public PageResult queryAll(LocalStorageQueryCriteria criteria, Page page) { return PageUtil.toPage(localStorageMapper.findAll(criteria, page)); } @Override public List queryAll(LocalStorageQueryCriteria criteria) { return localStorageMapper.findAll(criteria); } @Override @Transactional(rollbackFor = Exception.class) public LocalStorage create(String name, MultipartFile multipartFile) { FileUtil.checkSize(0, multipartFile.getSize()); String suffix = FileUtil.getExtensionName(multipartFile.getOriginalFilename()); String type = FileUtil.getFileType(suffix); File file = FileUtil.upload(multipartFile, properties.getPath().getPath() + type + File.separator); if (ObjectUtil.isNull(file)) { throw new BadRequestException("上传失败"); } try { name = StringUtils.isBlank(name) ? FileUtil.getFileNameNoEx(multipartFile.getOriginalFilename()) : name; LocalStorage localStorage = new LocalStorage( file.getName(), name, suffix, file.getPath(), type, FileUtil.getSize(multipartFile.getSize()) ); save(localStorage); return localStorage; } catch (Exception e) { FileUtil.del(file); throw e; } } @Override @Transactional(rollbackFor = Exception.class) public void update(LocalStorage resources) { LocalStorage localStorage = getById(resources.getId()); localStorage.copy(resources); saveOrUpdate(localStorage); } @Override @Transactional(rollbackFor = Exception.class) public void deleteAll(Long[] ids) { for (Long id : ids) { LocalStorage storage = getById(id); FileUtil.del(storage.getPath()); removeById(storage); } } @Override public void download(List queryAll, HttpServletResponse response) throws IOException { List> list = new ArrayList<>(); for (LocalStorage localStorage : queryAll) { Map map = new LinkedHashMap<>(); map.put("文件名", localStorage.getRealName()); map.put("备注名", localStorage.getName()); map.put("文件类型", localStorage.getType()); map.put("文件大小", localStorage.getSize()); map.put("创建者", localStorage.getCreateBy()); map.put("创建日期", localStorage.getCreateTime()); list.add(map); } FileUtil.downloadExcel(list, response); } }