package cn.lili.modules.lmk.service.impl; import cn.lili.base.Result; import cn.lili.common.exception.ServiceException; import cn.lili.cos.CosSTS; import cn.lili.modules.lmk.domain.entity.LmkFile; import cn.lili.modules.lmk.domain.form.FileInfoForm; import cn.lili.modules.lmk.domain.vo.LmkFileVO; import cn.lili.modules.lmk.mapper.LmkFileMapper; import cn.lili.modules.lmk.service.LmkFileService; import cn.lili.utils.COSUtil; import cn.lili.utils.FileUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; /** * 文件信息 服务实现类 * * @author xp * @since 2025-05-19 */ @Service @RequiredArgsConstructor public class LmkFileServiceImpl extends ServiceImpl implements LmkFileService { private final LmkFileMapper lmkFileMapper; private final COSUtil cosUtil; @Override public Result uploadObject(MultipartFile file) { LmkFile fileInfo = FileUtil.getFileInfo(file); try { cosUtil.upload(file.getInputStream(), fileInfo); lmkFileMapper.insert(fileInfo); } catch (IOException e) { e.printStackTrace(); throw new ServiceException("上传异常,请重试"); } String url = cosUtil.getPreviewUrl(fileInfo.getFileKey()); LmkFileVO fileVo = new LmkFileVO().setUrl(url).setFileKey(fileInfo.getFileKey()); return Result.ok("上传成功").data(fileVo); } @Override public Result uploadObjects(List files) { return null; } @Override public Result deleteObject(String fileKey) { cosUtil.deleteFile(fileKey); return Result.ok("删除成功"); } @Override public Result deleteObjects(List fileKeys) { cosUtil.deleteFiles(fileKeys); return Result.ok("删除成功"); } @Override public void downloadObject(String fileKey, HttpServletResponse response) { cosUtil.download(fileKey, response); } @Override public String getPreviewUrl(String fileKey) { return cosUtil.getPreviewUrl(fileKey); } @Override public CosSTS getSTSToken() { return cosUtil.getSTS(); } @Override @Transactional(propagation = Propagation.REQUIRED) public void addByForm(FileInfoForm fileInfo) { LmkFile file = new LmkFile(); BeanUtils.copyProperties(fileInfo, file); baseMapper.insert(file); } }