use of com.whoiszxl.dto.SkuDTO in project shopzz by whoiszxl.
the class CartServiceImpl method addProductToCart.
@Override
public boolean addProductToCart(CartAddQuery cartAddQuery) {
Integer quantity = cartAddQuery.getQuantity();
Long skuId = cartAddQuery.getSkuId();
// 1. 通过会员ID和SKU ID查询购物车表中是否存在这条记录
long memberId = StpUtil.getLoginIdAsLong();
LambdaQueryWrapper<Cart> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Cart::getMemberId, memberId);
queryWrapper.eq(Cart::getSkuId, skuId);
Cart cart = this.getOne(queryWrapper);
boolean saveOrUpdateFlag = false;
if (cart == null) {
// 2. 购物车不存在,新增
Cart addCart = new Cart();
addCart.setMemberId(memberId);
addCart.setSkuId(skuId);
addCart.setQuantity(quantity);
CompletableFuture<Void> future1 = CompletableFuture.runAsync(() -> {
// 3. 查询SKU信息
ResponseResult<SkuDTO> skuResult = productFeignClient.getSkuInfoBySkuId(skuId);
SkuDTO sku = skuResult.getData();
addCart.setProductId(sku.getProductId());
addCart.setSkuName(sku.getSkuName());
addCart.setSkuPic(sku.getImgUrl());
addCart.setPrice(sku.getSalePrice());
addCart.setChecked(CartCheckConstants.CHECKED);
addCart.setStatus(StatusEnum.OPEN.getCode());
}, executor);
// TODO 查询销售属性
addCart.setSaleAttr("todo");
try {
CompletableFuture.allOf(future1).get();
} catch (Exception e) {
log.error("新增购物车失败", e);
}
saveOrUpdateFlag = this.save(addCart);
} else {
// 3. 购物车存在,更新
cart.setQuantity(cart.getQuantity() + cartAddQuery.getQuantity());
saveOrUpdateFlag = this.updateById(cart);
}
return saveOrUpdateFlag;
}
use of com.whoiszxl.dto.SkuDTO in project shopzz by whoiszxl.
the class CartServiceImpl method cartAdd.
@Override
public Boolean cartAdd(SaveCartRequest addCartQuery) {
// 0. 对sku进行有效性校验
ResponseResult<SkuDTO> skuInfoResponse = productFeignClient.getSkuInfoBySkuId(addCartQuery.getSkuId());
SkuDTO sku = skuInfoResponse.getData();
if (sku == null || sku.getIsDeleted() == 1) {
ExceptionCatcher.catchValidateEx(ResponseResult.buildError("商品无效"));
}
// 1. 判断redis中是否存在当前的购物车信息
BoundHashOperations<String, Object, Object> cartHashOps = redisUtils.getHashOps(RedisKeyPrefixConstants.MEMBER_CART_PREFIX + StpUtil.getLoginIdAsString());
String cartItemJson = (String) cartHashOps.get(addCartQuery.getSkuId().toString());
if (StringUtils.isBlank(cartItemJson)) {
CartItemVO cartItemVO = new CartItemVO();
cartItemVO.setChecked(StatusEnum.OPEN.getCode());
cartItemVO.setQuantity(addCartQuery.getQuantity());
cartItemVO.setSkuPic(sku.getImgUrl());
cartItemVO.setPrice(sku.getPromotionPrice() == null ? sku.getSalePrice() : sku.getPromotionPrice());
cartItemVO.setSkuId(sku.getId());
cartItemVO.setSkuName(sku.getSkuName());
cartItemVO.setProductId(sku.getProductId());
String jsonValue = JsonUtil.toJson(cartItemVO);
cartHashOps.put(addCartQuery.getSkuId().toString(), jsonValue);
} else {
// 在原有购物车商品里累加
CartItemVO cartItemVO = JsonUtil.fromJson(cartItemJson, CartItemVO.class);
cartItemVO.setQuantity(cartItemVO.getQuantity() + addCartQuery.getQuantity());
cartItemVO.setSkuPic(sku.getImgUrl());
cartItemVO.setPrice(sku.getPromotionPrice() == null ? sku.getSalePrice() : sku.getPromotionPrice());
cartItemVO.setSkuName(sku.getSkuName());
cartItemVO.setProductId(sku.getProductId());
String jsonValue = JsonUtil.toJson(cartItemVO);
cartHashOps.put(addCartQuery.getSkuId().toString(), jsonValue);
}
// TODO 发送MQ,落库
return true;
}
Aggregations