完成购物车的修改~
This commit is contained in:
@@ -4,6 +4,7 @@ import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.security.user.core.context.UserSecurityContextHolder;
|
||||
import cn.iocoder.mall.shopweb.controller.order.vo.cart.CartDetailVO;
|
||||
import cn.iocoder.mall.shopweb.manager.order.cart.CartManager;
|
||||
import cn.iocoder.security.annotations.RequiresAuthenticate;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
@@ -12,6 +13,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import static cn.iocoder.common.framework.vo.CommonResult.success;
|
||||
|
||||
@Api(tags = "购物车 API")
|
||||
@@ -29,6 +32,7 @@ public class CartController {
|
||||
@ApiImplicitParam(name = "skuId", value = "商品 SKU 编号", required = true, example = "1"),
|
||||
@ApiImplicitParam(name = "quantity", value = "增加数量", required = true, example = "1024")
|
||||
})
|
||||
@RequiresAuthenticate
|
||||
public CommonResult<Boolean> addCartItem(@RequestParam("skuId") Integer skuId,
|
||||
@RequestParam("quantity") Integer quantity) {
|
||||
cartManager.addCartItem(UserSecurityContextHolder.getUserId(), skuId, quantity);
|
||||
@@ -37,14 +41,43 @@ public class CartController {
|
||||
|
||||
@GetMapping("sum-quantity")
|
||||
@ApiOperation("查询用户在购物车中的商品数量")
|
||||
@RequiresAuthenticate
|
||||
public CommonResult<Integer> sumCartItemQuantity() {
|
||||
return success(cartManager.sumCartItemQuantity(UserSecurityContextHolder.getUserId()));
|
||||
}
|
||||
|
||||
@GetMapping("/get-detail")
|
||||
@ApiOperation("查询用户的购物车的商品列表")
|
||||
@RequiresAuthenticate
|
||||
public CommonResult<CartDetailVO> getCartDetail() {
|
||||
return success(cartManager.getCartDetail(UserSecurityContextHolder.getUserId()));
|
||||
}
|
||||
|
||||
@PostMapping("update-quantity")
|
||||
@ApiOperation("更新购物车商品数量")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "skuId", value = "商品 SKU 编号", required = true, example = "1"),
|
||||
@ApiImplicitParam(name = "quantity", value = "增加数量", required = true, example = "1024")
|
||||
})
|
||||
@RequiresAuthenticate
|
||||
public CommonResult<Boolean> updateCartItemQuantity(@RequestParam("skuId") Integer skuId,
|
||||
@RequestParam("quantity") Integer quantity) {
|
||||
cartManager.updateCartItemQuantity(UserSecurityContextHolder.getUserId(), skuId, quantity);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@PostMapping("update-selected")
|
||||
@ApiOperation("更新购物车商品是否选中")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "skuIds", value = "商品 SKU 编号数组", required = true, example = "1,3"),
|
||||
@ApiImplicitParam(name = "selected", value = "是否选中", required = true, example = "true")
|
||||
})
|
||||
@RequiresAuthenticate
|
||||
public CommonResult<Boolean> updateCartItemSelected(@RequestParam("skuIds") Set<Integer> skuIds,
|
||||
@RequestParam("selected") Boolean selected) {
|
||||
cartManager.updateCartItemSelected(UserSecurityContextHolder.getUserId(), skuIds, selected);
|
||||
// 获得目前购物车明细
|
||||
return success(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package cn.iocoder.mall.shopweb.convert.order;
|
||||
|
||||
import cn.iocoder.mall.productservice.rpc.sku.dto.ProductSkuRespDTO;
|
||||
import cn.iocoder.mall.promotion.api.rpc.activity.dto.PromotionActivityRespDTO;
|
||||
import cn.iocoder.mall.promotion.api.rpc.price.dto.PriceProductCalcRespDTO;
|
||||
import cn.iocoder.mall.shopweb.controller.order.vo.cart.CartDetailVO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
@Mapper
|
||||
@@ -13,6 +15,7 @@ public interface CartConvert {
|
||||
|
||||
CartDetailVO.Fee convert(PriceProductCalcRespDTO.Fee bean);
|
||||
|
||||
CartDetailVO.Sku convert(PriceProductCalcRespDTO.Item item, ProductSkuRespDTO sku);
|
||||
@Mapping(source = "sku.id", target = "id")
|
||||
CartDetailVO.Sku convert(PriceProductCalcRespDTO.Item item, ProductSkuRespDTO sku, PromotionActivityRespDTO activity);
|
||||
|
||||
}
|
||||
|
||||
@@ -3,9 +3,7 @@ package cn.iocoder.mall.shopweb.manager.order.cart;
|
||||
import cn.iocoder.common.framework.util.CollectionUtils;
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.orderservice.rpc.cart.CartRpc;
|
||||
import cn.iocoder.mall.orderservice.rpc.cart.dto.CartItemAddReqDTO;
|
||||
import cn.iocoder.mall.orderservice.rpc.cart.dto.CartItemListReqDTO;
|
||||
import cn.iocoder.mall.orderservice.rpc.cart.dto.CartItemRespDTO;
|
||||
import cn.iocoder.mall.orderservice.rpc.cart.dto.*;
|
||||
import cn.iocoder.mall.productservice.enums.sku.ProductSkuDetailFieldEnum;
|
||||
import cn.iocoder.mall.productservice.rpc.sku.ProductSkuRpc;
|
||||
import cn.iocoder.mall.productservice.rpc.sku.dto.ProductSkuListQueryReqDTO;
|
||||
@@ -64,6 +62,32 @@ public class CartManager {
|
||||
return sumCartItemQuantityResult.getData();
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新购物车商品数量
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param skuId 商品 SKU 编号
|
||||
* @param quantity 数量
|
||||
*/
|
||||
public void updateCartItemQuantity(Integer userId, Integer skuId, Integer quantity) {
|
||||
CommonResult<Boolean> updateCartItemQuantityResult = cartRpc.updateCartItemQuantity(new CartItemUpdateQuantityReqDTO()
|
||||
.setUserId(userId).setSkuId(skuId).setQuantity(quantity));
|
||||
updateCartItemQuantityResult.checkError();
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新购物车商品是否选中
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param skuIds 商品 SKU 编号数组
|
||||
* @param selected 是否选中
|
||||
*/
|
||||
public void updateCartItemSelected(Integer userId, Set<Integer> skuIds, Boolean selected) {
|
||||
CommonResult<Boolean> updateCartItemSelectedResult = cartRpc.updateCartItemSelected(new CartItemUpdateSelectedReqDTO()
|
||||
.setUserId(userId).setSkuIds(skuIds).setSelected(selected));
|
||||
updateCartItemSelectedResult.checkError();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户的购物车的商品列表
|
||||
*
|
||||
@@ -94,7 +118,7 @@ public class CartManager {
|
||||
CartDetailVO cartDetailVO = new CartDetailVO();
|
||||
cartDetailVO.setFee(CartConvert.INSTANCE.convert(calcProductPriceResult.getData().getFee()));
|
||||
cartDetailVO.setItemGroups(new ArrayList<>());
|
||||
calcProductPriceResult.getData().getItemGroups().forEach(itemGroupDTO -> {
|
||||
for (PriceProductCalcRespDTO.ItemGroup itemGroupDTO : calcProductPriceResult.getData().getItemGroups()) {
|
||||
CartDetailVO.ItemGroup itemGroupVO = new CartDetailVO.ItemGroup();
|
||||
cartDetailVO.getItemGroups().add(itemGroupVO);
|
||||
// 活动信息
|
||||
@@ -104,10 +128,9 @@ public class CartManager {
|
||||
}
|
||||
// 商品 SKU 信息
|
||||
itemGroupVO.setItems(new ArrayList<>());
|
||||
itemGroupDTO.getItems().forEach(item -> {
|
||||
itemGroupVO.getItems().add(CartConvert.INSTANCE.convert(item, productSkuMap.get(item.getSkuId())));
|
||||
});
|
||||
});
|
||||
itemGroupDTO.getItems().forEach(item -> itemGroupVO.getItems().add(CartConvert.INSTANCE.convert(item,
|
||||
productSkuMap.get(item.getSkuId()), promotionActivityMap.get(item.getActivityId()))));
|
||||
}
|
||||
return cartDetailVO;
|
||||
}
|
||||
|
||||
@@ -124,7 +147,7 @@ public class CartManager {
|
||||
}
|
||||
});
|
||||
});
|
||||
if (!CollectionUtils.isEmpty(activeIds)) {
|
||||
if (CollectionUtils.isEmpty(activeIds)) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
// 查询促销活动列表
|
||||
|
||||
@@ -37,6 +37,8 @@ dubbo:
|
||||
version: 1.0.0
|
||||
ProductSpuRpc:
|
||||
version: 1.0.0
|
||||
ProductSkuRpc:
|
||||
version: 1.0.0
|
||||
SearchProductRpc:
|
||||
version: 1.0.0
|
||||
PriceRpc:
|
||||
|
||||
Reference in New Issue
Block a user