parent
34af78397c
commit
a4fab60443
@ -0,0 +1,222 @@
|
||||
package com.cyl.h5.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.manager.pms.domain.Sku;
|
||||
import com.cyl.manager.pms.mapper.ProductMapper;
|
||||
import com.cyl.manager.pms.mapper.SkuMapper;
|
||||
import com.cyl.manager.pms.pojo.dto.MemberCartDTO;
|
||||
import com.cyl.manager.ums.convert.MemberCartConvert;
|
||||
import com.cyl.manager.ums.domain.Member;
|
||||
import com.cyl.manager.ums.domain.MemberCart;
|
||||
import com.cyl.manager.ums.mapper.MemberCartMapper;
|
||||
import com.cyl.manager.ums.pojo.query.MemberCartQuery;
|
||||
import com.cyl.manager.ums.pojo.vo.MemberCartVO;
|
||||
import com.cyl.manager.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.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.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 购物车Service业务层处理
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class H5MemberCartService {
|
||||
@Autowired
|
||||
private MemberCartMapper memberCartMapper;
|
||||
@Autowired
|
||||
private SkuMapper skuMapper;
|
||||
@Autowired
|
||||
private ProductMapper productMapper;
|
||||
@Autowired
|
||||
private MemberCartConvert memberCartConvert;
|
||||
|
||||
/**
|
||||
* 查询购物车
|
||||
*
|
||||
* @param id 购物车主键
|
||||
* @return 购物车
|
||||
*/
|
||||
public MemberCart selectById(Long id) {
|
||||
return memberCartMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询购物车列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 购物车
|
||||
*/
|
||||
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<>();
|
||||
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 {
|
||||
Sku sku = skuMap.get(item.getSkuId());
|
||||
memberCartVO.setPrice(sku.getPrice());
|
||||
memberCartVO.setSkuIfExist(1);
|
||||
}
|
||||
resList.add(memberCartVO);
|
||||
});
|
||||
return resList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增购物车
|
||||
*
|
||||
* @param memberCart 购物车
|
||||
* @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);
|
||||
}
|
||||
MemberCart dbCart = memberCarts.get(0);
|
||||
dbCart.setUpdateTime(LocalDateTime.now());
|
||||
dbCart.setQuantity(dbCart.getQuantity() + memberCart.getQuantity());
|
||||
return memberCartMapper.updateById(dbCart);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改购物车
|
||||
*
|
||||
* @param memberCart 购物车
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(MemberCart 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) {
|
||||
throw new BaseException("参数错误");
|
||||
}
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
LambdaQueryWrapper<MemberCart> qw = new LambdaQueryWrapper<>();
|
||||
qw.eq(MemberCart::getMemberId, userId);
|
||||
qw.eq(MemberCart::getId, form.getId());
|
||||
if (form.getNum() <= 0) {
|
||||
return memberCartMapper.delete(qw);
|
||||
}
|
||||
MemberCart e = new MemberCart();
|
||||
e.setQuantity(form.getNum());
|
||||
return memberCartMapper.update(e, qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除购物车信息
|
||||
*
|
||||
* @param id 购物车主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return memberCartMapper.deleteById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除购物车信息
|
||||
*
|
||||
* @param ids 购物车主键
|
||||
* @return 结果
|
||||
*/
|
||||
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() {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
QueryWrapper<MemberCart> qw = new QueryWrapper<>();
|
||||
qw.eq("member_id", userId);
|
||||
qw.eq("status", 1);
|
||||
qw.select("count(quantity) quantity");
|
||||
MemberCart c = memberCartMapper.selectOne(qw);
|
||||
if (c == null) {
|
||||
return 0;
|
||||
}
|
||||
return c.getQuantity();
|
||||
}
|
||||
|
||||
public void injectSku(List<MemberCartDTO> resList) {
|
||||
List<Long> skuIds = resList.stream().map(MemberCartDTO::getSkuId).distinct().collect(Collectors.toList());
|
||||
if (CollUtil.isEmpty(skuIds)) {
|
||||
return;
|
||||
}
|
||||
List<Sku> skus = skuMapper.selectBatchIds(skuIds);
|
||||
Map<Long, Sku> map = new HashMap<>();
|
||||
skus.forEach(it -> {
|
||||
map.put(it.getId(), it);
|
||||
});
|
||||
resList.forEach(it -> {
|
||||
Sku s = map.get(it.getSkuId());
|
||||
if (s == null) {
|
||||
return;
|
||||
}
|
||||
it.setPrice(s.getPrice());
|
||||
});
|
||||
}
|
||||
|
||||
public List<Long> mineCartIds() {
|
||||
QueryWrapper<MemberCart> qw = new QueryWrapper<>();
|
||||
qw.eq("member_id", SecurityUtils.getUserId());
|
||||
qw.eq("status", 1);
|
||||
qw.select("id");
|
||||
List<MemberCart> list = memberCartMapper.selectList(qw);
|
||||
return list.stream().map(MemberCart::getId).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue