| | |
| | | import com.xcong.farmer.cms.modules.system.util.LoginUserUtil; |
| | | import org.jsoup.Jsoup; |
| | | import org.jsoup.nodes.Document; |
| | | import org.jsoup.nodes.Element; |
| | | import org.jsoup.select.Elements; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.io.File; |
| | | import java.io.FileOutputStream; |
| | | import java.io.IOException; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.nio.file.Files; |
| | |
| | | continue; |
| | | } |
| | | |
| | | Document parse = Jsoup.parse(templateFile, null); |
| | | String attr = parse.head().attr("name"); |
| | | CmsTemplateEntity cmsTemplate = new CmsTemplateEntity(); |
| | | cmsTemplate.setCompanyId(companyId); |
| | | 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); |
| | | insertTemplate(templateFile, companyId); |
| | | } |
| | | |
| | | } |
| | | |
| | | 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(companyId); |
| | | 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); |
| | | insertTemplate(file, companyId); |
| | | } |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | throw new GlobalException("模板上传失败"); |
| | | } |
| | | } |
| | | |
| | | private void insertTemplate(File file, Long companyId) throws IOException { |
| | | Document parse = Jsoup.parse(file, null); |
| | | String attr = parse.head().attr("name"); |
| | | |
| | | staticPathParser(parse, "img", "src"); |
| | | staticPathParser(parse, "link", "href"); |
| | | staticPathParser(parse, "script", "src"); |
| | | |
| | | FileOutputStream outputStream = new FileOutputStream(file); |
| | | outputStream.write(parse.html().getBytes()); |
| | | outputStream.close(); |
| | | |
| | | CmsTemplateEntity cmsTemplate = new CmsTemplateEntity(); |
| | | cmsTemplate.setCompanyId(companyId); |
| | | 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); |
| | | } |
| | | |
| | | private void staticPathParser(Document document, String tagName, String attrKey) { |
| | | Elements elements = document.getElementsByTag(tagName); |
| | | if (elements.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | for (Element element : elements) { |
| | | String attr = element.attr(attrKey); |
| | | if (StrUtil.isNotBlank(attr) && !attr.contains("http://") && !attr.contains("https://")) { |
| | | element.attr(attrKey, cmsProperties.getStaticUrl() + attr); |
| | | } |
| | | } |
| | | } |
| | | |