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

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

@ -4,6 +4,9 @@ import com.ruoyi.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseAudit; import com.ruoyi.common.core.domain.BaseAudit;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
/** /**
* *
* *
@ -37,4 +40,8 @@ public class MemberCartVO extends BaseAudit {
/** 商品数量 */ /** 商品数量 */
@Excel(name = "商品数量") @Excel(name = "商品数量")
private Integer quantity; private Integer quantity;
/** sku价格 */
private BigDecimal price;
/** sku是否存在 */
private Integer skuIfExist;
} }

@ -16,8 +16,10 @@ public class AddMemberCartForm {
/** /**
* *
*/ */
@NotNull(message = "数量必填!") private Integer buyNum;
@Min(value = 1, message = "数量不小于1") private Long productId;
@Max(value = Integer.MAX_VALUE, message = "数量不大于" + Integer.MAX_VALUE) private String pic;
private Integer num; private String productName;
private String spData;
private Integer quantity;
} }

@ -1,32 +1,38 @@
package com.cyl.ums.service; package com.cyl.ums.service;
import cn.hutool.core.collection.CollUtil; 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.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.Product;
import com.cyl.pms.domain.Sku; import com.cyl.pms.domain.Sku;
import com.cyl.pms.mapper.ProductMapper; import com.cyl.pms.mapper.ProductMapper;
import com.cyl.pms.mapper.SkuMapper; import com.cyl.pms.mapper.SkuMapper;
import com.cyl.pms.pojo.dto.MemberCartDTO; import com.cyl.pms.pojo.dto.MemberCartDTO;
import com.cyl.ums.convert.MemberCartConvert; import com.cyl.ums.convert.MemberCartConvert;
import com.cyl.ums.domain.Member;
import com.cyl.ums.domain.MemberCart; import com.cyl.ums.domain.MemberCart;
import com.cyl.ums.mapper.MemberCartMapper; import com.cyl.ums.mapper.MemberCartMapper;
import com.cyl.ums.pojo.query.MemberCartQuery; 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.AddMemberCartForm;
import com.cyl.ums.pojo.vo.form.UpdateMemberCartForm; import com.cyl.ums.pojo.vo.form.UpdateMemberCartForm;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.SortUtil; import com.ruoyi.common.utils.SortUtil;
import com.ruoyi.framework.config.LocalDataUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -62,46 +68,38 @@ public class MemberCartService {
* @param page * @param page
* @return * @return
*/ */
public List<MemberCart> selectList(MemberCartQuery query, Pageable page) { public List<MemberCartVO> selectList(MemberCartQuery query, Pageable page) {
if (page != null) { if (page != null) {
PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize(), SortUtil.sort2string(page.getSort(),"id desc")); PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize(), SortUtil.sort2string(page.getSort(),"id desc"));
} }
QueryWrapper<MemberCart> qw = new QueryWrapper<>(); QueryWrapper<MemberCart> qw = new QueryWrapper<>();
Integer status = query.getStatus(); if (query.getMemberId() != null){
if (status != null) { qw.eq("member_id", query.getMemberId());
qw.eq("status", status); }
} List<MemberCart> memberCartList = memberCartMapper.selectList(qw);
Long memberId = query.getMemberId(); if (CollectionUtil.isEmpty(memberCartList)){
if (memberId != null) { return Collections.emptyList();
qw.eq("member_id", memberId); }
//查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 { }else {
qw.eq("member_id", SecurityUtils.getUserId()); Sku sku = skuMap.get(item.getSkuId());
} memberCartVO.setPrice(sku.getPrice());
Long productId = query.getProductId(); memberCartVO.setSkuIfExist(1);
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(); resList.add(memberCartVO);
if (!StringUtils.isEmpty(spData)) { });
qw.eq("sp_data", spData); return resList;
}
Integer quantity = query.getQuantity();
if (quantity != null) {
qw.eq("quantity", quantity);
}
return memberCartMapper.selectList(qw);
} }
/** /**
@ -111,27 +109,24 @@ public class MemberCartService {
* @return * @return
*/ */
public int insert(MemberCart memberCart) { 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.setCreateTime(LocalDateTime.now());
memberCart.setCreateBy(member.getId());
return memberCartMapper.insert(memberCart); return memberCartMapper.insert(memberCart);
} }
MemberCart dbCart = memberCarts.get(0);
/** dbCart.setUpdateTime(LocalDateTime.now());
* dbCart.setQuantity(dbCart.getQuantity() + memberCart.getQuantity());
* return memberCartMapper.updateById(dbCart);
* @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;
} }
/** /**
@ -141,7 +136,14 @@ public class MemberCartService {
* @return * @return
*/ */
public int update(MemberCart memberCart) { 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) { public int update(UpdateMemberCartForm form) {
if (form.getNum() == null || form.getId() == null) { if (form.getNum() == null || form.getId() == null) {
@ -175,12 +177,9 @@ public class MemberCartService {
* @param ids * @param ids
* @return * @return
*/ */
public int deleteByIds(List<Long> ids) { public int deleteByIds(String ids) {
Long userId = SecurityUtils.getUserId(); List<Long> idList = Arrays.stream(ids.split(",")).map(it -> Long.parseLong(it)).collect(Collectors.toList());
LambdaQueryWrapper<MemberCart> qw = new LambdaQueryWrapper<>(); return memberCartMapper.deleteBatchIds(idList);
qw.eq(MemberCart::getMemberId, userId);
qw.in(MemberCart::getId, ids);
return memberCartMapper.delete(qw);
} }
public Integer mineCartNum() { public Integer mineCartNum() {

Loading…
Cancel
Save