diff --git a/pom.xml b/pom.xml
index 4fdebc6..9e18b09 100644
--- a/pom.xml
+++ b/pom.xml
@@ -352,6 +352,28 @@
ruoyi-file
${revision}
+
+
+
+ com.luhuiguo
+ aspose-words
+ 23.1
+
+
+ com.luhuiguo
+ aspose-pdf
+ 23.1
+
+
+ com.luhuiguo
+ aspose-cells
+ 23.1
+
+
+ com.luhuiguo
+ aspose-slides
+ 23.1
+
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 576faea..08c5fe8 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
@@ -55,6 +55,11 @@ public interface CacheNames {
*/
String SYS_DEPT = "sys_dept#30d";
+ /**
+ * 租户部门
+ */
+ String SYS_TENANT_DEPT = "sys_tenant_dept#30d";
+
/**
* OSS内容
*/
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/DeptService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/DeptService.java
index db9463e..2531b52 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/DeptService.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/DeptService.java
@@ -14,5 +14,12 @@ public interface DeptService {
* @return 部门名称串逗号分隔
*/
String selectDeptNameByIds(String deptIds);
+ /**
+ * 通过部门名称查询租户部门Id
+ *
+ * @param deptName 部门名称
+ * @return 部门ID
+ */
+ Long selectDeptIdByName(String deptName);
}
diff --git a/ruoyi-modules/ruoyi-file/pom.xml b/ruoyi-modules/ruoyi-file/pom.xml
index 2228d29..42342ef 100644
--- a/ruoyi-modules/ruoyi-file/pom.xml
+++ b/ruoyi-modules/ruoyi-file/pom.xml
@@ -78,6 +78,23 @@
org.dromara
ruoyi-system
+
+
+ com.luhuiguo
+ aspose-words
+
+
+ com.luhuiguo
+ aspose-pdf
+
+
+ com.luhuiguo
+ aspose-cells
+
+
+ com.luhuiguo
+ aspose-slides
+
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/controller/FileController.java b/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/controller/FileController.java
new file mode 100644
index 0000000..1898250
--- /dev/null
+++ b/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/controller/FileController.java
@@ -0,0 +1,44 @@
+package org.dromara.file.controller;
+
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.RequiredArgsConstructor;
+import org.dromara.file.service.IFileService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
TODO
+ *
+ * @author cjw
+ * @version V1.0.0
+ * @date 2024/5/31 14:22
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/file")
+public class FileController {
+
+ private final IFileService fileService;
+
+
+
+ /**
+ * 预览OSS对象
+ *
+ * @param ossId OSS对象ID
+ */
+ //@SaCheckPermission("system:oss:download")
+ @GetMapping("/preview/{ossId}")
+ public void preview(@PathVariable Long ossId, HttpServletResponse response) throws Exception {
+ fileService.preview(ossId, response);
+ }
+
+
+
+
+
+}
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/listener/SysTeacherImportListener.java b/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/listener/SysTeacherImportListener.java
index 8356e41..de420cf 100644
--- a/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/listener/SysTeacherImportListener.java
+++ b/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/listener/SysTeacherImportListener.java
@@ -6,6 +6,7 @@ import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.exception.ServiceException;
+import org.dromara.common.core.service.DeptService;
import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.core.utils.ValidatorUtils;
import org.dromara.common.excel.core.ExcelListener;
@@ -15,7 +16,6 @@ import org.dromara.file.domain.bo.SysTeacherBo;
import org.dromara.file.domain.vo.SysTeacherImportVo;
import org.dromara.file.domain.vo.SysTeacherVo;
import org.dromara.file.service.ISysTeacherService;
-import org.dromara.system.service.ISysDeptService;
import java.util.List;
@@ -28,7 +28,7 @@ import java.util.List;
public class SysTeacherImportListener extends AnalysisEventListener implements ExcelListener {
private final ISysTeacherService teacherService;
- private final ISysDeptService deptService;
+ private final DeptService deptService;
private final Long operUserId;
private int successNum = 0;
private int failureNum = 0;
@@ -37,7 +37,7 @@ public class SysTeacherImportListener extends AnalysisEventListener").append(successNum).append("、账号 ").append(teacher.getTeacherName()).append(" 导入成功");
+ Long deptId = this.deptService.selectDeptIdByName( userVo.getDeptName());
+ if (ObjectUtil.isNotNull(deptId)) {
+ if (ObjectUtil.isNull(sysTeacher)) {
+ SysTeacherBo teacher = BeanUtil.toBean(userVo, SysTeacherBo.class);
+ ValidatorUtils.validate(teacher);
+ teacher.setCreateBy(operUserId);
+ teacher.setDeptId(deptId);
+ teacherService.insertByBo(teacher);
+ successNum++;
+ successMsg.append("
").append(successNum).append("、账号 ").append(teacher.getTeacherName()).append(" 导入成功");
+ } else {
+ failureNum++;
+ failureMsg.append("
").append(failureNum).append("、账号 ").append(sysTeacher.getTeacherName()).append(" 已存在");
+ }
} else {
failureNum++;
- failureMsg.append("
").append(failureNum).append("、账号 ").append(sysTeacher.getTeacherName()).append(" 已存在");
+ failureMsg.append("
").append(failureNum).append("、账号 ").append(sysTeacher.getTeacherName()).append(" 查询不到部门");
}
} catch (Exception e) {
failureNum++;
@@ -85,6 +90,7 @@ public class SysTeacherImportListener extends AnalysisEventListener getList() {
return null;
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/mapper/SysTeacherMapper.java b/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/mapper/SysTeacherMapper.java
index 501ea33..16a1312 100644
--- a/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/mapper/SysTeacherMapper.java
+++ b/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/mapper/SysTeacherMapper.java
@@ -1,5 +1,6 @@
package org.dromara.file.mapper;
+import org.apache.ibatis.annotations.Mapper;
import org.dromara.file.domain.SysTeacher;
import org.dromara.file.domain.vo.SysTeacherVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
@@ -10,6 +11,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
* @author cjw
* @date 2024-05-30
*/
+@Mapper
public interface SysTeacherMapper extends BaseMapperPlus {
}
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/service/IFileService.java b/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/service/IFileService.java
new file mode 100644
index 0000000..82b0043
--- /dev/null
+++ b/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/service/IFileService.java
@@ -0,0 +1,17 @@
+package org.dromara.file.service;
+
+import jakarta.servlet.http.HttpServletResponse;
+
+import java.io.IOException;
+
+public interface IFileService {
+
+ /**
+ * 预览文件
+ *
+ * @param ossId
+ * @param response
+ * @throws IOException
+ */
+ void preview(Long ossId, HttpServletResponse response) throws Exception;
+}
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/service/impl/FileService.java b/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/service/impl/FileService.java
new file mode 100644
index 0000000..b356c69
--- /dev/null
+++ b/ruoyi-modules/ruoyi-file/src/main/java/org/dromara/file/service/impl/FileService.java
@@ -0,0 +1,75 @@
+package org.dromara.file.service.impl;
+
+import com.aspose.words.Document;
+import com.aspose.words.SaveFormat;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.oss.core.OssClient;
+import org.dromara.common.oss.factory.OssFactory;
+import org.dromara.file.service.IFileService;
+import org.dromara.system.domain.vo.SysOssVo;
+import org.dromara.system.service.ISysOssService;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * TODO
+ *
+ * @author cjw
+ * @version V1.0.0
+ * @date 2024/5/31 14:39
+ */
+@RequiredArgsConstructor
+@Service
+public class FileService implements IFileService {
+
+ private final ISysOssService ossService;
+
+ /**
+ * 预览文件
+ *
+ * @param ossId
+ * @param response
+ * @throws IOException
+ */
+ @Override
+ public void preview(Long ossId, HttpServletResponse response) throws Exception {
+ SysOssVo sysOss = ossService.getById(ossId);
+ OssClient storage = OssFactory.instance(sysOss.getService());
+ InputStream is = null;
+ OutputStream os = null;
+ try {
+ is = storage.getObjectContent(sysOss.getFileName());
+ os = response.getOutputStream();
+ byte[] byteData = new byte[1024];
+ // 前端word预览仅支持.docx,将.doc转换为.docx
+ if ((".doc").equals(sysOss.getFileSuffix())) {
+ Document doc = new Document(is);
+ doc.save(os, SaveFormat.DOCX);
+ }
+ int len = 0;
+ while ((len = is.read(byteData)) != -1) {
+ os.write(byteData, 0, len);
+ }
+ os.flush();
+ } finally {
+ if (os != null) {
+ try {
+ os.close();
+ } catch (IOException e) {
+ //log.error("IO异常", e);
+ }
+ }
+ if (is != null) {
+ try {
+ is.close();
+ } catch (IOException e) {
+ //log.error("IO异常", e);
+ }
+ }
+ }
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java
index e00e0ab..1bacec4 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java
@@ -1,6 +1,7 @@
package org.dromara.system.service;
import cn.hutool.core.lang.tree.Tree;
+import org.dromara.system.domain.SysDept;
import org.dromara.system.domain.bo.SysDeptBo;
import org.dromara.system.domain.vo.SysDeptVo;
@@ -131,5 +132,12 @@ public interface ISysDeptService {
*/
int deleteDeptById(Long deptId);
- Long selectIdBuName(String deptName);
+
+
+ /**
+ * 查询所有部门信息
+ *
+ * @return 部门信息
+ */
+ List selectAllDept();
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java
index 057c068..bb37ca3 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java
@@ -77,4 +77,6 @@ public interface ISysOssService {
*/
Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+
+
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
index 77a0f9b..18cf1f4 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
@@ -30,6 +30,7 @@ import org.dromara.system.mapper.SysUserMapper;
import org.dromara.system.service.ISysDeptService;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
+import org.springframework.cache.annotation.Caching;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@@ -166,6 +167,19 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
return String.join(StringUtils.SEPARATOR, list);
}
+ @Override
+ public Long selectDeptIdByName(String deptName) {
+ List deptList = SpringUtils.getAopProxy(this).selectAllDept();
+ if (ObjectUtil.isNotEmpty(deptList)) {
+ for (SysDept dept : deptList) {
+ if (ObjectUtil.equals(deptName, dept.getDeptName())) {
+ return dept.getDeptId();
+ }
+ }
+ }
+ return null;
+ }
+
/**
* 根据ID查询所有子部门数(正常状态)
*
@@ -274,7 +288,11 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
* @param bo 部门信息
* @return 结果
*/
- @CacheEvict(cacheNames = CacheNames.SYS_DEPT, key = "#bo.deptId")
+
+ @Caching(evict = {
+ @CacheEvict(cacheNames = CacheNames.SYS_DEPT, key = "#bo.deptId"),
+ @CacheEvict(cacheNames = CacheNames.SYS_TENANT_DEPT)
+ })
@Override
public int updateDept(SysDeptBo bo) {
SysDept dept = MapstructUtils.convert(bo, SysDept.class);
@@ -342,15 +360,19 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
* @param deptId 部门ID
* @return 结果
*/
- @CacheEvict(cacheNames = CacheNames.SYS_DEPT, key = "#deptId")
+ @Caching(evict = {
+ @CacheEvict(cacheNames = CacheNames.SYS_DEPT, key = "#deptId"),
+ @CacheEvict(cacheNames = CacheNames.SYS_TENANT_DEPT)
+ })
@Override
public int deleteDeptById(Long deptId) {
return baseMapper.deleteById(deptId);
}
+ @Cacheable(cacheNames = CacheNames.SYS_TENANT_DEPT)
@Override
- public Long selectIdBuName(String deptName) {
- SysDept sysDept = baseMapper.selectOne(new LambdaQueryWrapper().select(SysDept::getDeptId).eq(SysDept::getDeptName, deptName));
- return sysDept.getDeptId();
+ public List selectAllDept() {
+ return baseMapper.selectList();
}
+
}
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 aa094b2..eadd009 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
@@ -250,6 +250,8 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
return baseMapper.deleteBatchIds(ids) > 0;
}
+
+
/**
* 桶类型为 private 的URL 修改为临时URL时长为120s
*