package com.xcong.farmer.cms.modules.system.service.Impl; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.StrUtil; 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; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xcong.farmer.cms.common.exception.GlobalException; import com.xcong.farmer.cms.common.response.Result; import com.xcong.farmer.cms.common.utils.FileUtils; import com.xcong.farmer.cms.configurations.GlobalExceptionHandler; import com.xcong.farmer.cms.core.template.TemplateConfiguration; import com.xcong.farmer.cms.modules.system.dto.TemplateListDto; import com.xcong.farmer.cms.modules.system.entity.CmsTemplateEntity; import com.xcong.farmer.cms.modules.system.entity.UserEntity; 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; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * @author wzy * @date 2022-07-04 **/ @Service public class CmsTemplateServiceImpl extends ServiceImpl implements ICmsTemplateService { @Autowired private TemplateConfiguration cfg; private List fileSuffix = Arrays.asList(".zip", ".html"); @Override public void updateTemplate(MultipartFile upload) { String templatePath = cfg.templatePath; String staticPath = cfg.staticPath; String filename = upload.getOriginalFilename(); String suffix = filename.substring(filename.lastIndexOf(".")); if (!fileSuffix.contains(suffix)) { throw new GlobalException("请上传正确格式文件"); } try { String path = FileUtils.path(templatePath, filename); File file = new File(path); upload.transferTo(file); if (".zip".equals(suffix)) { 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"); 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(StrUtil.isNotBlank(attr) ? attr : templateFile.getName()); cmsTemplate.setPath(templateFile.getName()); this.baseMapper.insert(cmsTemplate); } } if (".html".equals(suffix)) { FileUtil.touch(file); Document parse = Jsoup.parse(file, null); String attr = parse.head().attr("name"); CmsTemplateEntity cmsTemplate = new CmsTemplateEntity(); cmsTemplate.setCompanyId(LoginUserUtil.getCompanyId()); if (file.getName().endsWith(".list.html")) { cmsTemplate.setType(2); } else if (file.getName().endsWith(".article.html")) { cmsTemplate.setType(3); } else { cmsTemplate.setType(1); } cmsTemplate.setName(StrUtil.isNotBlank(attr) ? attr : file.getName()); cmsTemplate.setPath(file.getName()); this.baseMapper.insert(cmsTemplate); } } catch (IOException e) { e.printStackTrace(); } } @Override public IPage findInPage(TemplateListDto templateListDto) { Long companyId = LoginUserUtil.getCompanyId(); IPage page = new Page<>(templateListDto.getPageNum(), templateListDto.getPageSize()); CmsTemplateEntity template = new CmsTemplateEntity(); template.setCompanyId(companyId); return this.baseMapper.selectInPage(page, template); } @Override public void delete(Long id) { Long companyId = LoginUserUtil.getCompanyId(); this.baseMapper.delete(id, companyId); } @Override public Result dropdownList() { Long companyId = LoginUserUtil.getCompanyId(); QueryWrapper objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("company_id",companyId); List cmsTemplateEntities = this.baseMapper.selectList(objectQueryWrapper); return Result.ok(cmsTemplateEntities); } }