From 9e1e058b057fc6ef0a9baf636f230c21f1282797 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 07 七月 2025 15:26:23 +0800
Subject: [PATCH] ss

---
 server/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java |  172 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 169 insertions(+), 3 deletions(-)

diff --git a/server/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java b/server/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java
index b602f4a..cc70261 100644
--- a/server/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java
+++ b/server/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java
@@ -1,28 +1,47 @@
 package com.doumee.biz.system.impl;
 
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.Constants;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.utils.qiyeweixin.QywxUtil;
+import com.doumee.dao.business.CarouselMapper;
+import com.doumee.dao.business.InformationMapper;
+import com.doumee.dao.business.SeoMapper;
+import com.doumee.dao.business.model.Carousel;
+import com.doumee.dao.business.model.Information;
+import com.doumee.dao.business.model.Seo;
 import com.doumee.dao.common.dto.UpdateSortDTO;
 import com.doumee.dao.system.model.SystemDict;
 import com.doumee.dao.system.model.SystemDictData;
+import com.doumee.dao.vo.FootDataVO;
 import com.doumee.service.system.SystemDictDataService;
 import com.doumee.service.system.SystemDictService;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
 
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.io.*;
+import java.util.*;
 
 @Service
 public class SystemDictDataBizImpl implements SystemDictDataBiz {
 
+    @Autowired
+    private FreeMarkerConfigurer freeMarkerConfigurer;
+    @Autowired
+    private InformationMapper informationMapper;
+    @Autowired
+    private CarouselMapper carouselMapper;
+    @Autowired
+    private SeoMapper seoMapper;
     @Autowired
     private SystemDictDataService systemDictDataService;
     @Autowired
@@ -184,6 +203,7 @@
         return list;
     }
 
+
     @Override
     public void updateByDicId(List<SystemDictData> list) {
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
@@ -214,4 +234,150 @@
         return resourcePath+targetPath;
     }
 
