首页 > 其他 > 详细

21.商品详情

时间:2021-08-20 15:14:02      阅读:8      评论:0      收藏:0      [点我收藏+]

环境搭建

修改域名

技术分享图片

 

 

 修改网关

让item也能跳到商品服务

技术分享图片

 

 

 前端内容放入nginx

模型抽取

product模块里封装Vo,由于下面两个属性需要在mapper里映射结果集使用,所以不能写成静态内部类

@Data
public class SkuItemVo {
    private SkuInfoEntity info; //1.查询当前sku的基本信息 sku_info表
    private List<SkuImagesEntity> images; //2.sku的图片信息 pms_sku_image
    private List<SkuItemSaleAttrsVo> saleAttrsVos;  //3.获取spu的销售属性组合
    private SpuInfoDescEntity desp; //4.获取spu的介绍
    private List<SpuItemAttrGroup> groupAttrs;//5.获取spu的规格参数
    @ToString
    @Data
    public static class SkuItemSaleAttrsVo {
        private Long attrId;
        private String attrName;
        private List<String> attrValues;
    }
    @ToString
    @Data
    public class SpuItemAttrGroup{
        private String groupName;

        /** 两个属性attrName、attrValue */
        private List<SpuBaseAttrVo> attrs;
    }
    @ToString
    @Data
    public class  SpuBaseAttrVo{
        private String attrName;
        private String attrValue;
    }
}

规格参数--连表查询

想获取规格参数的sql,把需要用到的字段可以起上别名

SELECT pav.`spu_id`,ag.`attr_group_name` gorupName,ag.`attr_group_id`,aar.`attr_id`,attr.`attr_name` attrName,pav.`attr_value` attrValue
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`=3

查询出来的结果

技术分享图片

 

 具体方法

技术分享图片

<!--有嵌套属性的时候要封装自定义结果集-->
    <resultMap id="spuItemAttrGroupVo" type="com.wuyimin.gulimall.product.vo.SpuItemAttrGroup">
        <result property="groupName" column="groupName"></result>
        <collection property="attrs" ofType="com.wuyimin.gulimall.product.vo.SpuBaseAttrVo">
            <result property="attrName" column="attrName"></result>
            <result property="attrValue" column="attrValue"></result>
        </collection>
    </resultMap>
    <select id="getAttrGroupWithAttrsBySpuId"
            resultMap="spuItemAttrGroupVo">
    SELECT pav.`spu_id`,ag.`attr_group_name` gorupName,ag.`attr_group_id`,aar.`attr_id`,attr.`attr_name` attrName,pav.`attr_value` attrValue
    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>

方法测试

    @Test
    void test(){
        List<SpuItemAttrGroup> attrGroupWithAttrsBySpuId = attrGroupDao.getAttrGroupWithAttrsBySpuId(3L, 225L);
        attrGroupWithAttrsBySpuId.forEach(System.out::println);
    }

测试结果

技术分享图片

 

21.商品详情

原文:https://www.cnblogs.com/wuyimin/p/15165952.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!