商城业务-商品详情

商城业务笔记

09、商城业务笔记

1、商品详情分析

1.1).商品详情需求

在这里插入图片描述

1.2).商品详情分析

第1、2步:直接在sku数据库查询
第3步:需要远程调用促销项目coupon
第4步:需要sku、属性
第5步:需要属性表,(第1步)
第6步:需要第一步的skuId(从sku表根据skuId获取spuId,再在spu表查询)

2、商品详情配置

2.1).修改nginx域名跳转

2.1.1)修改hosts主机(SwitchHosts.exe)

在这里插入图片描述

2.1.2)修改nginx配置文件 gulimall.conf

在这里插入图片描述
在这里插入图片描述

2.1.3)修改网关

在这里插入图片描述

2.1.4)导入详情页的html 到product的templates下

在这里插入图片描述

2.1.5)导入详情页的静态资源到nginx的static/item 下

在这里插入图片描述

2.1.6)修改详情页的item.html的资源路径

在这里插入图片描述

2.1.7)写controller—product的web下

//商品详情
@Controller
public class ItemController {
/**
* 展示当前sku详情
* */
@GetMapping("/{skuId}.html")
public String item(@PathVariable(“skuId”) Long skuId) {
System.out.println("查询sku "+skuId+“的详情”);
return “item”;
}
}

2.1.8)修改list.html,点击商品跳跃到商品详情页item.html

在这里插入图片描述
th:href="|http://item.gulimall.com/${product.skuId}.html|"

2、查询详情

1).写实体类

1.1).SkuItemVo --sku商品信息(总实体类)
@Data
@ToString
public class SkuItemVo {
    //1.sku基本信息,pms_spu_info
    SkuInfoEntity info;
    //2.sku图片信息,pms_sku_images
    List<SkuImagesEntity> images;
    //3.spu销售属性组合
    List<SkuItemSaleAttrVo> saleAttr;
    //4.spu的介绍,pms_spu_info_desc
    SpuInfoDescEntity desp;
    //5.spu规格参数
    List<SpuItemAttrGroupVo> groupsAttr;
}
1.2).spu基本属性–(分实体类)
//spu基本属性
@Data
@ToString
public  class SpuBaseAttrVo {
    private Long attrId;
    private String attrName;
    private String attrValue;
}
1.3).SkuItemSaleAttrVo --spu销售属性组合(分实体类)
//sku销售属性
@Data
@ToString
public  class SkuItemSaleAttrVo {
    private Long attrId;
    private String attrName;
    private String attrValues;
}
1.4).SpuItemAttrGroupVo–spu商品分组属性(分实体类)
//spu商品分组属性
@Data
@ToString
public class SpuItemAttrGroupVo {
    private String groupName;
    //    private List<Attr> attrs;
    private List<SpuBaseAttrVo> attrs;
}

3、业务区分

3.0).controller

//商品详情
@Controller
public class ItemController {
    @Autowired
    SkuInfoService skuInfoService;
    /**
     * 展示当前sku商品详情
     * */
    @GetMapping("/{skuId}.html")
    public String item(@PathVariable("skuId") Long skuId, Model model) {
        SkuItemVo skuItemVo =skuInfoService.item(skuId);
        model.addAttribute("item",skuItemVo);
        return "item";
    }
}

3.1).sku基本信息,pms_spu_info

SkuInfoEntity info = getById(skuId);

3.2).sku图片信息,pms_sku_images

List images= skuImagesService.getImagesBySkuId(skuId);

3.3).spu销售属性组合(**)

List saleAttrVos =skuSaleAttrValueService.getSkuSaleAttrsBySpuId(spuId);
需要service、impl、dao

**SQL语句**
SELECT pav.spu_id,
			 ag.attr_group_id,ag.attr_group_name,
			 aar.attr_id,
			 attr.attr_name,
			 pav.attr_value
			FROM  pms_attr_group ag
						LEFT JOIN	pms_attr_attrgroup_relation aar ON aar.attr_group_id = ag.attr_group_id
						LEFT JOIN pms_attr attr ON attr.attr_id = aar.attr_id
						LEFT JOIN pms_product_attr_value pav ON pav.attr_id= attr.attr_id
			WHERE	ag.catelog_id=225 and pav.spu_id=11

3.4).spu的介绍,pms_spu_info_desc

SpuInfoDescEntity spuInfoDesc= spuInfoDescService.getById(spuId);

3.5).spu规格参数(**)

List attrGroups = attrGroupService.getAttrGroupWithAttrsBySpuId(spuId,catalogId);

**SQL语句**
 select ssav.attr_id attr_id,
     ssav.attr_name attr_name,
		 GROUP_CONCAT(DISTINCT ssav.attr_value) attr_values
			from pms_sku_info info
			LEFT JOIN pms_sku_sale_attr_value ssav on ssav.sku_id = info.sku_id
			where info.spu_id =11
			GROUP BY  ssav.attr_id ,ssav.attr_name 

mapper.xml

<resultMap id="spuAttrGroup" type="com.atguigu.gulimall.product.vo.itemvo.SpuItemAttrGroupVo">
    <result property="groupName" column="attr_group_name"/>
    <collection property="attrs" ofType="com.atguigu.gulimall.product.vo.itemvo.SpuBaseAttrVo">
        <result property="attrId" column="attr_id"></result>
        <result property="attrName" column="attr_name"></result>
        <result property="attrValue" column="attr_value"></result>
    </collection>
</resultMap>

<select id="getAttrGroupWithAttrsBySpuId" resultMap="spuAttrGroup">
      SELECT pav.spu_id,
			 ag.attr_group_id,ag.attr_group_name,
			 aar.attr_id,
			 attr.attr_name,
			 pav.attr_value
			FROM  pms_attr_group ag
				  LEFT JOIN	pms_attr_attrgroup_relation aar ON aar.attr_group_id = ag.attr_group_id
				  LEFT JOIN pms_attr attr ON attr.attr_id = aar.attr_id
				  LEFT JOIN pms_product_attr_value pav ON pav.attr_id= attr.attr_id
			WHERE	ag.catelog_id=#{catalogId} and pav.spu_id=#{spuId}

</select>

代码:商品详情的实现类(3.0的item方法的实现类)

 //展示当前sku商品详情
@Override
public SkuItemVo item(Long skuId) {
    SkuItemVo skuItemVo = new SkuItemVo();
    //1.sku基本信息,pms_spu_info
    SkuInfoEntity info = getById(skuId);
    Long spuId = info.getSpuId();
    Long catalogId = info.getCatalogId();
    skuItemVo.setInfo(info);
    //2.sku图片信息,pms_sku_images
    List<SkuImagesEntity> images=  skuImagesService.getImagesBySkuId(skuId);
    skuItemVo.setImages(images);
    //3.spu销售属性组合,
    List<SkuItemSaleAttrVo> saleAttrVos  =skuSaleAttrValueService.getSkuSaleAttrsBySpuId(spuId);
    skuItemVo.setSaleAttr(saleAttrVos);
    //4.spu的介绍,pms_spu_info_desc
    SpuInfoDescEntity spuInfoDesc= spuInfoDescService.getById(spuId);
    skuItemVo.setDesp(spuInfoDesc);
    //5.spu规格参数,
    List<SpuItemAttrGroupVo> attrGroups = attrGroupService.getAttrGroupWithAttrsBySpuId(spuId,catalogId);
    skuItemVo.setGroupsAttr(attrGroups);
    return skuItemVo;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值