购物车修改

pull/1/head
feijinping 3 years ago
parent b9c3e1e106
commit 80dd5b48c7

@ -59,7 +59,6 @@ public class SysLoginController {
public AjaxResult login(@RequestBody PhoneLoginBody loginBody) {
AjaxResult ajax = AjaxResult.success();
SysUser user = loginService.phoneLogin(loginBody.getPhone(), loginBody.getCode(), loginBody.getUuid());
// lcUserService.initVipUser(user);
ajax.put(Constants.TOKEN, loginService.createToken(user));
return ajax;
}

@ -1,13 +1,21 @@
package com.cyl.h5.controller;
import com.cyl.pms.domain.ProductCategory;
import com.cyl.pms.pojo.dto.MemberCartDTO;
import com.cyl.ums.convert.MemberCartConvert;
import com.cyl.ums.domain.MemberCart;
import com.cyl.ums.pojo.query.MemberCartQuery;
import com.cyl.ums.pojo.vo.form.AddMemberCartForm;
import com.cyl.ums.pojo.vo.form.UpdateMemberCartForm;
import com.cyl.ums.service.MemberCartService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
@RestController
@ -15,6 +23,8 @@ import java.util.List;
public class CartController {
@Autowired
private MemberCartService memberCartService;
@Autowired
private MemberCartConvert memberCartConvert;
/**
*
@ -22,7 +32,60 @@ public class CartController {
* @return
*/
@GetMapping("goodscount")
public ResponseEntity<Integer> allCategories() {
public ResponseEntity<Integer> goodscount() {
return ResponseEntity.ok(memberCartService.mineCartNum());
}
/**
* id
*
* @return
*/
@GetMapping("cart-ids")
public ResponseEntity<List<Long>> cartIds() {
return ResponseEntity.ok(memberCartService.mineCartIds());
}
/**
*
*
* @return
*/
@PostMapping("add")
public ResponseEntity<MemberCart> add(@Valid @RequestBody AddMemberCartForm form) {
return ResponseEntity.ok(memberCartService.insert(form));
}
/**
*
*
* @return
*/
@PostMapping("modify")
public ResponseEntity<Integer> modify(@Valid @RequestBody UpdateMemberCartForm form) {
return ResponseEntity.ok(memberCartService.update(form));
}
/**
*
*
* @return
*/
@DeleteMapping("remove")
public ResponseEntity<Integer> remove(@RequestBody List<Long> ids) {
return ResponseEntity.ok(memberCartService.deleteByIds(ids));
}
/**
*
*
* @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()));
}
}

@ -28,4 +28,13 @@ public class WechatController {
}
return "err";
}
/**
*
* @return
*/
@GetMapping("/no-auth/wechat/h5-login")
public String h5Login(HttpServletRequest request) {
// TODO
return "err";
}
}

@ -0,0 +1,11 @@
package com.cyl.pms.pojo.dto;
import com.cyl.ums.domain.MemberCart;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class MemberCartDTO extends MemberCart {
private BigDecimal price;
}

@ -1,16 +1,34 @@
package com.cyl.ums.convert;
import com.cyl.pms.domain.Product;
import com.cyl.pms.domain.Sku;
import com.cyl.pms.pojo.dto.MemberCartDTO;
import org.mapstruct.BeanMapping;
import org.mapstruct.Mapper;
import com.cyl.ums.domain.MemberCart;
import com.cyl.ums.pojo.vo.MemberCartVO;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
import java.util.List;
/**
* DO <=> DTO <=> VO / BO / Query
*
* @author zcc
*/
@Mapper(componentModel = "spring")
public interface MemberCartConvert {
public interface MemberCartConvert {
List<MemberCartVO> dos2vos(List<MemberCart> list);
@Mapping(target = "id", ignore = true)
@Mapping(target = "skuId", source = "id")
MemberCart sku2Cart(Sku sku);
@BeanMapping(ignoreByDefault = true)
@Mapping(source = "name", target = "productName")
void injectProduct(@MappingTarget MemberCart memberCart, Product p);
List<MemberCartDTO> dos2Dtos(List<MemberCart> list);
}

@ -0,0 +1,23 @@
package com.cyl.ums.pojo.vo.form;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
@Data
public class AddMemberCartForm {
/**
* id
*/
@NotNull(message = "规格必填!")
private Long skuId;
/**
*
*/
@NotNull(message = "数量必填!")
@Min(value = 1, message = "数量不小于1")
@Max(value = Integer.MAX_VALUE, message = "数量不大于" + Integer.MAX_VALUE)
private Integer num;
}

@ -0,0 +1,18 @@
package com.cyl.ums.pojo.vo.form;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
@Data
public class UpdateMemberCartForm {
@NotNull(message = "id 不能为空")
private Long id;
@NotNull(message = "数量必填")
@Min(value = 0, message = "数量不小于0")
@Max(value = Integer.MAX_VALUE, message = "数量不大于" + Integer.MAX_VALUE)
private Integer num;
}

@ -1,21 +1,33 @@
package com.cyl.ums.service;
import java.util.Arrays;
import java.util.List;
import java.time.LocalDateTime;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.MemberCart;
import com.cyl.ums.mapper.MemberCartMapper;
import com.cyl.ums.pojo.query.MemberCartQuery;
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.exception.base.BaseException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.SortUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import com.cyl.ums.mapper.MemberCartMapper;
import com.cyl.ums.domain.MemberCart;
import com.cyl.ums.pojo.query.MemberCartQuery;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* Service
@ -26,6 +38,12 @@ import com.cyl.ums.pojo.query.MemberCartQuery;
public class MemberCartService {
@Autowired
private MemberCartMapper memberCartMapper;
@Autowired
private SkuMapper skuMapper;
@Autowired
private ProductMapper productMapper;
@Autowired
private MemberCartConvert memberCartConvert;
/**
*
@ -46,7 +64,7 @@ public class MemberCartService {
*/
public List<MemberCart> selectList(MemberCartQuery query, Pageable page) {
if (page != null) {
PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize(), SortUtil.sort2string(page.getSort(),"id desc"));
}
QueryWrapper<MemberCart> qw = new QueryWrapper<>();
Integer status = query.getStatus();
@ -56,6 +74,8 @@ public class MemberCartService {
Long memberId = query.getMemberId();
if (memberId != null) {
qw.eq("member_id", memberId);
} else {
qw.eq("member_id", SecurityUtils.getUserId());
}
Long productId = query.getProductId();
if (productId != null) {
@ -95,6 +115,25 @@ public class MemberCartService {
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;
}
/**
*
*
@ -104,6 +143,21 @@ public class MemberCartService {
public int update(MemberCart memberCart) {
return memberCartMapper.updateById(memberCart);
}
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);
}
/**
*
@ -115,16 +169,58 @@ public class MemberCartService {
return memberCartMapper.deleteById(id);
}
/**
*
*
* @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 Integer mineCartNum() {
Long userId = SecurityUtils.getUserId();
QueryWrapper<MemberCart> qw = new QueryWrapper<>();
qw.eq("member_id", userId);
qw.eq("status", 1);
qw.select("sum(quantity) quantity");
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…
Cancel
Save