From 506a7a2dc8bf4f8dda1dcdde44dca77bbdb7a428 Mon Sep 17 00:00:00 2001 From: cjw Date: Tue, 18 Jun 2024 16:38:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B5=84=E6=BA=90=E4=B8=8A=E4=BC=A0=E5=90=8C?= =?UTF-8?q?=E7=BA=A7=E7=9B=AE=E5=BD=95=E6=A0=A1=E9=AA=8C=EF=BC=9B=E6=88=91?= =?UTF-8?q?=E7=9A=84=E7=A9=BA=E9=97=B4=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 1 + .../common/core/constant/CacheNames.java | 1 + .../file/SysCatalogTextbookController.java | 15 +++ .../file/SysOssPersonController.java | 4 +- .../system/domain/SysCatalogPerson.java | 5 - .../system/domain/bo/SysCatalogPersonBo.java | 6 -- .../system/mapper/SysOssPersonMapper.java | 11 ++- .../system/mapper/SysOssResourceMapper.java | 2 +- .../system/mapper/SysOssTextbookMapper.java | 2 +- .../service/ISysCatalogPersonService.java | 20 ++++ .../service/ISysCatalogTextbookService.java | 1 + .../impl/SysCatalogPersonServiceImpl.java | 35 ++++++- .../impl/SysCatalogTextbookServiceImpl.java | 4 +- .../service/impl/SysOssPersonServiceImpl.java | 99 +++++++++++++------ .../impl/SysOssResourceServiceImpl.java | 3 + .../impl/SysOssTextbookServiceImpl.java | 3 + .../mapper/system/SysOssPersonMapper.xml | 6 ++ 17 files changed, 168 insertions(+), 50 deletions(-) diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index ae60083..a1b1a17 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -143,6 +143,7 @@ tenant: - sys_oss_config - sys_oss_resource - sys_oss_textbook + - sys_oss_person # MyBatisPlus配置 # https://baomidou.com/config/ diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java index fe6f0c7..cf30aae 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java @@ -78,5 +78,6 @@ public interface CacheNames { String SYS_CATALOG_TEXTBOOK = "sys_catalog_textbook#30d"; String SYS_CATALOG_RESOURCE = "sys_catalog_resource#30d"; + String SYS_CATALOG_PERSON = "sys_catalog_person#30d"; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/file/SysCatalogTextbookController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/file/SysCatalogTextbookController.java index cb69812..186325e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/file/SysCatalogTextbookController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/file/SysCatalogTextbookController.java @@ -76,6 +76,9 @@ public class SysCatalogTextbookController extends BaseController { @RepeatSubmit() @PostMapping() public R add(@Validated(AddGroup.class) @RequestBody SysCatalogTextbookBo bo) { + if (!textbookService.checkNameUnique(bo)) { + return R.fail("新增'" + bo.getCatalogName() + "'失败,名称已存在"); + } return toAjax(textbookService.insertByBo(bo)); } @@ -87,6 +90,12 @@ public class SysCatalogTextbookController extends BaseController { @RepeatSubmit() @PutMapping() public R edit(@Validated(EditGroup.class) @RequestBody SysCatalogTextbookBo bo) { + Long catalogId = bo.getCatalogId(); + if (!textbookService.checkNameUnique(bo)) { + return R.fail("修改'" + bo.getCatalogName() + "'失败,名称已存在"); + } else if (bo.getParentId().equals(catalogId)) { + return R.fail("修改'" + bo.getCatalogName() + "'失败,上级不能是自己"); + } return toAjax(textbookService.updateByBo(bo)); } @@ -100,6 +109,12 @@ public class SysCatalogTextbookController extends BaseController { @DeleteMapping("/{catalogId}") public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long catalogId) { + if (textbookService.hasChildByCatalogId(catalogId)) { + return R.warn("存在下级,不允许删除"); + } + if (textbookService.checkCatalogExistFile(catalogId)) { + return R.warn("存在文件,不允许删除"); + } return toAjax(textbookService.deleteById(catalogId)); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/file/SysOssPersonController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/file/SysOssPersonController.java index 5333746..fb3fef4 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/file/SysOssPersonController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/file/SysOssPersonController.java @@ -40,8 +40,8 @@ public class SysOssPersonController extends BaseController { /** * 查询资源-我的空间列表 */ - @SaCheckPermission("oss:person:list") - @GetMapping("/list") + @SaCheckPermission("oss:person:pageList") + @GetMapping("/pageList") public TableDataInfo list(SysOssPersonBo bo, PageQuery pageQuery) { return sysOssPersonService.queryPageList(bo, pageQuery); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysCatalogPerson.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysCatalogPerson.java index 78fd021..5f766c3 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysCatalogPerson.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysCatalogPerson.java @@ -28,11 +28,6 @@ public class SysCatalogPerson extends TenantEntity { @TableId(value = "catalog_id") private Long catalogId; - /** - * 用户编号 - */ - private Long userId; - /** * 父目录id */ diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysCatalogPersonBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysCatalogPersonBo.java index ce7fdfb..894467a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysCatalogPersonBo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysCatalogPersonBo.java @@ -26,12 +26,6 @@ public class SysCatalogPersonBo extends BaseEntity { @NotNull(message = "目录id不能为空", groups = { EditGroup.class }) private Long catalogId; - /** - * 用户编号 - */ - @NotNull(message = "用户编号不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long userId; - /** * 父目录id */ diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssPersonMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssPersonMapper.java index a5b82dd..6d4e6f9 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssPersonMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssPersonMapper.java @@ -1,8 +1,13 @@ package org.dromara.system.mapper; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.system.domain.SysOssPerson; import org.dromara.system.domain.vo.SysOssPersonVo; -import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** * 资源-我的空间Mapper接口 @@ -10,6 +15,10 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; * @author cjw * @date 2024-06-13 */ +@Mapper public interface SysOssPersonMapper extends BaseMapperPlus { + Page selectPageList(@Param("page") Page page, + @Param(Constants.WRAPPER) Wrapper queryWrapper); + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssResourceMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssResourceMapper.java index f6d6df6..d1423be 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssResourceMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssResourceMapper.java @@ -25,7 +25,7 @@ public interface SysOssResourceMapper extends BaseMapperPlus queryWrapper); @DataPermission({ - @DataColumn(key = "userName", value = "create_by") + @DataColumn(key = "userName", value = "r.create_by") }) Page selectPageAwaitList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssTextbookMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssTextbookMapper.java index def943b..0e9b4d6 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssTextbookMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssTextbookMapper.java @@ -23,7 +23,7 @@ public interface SysOssTextbookMapper extends BaseMapperPlus selectPageList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); @DataPermission({ - @DataColumn(key = "userName", value = "create_by") + @DataColumn(key = "userName", value = "ot.create_by") }) Page selectPageAwaitList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysCatalogPersonService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysCatalogPersonService.java index 1f9b9ca..2d435a3 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysCatalogPersonService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysCatalogPersonService.java @@ -1,5 +1,7 @@ package org.dromara.system.service; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import org.dromara.system.domain.SysCatalogPerson; import org.dromara.system.domain.bo.SysCatalogPersonBo; import org.dromara.system.domain.vo.SysCatalogPersonVo; @@ -77,4 +79,22 @@ public interface ISysCatalogPersonService { * @return 结果 true 存在 false 不存在 */ boolean checkCatalogExistFile(Long catalogId); + + /** + * 根据ID查询信息 + * + * @param catalogId 目录ID + * @return 目录信息 + */ + SysCatalogPersonVo selectCatalogById(Long catalogId); + + /** + * 通过ID查询目录名称(包含自身) + * + * @param catalogId ID + * @return 目录名称串/分隔 + */ + String selectCatalogNameById(Long catalogId); + + List selectList(Wrapper queryWrapper); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysCatalogTextbookService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysCatalogTextbookService.java index e28f462..7032581 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysCatalogTextbookService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysCatalogTextbookService.java @@ -67,6 +67,7 @@ public interface ISysCatalogTextbookService { * @return 是否删除成功 */ int deleteById(Long catalogId); + /** * 校验目录名称是否唯一 * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCatalogPersonServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCatalogPersonServiceImpl.java index 11460c9..3eb3f83 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCatalogPersonServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCatalogPersonServiceImpl.java @@ -1,12 +1,15 @@ package org.dromara.system.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheNames; import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.common.redis.utils.CacheUtils; @@ -18,6 +21,7 @@ import org.dromara.system.domain.vo.SysCatalogPersonVo; import org.dromara.system.mapper.SysCatalogPersonMapper; import org.dromara.system.mapper.SysOssPersonMapper; import org.dromara.system.service.ISysCatalogPersonService; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -58,7 +62,7 @@ public class SysCatalogPersonServiceImpl implements ISysCatalogPersonService { */ @Override public List queryList(SysCatalogPersonBo bo) { - bo.setUserId(LoginHelper.getUserId()); + bo.setCreateBy(LoginHelper.getUserId()); LambdaQueryWrapper lqw = buildQueryWrapper(bo); return baseMapper.selectVoList(lqw); } @@ -66,11 +70,11 @@ public class SysCatalogPersonServiceImpl implements ISysCatalogPersonService { private LambdaQueryWrapper buildQueryWrapper(SysCatalogPersonBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(bo.getUserId() != null, SysCatalogPerson::getUserId, bo.getUserId()); lqw.eq(bo.getParentId() != null, SysCatalogPerson::getParentId, bo.getParentId()); lqw.eq(StringUtils.isNotBlank(bo.getAncestors()), SysCatalogPerson::getAncestors, bo.getAncestors()); lqw.like(StringUtils.isNotBlank(bo.getCatalogName()), SysCatalogPerson::getCatalogName, bo.getCatalogName()); lqw.eq(bo.getOrderNum() != null, SysCatalogPerson::getOrderNum, bo.getOrderNum()); + lqw.eq(SysCatalogPerson::getCreateBy, bo.getCreateBy()); return lqw; } @@ -82,11 +86,9 @@ public class SysCatalogPersonServiceImpl implements ISysCatalogPersonService { */ @Override public Boolean insertByBo(SysCatalogPersonBo bo) { - Long userId = LoginHelper.getUserId(); SysCatalogPerson info = baseMapper.selectById(bo.getParentId()); SysCatalogPerson add = MapstructUtils.convert(bo, SysCatalogPerson.class); add.setAncestors(info.getAncestors() + StringUtils.SEPARATOR + add.getParentId()); - add.setUserId(userId); return baseMapper.insert(add) > 0; } @@ -151,6 +153,31 @@ public class SysCatalogPersonServiceImpl implements ISysCatalogPersonService { .eq(SysOssPerson::getCatalogId, catalogId)); } + @Cacheable(cacheNames = CacheNames.SYS_CATALOG_PERSON, key = "#catalogId") + @Override + public SysCatalogPersonVo selectCatalogById(Long catalogId) { + return baseMapper.selectVoById(catalogId); + } + + @Override + public String selectCatalogNameById(Long catalogId) { + List list = new ArrayList<>(); + SysCatalogPersonVo vo = SpringUtils.getAopProxy(this).selectCatalogById(catalogId); + for (Long id : StringUtils.splitTo(vo.getAncestors(), Convert::toLong)) { + SysCatalogPersonVo parentVo = SpringUtils.getAopProxy(this).selectCatalogById(id); + if (ObjectUtil.isNotNull(parentVo)) { + list.add(parentVo.getCatalogName()); + } + } + list.add(vo.getCatalogName()); + return String.join(StringUtils.SLASH, list); + } + + @Override + public List selectList(Wrapper queryWrapper) { + return baseMapper.selectList(queryWrapper); + } + /** * 修改子元素关系 * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCatalogTextbookServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCatalogTextbookServiceImpl.java index e5cd91d..64dd0af 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCatalogTextbookServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCatalogTextbookServiceImpl.java @@ -110,9 +110,9 @@ public class SysCatalogTextbookServiceImpl implements ISysCatalogTextbookService @Override public Boolean updateByBo(SysCatalogTextbookBo bo) { SysCatalogTextbook update = MapstructUtils.convert(bo, SysCatalogTextbook.class); - SysCatalogTextbook old = baseMapper.selectById(update.getCatalogId()); + SysCatalogTextbookVo old = SpringUtils.getAopProxy(this).selectCatalogById(update.getCatalogId()); if (!old.getParentId().equals(update.getParentId())) { - SysCatalogTextbook newParentDept = baseMapper.selectById(update.getParentId()); + SysCatalogTextbookVo newParentDept = SpringUtils.getAopProxy(this).selectCatalogById(update.getParentId()); if (ObjectUtil.isNotNull(newParentDept) && ObjectUtil.isNotNull(old)) { String newAncestors = newParentDept.getAncestors() + StringUtils.SEPARATOR + newParentDept.getCatalogId(); String oldAncestors = old.getAncestors(); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssPersonServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssPersonServiceImpl.java index 3bc21cd..1f2f10f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssPersonServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssPersonServiceImpl.java @@ -1,23 +1,33 @@ package org.dromara.system.service.impl; -import org.dromara.common.core.utils.MapstructUtils; -import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.common.mybatis.core.page.PageQuery; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.dromara.system.domain.bo.SysOssPersonBo; -import org.dromara.system.domain.vo.SysOssPersonVo; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.helper.DataBaseHelper; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.system.domain.SysCatalogPerson; import org.dromara.system.domain.SysOssPerson; +import org.dromara.system.domain.bo.SysOssPersonBo; +import org.dromara.system.domain.vo.SysCatalogPersonVo; +import org.dromara.system.domain.vo.SysOssPersonVo; +import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.mapper.SysOssPersonMapper; +import org.dromara.system.service.ISysCatalogPersonService; import org.dromara.system.service.ISysOssPersonService; +import org.dromara.system.service.ISysOssService; +import org.springframework.stereotype.Service; -import java.util.List; -import java.util.Map; import java.util.Collection; +import java.util.List; /** * 资源-我的空间Service业务层处理 @@ -31,6 +41,10 @@ public class SysOssPersonServiceImpl implements ISysOssPersonService { private final SysOssPersonMapper baseMapper; + private final ISysCatalogPersonService catalogService; + + private final ISysOssService ossService; + /** * 查询资源-我的空间 * @@ -38,7 +52,7 @@ public class SysOssPersonServiceImpl implements ISysOssPersonService { * @return 资源-我的空间 */ @Override - public SysOssPersonVo queryById(Long id){ + public SysOssPersonVo queryById(Long id) { return baseMapper.selectVoById(id); } @@ -51,8 +65,8 @@ public class SysOssPersonServiceImpl implements ISysOssPersonService { */ @Override public TableDataInfo queryPageList(SysOssPersonBo bo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + bo.setCreateBy(LoginHelper.getUserId()); + Page result = baseMapper.selectPageList(pageQuery.build(), this.buildQueryWrapper(bo)); return TableDataInfo.build(result); } @@ -64,18 +78,21 @@ public class SysOssPersonServiceImpl implements ISysOssPersonService { */ @Override public List queryList(SysOssPersonBo bo) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); + return baseMapper.selectVoList(this.buildQueryWrapper(bo)); } - private LambdaQueryWrapper buildQueryWrapper(SysOssPersonBo bo) { - Map params = bo.getParams(); - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(bo.getOssId() != null, SysOssPerson::getOssId, bo.getOssId()); - lqw.eq(bo.getCatalogId() != null, SysOssPerson::getCatalogId, bo.getCatalogId()); - lqw.like(StringUtils.isNotBlank(bo.getFileName()), SysOssPerson::getFileName, bo.getFileName()); - lqw.eq(StringUtils.isNotBlank(bo.getFilePath()), SysOssPerson::getFilePath, bo.getFilePath()); - return lqw; + private Wrapper buildQueryWrapper(SysOssPersonBo bo) { + QueryWrapper wrapper = Wrappers.query(); + wrapper.eq("op.create_by", bo.getCreateBy()) + .and(ObjectUtil.isNotNull(bo.getCatalogId()), w -> { + List list = catalogService.selectList(new LambdaQueryWrapper() + .select(SysCatalogPerson::getCatalogId) + .apply(DataBaseHelper.findInSet(bo.getCatalogId(), "ancestors"))); + List ids = StreamUtils.toList(list, SysCatalogPerson::getCatalogId); + ids.add(bo.getCatalogId()); + w.in("op.catalog_id", ids); + }); + return wrapper; } /** @@ -111,8 +128,15 @@ public class SysOssPersonServiceImpl implements ISysOssPersonService { /** * 保存前的数据校验 */ - private void validEntityBeforeSave(SysOssPerson entity){ - //TODO 做一些数据校验,如唯一约束 + private void validEntityBeforeSave(SysOssPerson entity) { + SysOssVo ossVo = ossService.getById(entity.getOssId()); + if (ObjectUtil.isNull(ossVo)) { + throw new ServiceException("文件不存在"); + } + SysCatalogPersonVo ossResource = catalogService.selectCatalogById(entity.getCatalogId()); + if (ObjectUtil.isNull(ossResource)) { + throw new ServiceException("空间目录不存在"); + } } /** @@ -124,7 +148,7 @@ public class SysOssPersonServiceImpl implements ISysOssPersonService { */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteBatchIds(ids) > 0; @@ -132,11 +156,30 @@ public class SysOssPersonServiceImpl implements ISysOssPersonService { @Override public Boolean copyByBo(SysOssPersonBo bo) { - return null; + SysOssPerson copy = processDate(bo); + validEntityBeforeSave(copy); + return baseMapper.insert(copy) > 0; } @Override public Boolean moveByBo(SysOssPersonBo bo) { - return null; + SysOssPerson move = processDate(bo); + baseMapper.insert(move); + validEntityBeforeSave(move); + return baseMapper.deleteById(bo.getId()) > 0; + } + + private SysOssPerson processDate(SysOssPersonBo bo) { + SysOssPerson ossPerson = baseMapper.selectById(bo.getId()); + if (ossPerson.getCatalogId().equals(bo.getCatalogId())) { + throw new ServiceException("同目录下不能复制或移动"); + } + SysOssPerson date = new SysOssPerson(); + date.setOssId(ossPerson.getOssId()); + String path = catalogService.selectCatalogNameById(bo.getCatalogId()); + date.setCatalogId(bo.getCatalogId()); + date.setFileName(ossPerson.getFileName()); + date.setFilePath(path); + return date; } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssResourceServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssResourceServiceImpl.java index 8dfa7ac..86081ee 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssResourceServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssResourceServiceImpl.java @@ -191,6 +191,9 @@ public class SysOssResourceServiceImpl implements ISysOssResourceService { private SysOssResource processDate(SysOssResourceBo bo) { SysOssResource ossResource = baseMapper.selectById(bo.getId()); + if (ossResource.getCatalogId().equals(bo.getCatalogId())) { + throw new ServiceException("同目录下不能复制或移动"); + } SysOssResource date = new SysOssResource(); date.setOssId(ossResource.getOssId()); String path = catalogService.selectCatalogNameById(bo.getCatalogId()); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssTextbookServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssTextbookServiceImpl.java index 0a524b4..853f0be 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssTextbookServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssTextbookServiceImpl.java @@ -190,6 +190,9 @@ public class SysOssTextbookServiceImpl implements ISysOssTextbookService { private SysOssTextbook processDate(SysOssTextbookBo bo) { SysOssTextbook ossTextbook = baseMapper.selectById(bo.getId()); + if (ossTextbook.getCatalogId().equals(bo.getCatalogId())) { + throw new ServiceException("同目录下不能复制或移动"); + } SysOssTextbook date = new SysOssTextbook(); date.setOssId(ossTextbook.getOssId()); String path = catalogService.selectCatalogNameById(bo.getCatalogId()); diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysOssPersonMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysOssPersonMapper.xml index 13a8ad8..c08d54e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysOssPersonMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysOssPersonMapper.xml @@ -4,4 +4,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +