商城电商day 06 三、商品详情业务需求分析

day 06 三、商品详情业务需求分析

 商品详情页,简单说就是以购物者的角度展现一个sku的详情信息。
 用户点击不同的销售属性值切换不同的商品
 点击添加购物车,将商品放入购物车列表中
 另外一个特点就是该页面的高访问量,虽然只是一个查询操作,但是由于频繁的访问所以我们必须对其性能进行最大程度的优化。

在这里插入图片描述

分析用到那几张表

SQL语句

控制层

业务层Dao层

难点

3.2 详情模块规划

模块规划思路:
1,service-item微服务模块封装详情页面所需数据接口;
2,service-item通过feign client调用其他微服务数据接口进行数据汇总;
3,Pc端前台页面通过web-all调用service-item数据接口渲染页面;
4,service-item可以为ps端、H5、安卓与ios等前端应用提供数据接口,web-all为ps端页面渲染形式
5,service-item获取商品信息需要调用service-product服务sku信息等;
6,由于service各微服务可能会相互调用,调用方式都是通过feign client调用,所以我们把feign client api接口单独封装出来,需要时直接引用feign client api模块接口即可,即需创建service-client父模块,管理各service微服务feign client api接口。

4.1.3 service-item服务接口封装

商品详情所需构建的数据如下:
1,Sku基本信息
2,Sku图片信息
3,Sku分类信息
4,Sku销售属性相关信息
5,Sku价格信息(平台可以单独修改价格,sku后续会放入缓存,为了回显最新价格,所以单独获取)

四、商品详情功能开发

4.1.3 service-item服务接口封装

总结

item 模块 ItemService

    /**
    *将sku详情信息查出来
		//调用productFeignClient来获取
     * 获取sku详情信息
     * sku是什么类型  由于item做汇总 把查到的数据汇总到map中来
     * 这样前端也可以或取到 就用map来做返回类型
     * 那么  参数是什么 skuid
     */

    Map<String,Object>  getBySkuId(Long skuId);

ItemApiController

 /**
     * 获取sku详情信息 返回值是一个组合的map用Result
     * @param skuId
     * @return
     */
    //返回值要注意 Result
    @GetMapping("{skuId}")
    public Result getBySkuId(@PathVariable Long skuId){
   
        Map<String, Object> bySkuId = itemService.getBySkuId(skuId);
        return Result.ok(bySkuId);
    }

说明:商品详情相关信息在service-product微服务都可以获取,所以我们在service-product模块编写所需要的接口

4.2 转到service-product模块在service-product微服务提供api接口

4.2.1 获取sku基本信息与图片信息

分析用到那几张表
spu_info(商品表) category3_id(三级分类Id) tm_id(品牌Id)
SQL语句

控制层

业务层Dao层

难点

总结

返回值SkuInfo
在这里插入图片描述

接口

/**
     * 根据skuId 查询skuInfo 返回值是SkuInfo 
     * @param skuId
     * @return
     */
    SkuInfo getSkuInfo(Long skuId);

实现类 **问题为什么没有直接 连同把这两个属性查出来 **

	@TableField(exist = false)
	List<SkuAttrValue> skuAttrValueList;

skuAttrValue是这个样子 sku_attr_value(平台属性值关联表) 不需要显示在详情页面
在这里插入图片描述

@TableField(exist = false)
	List<SkuSaleAttrValue> skuSaleAttrValueList;

SkuSaleAttrValue 同样是一个关联表 sku_sale_attr_value(sku销售属性值表)
在这里插入图片描述
记得要在返回skuInfo前判断,解决空指针异常!

 //  解决空指针异常!
        if (skuInfo!=null){
   
            skuInfo.setSkuImageList(imageList);
        }
    @Override
    public SkuInfo getSkuInfo(Long skuId) {
   
        //实现类怎默写呢 有id直接用
        SkuInfo skuInfo = skuInfoMapper.selectById(skuId);
        QueryWrapper<SkuImage> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("sku_id",skuId);
        List<SkuImage> imageList = skuImageMapper.selectList(queryWrapper);
        //如何返回呢? 看实体类
        skuInfo.setSkuImageList(imageList);
        if (skuInfo!=null){
   
            skuInfo.setSkuImageList(imageList);
        }
        return skuInfo;
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

明月常新

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

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

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

打赏作者

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

抵扣说明:

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

余额充值