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