From 39a322c380ac88874760b4b9a28def18c0b7753a Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 31 Aug 2022 23:42:25 +0800
Subject: [PATCH] add ad and friendly parse

---
 src/main/java/com/xcong/farmer/cms/core/handler/AdDataParserHandler.java            |   29 +++++++++
 src/main/java/com/xcong/farmer/cms/core/tag/data/FriendlyData.java                  |    6 +-
 src/main/java/com/xcong/farmer/cms/core/node/Template.java                          |    2 
 src/main/java/com/xcong/farmer/cms/core/tag/data/AdData.java                        |   22 +++++++
 src/main/resources/mapper/CmsFriendlyLinkMapper.xml                                 |    4 +
 src/main/java/com/xcong/farmer/cms/core/handler/FriendlyDataParserHandler.java      |   30 ++++++++++
 src/main/java/com/xcong/farmer/cms/modules/system/mapper/CmsFriendlyLinkMapper.java |    4 +
 src/test/java/com/xcong/farmer/cms/TemplateTest.java                                |   35 +++++++++--
 8 files changed, 120 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/AdDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/AdDataParserHandler.java
index 402e032..2e4604d 100644
--- a/src/main/java/com/xcong/farmer/cms/core/handler/AdDataParserHandler.java
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/AdDataParserHandler.java
@@ -1,5 +1,6 @@
 package com.xcong.farmer.cms.core.handler;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.xcong.farmer.cms.core.node.AttrNode;
 import com.xcong.farmer.cms.core.tag.data.AdData;
@@ -9,6 +10,7 @@
 import com.xcong.farmer.cms.modules.system.mapper.CmsAdInfoMapper;
 import com.xcong.farmer.cms.utils.SpringContextHolder;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -26,9 +28,34 @@
         Ad param = (Ad) attrNode.getParam();
         if (StrUtil.isNotBlank(param.getGroupId())) {
             List<CmsAdInfoEntity> ads = adInfoMapper.selectByGroupIdAndCompanyId(Long.parseLong(param.getGroupId()), companyId);
-        } else {
 
+            if (CollUtil.isEmpty(ads)) {
+                attrNode.setData(new AdData());
+            } else {
+                int i = 1;
+                List<AdData> adDataList = new ArrayList<>();
+                for (CmsAdInfoEntity ad : ads) {
+                    adDataList.add(entityToData(ad, i));
+                }
+
+                attrNode.setData(adDataList);
+            }
+        } else {
+            CmsAdInfoEntity ad = adInfoMapper.selectById(param.getId());
+            attrNode.setData(entityToData(ad, 1));
+        }
+    }
+
+    private AdData entityToData(CmsAdInfoEntity entity, int index) {
+        AdData adData = new AdData();
+        adData.setIndex(index);
+
+        if (entity.getType() == 1) {
+            adData.setChildren(StrUtil.split(entity.getValue(), ','));
+        } else {
+            adData.setData(entity.getValue());
         }
 
+        return adData;
     }
 }
diff --git a/src/main/java/com/xcong/farmer/cms/core/handler/FriendlyDataParserHandler.java b/src/main/java/com/xcong/farmer/cms/core/handler/FriendlyDataParserHandler.java
index ced3c1b..0bd8d95 100644
--- a/src/main/java/com/xcong/farmer/cms/core/handler/FriendlyDataParserHandler.java
+++ b/src/main/java/com/xcong/farmer/cms/core/handler/FriendlyDataParserHandler.java
@@ -1,6 +1,17 @@
 package com.xcong.farmer.cms.core.handler;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
 import com.xcong.farmer.cms.core.node.AttrNode;
