电商项目——全文检索-ElasticSearch——第一章——中篇
电商项目——商城业务-商品上架——第二章——中篇
电商项目——商城业务-首页——第三章——中篇
电商项目——性能压测——第四章——中篇
电商项目——缓存——第五章——中篇
电商项目——商城业务-检索服务——第六章——中篇
电商项目——商城业务-异步——第七章——中篇
电商项目——商品详情——第八章——中篇
电商项目——认证服务——第九章——中篇
电商项目——购物车——第十章——中篇
电商项目——消息队列——第十一章——中篇
电商项目——订单服务——第十二章——中篇
电商项目——分布式事务——第十三章——中篇
1:环境搭建
前面我们复习了异步和线程池里的内容,接下来我们就编写商城业务里面的商品详情功能;
第一步:编写域名,指定映射到虚拟机的ip地址中
第二步:配置网关
- id: mall_host_route
uri: lb://mall-product
predicates:
- Host=zlj.mall.com,item.mall.com
第三步:实现动静分离(使用nginx)
第四步:写一个controller进行测试
mall-product
ItemController
@Controller
public class ItemController {
@RequestMapping("/{skuId}.html")
public String itemPage(@PathVariable("skuId") Long skuId){
return "item";
}
}
测试:mall-search,在list.html页面中点击,如下的图片可以进行成功跳转到item.html页面中
mall-search
list.html
<p class="da">
<a th:href="|http://item.mall.com/${product.skuId}.html|">
<img th:src="${product.getSkuImg()}" class="dim">
</a>
</p>
跳转成功
2:模型抽取
封装一个vo,(返回给页面)和生成一个查询传进来的skuid找到对应的属性值的方法
mall-product
SkuItemVo
@Data
public class SkuItemVo {
//1:sku基本信息获取 pms_sku_info
SkuInfoEntity info;
//2:sku图片信息 pms_sku_images(自定义封装)
List<SkuImagesEntity> images;
//3:获取spu的销售属性组合
List<SkuItemSaleAttrsVo> saleAttr;
//4:获取spu的介绍
SpuInfoDescEntity desp;
//5:获取spu的规格参数信息(自定义封装)
List<SpuItemAttrGroupVo> groupAttrs;
@Data
public static class SkuItemSaleAttrsVo{
private Long attrId;
private String attrName;
private List<String> attrValues;
}
@Data
public static class SpuItemAttrGroupVo{
private String groupName;
private List<SpuBaseAttrVo> atts;
}
@Data
public static class SpuBaseAttrVo{
private String attrName;
private List<String> attrValues;
}
}
ItemController
@Controller
public class ItemController {
@Autowired
SkuInfoService skuInfoService;
@RequestMapping("/{skuId}.html")
public String itemPage(@PathVariable("skuId") Long skuId){
System.out.println("准备查询"+skuId+"详情");
SkuItemVo vo= skuInfoService.item(skuId);
return "item";
}
}
SkuInfoService :代码大致框架
@Override
public SkuItemVo item(Long skuId) {
SkuItemVo skuItemVo=new SkuItemVo();
//1:sku基本信息获取 pms_sku_info
//2:sku图片信息 pms_sku_images
//3:获取spu的销售属性组合
//4:获取spu的介绍
//5:获取spu的规格参数信息
return null;
}
3:规格参数
mall-product
SkuInfoService
@Override
public SkuItemVo item(Long skuId) {
SkuItemVo skuItemVo=new SkuItemVo()