From 203a8f33bb8066db90c1f785f4372cf055b83155 Mon Sep 17 00:00:00 2001 From: chuzhichao Date: Wed, 21 Jun 2023 17:25:55 +0800 Subject: [PATCH] =?UTF-8?q?H5=E8=B4=AD=E7=89=A9=E8=BD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cyl/h5/controller/CartController.java | 27 ++-- .../ums/controller/MemberCartController.java | 12 +- .../com/cyl/ums/pojo/vo/MemberCartVO.java | 7 + .../ums/pojo/vo/form/AddMemberCartForm.java | 10 +- .../cyl/ums/service/MemberCartService.java | 129 +++++++++--------- 5 files changed, 99 insertions(+), 86 deletions(-) diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/CartController.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/CartController.java index dd238b5..cd4f519 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/controller/CartController.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/controller/CartController.java @@ -2,11 +2,15 @@ package com.cyl.h5.controller; import com.cyl.pms.pojo.dto.MemberCartDTO; import com.cyl.ums.convert.MemberCartConvert; +import com.cyl.ums.domain.Member; import com.cyl.ums.domain.MemberCart; import com.cyl.ums.pojo.query.MemberCartQuery; +import com.cyl.ums.pojo.vo.MemberCartVO; import com.cyl.ums.pojo.vo.form.AddMemberCartForm; import com.cyl.ums.pojo.vo.form.UpdateMemberCartForm; import com.cyl.ums.service.MemberCartService; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.framework.config.LocalDataUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; @@ -51,8 +55,8 @@ public class CartController { * @return 购物车商品 */ @PostMapping("add") - public ResponseEntity add(@Valid @RequestBody AddMemberCartForm form) { - return ResponseEntity.ok(memberCartService.insert(form)); + public ResponseEntity add(@RequestBody MemberCart memberCart) { + return ResponseEntity.ok(memberCartService.insert(memberCart)); } /** @@ -61,8 +65,8 @@ public class CartController { * @return 是否修改 */ @PostMapping("modify") - public ResponseEntity modify(@Valid @RequestBody UpdateMemberCartForm form) { - return ResponseEntity.ok(memberCartService.update(form)); + public ResponseEntity modify(@Valid @RequestBody MemberCart memberCart) { + return ResponseEntity.ok(memberCartService.update(memberCart)); } /** @@ -71,7 +75,7 @@ public class CartController { * @return 是否修改 */ @DeleteMapping("remove") - public ResponseEntity remove(@RequestBody List ids) { + public ResponseEntity remove(@RequestBody String ids) { return ResponseEntity.ok(memberCartService.deleteByIds(ids)); } @@ -80,12 +84,11 @@ public class CartController { * * @return 购物车列表 */ - @PostMapping("list") - public ResponseEntity> remove(@RequestBody MemberCartQuery query, Pageable pageable) { - List list = memberCartService.selectList(query, pageable); - com.github.pagehelper.Page p = (com.github.pagehelper.Page)list; - List resList = memberCartConvert.dos2Dtos(list); - memberCartService.injectSku(resList); - return ResponseEntity.ok(new PageImpl<>(resList, pageable, p.getTotal())); + @GetMapping("list") + public ResponseEntity> remove() { + Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); + MemberCartQuery query = new MemberCartQuery(); + query.setMemberId(member.getId()); + return ResponseEntity.ok(memberCartService.selectList(query, null)); } } diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberCartController.java b/ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberCartController.java index 7d0ee6e..ce45d72 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberCartController.java +++ b/ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberCartController.java @@ -46,8 +46,9 @@ public class MemberCartController extends BaseController { @PreAuthorize("@ss.hasPermi('ums:memberCart:list')") @PostMapping("/list") public ResponseEntity> list(@RequestBody MemberCartQuery query, Pageable page) { - List list = service.selectList(query, page); - return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal())); +// List list = service.selectList(query, page); +// return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal())); + return null; } @ApiOperation("导出购物车列表") @@ -55,9 +56,10 @@ public class MemberCartController extends BaseController { @Log(title = "购物车", businessType = BusinessType.EXPORT) @GetMapping("/export") public ResponseEntity export(MemberCartQuery query) { - List list = service.selectList(query, null); - ExcelUtil util = new ExcelUtil<>(MemberCartVO.class); - return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "购物车数据")); +// List list = service.selectList(query, null); +// ExcelUtil util = new ExcelUtil<>(MemberCartVO.class); +// return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "购物车数据")); + return null; } @ApiOperation("获取购物车详细信息") diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberCartVO.java b/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberCartVO.java index 3fdcc04..483bf9e 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberCartVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberCartVO.java @@ -4,6 +4,9 @@ import com.ruoyi.common.annotation.Excel; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseAudit; import lombok.Data; + +import java.math.BigDecimal; + /** * 购物车 数据视图对象 * @@ -37,4 +40,8 @@ public class MemberCartVO extends BaseAudit { /** 商品数量 */ @Excel(name = "商品数量") private Integer quantity; + /** sku价格 */ + private BigDecimal price; + /** sku是否存在 */ + private Integer skuIfExist; } diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/form/AddMemberCartForm.java b/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/form/AddMemberCartForm.java index 1c2896a..55f545d 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/form/AddMemberCartForm.java +++ b/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/form/AddMemberCartForm.java @@ -16,8 +16,10 @@ public class AddMemberCartForm { /** * 数量 */ - @NotNull(message = "数量必填!") - @Min(value = 1, message = "数量不小于1") - @Max(value = Integer.MAX_VALUE, message = "数量不大于" + Integer.MAX_VALUE) - private Integer num; + private Integer buyNum; + private Long productId; + private String pic; + private String productName; + private String spData; + private Integer quantity; } diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/service/MemberCartService.java b/ruoyi-mall/src/main/java/com/cyl/ums/service/MemberCartService.java index 60040c9..419d3c8 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/service/MemberCartService.java +++ b/ruoyi-mall/src/main/java/com/cyl/ums/service/MemberCartService.java @@ -1,32 +1,38 @@ package com.cyl.ums.service; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cyl.h5.config.SecurityUtil; import com.cyl.pms.domain.Product; import com.cyl.pms.domain.Sku; import com.cyl.pms.mapper.ProductMapper; import com.cyl.pms.mapper.SkuMapper; import com.cyl.pms.pojo.dto.MemberCartDTO; import com.cyl.ums.convert.MemberCartConvert; +import com.cyl.ums.domain.Member; import com.cyl.ums.domain.MemberCart; import com.cyl.ums.mapper.MemberCartMapper; import com.cyl.ums.pojo.query.MemberCartQuery; +import com.cyl.ums.pojo.vo.MemberCartVO; import com.cyl.ums.pojo.vo.form.AddMemberCartForm; import com.cyl.ums.pojo.vo.form.UpdateMemberCartForm; import com.github.pagehelper.PageHelper; +import com.ruoyi.common.constant.Constants; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SortUtil; +import com.ruoyi.framework.config.LocalDataUtil; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.time.LocalDateTime; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -62,46 +68,38 @@ public class MemberCartService { * @param page 分页条件 * @return 购物车 */ - public List selectList(MemberCartQuery query, Pageable page) { + public List selectList(MemberCartQuery query, Pageable page) { if (page != null) { PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize(), SortUtil.sort2string(page.getSort(),"id desc")); } QueryWrapper qw = new QueryWrapper<>(); - Integer status = query.getStatus(); - if (status != null) { - qw.eq("status", status); + if (query.getMemberId() != null){ + qw.eq("member_id", query.getMemberId()); } - Long memberId = query.getMemberId(); - if (memberId != null) { - qw.eq("member_id", memberId); - } else { - qw.eq("member_id", SecurityUtils.getUserId()); + List memberCartList = memberCartMapper.selectList(qw); + if (CollectionUtil.isEmpty(memberCartList)){ + return Collections.emptyList(); } - Long productId = query.getProductId(); - if (productId != null) { - qw.eq("product_id", productId); - } - String pic = query.getPic(); - if (!StringUtils.isEmpty(pic)) { - qw.eq("pic", pic); - } - Long skuId = query.getSkuId(); - if (skuId != null) { - qw.eq("sku_id", skuId); - } - String productNameLike = query.getProductNameLike(); - if (!StringUtils.isEmpty(productNameLike)) { - qw.like("product_name", productNameLike); - } - String spData = query.getSpData(); - if (!StringUtils.isEmpty(spData)) { - qw.eq("sp_data", spData); - } - Integer quantity = query.getQuantity(); - if (quantity != null) { - qw.eq("quantity", quantity); - } - return memberCartMapper.selectList(qw); + //查sku + List skuIdList = memberCartList.stream().map(MemberCart::getSkuId).collect(Collectors.toList()); + QueryWrapper skuQw = new QueryWrapper<>(); + skuQw.in("id", skuIdList); + Map skuMap = skuMapper.selectList(skuQw).stream().collect(Collectors.toMap(Sku::getId, it -> it)); + List resList = new ArrayList<>(); + memberCartList.forEach(item -> { + MemberCartVO memberCartVO = new MemberCartVO(); + BeanUtils.copyProperties(item, memberCartVO); + if (!skuMap.containsKey(item.getSkuId())){ + memberCartVO.setStatus(0); + memberCartVO.setSkuIfExist(0); + }else { + Sku sku = skuMap.get(item.getSkuId()); + memberCartVO.setPrice(sku.getPrice()); + memberCartVO.setSkuIfExist(1); + } + resList.add(memberCartVO); + }); + return resList; } /** @@ -111,27 +109,24 @@ public class MemberCartService { * @return 结果 */ public int insert(MemberCart memberCart) { - memberCart.setCreateTime(LocalDateTime.now()); - return memberCartMapper.insert(memberCart); - } - - /** - * 新增购物车 - * - * @param form 添加购物车表单 - * @return 结果 - */ - public MemberCart insert(AddMemberCartForm form) { - // 查询规格 - Sku sku = skuMapper.selectById(form.getSkuId()); - MemberCart memberCart = memberCartConvert.sku2Cart(sku); - Product p = productMapper.selectById(sku.getProductId()); - memberCartConvert.injectProduct(memberCart, p); - memberCart.setQuantity(form.getNum()); - memberCart.setMemberId(SecurityUtils.getUserId()); - memberCart.setStatus(1) ; - memberCartMapper.insert(memberCart); - return memberCart; + Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); + memberCart.setMemberId(member.getId()); + //判断cart是否存在 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("member_id",member.getId()); + queryWrapper.eq("sku_id",memberCart.getSkuId()); + queryWrapper.eq("product_id",memberCart.getProductId()); + List memberCarts = memberCartMapper.selectList(queryWrapper); + if (CollectionUtils.isEmpty(memberCarts)) { + memberCart.setStatus(1); + memberCart.setCreateTime(LocalDateTime.now()); + memberCart.setCreateBy(member.getId()); + return memberCartMapper.insert(memberCart); + } + MemberCart dbCart = memberCarts.get(0); + dbCart.setUpdateTime(LocalDateTime.now()); + dbCart.setQuantity(dbCart.getQuantity() + memberCart.getQuantity()); + return memberCartMapper.updateById(dbCart); } /** @@ -141,7 +136,14 @@ public class MemberCartService { * @return 结果 */ public int update(MemberCart memberCart) { - return memberCartMapper.updateById(memberCart); + MemberCart cart = memberCartMapper.selectById(memberCart.getId()); + if (cart == null){ + return 0; + } + cart.setQuantity(memberCart.getQuantity()); + cart.setUpdateTime(LocalDateTime.now()); + cart.setUpdateBy(SecurityUtil.getLocalMember().getId()); + return memberCartMapper.updateById(cart); } public int update(UpdateMemberCartForm form) { if (form.getNum() == null || form.getId() == null) { @@ -175,12 +177,9 @@ public class MemberCartService { * @param ids 购物车主键 * @return 结果 */ - public int deleteByIds(List ids) { - Long userId = SecurityUtils.getUserId(); - LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); - qw.eq(MemberCart::getMemberId, userId); - qw.in(MemberCart::getId, ids); - return memberCartMapper.delete(qw); + public int deleteByIds(String ids) { + List idList = Arrays.stream(ids.split(",")).map(it -> Long.parseLong(it)).collect(Collectors.toList()); + return memberCartMapper.deleteBatchIds(idList); } public Integer mineCartNum() {