+import com.xcong.farmer.cms.core.tag.data.FriendlyData;
+import com.xcong.farmer.cms.core.tag.model.Ad;
+import com.xcong.farmer.cms.core.tag.model.Friendly;
+import com.xcong.farmer.cms.modules.system.entity.CmsFriendlyLinkEntity;
+import com.xcong.farmer.cms.modules.system.mapper.CmsFriendlyLinkMapper;
+import com.xcong.farmer.cms.utils.SpringContextHolder;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @author wzy
@@ -8,8 +19,27 @@
  **/
 public class FriendlyDataParserHandler implements DataParserHandler{
 
+    private final CmsFriendlyLinkMapper cmsFriendlyLinkMapper = SpringContextHolder.getBean(CmsFriendlyLinkMapper.class);
+
     @Override
     public void dataParser(AttrNode attrNode) {
+        Long companyId = (Long) attrNode.getSystemDataValue("companyId");
+        Friendly param = (Friendly) attrNode.getParam();
 
+        List<CmsFriendlyLinkEntity> friendlies = cmsFriendlyLinkMapper.selectByGroupIdAndCompanyId(Long.parseLong(param.getGroupId()), companyId);
+        if (CollUtil.isEmpty(friendlies)) {
+            attrNode.setData(new FriendlyData());
+        } else {
+            List<FriendlyData> list = new ArrayList<>();
+
+            for (int i = 0; i < friendlies.size(); i++) {
+                FriendlyData data = new FriendlyData();
+                BeanUtil.copyProperties(friendlies.get(i), data);
+                data.setIndex(i + 1);
+                list.add(data);
+            }
+
+            attrNode.setData(list);
+        }
     }
 }
diff --git a/src/main/java/com/xcong/farmer/cms/core/node/Template.java b/src/main/java/com/xcong/farmer/cms/core/node/Template.java
index 50a66cc..5770040 100644
--- a/src/main/java/com/xcong/farmer/cms/core/node/Template.java
+++ b/src/main/java/com/xcong/farmer/cms/core/node/Template.java
@@ -2,6 +2,7 @@
 
 import cn.hutool.core.collection.CollUtil;
 import com.xcong.farmer.cms.core.node.PartNode;
+import lombok.extern.slf4j.Slf4j;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
@@ -16,6 +17,7 @@
  * @author wzy
  * @date 2022-06-22
  **/
+@Slf4j
 public class Template {
 
     // 文件名称
diff --git a/src/main/java/com/xcong/farmer/cms/core/tag/data/AdData.java b/src/main/java/com/xcong/farmer/cms/core/tag/data/AdData.java
index 6232b02..1bc1cb1 100644
--- a/src/main/java/com/xcong/farmer/cms/core/tag/data/AdData.java
+++ b/src/main/java/com/xcong/farmer/cms/core/tag/data/AdData.java
@@ -1,16 +1,22 @@
 package com.xcong.farmer.cms.core.tag.data;
 
+import java.util.List;
+
 /**
  * @author wzy
  * @date 2022-08-30
  **/
 public class AdData {
 
+    private String id;
+
     private String name;
 
     private String data;
 
     private int index;
+
+    private List<String> children;
 
     public String getName() {
         return name;
@@ -35,4 +41,20 @@
     public void setIndex(int index) {
         this.index = index;
     }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public List<String> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<String> children) {
+        this.children = children;
+    }
 }
diff --git a/src/main/java/com/xcong/farmer/cms/core/tag/data/FriendlyData.java b/src/main/java/com/xcong/farmer/cms/core/tag/data/FriendlyData.java
index c093c96..9dd6717 100644
--- a/src/main/java/com/xcong/farmer/cms/core/tag/data/FriendlyData.java
+++ b/src/main/java/com/xcong/farmer/cms/core/tag/data/FriendlyData.java
@@ -10,7 +10,7 @@
 
     private String url;
 
-    private String index;
+    private int index;
 
     private String logo;
 
@@ -32,11 +32,11 @@
         this.url = url;
     }
 
