商城服务商品详情数据接口实现
This commit is contained in:
parent
7d20ddd53e
commit
0e994a168c
|
|
@ -1,27 +1,37 @@
|
|||
package com.xjs.mall.product.controller.web;
|
||||
|
||||
import com.xjs.mall.product.service.SkuInfoService;
|
||||
import com.xjs.mall.product.vo.sku.SkuItemVo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
|
||||
/**
|
||||
* 详情页面控制器
|
||||
*
|
||||
* @author xiejs
|
||||
* @since 2022-05-12
|
||||
*/
|
||||
@Controller
|
||||
public class ItemController {
|
||||
|
||||
@Autowired
|
||||
private SkuInfoService skuInfoService;
|
||||
|
||||
/**
|
||||
* 展示当前Sku的详情
|
||||
* @param skuId
|
||||
* @return
|
||||
*
|
||||
* @param skuId 商品id
|
||||
* @return 跳转
|
||||
*/
|
||||
@GetMapping("/{skuId}.html")
|
||||
public String skuItem(@PathVariable Long skuId) {
|
||||
public String skuItem(@PathVariable Long skuId, Model model) {
|
||||
|
||||
System.out.println(skuId);
|
||||
SkuItemVo vo = skuInfoService.item(skuId);
|
||||
|
||||
model.addAttribute("item", vo);
|
||||
|
||||
return "item";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,14 +2,25 @@ package com.xjs.mall.product.dao;
|
|||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xjs.mall.product.entity.AttrGroupEntity;
|
||||
import com.xjs.mall.product.vo.sku.SpuItemAttrGroupVo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 属性分组
|
||||
*
|
||||
*
|
||||
* @author xiejs
|
||||
* @email 1294405880@qq.com
|
||||
* @date 2022-03-15 10:16:53
|
||||
*/
|
||||
public interface AttrGroupDao extends BaseMapper<AttrGroupEntity> {
|
||||
|
||||
|
||||
/**
|
||||
* 通过 Spu Id 获取具有 Attrs 的 Attr 组
|
||||
*
|
||||
* @param spuId spuId
|
||||
* @return SpuItemAttrGroupVo
|
||||
*/
|
||||
List<SpuItemAttrGroupVo> getAttrGroupWithAttrsBySpuId(@Param("spuId") Long spuId, @Param("catalogId") Long catalogId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,14 +2,24 @@ package com.xjs.mall.product.dao;
|
|||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xjs.mall.product.entity.SkuSaleAttrValueEntity;
|
||||
import com.xjs.mall.product.vo.sku.SkuItemSaleAttrVo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* sku销售属性&值
|
||||
*
|
||||
*
|
||||
* @author xiejs
|
||||
* @email 1294405880@qq.com
|
||||
* @date 2022-03-15 10:16:53
|
||||
*/
|
||||
public interface SkuSaleAttrValueDao extends BaseMapper<SkuSaleAttrValueEntity> {
|
||||
|
||||
|
||||
/**
|
||||
* 通过 Spu Id 获取销售属性
|
||||
* @param spuId spuId
|
||||
* @return list
|
||||
*/
|
||||
List<SkuItemSaleAttrVo> getSaleAttrsBySpuId(@Param("spuId") Long spuId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.xjs.mall.product.service;
|
|||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xjs.mall.product.entity.AttrGroupEntity;
|
||||
import com.xjs.mall.product.vo.AttrGroupWithAttrsVo;
|
||||
import com.xjs.mall.product.vo.sku.SpuItemAttrGroupVo;
|
||||
import com.xjs.utils.PageUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -36,9 +37,18 @@ public interface AttrGroupService extends IService<AttrGroupEntity> {
|
|||
|
||||
/**
|
||||
* 根据分类id查出所有的分组以及这些组里面的属性
|
||||
*
|
||||
* @param categoryId 分类id
|
||||
* @return list
|
||||
*/
|
||||
List<AttrGroupWithAttrsVo> getAttrGroupWithAttrsByCatelogId(Long categoryId);
|
||||
|
||||
/**
|
||||
* 通过 Spu Id 获取具有 Attrs 的 Attr 组
|
||||
*
|
||||
* @param spuId spuId
|
||||
* @return SpuItemAttrGroupVo
|
||||
*/
|
||||
List<SpuItemAttrGroupVo> getAttrGroupWithAttrsBySpuId(Long spuId, Long catalogId);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ package com.xjs.mall.product.service;
|
|||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xjs.mall.product.entity.SkuImagesEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* sku图片
|
||||
*
|
||||
|
|
@ -12,5 +14,11 @@ import com.xjs.mall.product.entity.SkuImagesEntity;
|
|||
*/
|
||||
public interface SkuImagesService extends IService<SkuImagesEntity> {
|
||||
|
||||
/**
|
||||
* 按 Sku Id 获取图片
|
||||
* @param skuId skuid
|
||||
* @return image实体
|
||||
*/
|
||||
List<SkuImagesEntity> getImagesBySkuId(Long skuId);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.xjs.mall.product.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xjs.mall.product.vo.sku.SkuItemVo;
|
||||
import com.xjs.utils.PageUtils;
|
||||
import com.xjs.mall.product.entity.SkuInfoEntity;
|
||||
|
||||
|
|
@ -36,5 +37,12 @@ public interface SkuInfoService extends IService<SkuInfoEntity> {
|
|||
* @return list
|
||||
*/
|
||||
List<SkuInfoEntity> getSkusBySpuId(Long spuId);
|
||||
|
||||
/**
|
||||
* 查询商品详情
|
||||
* @param skuId 商品id
|
||||
* @return 商品详情vo
|
||||
*/
|
||||
SkuItemVo item(Long skuId);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,9 @@ package com.xjs.mall.product.service;
|
|||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xjs.mall.product.entity.SkuSaleAttrValueEntity;
|
||||
import com.xjs.mall.product.vo.sku.SkuItemSaleAttrVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* sku销售属性&值
|
||||
|
|
@ -12,5 +15,11 @@ import com.xjs.mall.product.entity.SkuSaleAttrValueEntity;
|
|||
*/
|
||||
public interface SkuSaleAttrValueService extends IService<SkuSaleAttrValueEntity> {
|
||||
|
||||
/**
|
||||
* 通过 Spu Id 获取销售属性
|
||||
* @param spuId spuId
|
||||
* @return list
|
||||
*/
|
||||
List<SkuItemSaleAttrVo> getSaleAttrsBySpuId(Long spuId);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import com.xjs.mall.product.service.AttrService;
|
|||
import com.xjs.mall.product.service.CategoryService;
|
||||
import com.xjs.mall.product.vo.AttrGroupResponseVo;
|
||||
import com.xjs.mall.product.vo.AttrGroupWithAttrsVo;
|
||||
import com.xjs.mall.product.vo.sku.SpuItemAttrGroupVo;
|
||||
import com.xjs.utils.PageUtils;
|
||||
import com.xjs.utils.Query;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
|
@ -82,11 +83,11 @@ public class AttrGroupServiceImpl extends ServiceImpl<AttrGroupDao, AttrGroupEnt
|
|||
//先查询中间表是否有数据,有数据代表该数据被引用,则不能删除
|
||||
List<AttrAttrgroupRelationEntity> relationEntityList = attrAttrgroupRelationService
|
||||
.list(new LambdaQueryWrapper<AttrAttrgroupRelationEntity>()
|
||||
.eq(AttrAttrgroupRelationEntity::getAttrGroupId, id));
|
||||
.eq(AttrAttrgroupRelationEntity::getAttrGroupId, id));
|
||||
|
||||
if (CollUtil.isEmpty(relationEntityList)) {
|
||||
super.removeById(id);
|
||||
}else {
|
||||
} else {
|
||||
throw new MallException("含有被引用的规格参数未删除,请先删除规格参数");
|
||||
}
|
||||
}
|
||||
|
|
@ -113,12 +114,19 @@ public class AttrGroupServiceImpl extends ServiceImpl<AttrGroupDao, AttrGroupEnt
|
|||
//2、查询所有属性
|
||||
return attrGroupEntities.stream().map(group -> {
|
||||
AttrGroupWithAttrsVo attrsVo = new AttrGroupWithAttrsVo();
|
||||
BeanUtils.copyProperties(group,attrsVo);
|
||||
BeanUtils.copyProperties(group, attrsVo);
|
||||
List<AttrEntity> attrs = attrService.getRelationAttr(attrsVo.getAttrGroupId());
|
||||
attrsVo.setAttrs(attrs);
|
||||
return attrsVo;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SpuItemAttrGroupVo> getAttrGroupWithAttrsBySpuId(Long spuId, Long catalogId) {
|
||||
//查出当前spu对应的所有属性的分组信息以及分组下的所有属性对应的值
|
||||
|
||||
return super.baseMapper.getAttrGroupWithAttrsBySpuId(spuId,catalogId);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,25 @@
|
|||
package com.xjs.mall.product.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.xjs.mall.product.dao.SkuImagesDao;
|
||||
import com.xjs.mall.product.entity.SkuImagesEntity;
|
||||
import com.xjs.mall.product.service.SkuImagesService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Service("skuImagesService")
|
||||
public class SkuImagesServiceImpl extends ServiceImpl<SkuImagesDao, SkuImagesEntity> implements SkuImagesService {
|
||||
|
||||
|
||||
@Override
|
||||
public List<SkuImagesEntity> getImagesBySkuId(Long skuId) {
|
||||
SkuImagesDao skuImagesDao = super.baseMapper;
|
||||
|
||||
return skuImagesDao.selectList(new LambdaQueryWrapper<SkuImagesEntity>()
|
||||
.eq(SkuImagesEntity::getSkuId, skuId));
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,14 +5,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.common.core.utils.StringUtils;
|
||||
import com.xjs.mall.product.dao.SkuInfoDao;
|
||||
import com.xjs.mall.product.entity.BrandEntity;
|
||||
import com.xjs.mall.product.entity.CategoryEntity;
|
||||
import com.xjs.mall.product.entity.SkuInfoEntity;
|
||||
import com.xjs.mall.product.entity.SpuInfoEntity;
|
||||
import com.xjs.mall.product.service.BrandService;
|
||||
import com.xjs.mall.product.service.CategoryService;
|
||||
import com.xjs.mall.product.service.SkuInfoService;
|
||||
import com.xjs.mall.product.service.SpuInfoService;
|
||||
import com.xjs.mall.product.entity.*;
|
||||
import com.xjs.mall.product.service.*;
|
||||
import com.xjs.mall.product.vo.sku.SkuItemSaleAttrVo;
|
||||
import com.xjs.mall.product.vo.sku.SkuItemVo;
|
||||
import com.xjs.mall.product.vo.sku.SpuItemAttrGroupVo;
|
||||
import com.xjs.mall.product.vo.spu.SkuInfoVo;
|
||||
import com.xjs.utils.PageUtils;
|
||||
import com.xjs.utils.Query;
|
||||
|
|
@ -34,6 +31,14 @@ public class SkuInfoServiceImpl extends ServiceImpl<SkuInfoDao, SkuInfoEntity> i
|
|||
private CategoryService categoryService;
|
||||
@Autowired
|
||||
private BrandService brandService;
|
||||
@Autowired
|
||||
private SkuImagesService skuImagesService;
|
||||
@Autowired
|
||||
private SpuInfoDescService spuInfoDescService;
|
||||
@Autowired
|
||||
private AttrGroupService attrGroupService;
|
||||
@Autowired
|
||||
private SkuSaleAttrValueService skuSaleAttrValueService;
|
||||
|
||||
@Override
|
||||
public void saveSkuInfo(SkuInfoEntity skuInfoEntity) {
|
||||
|
|
@ -93,8 +98,38 @@ public class SkuInfoServiceImpl extends ServiceImpl<SkuInfoDao, SkuInfoEntity> i
|
|||
@Override
|
||||
public List<SkuInfoEntity> getSkusBySpuId(Long spuId) {
|
||||
LambdaQueryWrapper<SkuInfoEntity> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(SkuInfoEntity::getSpuId,spuId);
|
||||
wrapper.eq(SkuInfoEntity::getSpuId, spuId);
|
||||
return super.list(wrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SkuItemVo item(Long skuId) {
|
||||
SkuItemVo skuItemVo = new SkuItemVo();
|
||||
|
||||
//1、spu基本信息获取 pms_sku_info
|
||||
SkuInfoEntity skuInfoEntity = this.getById(skuId);
|
||||
skuItemVo.setInfo(skuInfoEntity);
|
||||
|
||||
Long spuId = skuInfoEntity.getSpuId();
|
||||
Long catalogId = skuInfoEntity.getCatalogId();
|
||||
|
||||
//2、sku的图片信息 pms_sku_images
|
||||
List<SkuImagesEntity> skuImagesEntityList = skuImagesService.getImagesBySkuId(skuId);
|
||||
skuItemVo.setImages(skuImagesEntityList);
|
||||
|
||||
//3、获取spu的销售属性组合
|
||||
List<SkuItemSaleAttrVo> skuItemSaleAttrVoList = skuSaleAttrValueService.getSaleAttrsBySpuId(spuId);
|
||||
skuItemVo.setSaleAttr(skuItemSaleAttrVoList);
|
||||
|
||||
//4、获取spu的介绍
|
||||
SpuInfoDescEntity spuInfoDescEntity = spuInfoDescService.getById(spuId);
|
||||
skuItemVo.setDesc(spuInfoDescEntity);
|
||||
|
||||
//5、获取spu的规格参数信息
|
||||
List<SpuItemAttrGroupVo> attrGroupVos = attrGroupService.getAttrGroupWithAttrsBySpuId(spuId, catalogId);
|
||||
skuItemVo.setGroupAttrs(attrGroupVos);
|
||||
|
||||
return skuItemVo;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,20 +1,23 @@
|
|||
package com.xjs.mall.product.service.impl;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.Map;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.xjs.utils.PageUtils;
|
||||
import com.xjs.utils.Query;
|
||||
|
||||
import com.xjs.mall.product.dao.SkuSaleAttrValueDao;
|
||||
import com.xjs.mall.product.entity.SkuSaleAttrValueEntity;
|
||||
import com.xjs.mall.product.service.SkuSaleAttrValueService;
|
||||
import com.xjs.mall.product.vo.sku.SkuItemSaleAttrVo;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Service("skuSaleAttrValueService")
|
||||
public class SkuSaleAttrValueServiceImpl extends ServiceImpl<SkuSaleAttrValueDao, SkuSaleAttrValueEntity> implements SkuSaleAttrValueService {
|
||||
|
||||
|
||||
@Override
|
||||
public List<SkuItemSaleAttrVo> getSaleAttrsBySpuId(Long spuId) {
|
||||
SkuSaleAttrValueDao baseMapper = super.baseMapper;
|
||||
|
||||
return baseMapper.getSaleAttrsBySpuId(spuId);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
package com.xjs.mall.product.vo.sku;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.ToString;
|
||||
|
||||
/**
|
||||
* 带有 Sku Id VO 的 Attr 值
|
||||
* @author xiejs
|
||||
* @since 2022-05-12
|
||||
*/
|
||||
@Data
|
||||
@ToString
|
||||
public class AttrValueWithSkuIdVO {
|
||||
private String attrValue;
|
||||
|
||||
private String skuIds;
|
||||
}
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
package com.xjs.mall.product.vo.sku;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 秒杀 Sku Vo
|
||||
* @author xiejs
|
||||
* @since 2022-05-12
|
||||
*/
|
||||
@Data
|
||||
public class SeckillSkuVo {
|
||||
/**
|
||||
* 活动id
|
||||
*/
|
||||
private Long promotionId;
|
||||
/**
|
||||
* 活动场次id
|
||||
*/
|
||||
private Long promotionSessionId;
|
||||
/**
|
||||
* 商品id
|
||||
*/
|
||||
private Long skuId;
|
||||
/**
|
||||
* 秒杀价格
|
||||
*/
|
||||
private BigDecimal seckillPrice;
|
||||
/**
|
||||
* 秒杀总量
|
||||
*/
|
||||
private Integer seckillCount;
|
||||
/**
|
||||
* 每人限购数量
|
||||
*/
|
||||
private Integer seckillLimit;
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer seckillSort;
|
||||
|
||||
//当前商品秒杀的开始时间
|
||||
private Long startTime;
|
||||
|
||||
//当前商品秒杀的结束时间
|
||||
private Long endTime;
|
||||
|
||||
//当前商品秒杀的随机码
|
||||
private String randomCode;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
package com.xjs.mall.product.vo.sku;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.ToString;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Sku 项目销售 Attr Vo
|
||||
* @author xiejs
|
||||
* @since 2022-05-12
|
||||
*/
|
||||
@Data
|
||||
@ToString
|
||||
public class SkuItemSaleAttrVo {
|
||||
private Long attrId;
|
||||
|
||||
private String attrName;
|
||||
|
||||
private List<AttrValueWithSkuIdVO> attrValues;
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
package com.xjs.mall.product.vo.sku;
|
||||
|
||||
import com.xjs.mall.product.entity.SkuImagesEntity;
|
||||
import com.xjs.mall.product.entity.SkuInfoEntity;
|
||||
import com.xjs.mall.product.entity.SpuInfoDescEntity;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.ToString;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 商品详情vo
|
||||
* @author xiejs
|
||||
* @since 2022-05-12
|
||||
*/
|
||||
@Data
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class SkuItemVo {
|
||||
//1、sku基本信息的获取 pms_sku_info
|
||||
private SkuInfoEntity info;
|
||||
|
||||
private boolean hasStock = true;
|
||||
|
||||
//2、sku的图片信息 pms_sku_images
|
||||
private List<SkuImagesEntity> images;
|
||||
|
||||
//3、获取spu的销售属性组合
|
||||
private List<SkuItemSaleAttrVo> saleAttr;
|
||||
|
||||
//4、获取spu的介绍
|
||||
private SpuInfoDescEntity desc;
|
||||
|
||||
//5、获取spu的规格参数信息
|
||||
private List<SpuItemAttrGroupVo> groupAttrs;
|
||||
|
||||
//6、秒杀商品的优惠信息
|
||||
private SeckillSkuVo seckillSkuVo;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.xjs.mall.product.vo.sku;
|
||||
|
||||
import com.xjs.mall.product.vo.spu.Attr;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Spu 项目属性组 Vo
|
||||
* @author xiejs
|
||||
* @since 2022-05-12
|
||||
*/
|
||||
@Data
|
||||
public class SpuItemAttrGroupVo {
|
||||
private String groupName;
|
||||
|
||||
private List<Attr> attrs;
|
||||
}
|
||||
|
|
@ -13,5 +13,28 @@
|
|||
<result property="catelogId" column="catelog_id"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="spuAttrGroup" type="com.xjs.mall.product.vo.sku.SpuItemAttrGroupVo">
|
||||
<result property="groupName" column="attr_group_name"/>
|
||||
<collection property="attrs" ofType="com.xjs.mall.product.vo.spu.Attr">
|
||||
<result property="attrId" column="attr_id"/>
|
||||
<result property="attrName" column="attr_name"/>
|
||||
<result property="attrValue" column="attr_value"/>
|
||||
</collection>
|
||||
</resultMap>
|
||||
|
||||
</mapper>
|
||||
|
||||
<select id="getAttrGroupWithAttrsBySpuId" resultMap="spuAttrGroup">
|
||||
SELECT product.spu_id,
|
||||
pag.attr_group_id,
|
||||
pag.attr_group_name,
|
||||
product.attr_id,
|
||||
product.attr_name,
|
||||
product.attr_value
|
||||
FROM pms_product_attr_value product
|
||||
LEFT JOIN pms_attr_attrgroup_relation paar ON product.attr_id = paar.attr_id
|
||||
LEFT JOIN pms_attr_group pag ON paar.attr_group_id = pag.attr_group_id
|
||||
WHERE product.spu_id = #{spuId}
|
||||
AND pag.catelog_id = #{catalogId}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
<mapper namespace="com.xjs.mall.product.dao.SkuSaleAttrValueDao">
|
||||
|
||||
<!-- 可根据自己的需求,是否要使用 -->
|
||||
<!-- 可根据自己的需求,是否要使用 -->
|
||||
<resultMap type="com.xjs.mall.product.entity.SkuSaleAttrValueEntity" id="skuSaleAttrValueMap">
|
||||
<result property="id" column="id"/>
|
||||
<result property="skuId" column="sku_id"/>
|
||||
|
|
@ -13,5 +13,27 @@
|
|||
<result property="attrSort" column="attr_sort"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="skuItemSaleAttrVo" type="com.xjs.mall.product.vo.sku.SkuItemSaleAttrVo">
|
||||
<result column="attr_id" property="attrId"></result>
|
||||
<result column="attr_name" property="attrName"></result>
|
||||
<collection property="attrValues" ofType="com.xjs.mall.product.vo.sku.AttrValueWithSkuIdVO">
|
||||
<result column="attr_value" property="attrValue"></result>
|
||||
<result column="sku_ids" property="skuIds"></result>
|
||||
</collection>
|
||||
</resultMap>
|
||||
|
||||
</mapper>
|
||||
<select id="getSaleAttrsBySpuId" resultMap="skuItemSaleAttrVo">
|
||||
SELECT ssav.attr_id attr_id,
|
||||
ssav.attr_name attr_name,
|
||||
ssav.attr_value,
|
||||
group_concat(DISTINCT info.sku_id ) sku_ids
|
||||
FROM pms_sku_info info
|
||||
LEFT JOIN pms_sku_sale_attr_value ssav ON ssav.sku_id = info.sku_id
|
||||
WHERE info.spu_id = #{spuId}
|
||||
GROUP BY ssav.attr_id,
|
||||
ssav.attr_name,
|
||||
ssav.attr_value
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
package com.xjs.mall.product.service.impl;
|
||||
|
||||
import com.xjs.mall.product.MallProductApp;
|
||||
import com.xjs.mall.product.service.AttrGroupService;
|
||||
import com.xjs.mall.product.vo.sku.SpuItemAttrGroupVo;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xiejs
|
||||
* @since 2022-05-12
|
||||
*/
|
||||
@SpringBootTest(classes = MallProductApp.class)
|
||||
class AttrGroupServiceImplTest {
|
||||
|
||||
@Autowired
|
||||
private AttrGroupService attrGroupService;
|
||||
|
||||
@Test
|
||||
void getAttrGroupWithAttrsBySpuId() {
|
||||
List<SpuItemAttrGroupVo> group = attrGroupService.getAttrGroupWithAttrsBySpuId(1505547655116955650L, 225L);
|
||||
|
||||
System.out.println(group);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package com.xjs.mall.product.service.impl;
|
||||
|
||||
import com.xjs.mall.product.MallProductApp;
|
||||
import com.xjs.mall.product.service.SkuSaleAttrValueService;
|
||||
import com.xjs.mall.product.vo.sku.SkuItemSaleAttrVo;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
/**
|
||||
* @author xiejs
|
||||
* @since 2022-05-12
|
||||
*/
|
||||
@SpringBootTest(classes = MallProductApp.class)
|
||||
class SkuSaleAttrValueServiceImplTest {
|
||||
|
||||
@Autowired
|
||||
private SkuSaleAttrValueService skuSaleAttrValueService;
|
||||
|
||||
@Test
|
||||
void getSaleAttrsBySpuId() {
|
||||
List<SkuItemSaleAttrVo> saleAttrsBySpuId = skuSaleAttrValueService.getSaleAttrsBySpuId(1505566927104974849L);
|
||||
System.out.println(saleAttrsBySpuId);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue