package com.qingcheng.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.alibaba.fastjson.JSON;
import com.qingcheng.pojo.goods.Goods;
import com.qingcheng.pojo.goods.Sku;
import com.qingcheng.pojo.goods.Spu;
import com.qingcheng.service.goods.CategoryService;
import com.qingcheng.service.goods.SpuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import java.io.File;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/item")
public class ItemController {
@Reference
private SpuService spuService;
@Autowired
private TemplateEngine templateEngine;
@Reference
private CategoryService categoryService;
@Value("${pagePath}")
private String pagePath;
/**
* 生成商品详细页
*
* @param id
*/
@GetMapping("/createPage")
public void createPage(String id) {
//查询商品信息
Goods goods = spuService.findGoodsById(id);
//获取spu信息
Spu spu = goods.getSpu();
//获取sku列表
List<Sku> skuList = goods.getSkuList();
// 查询商品分类信息
List<String> categoryList = new ArrayList<>();
categoryList.add(categoryService.findById(spu.getCategory1Id()).getName());//一级分类
categoryList.add(categoryService.findById(spu.getCategory2Id()).getName());//二级分类
categoryList.add(categoryService.findById(spu.getCategory3Id()).getName());//三级分类
//创建页面(每个sku一个页面)
for (Sku sku : skuList) {
// 1.上下文
Context context = new Context();
// 1.1.创建数据模型
Map<String, Object> dataModel = new HashMap<>();
// 生成spu信息
dataModel.put("spu", spu);
// 生成sku列表
dataModel.put("sku", sku);
//
dataModel.put("categoryList", categoryList);
// spu图片列表
dataModel.put("spuImages", spu.getImages().split(","));
// sku图片列表
dataModel.put("skuImages", sku.getImages().split(","));
// spu参数列表
Map paraItems = JSON.parseObject(spu.getParaItems());
dataModel.put("paraItems", paraItems);
// sku规格
Map specItems = JSON.parseObject(sku.getSpec());
dataModel.put("specItems", specItems);
//
context.setVariables(dataModel);
// 2.准备文件
File dir = new File(pagePath);//路径设置
// if判断如果dir目录不存在就逐级创建(dir.mkdirs())
if (!dir.exists()) {
dir.mkdirs();
}
// 创建文件
File dest = new File(dir, sku.getId() + ".html");
// 3.生成页面
try {
PrintWriter writer = new PrintWriter(dest, "UTF-8");
//用item.html当模板
templateEngine.process("item", context, writer);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
|
|