修复因购物车改变引起的订单流程
This commit is contained in:
@@ -29,6 +29,7 @@ import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -87,7 +88,7 @@ public class StoreCartController {
|
||||
@AuthCheck
|
||||
@GetMapping("/cart/list")
|
||||
@ApiOperation(value = "购物车列表",notes = "购物车列表")
|
||||
public ApiResult<Map<String,Object>> getList(){
|
||||
public ApiResult<Map<String, ArrayList>> getList(){
|
||||
Long uid = LocalUser.getUser().getUid();
|
||||
return ApiResult.ok(storeCartService.getUserProductCartList(uid,"",null));
|
||||
}
|
||||
|
||||
+9
-4
@@ -27,6 +27,7 @@ import co.yixiang.modules.activity.service.dto.YxStoreCouponUserQueryCriteria;
|
||||
import co.yixiang.modules.activity.service.mapper.YxStoreCouponUserMapper;
|
||||
import co.yixiang.modules.activity.vo.StoreCouponUserVo;
|
||||
import co.yixiang.modules.activity.vo.YxStoreCouponUserQueryVo;
|
||||
import co.yixiang.modules.cart.domain.YxStoreBrandCart;
|
||||
import co.yixiang.modules.cart.service.YxStoreCartService;
|
||||
import co.yixiang.modules.cart.vo.YxStoreCartQueryVo;
|
||||
import co.yixiang.modules.user.domain.YxUser;
|
||||
@@ -96,11 +97,15 @@ public class YxStoreCouponUserServiceImpl extends BaseServiceImpl<YxStoreCouponU
|
||||
@Override
|
||||
public List<StoreCouponUserVo> beUsableCouponList(Long uid,String cartIds) {
|
||||
|
||||
Map<String, Object> cartGroup = yxStoreCartService.getUserProductCartList(uid,
|
||||
Map<String, ArrayList> cartGroup = yxStoreCartService.getUserProductCartList(uid,
|
||||
cartIds, ShopConstants.ZSW_ONE_NUM);
|
||||
|
||||
List<YxStoreCartQueryVo> cartInfo = (List<YxStoreCartQueryVo>)cartGroup.get("valid");
|
||||
|
||||
List<YxStoreCartQueryVo> list = new ArrayList<>();
|
||||
cartGroup.get("cartList").forEach(item-> {
|
||||
YxStoreBrandCart yxStoreBrandCart = (YxStoreBrandCart) item;
|
||||
list.addAll(yxStoreBrandCart.getValidProductList());
|
||||
});
|
||||
// List<YxStoreCartQueryVo> cartInfo = (List<YxStoreCartQueryVo>)cartGroup.get("valid");
|
||||
List<YxStoreCartQueryVo> cartInfo=list;
|
||||
BigDecimal sumPrice = BigDecimal.ZERO;
|
||||
for (YxStoreCartQueryVo storeCart : cartInfo) {
|
||||
sumPrice = NumberUtil.add(sumPrice,NumberUtil.mul(storeCart.getCartNum(),storeCart.getTruePrice()));
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package co.yixiang.modules.cart.domain;
|
||||
|
||||
import co.yixiang.modules.cart.vo.YxStoreCartQueryVo;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class YxStoreBrandCart{
|
||||
//购物车品牌的信息
|
||||
private Map<String, Object> brand;
|
||||
//购物车品牌下的有效的商品列表
|
||||
private List<YxStoreCartQueryVo> validProductList;
|
||||
//购物车品牌下的有效的商品列表
|
||||
private List<YxStoreCartQueryVo> invalidProductList;
|
||||
}
|
||||
@@ -17,6 +17,7 @@ import org.springframework.data.domain.Pageable;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -48,7 +49,7 @@ public interface YxStoreCartService extends BaseService<YxStoreCart>{
|
||||
* @param status 0-购购物车列表
|
||||
* @return map valid-有效购物车 invalid-失效购物车
|
||||
*/
|
||||
Map<String,Object> getUserProductCartList(Long uid,String cartIds,Integer status);
|
||||
Map<String, ArrayList> getUserProductCartList(Long uid, String cartIds, Integer status);
|
||||
|
||||
/**
|
||||
* 返回当前用户购物车总数量
|
||||
|
||||
+8
-8
@@ -23,6 +23,7 @@ import co.yixiang.modules.activity.service.YxStoreBargainService;
|
||||
import co.yixiang.modules.activity.service.mapper.YxStoreBargainMapper;
|
||||
import co.yixiang.modules.activity.service.mapper.YxStoreCombinationMapper;
|
||||
import co.yixiang.modules.activity.service.mapper.YxStoreSeckillMapper;
|
||||
import co.yixiang.modules.cart.domain.YxStoreBrandCart;
|
||||
import co.yixiang.modules.cart.domain.YxStoreCart;
|
||||
import co.yixiang.modules.cart.service.YxStoreCartService;
|
||||
import co.yixiang.modules.cart.service.dto.YxStoreCartDto;
|
||||
@@ -153,7 +154,7 @@ public class YxStoreCartServiceImpl extends BaseServiceImpl<StoreCartMapper, YxS
|
||||
* @return map valid-有效购物车 invalid-失效购物车
|
||||
*/
|
||||
@Override
|
||||
public Map<String, Object> getUserProductCartList(Long uid, String cartIds, Integer status) {
|
||||
public Map<String, ArrayList> getUserProductCartList(Long uid, String cartIds, Integer status) {
|
||||
LambdaQueryWrapper<YxStoreCart> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(YxStoreCart::getUid, uid)
|
||||
.eq(YxStoreCart::getIsPay, OrderInfoEnum.PAY_STATUS_0.getValue())
|
||||
@@ -200,7 +201,6 @@ public class YxStoreCartServiceImpl extends BaseServiceImpl<StoreCartMapper, YxS
|
||||
} else {
|
||||
storeProduct.setAttrInfo(productAttrValue);
|
||||
storeCartQueryVo.setProductInfo(storeProduct);
|
||||
|
||||
//设置真实价格
|
||||
//设置VIP价格
|
||||
double vipPrice = userService.setLevelPrice(
|
||||
@@ -252,7 +252,7 @@ public class YxStoreCartServiceImpl extends BaseServiceImpl<StoreCartMapper, YxS
|
||||
|
||||
}
|
||||
|
||||
Map<String, Object> map = new LinkedHashMap<>();
|
||||
Map<String, ArrayList> map = new LinkedHashMap<>();
|
||||
//最终返回的有效商品的数组
|
||||
ArrayList cartList=new ArrayList<>();
|
||||
//获取不重复的品牌id数组
|
||||
@@ -268,12 +268,12 @@ public class YxStoreCartServiceImpl extends BaseServiceImpl<StoreCartMapper, YxS
|
||||
BrandIdList.add(storeProduct.getBrandId());
|
||||
});
|
||||
BrandIdList.forEach(item->{
|
||||
Map<String, Object> map1 = new LinkedHashMap<>();
|
||||
YxStoreBrand yxStoreBrand=yxStoreBrandMapper.selectById(item);
|
||||
Map<String, Object> list = new LinkedHashMap<>();
|
||||
YxStoreBrandCart yxStoreBrandCart=new YxStoreBrandCart();
|
||||
list.put("brandName",yxStoreBrand.getBrandName());
|
||||
list.put("pic",yxStoreBrand.getPic());
|
||||
map1.put("brand",list);
|
||||
yxStoreBrandCart.setBrand(list);
|
||||
//对valid/invalid进行筛选,只要当前品牌下的商品
|
||||
List<YxStoreCartQueryVo> validProductList = new ArrayList<>();
|
||||
List<YxStoreCartQueryVo> invalidProductList = new ArrayList<>();
|
||||
@@ -291,9 +291,9 @@ public class YxStoreCartServiceImpl extends BaseServiceImpl<StoreCartMapper, YxS
|
||||
invalidProductList.add(item1);
|
||||
}
|
||||
});
|
||||
map1.put("validProductList",validProductList);
|
||||
map1.put("invalidProductList",invalidProductList);
|
||||
cartList.add(map1);
|
||||
yxStoreBrandCart.setValidProductList(validProductList);
|
||||
yxStoreBrandCart.setInvalidProductList(invalidProductList);
|
||||
cartList.add(yxStoreBrandCart);
|
||||
});
|
||||
// map.put("valid", valid);
|
||||
// map.put("invalid", invalid);
|
||||
|
||||
+31
-11
@@ -7,7 +7,6 @@
|
||||
* 一经发现盗用、分享等行为,将追究法律责任,后果自负
|
||||
*/
|
||||
package co.yixiang.modules.order.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
@@ -35,6 +34,7 @@ import co.yixiang.modules.activity.service.YxStoreBargainUserService;
|
||||
import co.yixiang.modules.activity.service.YxStoreCouponUserService;
|
||||
import co.yixiang.modules.activity.service.YxStorePinkService;
|
||||
import co.yixiang.modules.activity.vo.StoreCouponUserVo;
|
||||
import co.yixiang.modules.cart.domain.YxStoreBrandCart;
|
||||
import co.yixiang.modules.cart.domain.YxStoreCart;
|
||||
import co.yixiang.modules.cart.service.YxStoreCartService;
|
||||
import co.yixiang.modules.cart.service.mapper.StoreCartMapper;
|
||||
@@ -100,6 +100,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Array;
|
||||
import java.lang.reflect.Field;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@@ -199,15 +201,34 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<StoreOrderMapper, Y
|
||||
@Override
|
||||
public ConfirmOrderVo confirmOrder(YxUser yxUser, String cartIds) {
|
||||
Long uid = yxUser.getUid();
|
||||
Map<String, Object> cartGroup = yxStoreCartService.getUserProductCartList(uid,
|
||||
Map<String, ArrayList> cartGroup = yxStoreCartService.getUserProductCartList(uid,
|
||||
cartIds, ShopConstants.ZSW_ONE_NUM);
|
||||
if (ObjectUtil.isNotEmpty(cartGroup.get("invalid"))) {
|
||||
throw new YshopException("有失效的商品请重新提交");
|
||||
}
|
||||
if (ObjectUtil.isEmpty(cartGroup.get("valid"))) {
|
||||
throw new YshopException("请提交购买的商品");
|
||||
}
|
||||
List<YxStoreCartQueryVo> list = new ArrayList<>();
|
||||
|
||||
cartGroup.get("cartList").forEach(item->{
|
||||
YxStoreBrandCart yxStoreBrandCart=(YxStoreBrandCart)item;
|
||||
if (ObjectUtil.isNotEmpty(yxStoreBrandCart.getInvalidProductList())) {
|
||||
throw new YshopException("有失效的商品请重新提交");
|
||||
}
|
||||
if (ObjectUtil.isEmpty(yxStoreBrandCart.getValidProductList())) {
|
||||
throw new YshopException("请提交购买的商品");
|
||||
}
|
||||
list.addAll(yxStoreBrandCart.getValidProductList());
|
||||
// Class jsonClass = item.getClass();//通过item,获取运行时类的对象
|
||||
// Field invalidProductList = null;
|
||||
// Field validProductList = null;
|
||||
// try {
|
||||
// //获取item中的invalidProductList属性
|
||||
// if (ObjectUtil.isNotEmpty(item.getClass().getDeclaredField("invalidProductList"))) {
|
||||
// throw new YshopException("有失效的商品请重新提交");
|
||||
// }
|
||||
// if (ObjectUtil.isEmpty(item.getClass().getDeclaredField("validProductList"))) {
|
||||
// throw new YshopException("请提交购买的商品");
|
||||
// }
|
||||
// } catch (NoSuchFieldException e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
});
|
||||
OtherDto other = new OtherDto();
|
||||
other.setIntegralRatio(systemConfigService.getData(SystemConfigConstants.INTERGRAL_RATIO));
|
||||
other.setIntegralFull(systemConfigService.getData(SystemConfigConstants.INTERGRAL_FULL));
|
||||
@@ -238,7 +259,8 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<StoreOrderMapper, Y
|
||||
.eq(YxUserAddress::getUid, uid)
|
||||
.eq(YxUserAddress::getIsDefault, ShopCommonEnum.DEFAULT_1.getValue()), false);
|
||||
|
||||
List<YxStoreCartQueryVo> cartInfo = (List<YxStoreCartQueryVo>) cartGroup.get("valid");
|
||||
// List<YxStoreCartQueryVo> cartInfo = (List<YxStoreCartQueryVo>) cartGroup.get("valid");
|
||||
List<YxStoreCartQueryVo> cartInfo=list;
|
||||
PriceGroupDto priceGroup = this.getOrderPriceGroup(cartInfo, userAddress);
|
||||
|
||||
//判断积分是否满足订单额度
|
||||
@@ -247,8 +269,6 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<StoreOrderMapper, Y
|
||||
}
|
||||
|
||||
String cacheKey = this.cacheOrderInfo(uid, cartInfo, priceGroup, other);
|
||||
|
||||
|
||||
//获取可用优惠券
|
||||
List<String> productIds = cartInfo.stream()
|
||||
.map(YxStoreCartQueryVo::getProductId)
|
||||
|
||||
Reference in New Issue
Block a user