+    @Override
+    public String createPage(Integer pageIndex) {
+        Constants.PageIndex objIndex  = Constants.PageIndex.getObj(pageIndex);
+        if(objIndex == null){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        String flt = objIndex.getTemplate();//妯$増鍚嶇О
+        String html = objIndex.getHtml();//椤甸潰鍚嶇О
+        String domain = queryByCode(Constants.SYSTEM,Constants.WEB_DOMAIN).getCode();
+        String htmlPath = queryByCode(Constants.SYSTEM,Constants.STATIC_PAGES_PATH).getCode();
+        File docFile = new File( htmlPath);
+        if(!docFile.exists()){
+            docFile.mkdirs();
+        }
+        Map<String,Object> dataMap = new HashMap<>();
+        dataMap.put("webDomain",domain);
+        List<Seo> seoList = seoMapper.selectList(new LambdaQueryWrapper<Seo>().eq(Seo::getIsdeleted,Constants.ZERO));
+        dataMap.put("seo",getSeoByHtml(Constants.PageIndex.getObj(pageIndex).getHtml(),seoList));
+        initDataMapByPage(objIndex,dataMap);
+        if(objIndex.getKey() == Constants.PageIndex.dynamicsDetail.getKey() || objIndex.getKey() == Constants.PageIndex.dynamicsDetail.getKey() ){
+            List<Information> dataList =getInfomationListByType(objIndex.getKey() == Constants.PageIndex.dynamics.getKey() ?Constants.ZERO:Constants.ONE,null);
+            generateDetailsHtml(dataList,dataMap,flt,htmlPath+html);//鍗曟枃浠舵暟鎹�
+        }else{
+            if(objIndex.getKey() == Constants.PageIndex.dynamics.getKey() || objIndex.getKey() == Constants.PageIndex.casesDetail.getKey() ){
+                dataMap.put("dataList", getInfomationListByType(objIndex.getKey() == Constants.PageIndex.dynamics.getKey() ?Constants.ZERO:Constants.ONE,null));
+            }
+            if(objIndex.getKey() == Constants.PageIndex.index.getKey()){
+                //濡傛灉鏄椤�
+                dataMap.put("bannerList",  carouselMapper.selectList(new LambdaQueryWrapper<Carousel>()
+                        .eq(Carousel::getIsdeleted,Constants.ZERO)
+                        .orderByDesc(Carousel::getSortnum ,Carousel::getCreateDate)));
+                dataMap.put("caseList", getInfomationListByType( Constants.ONE,12));
+                dataMap.put("zixunList", getInfomationListByType( Constants.ZERO,12));
+            }
+            generateSingleHtml(dataMap,flt,htmlPath+html);//鍗曟枃浠舵暟鎹�
+        }
+       return  null;
+    }
+
+    private Seo getSeoByHtml(String html, List<Seo> seoList) {
+        if(seoList==null || seoList.size()==0){
+            return new Seo();
+        }
+        for(Seo s :seoList){
+            if(StringUtils.equalsIgnoreCase(s.getPageAddr(),html)){
+                return s;
+            }
+        }
+        return new Seo();
+    }
+
+    private List<Information> getInfomationListByType(Integer type,Integer limit) {
+        List<Information> dataList =informationMapper.selectList(new LambdaQueryWrapper<Information>()
+                .eq(Information::getType,type)
+                .eq(Information::getIsdeleted,Constants.ZERO)
+                .last(limit!=null,"limit "+limit)
+                .orderByDesc(Information::getSortnum ,Information::getCreateDate) );//鏌ヨ鍏ㄩ儴璧勮
+
+        return dataList;
+    }
+
+    private void generateDetailsHtml(List<Information> dataList, Map<String, Object> dataMap, String flt, String htmlPath) {
+        if(dataList== null){
+            return;
+        }
+        for(Information data :dataList){
+            dataMap.put("data",data);
+            generateSingleHtml(dataMap,flt,htmlPath.replace("${id}",data.getId()+""));//鍗曟枃浠舵暟鎹�
+        }
+    }
+
+    private void generateSingleHtml(Map<String, Object> dataMap, String flt, String htmlPath)   {
+        try {
+            Configuration configuration = freeMarkerConfigurer.getConfiguration();
+            Writer out = null;
+
+            // 鍔犺浇妯$増鏂囦欢
+            Template template = configuration.getTemplate(flt);
+            // 鐢熸垚鏁版嵁
+            File docFile = new File( htmlPath);
+            out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(docFile)));
+            // 杈撳嚭鏂囦欢
+            template.process(dataMap,out);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR);
+        }
+    }
+
+    private void initDataMapByPage(Constants.PageIndex objIndex, Map<String, Object> dataMap) {
+        dataMap.put("bottom", getFoodDataVO());//缃戠珯搴曢儴淇℃伅
+    }
+
+    public FootDataVO getFoodDataVO(){
+        FootDataVO footDataVO = new FootDataVO();
+        SystemDict d = new SystemDict();
+        d.setCode(Constants.SYSTEM);
+        d.setDeleted(Boolean.FALSE);
+        d = systemDictService.findOne(d);
+        if(d ==null){
+            return footDataVO;
+        }
+        SystemDictData param = new SystemDictData();
+        param.setDictId(d.getId());
+        param.setDeleted(Boolean.FALSE);
+        List<SystemDictData> dictDataList = systemDictDataService.findList(param);
+
+        String path = findDictDataByLabel(dictDataList,Constants.FILE_DIR);
+        footDataVO.setFileDir(path);
+        footDataVO.setFootWords(findDictDataByLabel(dictDataList,Constants.FOOT_WORDS));
+        footDataVO.setFootImgUrl(findDictDataByLabel(dictDataList,Constants.FOOT_IMGURL));
+        footDataVO.setFootFullImgUrl(path+ footDataVO.getFootImgUrl());
+        footDataVO.setFootImgUrl2(findDictDataByLabel(dictDataList,Constants.FOOT_IMGURL2));
+        footDataVO.setFootFullImgUrl2(path + footDataVO.getFootImgUrl2());
+        footDataVO.setAddress(findDictDataByLabel(dictDataList,Constants.ADDRESS));
+        footDataVO.setLinkPhone(findDictDataByLabel(dictDataList,Constants.LINK_PHONE));
+        footDataVO.setLinkMobile(findDictDataByLabel(dictDataList,Constants.LINK_MOBILE));
+        String solveScheme =  findDictDataByLabel(dictDataList,Constants.SOLVE_SCHEME);
+        if(Objects.nonNull(solveScheme) & org.apache.commons.lang3.StringUtils.isNotBlank(solveScheme)){
+            footDataVO.setSolveScheme(JSONArray.parseArray(solveScheme));
+        }
+        String wisdomSystem = findDictDataByLabel(dictDataList,Constants.WISDOM_SYSTEM);
+        if(Objects.nonNull(wisdomSystem) & org.apache.commons.lang3.StringUtils.isNotBlank(wisdomSystem )){
+            footDataVO.setWisdomSystem(JSONArray.parseArray(wisdomSystem ));
+        }
+        String honors = findDictDataByLabel(dictDataList,Constants.HONORS);
+        if(Objects.nonNull(wisdomSystem) & org.apache.commons.lang3.StringUtils.isNotBlank(honors)){
+            footDataVO.setHonors(JSONArray.parseArray(honors));
+        }
+        footDataVO.setServerTime(findDictDataByLabel(dictDataList,Constants.SERVER_TIME));
+
+        return footDataVO;
+    }
+
+    private String findDictDataByLabel(List<SystemDictData> dictDataList, String footWords) {
+        if(dictDataList!=null){
+            for(SystemDictData data:dictDataList){
+                if(StringUtils.equals(footWords,data.getLabel())){
+                    return data.getCode();
+                }
+            }
+        }
+        return "";
+    }
+
+
 }

--
Gitblit v1.9.3