Helius
2022-07-04 2736d16a8b1804f7291a56a147f76ef3584d6619
fix 上传模板和查看栏目修改
4 files modified
155 ■■■■ changed files
src/main/java/com/xcong/farmer/cms/common/utils/FileUtils.java 79 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CmsTemplateServiceImpl.java 57 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeColumnInfoVo.java 3 ●●●●● patch | view | raw | blame | history
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();
        }
    }
}
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
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);
    }
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;