Commit 543da605d498f755cbaa0f20088848c2fb873b81

Authored by 徐烜
1 parent 82fb6b42

1、修改pom.xml,添加thymeleaf依赖

2、创建lubanPage, lubanPagePreview页面结合thymeleaf动态生成页面(后面还要完善)
3、创建BsthSlideItem.js,结合java8的nashorn引擎处理后台work对象,查找定义轮播组件的url信息
4、修改WorkService,添加createZipPage方法生成打包文件

Too many changes to show.

To preserve performance only 8 of 15 files are displayed.

... ... @@ -35,6 +35,10 @@
35 35 <groupId>org.springframework.boot</groupId>
36 36 <artifactId>spring-boot-starter-web</artifactId>
37 37 </dependency>
  38 + <dependency>
  39 + <groupId>org.springframework.boot</groupId>
  40 + <artifactId>spring-boot-starter-thymeleaf</artifactId>
  41 + </dependency>
38 42  
39 43 <dependency>
40 44 <groupId>mysql</groupId>
... ...
src/main/java/com/bsth/luban_springboot2/controller/WorkController.java
... ... @@ -12,6 +12,7 @@ import org.springframework.data.domain.Sort;
12 12 import org.springframework.http.HttpStatus;
13 13 import org.springframework.web.bind.WebDataBinder;
14 14 import org.springframework.web.bind.annotation.*;
  15 +import org.springframework.web.servlet.ModelAndView;
15 16  
16 17 import javax.validation.Valid;
17 18 import java.util.List;
... ... @@ -99,4 +100,25 @@ public class WorkController {
99 100 return this.workService.useTemplate(id);
100 101 }
101 102  
  103 + @RequestMapping(value = "/preview/{id}")
  104 + public ModelAndView preview(
  105 + @PathVariable Long id,
  106 + @RequestParam(name = "view_mode") String viewMode) {
  107 + // TODO:
  108 + System.out.println(id);
  109 + System.out.println(viewMode);
  110 +
  111 + WorkDto workDto = workService.findWorkById(id);
  112 +
  113 + List<WorkService.BsthSlideItem> bsthSlideItemList = this.workService.computeZipBsthSlideUrls(id);
  114 +
  115 +
  116 + // 创建并返回 ModelAndView
  117 + ModelAndView mv = new ModelAndView();
  118 + mv.addObject("work", workDto);
  119 + mv.addObject("urlItems", bsthSlideItemList);
  120 + mv.setViewName("lubanPagePreview");
  121 + return mv;
  122 + }
  123 +
102 124 }
... ...
src/main/java/com/bsth/luban_springboot2/controller/ZipController.java
1 1 package com.bsth.luban_springboot2.controller;
2 2  
  3 +import com.bsth.luban_springboot2.service.WorkService;
3 4 import com.bsth.luban_springboot2.utils.ZipWorkPage;
4   -import org.springframework.beans.factory.annotation.Value;
  5 +import org.springframework.beans.factory.annotation.Autowired;
5 6 import org.springframework.http.HttpHeaders;
6 7 import org.springframework.http.HttpStatus;
7 8 import org.springframework.http.MediaType;
8 9 import org.springframework.http.ResponseEntity;
9 10 import org.springframework.web.bind.annotation.GetMapping;
  11 +import org.springframework.web.bind.annotation.PathVariable;
