From 2736d16a8b1804f7291a56a147f76ef3584d6619 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Mon, 04 Jul 2022 19:35:31 +0800 Subject: [PATCH] fix 上传模板和查看栏目修改 --- src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CmsTemplateServiceImpl.java | 57 +++++++++++++++++-- src/main/java/com/xcong/farmer/cms/common/utils/FileUtils.java | 79 +++++++++++++++++++++++--- src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java | 16 +++++ src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeColumnInfoVo.java | 3 + 4 files changed, 139 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/xcong/farmer/cms/common/utils/FileUtils.java b/src/main/java/com/xcong/farmer/cms/common/utils/FileUtils.java index a6d4283..32d768d 100644 --- a/src/main/java/com/xcong/farmer/cms/common/utils/FileUtils.java +++ b/src/main/java/com/xcong/farmer/cms/common/utils/FileUtils.java @@ -1,10 +1,10 @@ package com.xcong.farmer.cms.common.utils; -import java.io.File; -import java.io.IOException; +import java.io.*; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; +import java.util.zip.ZipInputStream; /** * @author wzy @@ -30,16 +30,75 @@ return dir + fileName; } - public static void zipUpload(File file, String templateDir, String staticDir) throws IOException { - ZipFile zipFile = new ZipFile(file); + public static void zipUpload(String zipPath, String templateDir) throws IOException { + FileInputStream fis = new FileInputStream(zipPath); + ZipInputStream zipIs = new ZipInputStream(fis); - Enumeration<? extends ZipEntry> entries = zipFile.entries(); - if (entries.hasMoreElements()) { - ZipEntry zipEntry = entries.nextElement(); - if (zipEntry.isDirectory()) { -// zipEntry. + ZipEntry ze = null; + try { + while ((ze = zipIs.getNextEntry()) != null) { + File zfile = new File(path(templateDir, ze.getName())); + if (ze.isDirectory()) { + if (!zfile.exists()) { + zfile.mkdirs(); + } + zipIs.closeEntry(); + } else { + byte[] data = new byte[1024]; + FileOutputStream fos = new FileOutputStream(zfile); + int i = 0; + + while ((i = zipIs.read(data)) != -1) { + fos.write(data, 0, i); + } + zipIs.closeEntry(); + fos.close(); + } } - System.out.println(zipEntry.getName()); + + fis.close(); + zipIs.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + public static void upload(File file, String dir) { + if (file.isDirectory()) { + File[] files = file.listFiles(); + if (files == null) { + return; + } + + for (File dirFile : files) { + upload(dirFile, path(dir, dirFile.getName())); + } + } else { + outputFile(file, dir); + } + } + + public static void outputFile(File file, String outputDir) { + try { + BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); + + int count; + int buffer = 1024; + byte[] dataByte = new byte[buffer]; + + FileOutputStream out = new FileOutputStream(path(outputDir, file.getName())); + + BufferedOutputStream bos = new BufferedOutputStream(out, buffer); + while((count = bis.read(dataByte, 0, buffer)) != -1) { + bos.write(dataByte, 0 ,count); + } + + bos.flush(); + bos.close(); + bis.close(); + } catch (IOException e) { + e.printStackTrace(); } } } diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CmsTemplateServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CmsTemplateServiceImpl.java index f1e072f..1110bfb 100644 --- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CmsTemplateServiceImpl.java +++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CmsTemplateServiceImpl.java @@ -1,5 +1,7 @@ package com.xcong.farmer.cms.modules.system.service.Impl; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.ZipUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -13,6 +15,8 @@ import com.xcong.farmer.cms.modules.system.mapper.CmsTemplateMapper; import com.xcong.farmer.cms.modules.system.service.ICmsTemplateService; import com.xcong.farmer.cms.modules.system.util.LoginUserUtil; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -48,17 +52,58 @@ } try { + String path = FileUtils.path(templatePath, filename); + File file = new File(path); + upload.transferTo(file); + if (".zip".equals(suffix)) { - String path = FileUtils.path(templatePath, filename); - System.out.println(path); - File file = new File(path); - upload.transferTo(file); - FileUtils.zipUpload(file, templatePath, staticPath); + ZipUtil.unzip(file, new File(templatePath)); + FileUtil.del(file); + + File template = new File(templatePath); + File[] files = template.listFiles(); + if (files == null) { + return; + } + + for (File templateFile : files) { + if (!templateFile.isFile()) { + continue; + } + + if (!"html".equals(FileUtil.extName(templateFile))) { + continue; + } + + String name = templateFile.getName(); + if (!name.endsWith(".list.html") && !name.endsWith(".article.html") && !name.endsWith(".index.html")) { + continue; + } + + Document parse = Jsoup.parse(templateFile, null); + String attr = parse.head().attr("name"); + System.out.println(attr); + CmsTemplateEntity cmsTemplate = new CmsTemplateEntity(); + cmsTemplate.setCompanyId(10L); + if (name.endsWith(".list.html")) { + cmsTemplate.setType(2); + } else if (name.endsWith(".article.html")) { + cmsTemplate.setType(3); + } else { + cmsTemplate.setType(1); + } + cmsTemplate.setName(templateFile.getName()); + cmsTemplate.setPath(templateFile.getName()); + } + + } + + if (".html".equals(suffix)) { + FileUtil.touch(file); } } catch (IOException e) { e.printStackTrace(); } - System.out.println(suffix); } @Override diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java index 838c215..c18c3e7 100644 --- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java +++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java @@ -11,15 +11,18 @@ import com.xcong.farmer.cms.modules.system.dto.AdminColumnDto; import com.xcong.farmer.cms.modules.system.dto.AdminDeleteDto; import com.xcong.farmer.cms.modules.system.dto.AdminUpdateColumnDto; +import com.xcong.farmer.cms.modules.system.entity.ArticleEntity; import com.xcong.farmer.cms.modules.system.entity.ColumnEntity; import com.xcong.farmer.cms.modules.system.entity.NavigationBarEntity; import com.xcong.farmer.cms.modules.system.entity.UserEntity; +import com.xcong.farmer.cms.modules.system.mapper.ArticleMapper; import com.xcong.farmer.cms.modules.system.mapper.ColumnMapper; import com.xcong.farmer.cms.modules.system.service.IColumnService; import com.xcong.farmer.cms.modules.system.util.LoginUserUtil; import com.xcong.farmer.cms.modules.system.vo.AdminColumnVo; import com.xcong.farmer.cms.modules.system.vo.AdminSeeColumnInfoVo; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.hutool.core.util.StrUtil; @@ -32,6 +35,10 @@ @Service @Slf4j public class ColumnServiceImpl extends ServiceImpl<ColumnMapper, ColumnEntity> implements IColumnService { + + @Autowired + private ArticleMapper articleMapper; + @Override public Result getColumnInPage(AdminColumnDto adminColumnDto) { UserEntity userlogin = LoginUserUtil.getLoginUser(); @@ -149,6 +156,15 @@ adminSeeColumnInfoVo.setIsNav(columnEntity.getIsNav()); adminSeeColumnInfoVo.setType(columnEntity.getType()); adminSeeColumnInfoVo.setTargetType(columnEntity.getTargetType()); + if (columnEntity.getType() == 2) { + if (columnEntity.getTargetType() == 1) { + ArticleEntity articleEntity = articleMapper.selectById(Long.parseLong(columnEntity.getTargetUrl())); + adminSeeColumnInfoVo.setTargetName(articleEntity.getTitle()); + } else if (columnEntity.getTargetType() == 2) { + ColumnEntity column = this.baseMapper.selectById(Long.parseLong(columnEntity.getTargetUrl())); + adminSeeColumnInfoVo.setTargetName(column.getColumnName()); + } + } adminSeeColumnInfoVo.setTargetUrl(columnEntity.getTargetUrl()); return Result.ok(adminSeeColumnInfoVo); } diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeColumnInfoVo.java b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeColumnInfoVo.java index e136125..ad8660c 100644 --- a/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeColumnInfoVo.java +++ b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeColumnInfoVo.java @@ -43,6 +43,9 @@ @ApiModelProperty(value = "目标地址") private String targetUrl; + @ApiModelProperty(value = "目标描述") + private String targetName; + @ApiModelProperty(value = "是否为导航 1-是 2-否") private Integer isNav; -- Gitblit v1.9.1