From 8f2042ce63ceb46b8c14e7f6e72bfe80492e64d1 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期二, 27 二月 2024 16:46:06 +0800 Subject: [PATCH] 根据路径创建目录 --- src/main/java/com/lf/server/mapper/data/DirMapper.java | 16 ++++++++ src/main/resources/mapper/data/DirMapper.xml | 18 ++++++++- src/main/java/com/lf/server/service/all/BaseUploadService.java | 39 ++++++++++++++++++- src/main/java/com/lf/server/service/data/DirService.java | 10 +++++ 4 files changed, 78 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/lf/server/mapper/data/DirMapper.java b/src/main/java/com/lf/server/mapper/data/DirMapper.java index 45859be..5ae6110 100644 --- a/src/main/java/com/lf/server/mapper/data/DirMapper.java +++ b/src/main/java/com/lf/server/mapper/data/DirMapper.java @@ -115,4 +115,20 @@ * @return */ public List<DirEntity> selectDirsForPrj(); + + /** + * 鏍规嵁鐖禝D鏌ユ壘鏈�澶ф帓搴忓彿 + * + * @return + */ + public Integer selectMaxOrderNum(); + + /** + * 鏍规嵁鍚嶇О鏌ユ壘鐩綍 + * + * @param name + * @param pid + * @return + */ + public DirEntity selectDirByName(String name, Integer pid); } diff --git a/src/main/java/com/lf/server/service/all/BaseUploadService.java b/src/main/java/com/lf/server/service/all/BaseUploadService.java index 02f6dd3..eb21b50 100644 --- a/src/main/java/com/lf/server/service/all/BaseUploadService.java +++ b/src/main/java/com/lf/server/service/all/BaseUploadService.java @@ -7,6 +7,7 @@ import com.lf.server.entity.sys.UserEntity; import com.lf.server.helper.*; import com.lf.server.service.data.DirService; +import com.lf.server.service.sys.TokenService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -14,6 +15,7 @@ import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; @@ -27,11 +29,14 @@ */ @Service public class BaseUploadService { - @Autowired + @Resource protected DirService dirService; - @Autowired + @Resource protected PathHelper pathHelper; + + @Resource + protected TokenService tokenService; public final Log log = LogFactory.getLog(getClass()); @@ -560,7 +565,7 @@ if (StringHelper.isEmpty(code)) { DirEntity baseDir = findBaseDirByPath(dirs, filePath); if (null != baseDir) { - createDirByPath(baseDir, mfe.getPath()); + createDirByPath(baseDir, mfe.getPath().replace("/", "\\")); dirs = dirService.selectRecursiveById(dir.getId()); code = findDirByPath(dirs, filePath, fileName); } @@ -603,7 +608,35 @@ * 鏍规嵁璺緞鍒涘缓鐩綍 */ private void createDirByPath(DirEntity baseDir, String filePath) { + int start = filePath.toLowerCase().indexOf(baseDir.getFullName().toLowerCase() + "\\") + baseDir.getFullName().length() + 1; + int end = filePath.lastIndexOf("\\"); + if (end <= start) { + return; + } + if (0 == baseDir.getLevel()) { + baseDir.setLevel(2); + } + HttpServletRequest req = WebHelper.getRequest(); + UserEntity ue = tokenService.getCurrentUser(req); + + String[] strs = filePath.substring(start, end).split("\\\\"); + for (String str : strs) { + DirEntity entity = dirService.selectDirByName(str, baseDir.getId()); + if (null == entity) { + entity = new DirEntity(); + entity.setPid(baseDir.getId()); + entity.setName(str); + entity.setOrderNum(dirService.selectMaxOrderNum()); + entity.setLevel(baseDir.getLevel() + 1); + entity.setCreateUser(ue.getId()); + + dirService.insert(entity); + baseDir = dirService.selectDir(entity.getId()); + } else { + baseDir = entity; + } + } } /** diff --git a/src/main/java/com/lf/server/service/data/DirService.java b/src/main/java/com/lf/server/service/data/DirService.java index 2176687..f4b5c58 100644 --- a/src/main/java/com/lf/server/service/data/DirService.java +++ b/src/main/java/com/lf/server/service/data/DirService.java @@ -98,6 +98,16 @@ return dirMapper.selectDirsForPrj(); } + @Override + public Integer selectMaxOrderNum() { + return dirMapper.selectMaxOrderNum(); + } + + @Override + public DirEntity selectDirByName(String name, Integer pid) { + return dirMapper.selectDirByName(name, pid); + } + /** * 鍒涘缓鏁版嵁鐩綍 */ diff --git a/src/main/resources/mapper/data/DirMapper.xml b/src/main/resources/mapper/data/DirMapper.xml index 27ba5d6..6215baf 100644 --- a/src/main/resources/mapper/data/DirMapper.xml +++ b/src/main/resources/mapper/data/DirMapper.xml @@ -53,6 +53,20 @@ select a.* from lf.sys_dir a where code not like '00%' order by code; </select> + <select id="selectMaxOrderNum" resultType="java.lang.Integer"> + select coalesce(max(order_num), 0) + 1 from lf.sys_dir; + </select> + + <select id="selectDirByName" resultType="com.lf.server.entity.data.DirEntity"> + select * from lf.sys_dir + <where> + upper(name) = #{name} + <if test="pid != null"> + and pid = #{pid} + </if> + </where> + </select> + <!-- 鎻掑叆涓�鏉� --> <insert id="insert" parameterType="com.lf.server.entity.data.DirEntity"> <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> @@ -62,7 +76,7 @@ insert into lf.sys_dir (pid,name,exts,descr,level,order_num,create_user,create_time,checks,bak,code) values - (#{pid},#{name},#{exts},#{descr},#{level},#{orderNum},#{createUser},now(),#{checks},#{bak},#{code}) + (#{pid},#{name},#{exts},#{descr},#{level},#{orderNum},#{createUser},now(),#{checks},#{bak},#{code}); </insert> <!-- 鎻掑叆澶氭潯 --> @@ -75,7 +89,7 @@ </foreach> </insert> - <delete id="deleteDir" > + <delete id="deleteDir"> delete from lf.sys_dir where id = #{id} </delete> -- Gitblit v1.9.3