diff --git a/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/service/impl/SysOssResourceServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/service/impl/SysOssResourceServiceImpl.java index 25f2031..def9900 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/service/impl/SysOssResourceServiceImpl.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/service/impl/SysOssResourceServiceImpl.java @@ -1,9 +1,11 @@ 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.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.mybatis.core.page.PageQuery; 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.mapper.SysOssResourceMapper; 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 java.util.Collection; @@ -30,6 +34,8 @@ public class SysOssResourceServiceImpl implements ISysOssResourceService { private final SysOssResourceMapper baseMapper; + private final ISysOssService ossService; + /** * 查询【请填写功能名称】 * @@ -37,7 +43,7 @@ public class SysOssResourceServiceImpl implements ISysOssResourceService { * @return 【请填写功能名称】 */ @Override - public SysOssResourceVo queryById(Long ossId){ + public SysOssResourceVo queryById(Long ossId) { return baseMapper.selectVoById(ossId); } @@ -106,8 +112,15 @@ public class SysOssResourceServiceImpl implements ISysOssResourceService { /** * 保存前的数据校验 */ - private void validEntityBeforeSave(SysOssResource entity){ - //TODO 做一些数据校验,如唯一约束 + private void validEntityBeforeSave(SysOssResource entity) { + 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 public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteBatchIds(ids) > 0; diff --git a/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/service/impl/SysOssTextbookServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/service/impl/SysOssTextbookServiceImpl.java index 376f93d..31a78f0 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/service/impl/SysOssTextbookServiceImpl.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/service/impl/SysOssTextbookServiceImpl.java @@ -1,9 +1,11 @@ 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.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.mybatis.core.page.PageQuery; 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.mapper.SysOssTextbookMapper; 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 java.util.Collection; @@ -30,6 +34,8 @@ public class SysOssTextbookServiceImpl implements ISysOssTextbookService { private final SysOssTextbookMapper baseMapper; + private final ISysOssService ossService; + /** * 查询【请填写功能名称】 * @@ -108,7 +114,14 @@ public class SysOssTextbookServiceImpl implements ISysOssTextbookService { * 保存前的数据校验 */ 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("教材目录不存在"); + } } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java index 4b0faba..26fa355 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; +import org.apache.commons.codec.digest.DigestUtils; import org.dromara.common.core.constant.CacheNames; import org.dromara.common.core.domain.dto.OssDTO; import org.dromara.common.core.exception.ServiceException; @@ -193,6 +194,11 @@ public class SysOssServiceImpl implements ISysOssService, OssService { OssClient storage = OssFactory.instance(); UploadResult uploadResult; 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); } catch (IOException e) { throw new ServiceException(e.getMessage()); @@ -272,7 +278,6 @@ public class SysOssServiceImpl implements ISysOssService, OssService { * @param md5 文件在数据库中的唯一标识 * @return SysOssVo 对象,包含文件信息 */ - @Cacheable(cacheNames = CacheNames.SYS_OSS_IDENTIFIER, key = "#md5") @Override public Long getIdByMd5(String md5) { SysOss sysOss = baseMapper.selectOne(new LambdaQueryWrapper().eq(SysOss::getFileMd5, md5));