尚品汇-(十八)

目录:

(1)实现商品切换

(2)获取海报信息

(3)Sku对应的平台属性


 

(1)实现商品切换(查询属性切换)

sku_sale_attr_value表: 

 

 

排序字段跟跟前面写的获取销售信息的排序字段一样 

 

实现思路:

1 、从页面中获得得所有选中的销售属性进行组合比如:

“属性值1|属性值2” 用这个字符串匹配一个对照表,来获得skuId。并进行跳转,或者告知无货。

2、后台要生成一个“属性值1|属性值2:skuId”的一个json串以提供页面进行匹配。如

3、需要从后台数据库查询出该spu下的所有skuId和属性值关联关系。然后加工成如上的Json串,用该json串,跟前台匹配。

SkuSaleAttrValueMapper中添加接口

数据有多行,用List《Map》 接收

// 根据spuId 查询map 集合数据
List<Map> selectSaleAttrValuesBySpu(Long spuId);

创建SkuSaleAttrValueMapper.xml

<!--定义Map的resultMap-->
<resultMap id="spuValueIdsMap" type="java.util.Map" autoMapping="true">

</resultMap>
<select id="selectSaleAttrValuesBySpu" resultMap="spuValueIdsMap">
  SELECT sku_id  , GROUP_CONCAT(sale_attr_value_id  ORDER BY sp.base_sale_attr_id ASC SEPARATOR '|') value_ids
     FROM  `sku_sale_attr_value` sv
     INNER JOIN `spu_sale_attr_value` sp on sp.id = sv.sale_attr_value_id
     WHERE sv.spu_id=#{spuId}
     GROUP BY sku_id
</select>

继续添加ManageService接口 

/**
 * 根据spuId 查询map 集合属性
 * @param spuId
 * @return
 */
Map getSkuValueIdsMap(Long spuId);

实现类

@Override
public Map getSkuValueIdsMap(Long spuId) {
    Map<Object, Object> map = new HashMap<>();
    // key = 125|123 ,value = 37
    List<Map> mapList = skuSaleAttrValueMapper.selectSaleAttrValuesBySpu(spuId);
    if (mapList != null && mapList.size() > 0) {
        // 循环遍历
        for (Map skuMap : mapList) {
            // key = 125|123 ,value = 37
            map.put(skuMap.get("value_ids"), skuMap.get("sku_id"));
        }
    }
    return map;
}

把list集合里面的多个map整合成一个map对象:前一个做key 后一个value

 

继续编写控制器ProductApiController:

/**
 * 根据spuId 查询map 集合属性
 * @param spuId
 * @return
 */
@GetMapping("inner/getSkuValueIdsMap/{spuId}")
public Map getSkuValueIdsMap(@PathVariable("spuId") Long spuId){
    return manageService.getSkuValueIdsMap(spuId);
}

 

 

(2)获取海报信息

继续在ManagerService编写接口

/**
 * 根据spuid获取商品海报
 * @param spuId
 * @return
 */
List<SpuPoster> findSpuPosterBySpuId(Long spuId);

实现类ManagerServiceImpl

@Override
public List<SpuPoster> findSpuPosterBySpuId(Long spuId) {
    QueryWrapper<SpuPoster> spuInfoQueryWrapper = new QueryWrapper<>();
    spuInfoQueryWrapper.eq("spu_id",spuId);
    List<SpuPoster> spuPosterList = spuPosterMapper.selectList(spuInfoQueryWrapper);
    return spuPosterList;
}

编写控制器

//  根据spuId 获取海报数据
@GetMapping("inner/findSpuPosterBySpuId/{spuId}")
public List<SpuPoster> findSpuPosterBySpuId(@PathVariable Long spuId){
    return manageService.findSpuPosterBySpuId(spuId);
}

 

 

(3)Sku对应的平台属性

 

显示在商品详情规格处

编写接口ManageService

/**
 * 通过skuId 集合来查询数据
 * @param skuId
 * @return
 */
List<BaseAttrInfo> getAttrList(Long skuId);

与实现类

@Override
public List<BaseAttrInfo> getAttrList(Long skuId) {

    return baseAttrInfoMapper.selectBaseAttrInfoListBySkuId(skuId);
}

BaseAttrInfoMapper 添加方法

  /**
     *
     * @param skuId
     */
    List<BaseAttrInfo> selectBaseAttrInfoListBySkuId(@Param("skuId")Long skuId);

BaseAttrInfoMapper.xml添加

<select id="selectBaseAttrInfoListBySkuId" resultMap="baseAttrInfoMap">
    SELECT
    bai.id,
    bai.attr_name,
    bai.category_id,
    bai.category_level,
    bav.id attr_value_id,
    bav.value_name,
    bav.attr_id
    FROM
    base_attr_info bai
    INNER JOIN base_attr_value bav ON bai.id = bav.attr_id
    INNER JOIN sku_attr_value sav ON sav.value_id = bav.id
    WHERE
    sav.sku_id = #{skuId}
</select>

编写控制器ProductApiController

/**
 * 通过skuId 集合来查询数据
 * @param skuId
 * @return
 */
@GetMapping("inner/getAttrList/{skuId}")
public List<BaseAttrInfo> getAttrList(@PathVariable("skuId") Long skuId){
    return manageService.getAttrList(skuId);
}

 

 

说明:目前我们在service-product里面把数据模型已经封装好了,接下封装feign client api接口,提供给service-item微服务调用汇总数据模型

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵俺第一专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值