diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/req/CartInfoEditNumReq.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/req/CartInfoEditNumReq.java index 8603287..87af9e2 100644 --- a/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/req/CartInfoEditNumReq.java +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/req/CartInfoEditNumReq.java @@ -30,5 +30,5 @@ public class CartInfoEditNumReq { /** * 数量 */ - private String num; + private Long num; } diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/req/RemoveCartProjectReq.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/req/RemoveCartProjectReq.java new file mode 100644 index 0000000..1c7df73 --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/req/RemoveCartProjectReq.java @@ -0,0 +1,33 @@ +package com.muyu.shop.cart.domain.req; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author DongZl + * @description: 删除 + * @Date 2024/4/9 上午11:52 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class RemoveCartProjectReq { + + /** + * 购物车ID + */ + private Long cartInfoId; + + /** + * 商品ID + */ + private Long projectId; + + /** + * 商品SKU + */ + private String projectSku; +} diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/controller/CartInfoController.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/controller/CartInfoController.java index 4a011fa..7666472 100644 --- a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/controller/CartInfoController.java +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/controller/CartInfoController.java @@ -7,14 +7,7 @@ import com.muyu.shop.cart.domain.req.*; import com.muyu.shop.cart.domain.resp.CartDetailResp; import io.swagger.annotations.*; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import com.muyu.common.core.domain.Result; import com.muyu.common.core.utils.poi.ExcelUtil; import com.muyu.common.core.web.controller.BaseController; @@ -119,7 +112,7 @@ public class CartInfoController extends BaseController { * @return */ @PostMapping("/num") - public Result CartInfoEditNum(@RequestBody CartInfoEditNumReq cartInfoEditNumReq){ + public Result cartInfoEditNum(@RequestBody CartInfoEditNumReq cartInfoEditNumReq){ cartInfoService.CartInfoEditNum(cartInfoEditNumReq); return Result.success(); } @@ -132,7 +125,18 @@ public class CartInfoController extends BaseController { @DeleteMapping("/{ids}") @ApiOperation("删除购物车") @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = String.class, example = "1,2,3,4") - public Result remove(@PathVariable List ids) { + public Result removeByIds(@PathVariable List ids) { return toAjax(cartInfoService.removeBatchByIds(ids)); } + + /** + * 删除购物车 + */ + @RequiresPermissions("shopCart:Info:remove") + @DeleteMapping("/remove") + @ApiOperation("删除购物车") + public Result remove(@RequestBody List removeCartProjectReqList) { + cartInfoService.removeByRemoveCartProjectList(removeCartProjectReqList); + return Result.success(); + } } diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/CartInfoService.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/CartInfoService.java index 4350e34..7307678 100644 --- a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/CartInfoService.java +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/CartInfoService.java @@ -5,6 +5,7 @@ import com.muyu.shop.cart.domain.CartInfo; import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.shop.cart.domain.req.CartInfoEditNumReq; import com.muyu.shop.cart.domain.req.CartInfoIsSelectedUpdReq; +import com.muyu.shop.cart.domain.req.RemoveCartProjectReq; import com.muyu.shop.cart.domain.resp.CartDetailResp; /** @@ -43,4 +44,10 @@ public interface CartInfoService extends IService { void CartInfoEditNum (CartInfoEditNumReq cartInfoEditNumReq); + /** + * 删除 + * @param removeCartProjectReqList + * @return + */ + void removeByRemoveCartProjectList (List removeCartProjectReqList); } diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/impl/CartInfoServiceImpl.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/impl/CartInfoServiceImpl.java index bef91d0..1c672e3 100644 --- a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/impl/CartInfoServiceImpl.java +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/impl/CartInfoServiceImpl.java @@ -26,6 +26,7 @@ import com.muyu.shop.cart.domain.model.SkuRuleModel; import com.muyu.shop.cart.domain.model.StatisticsCartModel; import com.muyu.shop.cart.domain.req.CartInfoEditNumReq; import com.muyu.shop.cart.domain.req.CartInfoIsSelectedUpdReq; +import com.muyu.shop.cart.domain.req.RemoveCartProjectReq; import com.muyu.shop.cart.domain.resp.CartDetailResp; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -256,7 +257,43 @@ public class CartInfoServiceImpl extends ServiceImpl @Override public void CartInfoEditNum (CartInfoEditNumReq cartInfoEditNumReq) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.set(CartInfo::getIsSelected, cartInfoEditNumReq.getNum()); + updateWrapper.eq(CartInfo::getProjectId, cartInfoEditNumReq.getProjectId()); + updateWrapper.eq(CartInfo::getProjectSku, cartInfoEditNumReq.getProjectSku()); + this.update(updateWrapper); + Long userId = SecurityUtils.getUserId(); + CartHashKey cartHashKey = CartHashKey.builder() + .projectId(cartInfoEditNumReq.getProjectId()) + .projectSku(cartInfoEditNumReq.getProjectSku()) + .build(); + CartInfo cartInfo = this.cartCache.get(userId, cartHashKey); + cartInfo.setNum(cartInfoEditNumReq.getNum()); + this.cartCache.put(userId, cartHashKey, cartInfo); + } + /** + * 删除 + * + * @param removeCartProjectReqList + * + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void removeByRemoveCartProjectList (List removeCartProjectReqList) { + this.removeByIds( + removeCartProjectReqList.stream() + .map(RemoveCartProjectReq::getCartInfoId) + .toList() + ); + Long userId = SecurityUtils.getUserId(); + removeCartProjectReqList.stream() + .map(removeCartProjectReq -> CartHashKey.builder() + .projectId(removeCartProjectReq.getProjectId()) + .projectSku(removeCartProjectReq.getProjectSku()) + .build() + ).forEach(hk -> this.cartCache.remove(userId, hk)); } }