谷粒商城—商城业务—商品详情(203~210)(完)

编程入门 行业动态 更新时间:2024-10-24 18:18:07

<a href=https://www.elefans.com/category/jswz/34/1767485.html style=谷粒商城—商城业务—商品详情(203~210)(完)"/>

谷粒商城—商城业务—商品详情(203~210)(完)

一.商品查询 模型抽取:

      1.SkuItemVo 类: (总 VO)

/*** @Author zhangsan* @Date 2021/4/9 9:15 上午* @Version 1.0*/
@Data
@ToString
public class SkuItemVo {//1。查询 sku 基本信息SkuInfoEntity skuInfoEntity;//2。查询 sku 图片信息List<SkuImagesEntity> skuImagesEntityList;//是否有货boolean hasStock;//3。spu 销售属性组合信息List<SkuItemSaleAttrVo> skuItemSaleAttrVoList;//4。spu 介绍SpuInfoDescEntity spuInfoDescEntity;//5。spu 规格参数信息List<SpuItemAttrGroupVo> spuItemAttrGroupVoList;}

      2.SkuItemSaleAttrVo 类:(销售属性 VO) 

/*** 销售属性 vo** @Author zhangsan* @Date 2021/4/9 10:49 上午* @Version 1.0*/
@ToString
@Data
public class SkuItemSaleAttrVo {private Long attrId;private String attrName;private String attrValues;private String sku_id;}

       3.SpuItemAttrGroupVo 类:(规格参数信息 VO) 

/*** @Author zhangsan* @Date 2021/4/9 10:47 上午* @Version 1.0*/
@ToString
@Data
public class SpuItemAttrGroupVo {private String groupName;private List<SpuBaseAttrVo> spuBaseAttrVos;}

        4.SpuBaseAttrVo 类:(规格参数信息 详情 VO) 

/*** @Author zhangsan* @Date 2021/4/9 10:48 上午* @Version 1.0*/
@ToString
@Data
public class SpuBaseAttrVo {private String attrName;private String attrValue;
}

 

二.Controller:

    @Autowiredprivate SkuInfoService skuInfoService;@RequestMapping(value = "/{skuId}.html")public R skuItem(@PathVariable(value = "skuId") Long skuId) {System.out.println("准备查询 sku:" + skuId);SkuItemVo skuItemVo = skuInfoService.skuItem(skuId);return R.ok().put("data", skuItemVo);}

 

三.Service:

       1.总 Service:

    @Autowiredprivate SkuInfoDao skuInfoDao;@Autowiredprivate SkuImagesService skuImagesService;@Autowiredprivate SkuInfoService skuInfoService;@Autowiredprivate AttrGroupService attrGroupService;@Autowiredprivate SkuSaleAttrValueService skuSaleAttrValueService;@Overridepublic SkuItemVo skuItem(Long skuId) {SkuItemVo skuItemVo = new SkuItemVo();//1。查询 sku 基本信息SkuInfoEntity skuInfoEntity = skuInfoDao.selectById(skuId);skuItemVo.setSkuInfoEntity(skuInfoEntity);//2。查询 sku 图片信息List<SkuImagesEntity> skuImagesEntityList = skuImagesService.selectListById(skuId);skuItemVo.setSkuImagesEntityList(skuImagesEntityList);//3。spu 销售属性组合信息List<SkuItemSaleAttrVo> skuItemSaleAttrVoList = skuSaleAttrValueService.getSaleAttrsById(skuInfoEntity.getSpuId());skuItemVo.setSkuItemSaleAttrVoList(skuItemSaleAttrVoList);//4。spu 介绍Long spuId = skuInfoEntity.getSpuId();SkuInfoEntity byId = skuInfoService.getById(spuId);skuItemVo.setSkuInfoEntity(byId);//5。spu 规格参数信息List<SpuItemAttrGroupVo> spuItemAttrGroupVoList = attrGroupService.getAttrGroupWithAttrsBySpuId(spuId, skuInfoEntity.getCatalogId());skuItemVo.setSpuItemAttrGroupVoList(spuItemAttrGroupVoList);return skuItemVo;}

       2.  //3。spu 销售属性组合信息:

                 1)Dao 接口:

    @Overridepublic List<SkuItemSaleAttrVo> getSaleAttrsById(Long spuId) {SkuSaleAttrValueDao skuSaleAttrValueDao = this.baseMapper;List<SkuItemSaleAttrVo> skuItemSaleAttrVoList = skuSaleAttrValueDao.getSaleAttrsById(spuId);return skuItemSaleAttrVoList;}