-    public String getIndex() {
+    public int getIndex() {
         return index;
     }
 
-    public void setIndex(String index) {
+    public void setIndex(int index) {
         this.index = index;
     }
 
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/CmsFriendlyLinkMapper.java b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/CmsFriendlyLinkMapper.java
index 65a93e9..c58de60 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/CmsFriendlyLinkMapper.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/CmsFriendlyLinkMapper.java
@@ -5,7 +5,11 @@
 import com.xcong.farmer.cms.modules.system.entity.CmsFriendlyLinkEntity;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 public interface CmsFriendlyLinkMapper extends BaseMapper<CmsFriendlyLinkEntity> {
 
     Page<CmsFriendlyLinkEntity> selectInPage(Page<CmsFriendlyLinkEntity> page, @Param("record") CmsFriendlyLinkEntity cmsFriendlyLinkEntity);
+
+    List<CmsFriendlyLinkEntity> selectByGroupIdAndCompanyId(@Param("groupId") Long groupId, @Param("companyId") Long companyId);
 }
diff --git a/src/main/resources/mapper/CmsFriendlyLinkMapper.xml b/src/main/resources/mapper/CmsFriendlyLinkMapper.xml
index e129cca..db91272 100644
--- a/src/main/resources/mapper/CmsFriendlyLinkMapper.xml
+++ b/src/main/resources/mapper/CmsFriendlyLinkMapper.xml
@@ -16,4 +16,8 @@
         </where>
     </select>
 
+    <select id="selectByGroupIdAndCompanyId" resultType="com.xcong.farmer.cms.modules.system.entity.CmsFriendlyLinkEntity">
+        select * from cms_friendly_link
+        where group_id=#{groupId} and company_id=#{companyId}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/test/java/com/xcong/farmer/cms/TemplateTest.java b/src/test/java/com/xcong/farmer/cms/TemplateTest.java
index 1b030d7..0452d5b 100644
--- a/src/test/java/com/xcong/farmer/cms/TemplateTest.java
+++ b/src/test/java/com/xcong/farmer/cms/TemplateTest.java
@@ -2,6 +2,7 @@
 
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.StrUtil;
+import com.xcong.farmer.cms.modules.core.service.ICmsCoreService;
 import com.xcong.farmer.cms.modules.system.service.IReleaseService;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
@@ -14,6 +15,8 @@
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * @author wzy
@@ -26,16 +29,19 @@
 
     @Test
     public void staticFileTest() throws IOException {
-        File file = new File("/Users/helius/Desktop/template-online/index-test.html");
+        // /Users/helius/Desktop/template-online/template/ahrnfy/test.html
+        // /Users/helius/Desktop/template-online/template/ahrnfy/test.html
+        File file = new File("/Users/helius/Desktop/template-online/template/ahrnfy/test.html");
         Document parse = Jsoup.parse(file, "utf-8");
 
-        staticPathParser(parse, "img", "src");
-        staticPathParser(parse, "href", "link");
-        staticPathParser(parse, "script", "src");
-
-        FileOutputStream outputStream = new FileOutputStream(file);
-        outputStream.write(parse.html().getBytes());
-        outputStream.close();
+        System.out.println(111);
+//        staticPathParser(parse, "img", "src");
+//        staticPathParser(parse, "href", "link");
+//        staticPathParser(parse, "script", "src");
+//
+//        FileOutputStream outputStream = new FileOutputStream(file);
+//        outputStream.write(parse.html().getBytes());
+//        outputStream.close();
     }
 
     public void staticPathParser(Document document, String tagName, String attrKey) {
@@ -59,4 +65,17 @@
     public void columnTest() {
         releaseService.releaseColumn(135L, 1, 26L);
     }
+
+
+    @Autowired
+    private ICmsCoreService cmsCoreService;
+
+    @Test
+    public void parserTest() {
+        Map<String, Object> map = new HashMap<>();
+        map.put("companyId", 24L);
+        map.put("id", 81L);
+        map.put("templateType", "article");
+        cmsCoreService.columnProcess(map, "test.html");
+    }
 }

--
Gitblit v1.9.1