增加商品库存验证,增加如果有sku则同步sku总库存与最小价格

This commit is contained in:
hupeng
2020-05-27 17:52:07 +08:00
parent 7b657862c4
commit 8f7b362b07
2 changed files with 34 additions and 13 deletions

View File

@ -10,12 +10,9 @@ import cn.hutool.core.bean.copier.CopyOptions;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.*;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.*;
import java.io.Serializable;
import java.math.BigDecimal;
@ -24,8 +21,13 @@ import java.math.BigDecimal;
* @date 2020-05-12
*/
@Data
@TableName("yx_store_product")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class YxStoreProduct implements Serializable {
/** 商品id */
@ -104,6 +106,8 @@ public class YxStoreProduct implements Serializable {
/** 库存 */
@NotNull(message = "请输入库存")
@Min(message = "库存不能小于0",value = 1)
private Integer stock;

View File

@ -43,13 +43,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
// 默认不使用缓存
@ -242,6 +236,29 @@ public class YxStoreProductServiceImpl extends BaseServiceImpl<StoreProductMappe
throw new BadRequestException("请设置至少一个属性!");
}
//如果设置sku 处理价格与库存
////取最小价格
BigDecimal minPrice = valueGroup
.stream()
.map(YxStoreProductAttrValue::getPrice)
.min(Comparator.naturalOrder())
.orElse(BigDecimal.ZERO);
//计算库存
Integer stock = valueGroup
.stream()
.map(YxStoreProductAttrValue::getStock)
.reduce(Integer::sum)
.orElse(0);
YxStoreProduct yxStoreProduct = YxStoreProduct.builder()
.stock(stock)
.price(minPrice)
.id(id)
.build();
this.updateById(yxStoreProduct);
//插入之前清空
clearProductAttr(id,false);