                 2)Mappper :

    <resultMap id="getSaleAttrsByIdResultMap" type="com.guigu.gulimail.product.vo.SkuItemSaleAttrVo"><id property="attrId" column="attr_id"></id><result property="attrName" column="attr_name"></result><result property="attrValues" column="attr_values"/><result property="sku_id" column="sku_id"></result></resultMap><!--使用 别名 或者 result ,都可以 将 sql 结果,封装到 vo--><select id="getSaleAttrsById" resultMap="getSaleAttrsByIdResultMap">SELECT pssav.attr_id    attr_id,pssav.attr_name  attr_name,pssav.attr_value attr_values,GROUP_CONCAT(DISTINCT psi.sku_id) sku_idfrom pms_sku_info psileft join pms_sku_sale_attr_value pssav onpsi.sku_id = pssav.sku_idWHERE psi.spu_id = #{spuId}GROUP by attr_id,attr_name,attr_value</select>

       3.  //5。spu 规格参数信息

                 1)Dao 接口:

    @Overridepublic List<SpuItemAttrGroupVo> getAttrGroupWithAttrsBySpuId(Long spuId, Long catelogId) {//查询出 当前 spu 对应的 所有属性分组信息,以及当前分组下的所有属性对应的值。AttrGroupDao attrGroupDao = this.baseMapper;List<SpuItemAttrGroupVo> spuItemAttrGroupVoList= attrGroupDao.getAttrGroupWithAttrsBySpuId(spuId, catelogId);return spuItemAttrGroupVoList;}

                 2)Mapper 实现:

    List<SpuItemAttrGroupVo> getAttrGroupWithAttrsBySpuId(@Param(value = "spuId") Long spuId,@Param(value = "catelogId") Long catelogId);
    <resultMap id="myResultMap" type="com.guigu.gulimail.product.vo.SpuItemAttrGroupVo"><result property="groupName" column="attr_group_name"/><collection property="spuBaseAttrVos" ofType="com.guigu.gulimail.product.vo.SpuBaseAttrVo"><result property="attrName" column="attr_name"/><result property="attrValue" column="attr_value"/></collection></resultMap><select id="getAttrGroupWithAttrsBySpuId" resultMap="myResultMap">SELECT ag.attr_group_name,ag.attr_group_id,aar.attr_id,pa.attr_name,ppav.attr_valuefrom pms_attr_group agLEFT JOIN pms_attr_attrgroup_relation aar onag.attr_group_id = aar.attr_group_idLEFT JOIN pms_attr pa onpa.attr_id = aar.attr_idLEFT JOIN pms_product_attr_value ppav onpa.attr_id = ppav.attr_idwhere ag.catelog_id = #{catelogId}and ppav.spu_id = #{spuId}</select>

四.使用 线程池 异步编排 Service:

@Service
public class SkuInfoServiceImpl extends ServiceImpl<SkuInfoDao, SkuInfoEntity> implements SkuInfoService {@Autowiredprivate ThreadPoolExecutor executor;@Overridepublic SkuItemVo skuItem(Long skuId) throws ExecutionException, InterruptedException {SkuItemVo skuItemVo = new SkuItemVo();//CompletableFuture--1CompletableFuture<SkuInfoEntity> voidCompletableFuture1 = CompletableFuture.supplyAsync(() -> {//1。查询 sku 基本信息SkuInfoEntity skuInfoEntity = skuInfoDao.selectById(skuId);skuItemVo.setSkuInfoEntity(skuInfoEntity);return skuInfoEntity;}, executor);//CompletableFuture--2CompletableFuture<Void> voidCompletableFuture3 = voidCompletableFuture1.thenAcceptAsync((skuInfoEntity) -> {//3。spu 销售属性组合信息List<SkuItemSaleAttrVo> skuItemSaleAttrVoList = skuSaleAttrValueService.getSaleAttrsById(skuInfoEntity.getSpuId());skuItemVo.setSkuItemSaleAttrVoList(skuItemSaleAttrVoList);});//CompletableFuture--2CompletableFuture<Void> voidCompletableFuture4 = voidCompletableFuture1.thenAcceptAsync((skuInfoEntity) -> {//4。spu 介绍Long spuId = skuInfoEntity.getSpuId();SkuInfoEntity byId = skuInfoService.getById(spuId);skuItemVo.setSkuInfoEntity(byId);});//CompletableFuture--2CompletableFuture<Void> voidCompletableFuture5 = voidCompletableFuture1.thenAcceptAsync((skuInfoEntity) -> {//5。spu 规格参数信息List<SpuItemAttrGroupVo> spuItemAttrGroupVoList = attrGroupService.getAttrGroupWithAttrsBySpuId(skuInfoEntity.getSpuId(), skuInfoEntity.getCatalogId());skuItemVo.setSpuItemAttrGroupVoList(spuItemAttrGroupVoList);});//CompletableFuture--3CompletableFuture<Void> voidCompletableFuture2 = CompletableFuture.runAsync(() -> {//2。查询 sku 图片信息List<SkuImagesEntity> skuImagesEntityList = skuImagesService.selectListById(skuId);skuItemVo.setSkuImagesEntityList(skuImagesEntityList);}, executor);//等 所有都执行完,才返回CompletableFuture.allOf(voidCompletableFuture1,voidCompletableFuture2,voidCompletableFuture3,voidCompletableFuture4,voidCompletableFuture5).get();return skuItemVo;}}


             

更多推荐

谷粒商城—商城业务—商品详情(203~210)(完)

本文发布于:2023-07-28 20:53:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1310143.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:谷粒   商城   详情   业务   商品

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!