10 12 import org.springframework.web.bind.annotation.RequestMapping;
11 13 import org.springframework.web.bind.annotation.RestController;
12 14  
13   -import java.nio.file.Paths;
14   -
15 15 @RestController
16 16 @RequestMapping(value = "/zip_test")
17 17 public class ZipController {
18   -
19   - @Value("${luban_h5.zip_page.source_root_path}")
20   - private String sourceRootPath;
21   - @Value("${luban_h5.zip_page.dest_path}")
22   - private String destZipDirPath;
  18 + @Autowired
  19 + private WorkService workService;
23 20  
24 21 /**
25 22 * 获取打包后的Page。
26 23 * @return
27 24 */
28   - @GetMapping(value = "/getPage")
29   - public ResponseEntity<byte[]> getPage() {
  25 + @GetMapping(value = "/getPage/{id}")
  26 + public ResponseEntity<byte[]> getPage(@PathVariable Long id) {
30 27 // 打包zip文件
31   - ZipWorkPage zipWorkPage = ZipWorkPage.createPageZip_LineChartList(
32   - Paths.get(sourceRootPath), Paths.get(destZipDirPath)
33   - );
  28 + ZipWorkPage zipWorkPage = workService.createZipPage(id);
34 29 byte[] zipBytes = zipWorkPage.getZipBytes();
35 30  
36 31 // 设置header
... ... @@ -45,17 +40,4 @@ public class ZipController {
45 40  
46 41 }
47 42  
48   - public static void main(String[] args) throws Exception {
49   -
50   - ZipWorkPage zipWorkPage = ZipWorkPage.createPageZip_van_swip(
51   - Paths.get("/Users/xu/resource/project_code/bsth_project/bsth_ebus/luban_springboot2/src/main/resources/static"),
52   - Paths.get("/Users/xu/resource/project_code/runtime_temp/zip_pages")
53   - );
54   -
55   -// LocalDateTime localDateTime = LocalDateTime.now();
56   -// System.out.println(localDateTime.toString());
57   -
58   -
59   -
60   - }
61 43 }
... ...
src/main/java/com/bsth/luban_springboot2/repo/UploadFileRepo.java
... ... @@ -10,4 +10,5 @@ import org.springframework.stereotype.Repository;
10 10 public interface UploadFileRepo extends BaseRepository<UploadFile, Long> {
11 11  
12 12 UploadFile findByHash(String hash);
  13 + UploadFile findByUrl(String url);
13 14 }
... ...
src/main/java/com/bsth/luban_springboot2/service/WorkService.java
1 1 package com.bsth.luban_springboot2.service;
2 2  
3 3 import com.bsth.luban_springboot2.dto.WorkDto;
  4 +import com.bsth.luban_springboot2.utils.ZipWorkPage;
4 5 import org.springframework.data.domain.Pageable;
5 6  
6 7 import java.util.List;
... ... @@ -65,4 +66,74 @@ public interface WorkService {
65 66 * @return
66 67 */
67 68 WorkDto useTemplate(Long id);
  69 +
  70 + /**
  71 + * 创建Zip页面。
  72 + * @param id
  73 + * @return
  74 + */
  75 + ZipWorkPage createZipPage(Long id);
  76 +
  77 + /**
  78 + * 计算打包后的自定义轮播组件url信息。
  79 + * @param id 作品id
  80 + * @return
  81 + */
  82 + List<BsthSlideItem> computeZipBsthSlideUrls(Long id);
  83 +
  84 + /**
  85 + * bsth-slide组件每个轮播的url信息。
  86 + */
  87 + static class BsthSlideItem {
  88 + /** 组件名字 bsth-slide */
  89 + private String name;
  90 + /** 每个组件都有一个uuid,对应后台work表中的pages字段 */
  91 + private String uuid;
  92 + /** 原始的url路径 */
  93 + private List<String> urls;
  94 + /** 实际的后台路径 */
  95 + private List<String> realPath;
  96 + /** 替换后的本地路径(用于打包使用) */
  97 + private List<String> localUrls;
  98 +
  99 + public String getName() {
  100 + return name;
  101 + }
  102 +
  103 + public void setName(String name) {
  104 + this.name = name;
  105 + }
  106 +
  107 + public String getUuid() {
  108 + return uuid;
  109 + }
  110 +
  111 + public void setUuid(String uuid) {
  112 + this.uuid = uuid;
  113 + }
  114 +
  115 + public List<String> getUrls() {
  116 + return urls;
  117 + }
  118 +
  119 + public void setUrls(List<String> urls) {
  120 + this.urls = urls;
  121 + }
  122 +
  123 + public List<String> getLocalUrls() {
  124 + return localUrls;
  125 + }
  126 +
  127 + public void setLocalUrls(List<String> localUrls) {
  128 + this.localUrls = localUrls;
  129 + }
  130 +
  131 + public List<String> getRealPath() {
  132 + return realPath;
  133 + }
  134 +
  135 + public void setRealPath(List<String> realPath) {
  136 + this.realPath = realPath;
  137 + }
  138 + }
68 139 }
... ...
src/main/java/com/bsth/luban_springboot2/service/impl/WorkServiceImpl.java
1 1 package com.bsth.luban_springboot2.service.impl;
2 2  
3 3 import com.bsth.luban_springboot2.dto.WorkDto;
  4 +import com.bsth.luban_springboot2.entity.UploadFile;
4 5 import com.bsth.luban_springboot2.entity.Work;
  6 +import com.bsth.luban_springboot2.repo.UploadFileRepo;
5 7 import com.bsth.luban_springboot2.repo.WorkRepo;
6 8 import com.bsth.luban_springboot2.service.WorkService;
  9 +import com.bsth.luban_springboot2.utils.ZipWorkPage;
7 10 import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.beans.factory.annotation.Value;
8 12 import org.springframework.data.domain.Example;
9 13 import org.springframework.data.domain.Page;
10 14 import org.springframework.data.domain.Pageable;
... ... @@ -13,6 +17,13 @@ import org.springframework.transaction.annotation.Isolation;
13 17 import org.springframework.transaction.annotation.Propagation;
14 18 import org.springframework.transaction.annotation.Transactional;
15 19  
  20 +import javax.script.Invocable;
  21 +import javax.script.ScriptEngine;
  22 +import javax.script.ScriptEngineManager;
  23 +import java.io.File;
  24 +import java.io.FileReader;
  25 +import java.nio.file.Paths;
  26 +import java.util.ArrayList;
16 27 import java.util.Date;
17 28 import java.util.List;
18 29 import java.util.Optional;
... ... @@ -133,4 +144,91 @@ public class WorkServiceImpl implements WorkService {
133 144 newWork = this.workRepo.save(newWork);
134 145 return WorkDto.getBuilder().setPropertyFromWork(newWork, false).build();
135 146 }
  147 +
  148 + @Value("${luban_h5.zip_page.source_root_path}")
  149 + private String sourceRootPath;
  150 + @Value("${luban_h5.zip_page.dest_path}")
  151 + private String destZipDirPath;
  152 + @Autowired
  153 + private UploadFileRepo uploadFileRepo;
  154 + @Override
  155 + public ZipWorkPage createZipPage(Long id) {
  156 + List<BsthSlideItem> bsthSlideItemList = computeZipBsthSlideUrls(id);
  157 +
  158 + // 1、打包文件
  159 + //----------------------- 1.1、添加待压缩的文件和目录 ---------------------//
  160 + ZipWorkPage zipWorkPage = new ZipWorkPage(Paths.get(destZipDirPath));
  161 + // jquery
  162 + zipWorkPage.addSourcePageFile(
  163 + new ZipWorkPage.SourcePageFile()
  164 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "templates", "asserts", "jquery", "jquery.min.js"))
  165 + .setZipFilePath(Paths.get("asserts","jquery", "jquery.min.js")));
  166 + // d3
  167 + zipWorkPage.addSourcePageFile(
  168 + new ZipWorkPage.SourcePageFile()
  169 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "templates", "asserts", "d3", "d3.min.js"))
  170 + .setZipFilePath(Paths.get("asserts","d3", "d3.min.js")));
  171 +
  172 + // TODO:还有其他的js文件
  173 +
  174 + //----------------------- 1.2、重新打包轮播图的url信息 -------------------//
  175 + for (BsthSlideItem bsthSlideItem : bsthSlideItemList) {
  176 + for (int i = 0; i < bsthSlideItem.getRealPath().size(); i++) {
  177 + zipWorkPage.addSourcePageFile(
  178 + new ZipWorkPage.SourcePageFile()
  179 + .setSourceFilePath(Paths.get(bsthSlideItem.getRealPath().get(i)))
  180 + .setZipFilePath(Paths.get(bsthSlideItem.getLocalUrls().get(i))));
  181 + }
  182 + }
  183 +
  184 + //----------------------- 1.3、打包主页面 -------------------//
  185 + // lubanPage.html 重命名为index.html,根路径使用.
  186 + // TODO:lubanPage.html需要使用thymeleaf重新生成一遍
  187 + zipWorkPage.addSourcePageFile(
  188 + new ZipWorkPage.SourcePageFile()
  189 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "templates", "lubanPage.html"))
  190 + .setZipFilePath(Paths.get(".","index.html")));
  191 +
  192 + // 2、压缩生成zip文件
  193 + zipWorkPage.build();
  194 +
  195 + return zipWorkPage;
  196 + }
  197 +
  198 + @Override
  199 + public List<BsthSlideItem> computeZipBsthSlideUrls(Long id) {
  200 + // 1、查找作品dto
  201 + WorkDto workDto = this.findWorkById(id);
  202 + if (workDto == null) {
  203 + throw new RuntimeException("作品Id=" + id + "不存在!");
  204 + }
  205 +
  206 + // 2、使用java8 js引擎获取轮播url信息
  207 + ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName("nashorn");
  208 + File jsFile = Paths.get(sourceRootPath, "templates", "nashorn", "BsthSlideItem.js").toFile();
  209 + List<BsthSlideItem> bsthSlideItemList = new ArrayList<>();
  210 + try {
  211 + scriptEngine.eval(new FileReader(jsFile));
  212 + Invocable invocable = (Invocable) scriptEngine;
  213 + Object result = invocable.invokeFunction("calcuBsthSlideItems", workDto.getPages());
  214 + bsthSlideItemList = (List<BsthSlideItem>) result;
  215 + } catch (Exception exp) {
  216 + exp.printStackTrace();
  217 + }
  218 +
  219 + // 3、进一步计算zip打包时需要的url信息
  220 + for (BsthSlideItem bsthSlideItem : bsthSlideItemList) {
  221 + bsthSlideItem.setRealPath(new ArrayList<>());
  222 + bsthSlideItem.setLocalUrls(new ArrayList<>());
  223 + for (String url : bsthSlideItem.getUrls()) {
  224 + UploadFile uploadFile = uploadFileRepo.findByUrl(url);
  225 + // 设置realPath
  226 + bsthSlideItem.getRealPath().add(uploadFile.getRealPath());
  227 + // 是指loaclUrl
  228 + bsthSlideItem.getLocalUrls().add("resources/" + uploadFile.getHash() + uploadFile.getExt());
  229 + }
  230 +
  231 + }
  232 + return bsthSlideItemList;
  233 + }
