H5购物车

pull/1/head
chuzhichao 2 years ago
parent 525dc60d3c
commit 203a8f33bb

@ -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<MemberCart> add(@Valid @RequestBody AddMemberCartForm form) {
return ResponseEntity.ok(memberCartService.insert(form));
public ResponseEntity<Integer> add(@RequestBody MemberCart memberCart) {
return ResponseEntity.ok(memberCartService.insert(memberCart));
}
/**
@ -61,8 +65,8 @@ public class CartController {
* @return
*/
@PostMapping("modify")
public ResponseEntity<Integer> modify(@Valid @RequestBody UpdateMemberCartForm form) {
return ResponseEntity.ok(memberCartService.update(form));
public ResponseEntity<Integer> modify(@Valid @RequestBody MemberCart memberCart) {
return ResponseEntity.ok(memberCartService.update(memberCart));
}
/**
@ -71,7 +75,7 @@ public class CartController {
* @return
*/
@DeleteMapping("remove")
public ResponseEntity<Integer> remove(@RequestBody List<Long> ids) {
public ResponseEntity<Integer> remove(@RequestBody String ids) {
return ResponseEntity.ok(memberCartService.deleteByIds(ids));
}
@ -80,12 +84,11 @@ public class CartController {
*
* @return
*/
@PostMapping("list")
public ResponseEntity<Page<MemberCartDTO>> remove(@RequestBody MemberCartQuery query, Pageable pageable) {
List<MemberCart> list = memberCartService.selectList(query, pageable);
com.github.pagehelper.Page<?> p = (com.github.pagehelper.Page<?>)list;
List<MemberCartDTO> resList = memberCartConvert.dos2Dtos(list);
memberCartService.injectSku(resList);
return ResponseEntity.ok(new PageImpl<>(resList, pageable, p.getTotal()));
@GetMapping("list")
public ResponseEntity<List<MemberCartVO>> remove() {
Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO);
MemberCartQuery query = new MemberCartQuery();
query.setMemberId(member.getId());
return ResponseEntity.ok(memberCartService.selectList(query, null));
}
}

@ -46,8 +46,9 @@ public class MemberCartController extends BaseController {
@PreAuthorize("@ss.hasPermi('ums:memberCart:list')")
@PostMapping("/list")
public ResponseEntity<Page<MemberCart>> list(@RequestBody MemberCartQuery query, Pageable page) {
List<MemberCart> list = service.selectList(query, page);
return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
// List<MemberCart> 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<String> export(MemberCartQuery query) {
List<MemberCart> list = service.selectList(query, null);
ExcelUtil<MemberCartVO> util = new ExcelUtil<>(MemberCartVO.class);
return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "购物车数据"));
// List<MemberCart> list = service.selectList(query, null);
// ExcelUtil<MemberCartVO> util = new ExcelUtil<>(MemberCartVO.class);
// return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "购物车数据"));
return null;
}
@ApiOperation("获取购物车详细信息")

@ -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;
}

@ -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;
}

@ -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<MemberCart> selectList(MemberCartQuery query, Pageable page) {
public List<MemberCartVO> selectList(MemberCartQuery query, Pageable page) {
if (page != null) {
PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize(), SortUtil.sort2string(page.getSort(),"id desc"));
}
QueryWrapper<MemberCart> qw = new QueryWrapper<>();
Integer status = query.getStatus();
if (status != null) {
qw.eq("status", status);
}
Long memberId = query.getMemberId();
if (memberId != null) {
qw.eq("member_id", memberId);
if (query.getMemberId() != null){
qw.eq("member_id", query.getMemberId());
}
List<MemberCart> memberCartList = memberCartMapper.selectList(qw);
if (CollectionUtil.isEmpty(memberCartList)){
return Collections.emptyList();
}
//查sku
List<Long> skuIdList = memberCartList.stream().map(MemberCart::getSkuId).collect(Collectors.toList());
QueryWrapper<Sku> skuQw = new QueryWrapper<>();
skuQw.in("id", skuIdList);
Map<Long, Sku> skuMap = skuMapper.selectList(skuQw).stream().collect(Collectors.toMap(Sku::getId, it -> it));
List<MemberCartVO> 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 {
qw.eq("member_id", SecurityUtils.getUserId());
}
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);
Sku sku = skuMap.get(item.getSkuId());
memberCartVO.setPrice(sku.getPrice());
memberCartVO.setSkuIfExist(1);
}
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);
resList.add(memberCartVO);
});
return resList;
}
/**
@ -111,27 +109,24 @@ public class MemberCartService {
* @return
*/
public int insert(MemberCart memberCart) {
Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO);
memberCart.setMemberId(member.getId());
//判断cart是否存在
QueryWrapper<MemberCart> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("member_id",member.getId());
queryWrapper.eq("sku_id",memberCart.getSkuId());
queryWrapper.eq("product_id",memberCart.getProductId());
List<MemberCart> memberCarts = memberCartMapper.selectList(queryWrapper);
if (CollectionUtils.isEmpty(memberCarts)) {
memberCart.setStatus(1);
memberCart.setCreateTime(LocalDateTime.now());
memberCart.setCreateBy(member.getId());
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;
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<Long> ids) {
Long userId = SecurityUtils.getUserId();
LambdaQueryWrapper<MemberCart> qw = new LambdaQueryWrapper<>();
qw.eq(MemberCart::getMemberId, userId);
qw.in(MemberCart::getId, ids);
return memberCartMapper.delete(qw);
public int deleteByIds(String ids) {
List<Long> idList = Arrays.stream(ids.split(",")).map(it -> Long.parseLong(it)).collect(Collectors.toList());
return memberCartMapper.deleteBatchIds(idList);
}
public Integer mineCartNum() {

Loading…
Cancel
Save