后端:增加 H5 需要的商品推荐接口

This commit is contained in:
YunaiV
2019-03-31 18:43:40 +08:00
parent b333340c20
commit 6699bd34a8
10 changed files with 207 additions and 23 deletions

View File

@@ -1,12 +1,16 @@
package cn.iocoder.mall.product.api;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.product.api.bo.ProductSpuBO;
import cn.iocoder.mall.product.api.bo.ProductSpuDetailBO;
import cn.iocoder.mall.product.api.bo.ProductSpuPageBO;
import cn.iocoder.mall.product.api.dto.ProductSpuAddDTO;
import cn.iocoder.mall.product.api.dto.ProductSpuPageDTO;
import cn.iocoder.mall.product.api.dto.ProductSpuUpdateDTO;
import java.util.Collection;
import java.util.List;
public interface ProductSpuService {
CommonResult<ProductSpuDetailBO> getProductSpu(Integer id);
@@ -19,4 +23,6 @@ public interface ProductSpuService {
CommonResult<ProductSpuPageBO> getProductSpuPage(ProductSpuPageDTO productSpuPageDTO);
CommonResult<List<ProductSpuBO>> getProductSpuList(Collection<Integer> ids);
}

View File

@@ -4,6 +4,7 @@ import cn.iocoder.mall.product.dataobject.ProductSpuDO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.Collection;
import java.util.List;
@Repository
@@ -11,6 +12,8 @@ public interface ProductSpuMapper {
ProductSpuDO selectById(Integer id);
List<ProductSpuDO> selectByIds(Collection<Integer> ids);
void insert(ProductSpuDO productSpuDO);
void update(ProductSpuDO productSpuDO);

View File

@@ -7,6 +7,7 @@ import cn.iocoder.common.framework.util.StringUtil;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.product.api.ProductSpuService;
import cn.iocoder.mall.product.api.bo.ProductAttrAndValuePairBO;
import cn.iocoder.mall.product.api.bo.ProductSpuBO;
import cn.iocoder.mall.product.api.bo.ProductSpuDetailBO;
import cn.iocoder.mall.product.api.bo.ProductSpuPageBO;
import cn.iocoder.mall.product.api.constant.ProductErrorCodeEnum;
@@ -212,6 +213,19 @@ public class ProductSpuServiceImpl implements ProductSpuService {
return CommonResult.success(productSpuPage);
}
@Override
public CommonResult<List<ProductSpuBO>> getProductSpuList(Collection<Integer> ids) {
List<ProductSpuDO> spus = productSpuMapper.selectByIds(ids);
return CommonResult.success(ProductSpuConvert.INSTANCE.convert(spus));
}
/**
* 校验 sku 是否合法
*
* @param productSkuAddDTOs sku 添加或修改信息
* @param productAttrDetailBOs 商品规格明细数组
* @return 是否校验通过
*/
private CommonResult<Boolean> validProductSku(List<ProductSkuAddOrUpdateDTO> productSkuAddDTOs, List<ProductAttrAndValuePairBO> productAttrDetailBOs) {
// 创建 ProductAttrDetailBO 的映射。其中KEY 为 ProductAttrDetailBO.attrValueId ,即规格值的编号
Map<Integer, ProductAttrAndValuePairBO> productAttrDetailBOMap = productAttrDetailBOs.stream().collect(
@@ -241,6 +255,13 @@ public class ProductSpuServiceImpl implements ProductSpuService {
return CommonResult.success(true);
}
/**
* 获得 sku 数组中,指定规格的 sku
*
* @param attrs 指定规格
* @param skus sku 数组
* @return 符合条件的 sku
*/
private ProductSkuDO findProductSku(Collection<Integer> attrs, List<ProductSkuDO> skus) {
if (CollectionUtil.isEmpty(skus)) {
return null;
@@ -256,6 +277,12 @@ public class ProductSpuServiceImpl implements ProductSpuService {
return null;
}
/**
* 根据 sku 数组,计算相关的字段到 spu 中。
*
* @param spu spu
* @param skus sku 数组
*/
private void initSpuFromSkus(ProductSpuDO spu, List<ProductSkuAddOrUpdateDTO> skus) {
assert skus.size() > 0; // 写个断言,避免下面警告
spu.setPrice(skus.stream().min(Comparator.comparing(ProductSkuAddOrUpdateDTO::getPrice)).get().getPrice()); // 求最小价格

View File

@@ -16,6 +16,17 @@
AND deleted = 0
</select>
<select id="selectByIds" resultType="ProductSpuDO">
SELECT
<include refid="FIELDS" />
FROM product_spu
WHERE id IN
<foreach item="id" collection="ids" separator="," open="(" close=")" index="">
#{id}
</foreach>
AND deleted = 0
</select>
<insert id="insert" parameterType="ProductSpuDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
INSERT INTO product_spu (
name, sell_point, description, cid, pic_urls,