diff --git a/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/controller/MallController.java b/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/controller/MallController.java index dba21cb..b729724 100644 --- a/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/controller/MallController.java +++ b/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/controller/MallController.java @@ -1,5 +1,6 @@ package com.ruoyi.app.modular.shop.controller; +import cn.hutool.core.util.StrUtil; import com.itmuch.lightsecurity.jwt.UserOperator; import com.ruoyi.app.common.R; import com.ruoyi.app.common.exception.BadRequestException; @@ -127,4 +128,29 @@ public class MallController { } + @GetMapping("/shop/mall-cart-del") + @ApiOperation(value = "删除购物车",notes = "删除购物车") + public R delCart(@RequestParam(value = "goods_ids",defaultValue = "") String goodsIds){ + int userId = userOperator.getUser().getId(); + if(StrUtil.isEmpty(goodsIds)){ + return R.error(4000,"参数缺失"); + } + boolean result = goodsService.delCart(goodsIds,userId); + if(result){ + return R.success("操作成功"); + }else{ + return R.error(4000,"操作失败"); + } + + } + + + @GetMapping("/shop/mall-cart-list") + @ApiOperation(value = "获取购物车列表",notes = "获取购物车列表") + public R cartList(@Validated @RequestBody PageVO pageVO){ + int userId = userOperator.getUser().getId(); + //goodsService.cartList(pageVO,userId); + return R.success(goodsService.cartList(pageVO,userId)); + } + } diff --git a/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/IGoodsService.java b/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/IGoodsService.java index b5b334d..51ab7a7 100644 --- a/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/IGoodsService.java +++ b/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/IGoodsService.java @@ -6,8 +6,10 @@ package com.ruoyi.app.modular.shop.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.app.common.persistence.model.StoreGoods; import com.ruoyi.app.common.persistence.model.StoreSpecGoodsPrice; +import com.ruoyi.app.modular.shop.service.dto.CartDTO; import com.ruoyi.app.modular.shop.service.dto.GoodsDTO; import com.ruoyi.app.modular.shop.service.vo.CartVO; +import com.ruoyi.app.modular.shop.service.vo.PageVO; import java.util.List; import java.util.Map; @@ -26,4 +28,8 @@ public interface IGoodsService extends IService { public boolean addOrCancelCollect(int goodsId,int userId,int type); public boolean addCart(CartVO cartVO,int userId); + + public boolean delCart(String goodsIds,int userId); + + public List cartList(PageVO pageVO,int userId); } diff --git a/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/dto/CartAttrDTO.java b/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/dto/CartAttrDTO.java new file mode 100644 index 0000000..30631c6 --- /dev/null +++ b/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/dto/CartAttrDTO.java @@ -0,0 +1,23 @@ +package com.ruoyi.app.modular.shop.service.dto; + + + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class CartAttrDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; + + private BigDecimal goodsPrice; + + private int goodsNum; + + private String specKeyName; + +} diff --git a/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/dto/CartDTO.java b/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/dto/CartDTO.java index bb9b497..eb74f3e 100644 --- a/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/dto/CartDTO.java +++ b/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/dto/CartDTO.java @@ -6,20 +6,23 @@ import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; +import java.util.List; @Data public class CartDTO implements Serializable { private static final long serialVersionUID = 1L; - private Integer id; + private Integer goodsId; private String goodsName; private BigDecimal goodsPrice; - private Integer goodsNum; + private String goodsSn; - private String specKeyName; + private String goodsLogo; + + private List specList; } diff --git a/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/impl/GoodsServiceImpl.java b/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/impl/GoodsServiceImpl.java index e391c45..393ee6d 100644 --- a/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/impl/GoodsServiceImpl.java +++ b/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/impl/GoodsServiceImpl.java @@ -20,13 +20,16 @@ import com.ruoyi.app.common.persistence.model.StoreGoods; import com.ruoyi.app.common.persistence.model.StoreGoodsCollect; import com.ruoyi.app.common.persistence.model.StoreSpecGoodsPrice; import com.ruoyi.app.modular.shop.service.IGoodsService; +import com.ruoyi.app.modular.shop.service.dto.CartDTO; import com.ruoyi.app.modular.shop.service.dto.GoodsDTO; import com.ruoyi.app.modular.shop.service.dto.ItemDTO; import com.ruoyi.app.modular.shop.service.dto.SpecItemDTO; +import com.ruoyi.app.modular.shop.service.mapper.CartMapper; import com.ruoyi.app.modular.shop.service.mapper.CateMapper; import com.ruoyi.app.modular.shop.service.mapper.GoodsMapper; import com.ruoyi.app.modular.shop.service.vo.CartAttrVO; import com.ruoyi.app.modular.shop.service.vo.CartVO; +import com.ruoyi.app.modular.shop.service.vo.PageVO; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -44,6 +47,7 @@ public class GoodsServiceImpl extends ServiceImpl private final StoreGoodsCollectMapper storeGoodsCollectMapper; private final StoreSpecGoodsPriceMapper storeSpecGoodsPriceMapper; private final StoreCartMapper storeCartMapper; + private final CartMapper cartMapper; /** @@ -172,6 +176,12 @@ public class GoodsServiceImpl extends ServiceImpl } + /** + * 添加购物车 + * @param cartVO + * @param userId + * @return + */ @Override public boolean addCart(CartVO cartVO,int userId) { StoreGoods storeGoods = getById(cartVO.getGoodsId()); @@ -209,4 +219,46 @@ public class GoodsServiceImpl extends ServiceImpl return true; } + + + @Override + public boolean delCart(String goodsIds,int userId) { + String[] goodsArr = goodsIds.split(","); + QueryWrapper cartQueryWrapper = new QueryWrapper<>(); + cartQueryWrapper.in("goods_id",Arrays.asList(goodsArr)).eq("user_id",userId); + int result = storeCartMapper.delete(cartQueryWrapper); + if(result > 0) return true; + return false; + } + + + /** + * 购物车列表 + * @param pageVO + * @param userId + * @return + */ + @Override + public List cartList(PageVO pageVO,int userId) { + QueryWrapper cartQueryWrapper = new QueryWrapper<>(); + cartQueryWrapper.eq("user_id",userId).groupBy("goods_id"); + Page pageModel = new Page<>(pageVO.getPage(), pageVO.getLimit()); + IPage storeCarts = storeCartMapper + .selectPage(pageModel,cartQueryWrapper); + List storeCartList = storeCarts.getRecords(); + List carts = new ArrayList<>(); + CartDTO cartDTO = new CartDTO(); + for (StoreCart storeCart : storeCartList) { + StoreGoods storeGoods = getById(storeCart.getGoodsId()); + cartDTO.setGoodsId(storeCart.getGoodsId()); + cartDTO.setGoodsName(storeGoods.getGoodsName()); + cartDTO.setGoodsSn(storeGoods.getGoodsSn()); + cartDTO.setGoodsLogo(storeGoods.getGoodsLogo()); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("user_id",userId).eq("goods_id",storeCart.getGoodsId()); + cartDTO.setSpecList(cartMapper.toDto(storeCartMapper.selectList(wrapper))); + carts.add(cartDTO); + } + return carts; + } } diff --git a/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/mapper/CartMapper.java b/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/mapper/CartMapper.java index 646cd3a..60d275f 100644 --- a/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/mapper/CartMapper.java +++ b/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/mapper/CartMapper.java @@ -4,7 +4,7 @@ package com.ruoyi.app.modular.shop.service.mapper; import com.ruoyi.app.common.persistence.model.StoreCart; import com.ruoyi.app.modular.mapper.EntityMapper; -import com.ruoyi.app.modular.shop.service.dto.CartDTO; +import com.ruoyi.app.modular.shop.service.dto.CartAttrDTO; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; @@ -13,6 +13,6 @@ import org.mapstruct.ReportingPolicy; * @date 2019-09-10 */ @Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface CartMapper extends EntityMapper { +public interface CartMapper extends EntityMapper { } \ No newline at end of file