136 234 }
... ...
src/main/java/com/bsth/luban_springboot2/utils/ZipWorkPage.java
... ... @@ -179,6 +179,7 @@ public class ZipWorkPage {
179 179 }
180 180 }
181 181  
  182 + //-------------------------------------- 以下是一些快捷创建方式 -------------------------//
182 183 /**
183 184 * 创建页面Zip(van_swip_use_case.html)。
184 185 * @param sourceRootPath 来源文件根路径(目录)
... ... @@ -191,87 +192,87 @@ public class ZipWorkPage {
191 192 // jquery.min.js
192 193 zipWorkPage.addSourcePageFile(
193 194 new SourcePageFile()
194   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "other", "jquery.min.js"))
  195 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "other", "jquery.min.js"))
195 196 .setZipFilePath(Paths.get("pageTemplates","other", "jquery.min.js")));
196 197 // d3.min.js
197 198 zipWorkPage.addSourcePageFile(
198 199 new SourcePageFile()
199   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "other", "d3.min.js"))
  200 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "other", "d3.min.js"))
200 201 .setZipFilePath(Paths.get("pageTemplates","other", "d3.min.js")));
201 202 // vue_v2.6.12.js
202 203 zipWorkPage.addSourcePageFile(
203 204 new SourcePageFile()
204   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "js", "vue_v2.6.12.js"))
  205 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "js", "vue_v2.6.12.js"))
205 206 .setZipFilePath(Paths.get("pageTemplates","js", "vue_v2.6.12.js")));
206 207 // video js css
207 208 zipWorkPage.addSourcePageFile(
208 209 new SourcePageFile()
209   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "css", "video-js_v7.11.4.css"))
  210 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "css", "video-js_v7.11.4.css"))
210 211 .setZipFilePath(Paths.get("pageTemplates","css", "video-js_v7.11.4.css")));
211 212 // video js
212 213 zipWorkPage.addSourcePageFile(
213 214 new SourcePageFile()
214   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "js", "video_v7.11.4.js"))
  215 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "js", "video_v7.11.4.js"))
215 216 .setZipFilePath(Paths.get("pageTemplates","js", "video_v7.11.4.js")));
216 217 // vant css
217 218 zipWorkPage.addSourcePageFile(
218 219 new SourcePageFile()
219   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "css", "vant_v2.2.12.css"))
  220 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "css", "vant_v2.2.12.css"))
220 221 .setZipFilePath(Paths.get("pageTemplates","css", "vant_v2.2.12.css")));
221 222 // vant js
222 223 zipWorkPage.addSourcePageFile(
223 224 new SourcePageFile()
224   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "js", "vant_v2.2.12.js"))
  225 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "js", "vant_v2.2.12.js"))
225 226 .setZipFilePath(Paths.get("pageTemplates","js", "vant_v2.2.12.js")));
226 227 // lineChart.css
227 228 zipWorkPage.addSourcePageFile(
228 229 new SourcePageFile()
229   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "components", "lineChart.css"))
  230 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "components", "lineChart.css"))
230 231 .setZipFilePath(Paths.get("pageTemplates","components", "lineChart.css")));
231 232 // lineChart.vue.js
232 233 zipWorkPage.addSourcePageFile(
233 234 new SourcePageFile()
234   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "components", "lineChart.vue.js"))
  235 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "components", "lineChart.vue.js"))
235 236 .setZipFilePath(Paths.get("pageTemplates","components", "lineChart.vue.js")));
236 237 // lineChartList.vue.js
237 238 zipWorkPage.addSourcePageFile(
238 239 new SourcePageFile()
239   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "components", "lineChartList.vue.js"))
  240 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "components", "lineChartList.vue.js"))
240 241 .setZipFilePath(Paths.get("pageTemplates","components", "lineChartList.vue.js")));
241 242 // testData.js
242 243 zipWorkPage.addSourcePageFile(
243 244 new SourcePageFile()
244   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "components", "testData.js"))
  245 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "components", "testData.js"))
245 246 .setZipFilePath(Paths.get("pageTemplates","components", "testData.js")));
246 247 // vue-video-play.js
247 248 zipWorkPage.addSourcePageFile(
248 249 new SourcePageFile()
249   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "js", "vue-video-player_v5.0.2.js"))
  250 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "js", "vue-video-player_v5.0.2.js"))
250 251 .setZipFilePath(Paths.get("pageTemplates","js", "vue-video-player_v5.0.2.js")));
251 252  
252 253 // asserts
253 254 // vue-video-play.js
254 255 zipWorkPage.addSourcePageFile(
255 256 new SourcePageFile()
256   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "asserts", "swipe_1.jpg"))
  257 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "asserts", "swipe_1.jpg"))
257 258 .setZipFilePath(Paths.get("asserts", "swipe_1.jpg")));
258 259 zipWorkPage.addSourcePageFile(
259 260 new SourcePageFile()
260   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "asserts", "swipe_2.jpg"))
  261 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "asserts", "swipe_2.jpg"))
261 262 .setZipFilePath(Paths.get("asserts", "swipe_2.jpg")));
262 263 zipWorkPage.addSourcePageFile(
263 264 new SourcePageFile()
264   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "asserts", "swipe_3.jpg"))
  265 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "asserts", "swipe_3.jpg"))
265 266 .setZipFilePath(Paths.get("asserts", "swipe_3.jpg")));
266 267 zipWorkPage.addSourcePageFile(
267 268 new SourcePageFile()
268   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "asserts", "swipe_4.mp4"))
  269 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "asserts", "swipe_4.mp4"))
269 270 .setZipFilePath(Paths.get("asserts", "swipe_4.mp4")));
270 271  
271 272 // pageTest5.html 重命名为index.html,根路径使用.
272 273 zipWorkPage.addSourcePageFile(
273 274 new SourcePageFile()
274   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "van_swip_use_case.html"))
  275 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "van_swip_use_case.html"))
275 276 .setZipFilePath(Paths.get(".","index.html")));
276 277  
277 278 //-------------------------------- 2、压缩生成zip文件 -------------------------//
... ... @@ -293,43 +294,43 @@ public class ZipWorkPage {
293 294 // jquery.min.js
294 295 zipWorkPage.addSourcePageFile(
295 296 new SourcePageFile()
296   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "other", "jquery.min.js"))
  297 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "other", "jquery.min.js"))
297 298 .setZipFilePath(Paths.get("pageTemplates","other", "jquery.min.js")));
298 299 // d3.min.js
299 300 zipWorkPage.addSourcePageFile(
300 301 new SourcePageFile()
301   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "other", "d3.min.js"))
  302 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "other", "d3.min.js"))
302 303 .setZipFilePath(Paths.get("pageTemplates","other", "d3.min.js")));
303 304 // vue_v2.6.12.js
304 305 zipWorkPage.addSourcePageFile(
305 306 new SourcePageFile()
306   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "js", "vue_v2.6.12.js"))
  307 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "js", "vue_v2.6.12.js"))
307 308 .setZipFilePath(Paths.get("pageTemplates","js", "vue_v2.6.12.js")));
308 309 // lineChart.css
309 310 zipWorkPage.addSourcePageFile(
310 311 new SourcePageFile()
311   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "components", "lineChart.css"))
  312 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "components", "lineChart.css"))
312 313 .setZipFilePath(Paths.get("pageTemplates","components", "lineChart.css")));
313 314 // lineChart.vue.js
314 315 zipWorkPage.addSourcePageFile(
315 316 new SourcePageFile()
316   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "components", "lineChart.vue.js"))
  317 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "components", "lineChart.vue.js"))
317 318 .setZipFilePath(Paths.get("pageTemplates","components", "lineChart.vue.js")));
318 319 // lineChartList.vue.js
319 320 zipWorkPage.addSourcePageFile(
320 321 new SourcePageFile()
321   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "components", "lineChartList.vue.js"))
  322 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "components", "lineChartList.vue.js"))
322 323 .setZipFilePath(Paths.get("pageTemplates","components", "lineChartList.vue.js")));
323 324 // testData.js
324 325 zipWorkPage.addSourcePageFile(
325 326 new SourcePageFile()
326   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "pageTemplates", "components", "testData.js"))
  327 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "pageTemplates", "components", "testData.js"))
327 328 .setZipFilePath(Paths.get("pageTemplates","components", "testData.js")));
328 329  
329 330 // pageTest4.html 重命名为index.html,根路径使用.
330 331 zipWorkPage.addSourcePageFile(
331 332 new SourcePageFile()
332   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "lineChartList_use_case.html"))
  333 + .setSourceFilePath(Paths.get(sourceRootPath.toString(), "static", "lineChartList_use_case.html"))
333 334 .setZipFilePath(Paths.get(".","index.html")));
334 335  
335 336 //-------------------------------- 2、压缩生成zip文件 -------------------------//
... ... @@ -338,76 +339,6 @@ public class ZipWorkPage {
338 339 return zipWorkPage;
339 340 }
340 341  
341   -
342   - /**
343   - * 创建页面Zip。
344   - * @param sourceRootPath 来源文件根路径(目录)
345   - * @param destZipDirPath 目标zip文件存放路径(目录)
346   - * @return
347   - */
348   - public static ZipWorkPage createPageZip(Path sourceRootPath, Path destZipDirPath) {
349   - //----------------------- 1、添加待压缩的文件和目录 ---------------------//
350   - ZipWorkPage zipWorkPage = new ZipWorkPage(destZipDirPath);
351   - // vue_v2.6.12.js
352   - zipWorkPage.addSourcePageFile(
353   - new SourcePageFile()
354   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "js", "vue_v2.6.12.js"))
355   - .setZipFilePath(Paths.get("js", "vue_v2.6.12.js")));
356   - // vuex_v3.6.2.js
357   - zipWorkPage.addSourcePageFile(
358   - new SourcePageFile()
359   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "js", "vuex_v3.6.2.js"))
360   - .setZipFilePath(Paths.get("js","vuex_v3.6.2.js")));
361   - // animate_v4.1.1.css
362   - zipWorkPage.addSourcePageFile(
363   - new SourcePageFile()
364   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "css", "animate_v4.1.1.css"))
365   - .setZipFilePath(Paths.get("css","animate_v4.1.1.css")));
366   - // swiper_v4.5.1.css
367   - zipWorkPage.addSourcePageFile(
368   - new SourcePageFile()
369   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "css", "swiper_v4.5.1.css"))
370   - .setZipFilePath(Paths.get("css","swiper_v4.5.1.css")));
371   - // swiper_v4.5.1.js
372   - zipWorkPage.addSourcePageFile(
373   - new SourcePageFile()
374   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "js", "swiper_v4.5.1.js"))
375   - .setZipFilePath(Paths.get("js","swiper_v4.5.1.js")));
376   - // swiper-animation_v2.0.2.js
377   - zipWorkPage.addSourcePageFile(
378   - new SourcePageFile()
379   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "js", "swiper-animation_v2.0.2.js"))
380   - .setZipFilePath(Paths.get("js","swiper-animation_v2.0.2.js")));
381   - // echarts_v5.0.2.js
382   - zipWorkPage.addSourcePageFile(
383   - new SourcePageFile()
384   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "js", "echarts_v5.0.2.js"))
385   - .setZipFilePath(Paths.get("js","echarts_v5.0.2.js")));
386   - // v-charts_v1.19.0
387   - zipWorkPage.addSourcePageDir(
388   - new SourcePageDir()
389   - .setSourceDirPath(Paths.get(sourceRootPath.toString(), "js", "v-charts_v1.19.0"))
390   - .setZipDirPath(Paths.get("js", "v-charts_v1.19.0")));
391   - // v-charts_v1.19.0.css
392   - zipWorkPage.addSourcePageFile(
393   - new SourcePageFile()
394   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "css", "v-charts_v1.19.0.css"))
395   - .setZipFilePath(Paths.get("css","v-charts_v1.19.0.css")));
396   -
397   -
398   - // TODO:鲁班h5前台编辑,后台模版生成的html文件
399   - // TODO:之后要使用freemark来生成(需要绑定WorkDto对象)
400   - zipWorkPage.addSourcePageFile(
401   - new SourcePageFile()
402   - .setSourceFilePath(Paths.get(sourceRootPath.toString(), "engine-example.ejs"))
403   - .setZipFilePath(Paths.get(File.separator,"engine-example.ejs")));
404   -
405   - //-------------------------------- 2、压缩生成zip文件 -------------------------//
406   - zipWorkPage.build();
407   -
408   - return zipWorkPage;
409   - }
410   -
411 342 /**
412 343 * 待压缩的页面文件。
413 344 */
... ...
src/main/resources/application.properties
... ... @@ -28,9 +28,25 @@ spring.servlet.multipart.file-size-threshold=0
28 28 spring.servlet.multipart.max-file-size=100MB
29 29 spring.servlet.multipart.max-request-size=100MB
30 30  
  31 +#--------------- thymeleaf配置 ---------------#
  32 +# 是否开启缓存,开发时可以设置为 false,默认为 true
  33 +spring.thymeleaf.cache=true
  34 +# 检查模版是否存在,默认为 true
  35 +spring.thymeleaf.check-template=true
  36 +# 检查模版位置是否存在,默认为 true
  37 +spring.thymeleaf.check-template-location=true
  38 +# 模版文件编码
  39 +spring.thymeleaf.encoding=UTF-8
  40 +# 模版文件位置
  41 +spring.thymeleaf.prefix=classpath:/templates/
  42 +# Content-Type配置
  43 +spring.thymeleaf.servlet.content-type=text/html
  44 +# 模版文件后缀
  45 +spring.thymeleaf.suffix=.html
  46 +
31 47 #--------------- 鲁班h5相关操作配置 ------------#
32   -## zip打包来源文件根路径(目录)
33   -luban_h5.zip_page.source_root_path=/Users/xu/resource/project_code/bsth_project/bsth_ebus/luban_springboot2/src/main/resources/static
  48 +## zip打包来源文件查找根路径(目录)
  49 +luban_h5.zip_page.source_root_path=/Users/xu/resource/project_code/bsth_project/bsth_ebus/luban_springboot2/src/main/resources
34 50 ## 目标zip文件存放路径(目录)
35 51 luban_h5.zip_page.dest_path=/Users/xu/resource/project_code/bsth_project/bsth_ebus/temp_files/zip_pages
36 52 ## 上传文件的存放路径
... ...