From bb97d7a4b40465d9c3ae81146490844f344e517e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=AE=87=E8=88=AA?= <653809315@qq.com> Date: Mon, 2 Sep 2024 10:07:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=B4=AD=E7=89=A9=E8=BD=A6?= =?UTF-8?q?=E9=80=89=E4=B8=AD=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/wyh/common/vo/CartVo.java | 7 ++- .../java/com/wyh/common/vo/GoodsUserVo.java | 20 ++++++++ .../wyh/front/controller/CartController.java | 10 ++++ .../com/wyh/front/service/CartService.java | 2 + .../front/service/impl/CartServiceImpl.java | 51 +++++++++++++++++-- 5 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/GoodsUserVo.java diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/CartVo.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/CartVo.java index 28fdc7b..523b341 100644 --- a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/CartVo.java +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/CartVo.java @@ -1,6 +1,5 @@ package com.wyh.common.vo; -import com.wyh.common.entity.goods.Goods; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -15,9 +14,13 @@ public class CartVo implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "购物车商品列表") - private List goodsList; + private List goodsList; @ApiModelProperty(value = "购物车商品总价") private BigDecimal totalPrice; @ApiModelProperty(value = "购物车选中商品总金额") private BigDecimal checkTotalPrice; + @ApiModelProperty(value = "购物车选中商品数量") + private Integer checkNum; + @ApiModelProperty(value = "购物车商品总数量") + private Integer totalNum; } diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/GoodsUserVo.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/GoodsUserVo.java new file mode 100644 index 0000000..b2671b9 --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/GoodsUserVo.java @@ -0,0 +1,20 @@ +package com.wyh.common.vo; + +import com.wyh.common.entity.goods.Goods; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel(value = "购物车返回vo") +public class GoodsUserVo extends Goods implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商品数量") + private Integer num; + @ApiModelProperty(value = "是否选中") + private Integer isCheck; +} diff --git a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/CartController.java b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/CartController.java index 67ed591..b4be83d 100644 --- a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/CartController.java +++ b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/CartController.java @@ -3,9 +3,11 @@ package com.wyh.front.controller; import com.wyh.common.core.AjaxResult; import com.wyh.common.validator.UserGoodsCreateValidate; import com.wyh.common.vo.CartVo; +import com.wyh.front.ZJFrontThreadLocal; import com.wyh.front.service.CartService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -35,4 +37,12 @@ public class CartController { CartVo cart = cartService.getCart(); return AjaxResult.success(cart); } + + @GetMapping("updateCheck") + @ApiOperation(value = "更新购物车选中状态") + public AjaxResult updateCheck(@RequestParam(name = "type" ) @ApiParam(value = " 0:全部取消,1:全部选中") Integer type) { + Integer userId = ZJFrontThreadLocal.getUserId(); + CartVo cartVo = cartService.updateCheck(userId, type); + return AjaxResult.success(cartVo); + } } diff --git a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/CartService.java b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/CartService.java index a62c716..f28437b 100644 --- a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/CartService.java +++ b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/CartService.java @@ -9,4 +9,6 @@ public interface CartService { void addCart( List cartCreateValited); CartVo getCart(); + + CartVo updateCheck(Integer userId,Integer type); } diff --git a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/impl/CartServiceImpl.java b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/impl/CartServiceImpl.java index 0a2ccd2..bee1656 100644 --- a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/impl/CartServiceImpl.java +++ b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/service/impl/CartServiceImpl.java @@ -7,13 +7,17 @@ import com.wyh.common.mapper.UserGoodsMapper; import com.wyh.common.mapper.goods.GoodsMapper; import com.wyh.common.validator.UserGoodsCreateValidate; import com.wyh.common.vo.CartVo; +import com.wyh.common.vo.GoodsUserVo; import com.wyh.front.ZJFrontThreadLocal; import com.wyh.front.service.CartService; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; @Service @@ -51,18 +55,23 @@ public class CartServiceImpl implements CartService { if (userGoodsList.isEmpty()) { return new CartVo(); } - List ids - = userGoodsList.stream().map(UserGoods::getGoodsId).collect(Collectors.toList()); + List ids = userGoodsList.stream().map(UserGoods::getGoodsId).collect(Collectors.toList()); List goods = goodsMapper.selectList(Wrappers.lambdaQuery().in(Goods::getId, ids)); + List goodsUserVoList = new ArrayList<>(); BigDecimal totalPrice = new BigDecimal(0); BigDecimal checkTotalPrice = new BigDecimal(0); for (UserGoods userGoods : userGoodsList) { Integer goodsId = userGoods.getGoodsId(); for (Goods good : goods) { if (good.getId().equals(goodsId)) { + GoodsUserVo goodsUserVo = new GoodsUserVo(); + BeanUtils.copyProperties(good, goodsUserVo); BigDecimal price = good.getPrice().multiply(new BigDecimal(userGoods.getNum())); totalPrice = totalPrice.add(price); + goodsUserVo.setNum(userGoods.getNum()); + goodsUserVo.setIsCheck(userGoods.getIsCheck()); + goodsUserVoList.add(goodsUserVo); } } } @@ -77,13 +86,49 @@ public class CartServiceImpl implements CartService { } } + //获取选中商品数量 + Integer checkNum = collect.stream() + .filter(obj -> obj.getIsCheck() == 1) + .map(UserGoods::getNum) + .reduce(Integer::sum) + .orElse(0); + int totalNum = userGoodsList.stream() + .map(UserGoods::getNum) + .filter(Objects::nonNull) // Filter out any null values + .reduce(0, Integer::sum); + //设置总数量和总价格 CartVo cartVo = new CartVo(); - cartVo.setGoodsList(goods); + cartVo.setGoodsList(goodsUserVoList); + cartVo.setCheckNum(checkNum); + cartVo.setTotalNum(totalNum); cartVo.setTotalPrice(totalPrice); cartVo.setCheckTotalPrice(checkTotalPrice); return cartVo; } + @Override + public CartVo updateCheck(Integer userId , Integer type) { + if (type == 1) { + updateCheckUp(userId); + } else { + updateCheckDown(userId); + } + CartVo cart = getCart(); + return cart; + } + + private void updateCheckDown(Integer userId) { + userGoodsMapper.update(null, Wrappers.lambdaUpdate() + .set(UserGoods::getIsCheck, 0) + .eq(UserGoods::getUserId, userId)); + } + + private void updateCheckUp(Integer userId) { + userGoodsMapper.update(null, Wrappers.lambdaUpdate() + .set(UserGoods::getIsCheck, 1) + .eq(UserGoods::getUserId, userId)); + } + public static void main(String[] args) { Integer num = 3;