资源文件上传

This commit is contained in:
cjw 2024-06-04 15:43:59 +08:00
parent 505f440af8
commit e095e4e5a2
3 changed files with 37 additions and 6 deletions

View File

@ -1,9 +1,11 @@
package org.dromara.file.service.impl; package org.dromara.file.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -12,6 +14,8 @@ import org.dromara.file.domain.bo.SysOssResourceBo;
import org.dromara.file.domain.vo.SysOssResourceVo; import org.dromara.file.domain.vo.SysOssResourceVo;
import org.dromara.file.mapper.SysOssResourceMapper; import org.dromara.file.mapper.SysOssResourceMapper;
import org.dromara.file.service.ISysOssResourceService; import org.dromara.file.service.ISysOssResourceService;
import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.service.ISysOssService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Collection; import java.util.Collection;
@ -30,6 +34,8 @@ public class SysOssResourceServiceImpl implements ISysOssResourceService {
private final SysOssResourceMapper baseMapper; private final SysOssResourceMapper baseMapper;
private final ISysOssService ossService;
/** /**
* 查询请填写功能名称 * 查询请填写功能名称
* *
@ -37,7 +43,7 @@ public class SysOssResourceServiceImpl implements ISysOssResourceService {
* @return 请填写功能名称 * @return 请填写功能名称
*/ */
@Override @Override
public SysOssResourceVo queryById(Long ossId){ public SysOssResourceVo queryById(Long ossId) {
return baseMapper.selectVoById(ossId); return baseMapper.selectVoById(ossId);
} }
@ -106,8 +112,15 @@ public class SysOssResourceServiceImpl implements ISysOssResourceService {
/** /**
* 保存前的数据校验 * 保存前的数据校验
*/ */
private void validEntityBeforeSave(SysOssResource entity){ private void validEntityBeforeSave(SysOssResource entity) {
//TODO 做一些数据校验,如唯一约束 SysOssVo ossVo = ossService.getById(entity.getOssId());
if (ObjectUtil.isNull(ossVo)) {
throw new ServiceException("资源文件不存在");
}
SysOssResource ossResource = baseMapper.selectById(entity.getCatalogId());
if (ObjectUtil.isNull(ossResource)) {
throw new ServiceException("资源目录不存在");
}
} }
/** /**
@ -119,7 +132,7 @@ public class SysOssResourceServiceImpl implements ISysOssResourceService {
*/ */
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){ if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验 //TODO 做一些业务上的校验,判断是否需要校验
} }
return baseMapper.deleteBatchIds(ids) > 0; return baseMapper.deleteBatchIds(ids) > 0;

View File

@ -1,9 +1,11 @@
package org.dromara.file.service.impl; package org.dromara.file.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -12,6 +14,8 @@ import org.dromara.file.domain.bo.SysOssTextbookBo;
import org.dromara.file.domain.vo.SysOssTextbookVo; import org.dromara.file.domain.vo.SysOssTextbookVo;
import org.dromara.file.mapper.SysOssTextbookMapper; import org.dromara.file.mapper.SysOssTextbookMapper;
import org.dromara.file.service.ISysOssTextbookService; import org.dromara.file.service.ISysOssTextbookService;
import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.service.ISysOssService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Collection; import java.util.Collection;
@ -30,6 +34,8 @@ public class SysOssTextbookServiceImpl implements ISysOssTextbookService {
private final SysOssTextbookMapper baseMapper; private final SysOssTextbookMapper baseMapper;
private final ISysOssService ossService;
/** /**
* 查询请填写功能名称 * 查询请填写功能名称
* *
@ -108,7 +114,14 @@ public class SysOssTextbookServiceImpl implements ISysOssTextbookService {
* 保存前的数据校验 * 保存前的数据校验
*/ */
private void validEntityBeforeSave(SysOssTextbook entity){ private void validEntityBeforeSave(SysOssTextbook entity){
//TODO 做一些数据校验,如唯一约束 SysOssVo ossVo = ossService.getById(entity.getOssId());
if (ObjectUtil.isNull(ossVo)) {
throw new ServiceException("教材文件不存在");
}
SysOssTextbook ossTextbook = baseMapper.selectById(entity.getCatalogId());
if (ObjectUtil.isNull(ossTextbook)) {
throw new ServiceException("教材目录不存在");
}
} }
/** /**

View File

@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.codec.digest.DigestUtils;
import org.dromara.common.core.constant.CacheNames; import org.dromara.common.core.constant.CacheNames;
import org.dromara.common.core.domain.dto.OssDTO; import org.dromara.common.core.domain.dto.OssDTO;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
@ -193,6 +194,11 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
OssClient storage = OssFactory.instance(); OssClient storage = OssFactory.instance();
UploadResult uploadResult; UploadResult uploadResult;
try { try {
String md5 = DigestUtils.md5Hex(file.getInputStream());
Long ossId = this.getIdByMd5(md5);
if(ObjectUtil.isNotNull(ossId)){
return SpringUtils.getAopProxy(this).getById(ossId);
}
uploadResult = storage.uploadSuffix(file.getBytes(), suffix); uploadResult = storage.uploadSuffix(file.getBytes(), suffix);
} catch (IOException e) { } catch (IOException e) {
throw new ServiceException(e.getMessage()); throw new ServiceException(e.getMessage());
@ -272,7 +278,6 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
* @param md5 文件在数据库中的唯一标识 * @param md5 文件在数据库中的唯一标识
* @return SysOssVo 对象包含文件信息 * @return SysOssVo 对象包含文件信息
*/ */
@Cacheable(cacheNames = CacheNames.SYS_OSS_IDENTIFIER, key = "#md5")
@Override @Override
public Long getIdByMd5(String md5) { public Long getIdByMd5(String md5) {
SysOss sysOss = baseMapper.selectOne(new LambdaQueryWrapper<SysOss>().eq(SysOss::getFileMd5, md5)); SysOss sysOss = baseMapper.selectOne(new LambdaQueryWrapper<SysOss>().eq(SysOss::getFileMd5, md5));