购物车修改

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

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

@ -1,13 +1,21 @@
package com.cyl.h5.controller; 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 com.cyl.ums.service.MemberCartService;
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.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@RestController @RestController
@ -15,6 +23,8 @@ import java.util.List;
public class CartController { public class CartController {
@Autowired @Autowired
private MemberCartService memberCartService; private MemberCartService memberCartService;
@Autowired
private MemberCartConvert memberCartConvert;
/** /**
* *
@ -22,7 +32,60 @@ public class CartController {
* @return * @return
*/ */
@GetMapping("goodscount") @GetMapping("goodscount")
public ResponseEntity<Integer> allCategories() { public ResponseEntity<Integer> goodscount() {
return ResponseEntity.ok(memberCartService.mineCartNum()); 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 "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,9 +1,17 @@
package com.cyl.ums.convert; 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 org.mapstruct.Mapper;
import com.cyl.ums.domain.MemberCart; import com.cyl.ums.domain.MemberCart;
import com.cyl.ums.pojo.vo.MemberCartVO; import com.cyl.ums.pojo.vo.MemberCartVO;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
import java.util.List; import java.util.List;
/** /**
* DO <=> DTO <=> VO / BO / Query * DO <=> DTO <=> VO / BO / Query
* *
@ -13,4 +21,14 @@ import java.util.List;
public interface MemberCartConvert { public interface MemberCartConvert {
List<MemberCartVO> dos2vos(List<MemberCart> list); 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; package com.cyl.ums.service;
import java.util.Arrays; import cn.hutool.core.collection.CollUtil;
import java.util.List;
import java.time.LocalDateTime;
import cn.hutool.crypto.SecureUtil;
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.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.github.pagehelper.PageHelper;
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 org.apache.commons.lang3.StringUtils;
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.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.cyl.ums.mapper.MemberCartMapper;
import com.cyl.ums.domain.MemberCart; import java.time.LocalDateTime;
import com.cyl.ums.pojo.query.MemberCartQuery; import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* Service * Service
@ -26,6 +38,12 @@ import com.cyl.ums.pojo.query.MemberCartQuery;
public class MemberCartService { public class MemberCartService {
@Autowired @Autowired
private MemberCartMapper memberCartMapper; 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) { public List<MemberCart> selectList(MemberCartQuery query, Pageable page) {
if (page != null) { 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<>(); QueryWrapper<MemberCart> qw = new QueryWrapper<>();
Integer status = query.getStatus(); Integer status = query.getStatus();
@ -56,6 +74,8 @@ public class MemberCartService {
Long memberId = query.getMemberId(); Long memberId = query.getMemberId();
if (memberId != null) { if (memberId != null) {
qw.eq("member_id", memberId); qw.eq("member_id", memberId);
} else {
qw.eq("member_id", SecurityUtils.getUserId());
} }
Long productId = query.getProductId(); Long productId = query.getProductId();
if (productId != null) { if (productId != null) {
@ -95,6 +115,25 @@ public class MemberCartService {
return memberCartMapper.insert(memberCart); 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) { public int update(MemberCart memberCart) {
return memberCartMapper.updateById(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); 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() { public Integer mineCartNum() {
Long userId = SecurityUtils.getUserId(); Long userId = SecurityUtils.getUserId();
QueryWrapper<MemberCart> qw = new QueryWrapper<>(); QueryWrapper<MemberCart> qw = new QueryWrapper<>();
qw.eq("member_id", userId); qw.eq("member_id", userId);
qw.eq("status", 1); qw.eq("status", 1);
qw.select("sum(quantity) quantity"); qw.select("count(quantity) quantity");
MemberCart c = memberCartMapper.selectOne(qw); MemberCart c = memberCartMapper.selectOne(qw);
if (c == null) { if (c == null) {
return 0; return 0;
} }
return c.getQuantity(); 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