mall中商品设计
2022年12月24日约 398 字大约 1 分钟
mall中商品设计
该篇文章主要参考mall官方文档,并结合自己的使用感受做的一些笔记
1. 简介
2. 接口设计
2.1 获取商品详情
- 获取商品的基础信息
- 获取品牌信息
- 获取商品属性信息
- 获取商品SKU库存信息
- 商品阶梯价格设置
- 商品满减价格设置
- 商品可用优惠券
@Override
public PmsPortalProductDetail detail(Long id) {
PmsPortalProductDetail result = new PmsPortalProductDetail();
//获取商品信息
PmsProduct product = productMapper.selectByPrimaryKey(id);
result.setProduct(product);
//获取品牌信息
PmsBrand brand = brandMapper.selectByPrimaryKey(product.getBrandId());
result.setBrand(brand);
//获取商品属性信息
Long productAttributeCategoryId = product.getProductAttributeCategoryId();
if(productAttributeCategoryId != null){
PmsProductAttributeExample attributeExample = new PmsProductAttributeExample();
attributeExample.createCriteria().andProductAttributeCategoryIdEqualTo(productAttributeCategoryId);
List<PmsProductAttribute> productAttributeList = productAttributeMapper.selectByExample(attributeExample);
result.setProductAttributeList(productAttributeList);
//获取商品属性值信息
if(CollUtil.isNotEmpty(productAttributeList)){
List<Long> attributeIds = productAttributeList.stream().map(PmsProductAttribute::getId).collect(Collectors.toList());
PmsProductAttributeValueExample attributeValueExample = new PmsProductAttributeValueExample();
attributeValueExample.createCriteria().andProductIdEqualTo(product.getId())
.andProductAttributeIdIn(attributeIds);
List<PmsProductAttributeValue> productAttributeValueList = productAttributeValueMapper.selectByExample(attributeValueExample);
result.setProductAttributeValueList(productAttributeValueList);
}
}
//获取商品SKU库存信息
PmsSkuStockExample skuExample = new PmsSkuStockExample();
skuExample.createCriteria().andProductIdEqualTo(product.getId());
List<PmsSkuStock> skuStockList = skuStockMapper.selectByExample(skuExample);
result.setSkuStockList(skuStockList);
//商品阶梯价格设置
if(product.getPromotionType()==3){
PmsProductLadderExample ladderExample = new PmsProductLadderExample();
ladderExample.createCriteria().andProductIdEqualTo(product.getId());
List<PmsProductLadder> productLadderList = productLadderMapper.selectByExample(ladderExample);
result.setProductLadderList(productLadderList);
}
//商品满减价格设置
if(product.getPromotionType()==4){
PmsProductFullReductionExample fullReductionExample = new PmsProductFullReductionExample();
fullReductionExample.createCriteria().andProductIdEqualTo(product.getId());
List<PmsProductFullReduction> productFullReductionList = productFullReductionMapper.selectByExample(fullReductionExample);
result.setProductFullReductionList(productFullReductionList);
}
//商品可用优惠券
result.setCouponList(portalProductDao.getAvailableCouponList(product.getId(),product.getProductCategoryId()));
return result;
}
2.1.1 获取可用优惠券列表
获取具体商品的可用优惠券,
<select id="getAvailableCouponList" resultMap="com.macro.mall.mapper.SmsCouponMapper.BaseResultMap">
SELECT *
FROM sms_coupon
WHERE use_type = 0
AND start_time < NOW()
AND end_time > NOW()
UNION
(
SELECT c.*
FROM sms_coupon_product_category_relation cpc
LEFT JOIN sms_coupon c ON cpc.coupon_id = c.id
WHERE c.use_type = 1
AND c.start_time < NOW()
AND c.end_time > NOW()
AND cpc.product_category_id = #{productCategoryId}
)
UNION
(
SELECT c.*
FROM sms_coupon_product_relation cp
LEFT JOIN sms_coupon c ON cp.coupon_id = c.id
WHERE c.use_type = 2
AND c.start_time < NOW()
AND c.end_time > NOW()
AND cp.product_id = #{productId}
)
</select>
Powered by Waline v2.9.1