From 0bd5e40487d5dd7355bf0592de0808fea00e0a35 Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Wed, 14 Jan 2026 16:55:21 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E9=80=81=E8=B4=B9=E8=B0=83=E8=AF=95?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ShopOrderInfoServiceImpl.java | 17 +- .../impl/ShopOrderReturnServiceImpl.java | 54 ++--- ...StoreSameCityTransportBaseServiceImpl.java | 192 ++-------------- ...ShopStoreSameCityTransportServiceImpl.java | 16 +- .../service/impl/ShopUserCartServiceImpl.java | 208 +++++++++--------- 5 files changed, 171 insertions(+), 316 deletions(-) diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java index def81c7f..96bfc6dc 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderInfoServiceImpl.java @@ -1047,13 +1047,16 @@ public class ShopOrderInfoServiceImpl extends BaseServiceImpl storeBizTimeRange = null; // 如果storeId不为空,则尝试获取店铺信息 - if (StrUtil.isNotBlank(storeIds)) { - // 根据一个或多个店铺id获取有效店铺的有效营业时间段 - List> storeBizTimeRangesList = selectMulStoreBizTimeRanges(storeIds); - if (!CollUtil.isEmpty(storeBizTimeRangesList)) { - // 获取多个店铺的营业时间段的一个交集 - storeBizTimeRange = DateTimeUtils.findTimeInterSection(storeBizTimeRangesList); - } + if (StrUtil.isBlank(storeIds)) { + logger.info("[生成预约参数] 缺少店铺Id参数"); + return Collections.emptyList(); + } + + // 根据一个或多个店铺id获取有效店铺的有效营业时间段 + List> storeBizTimeRangesList = selectMulStoreBizTimeRanges(storeIds); + if (!CollUtil.isEmpty(storeBizTimeRangesList)) { + // 获取多个店铺的营业时间段的一个交集 + storeBizTimeRange = DateTimeUtils.findTimeInterSection(storeBizTimeRangesList); } if (storeBizTimeRange == null diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderReturnServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderReturnServiceImpl.java index daed8826..d2e0bb30 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderReturnServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderReturnServiceImpl.java @@ -253,15 +253,15 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl> statisticCount(Date end, int days) { Integer store_id = Convert.toInt(getCurrentUser().getStore_id()); if (ObjectUtil.isNotNull(store_id)) { - List> mapList= shopOrderReturnMapper.statisticCountSeller(end, days, store_id); - if(null==mapList){ - mapList=new ArrayList<>(); + List> mapList = shopOrderReturnMapper.statisticCountSeller(end, days, store_id); + if (null == mapList) { + mapList = new ArrayList<>(); } return mapList; } - List> statisticList=shopOrderReturnMapper.statisticCount(end, days); - if(null==statisticList){ - statisticList=new ArrayList<>(); + List> statisticList = shopOrderReturnMapper.statisticCount(end, days); + if (null == statisticList) { + statisticList = new ArrayList<>(); } return statisticList; } @@ -1980,16 +1980,16 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl 0) { additionalFees = additionalFees.add(order_data_row.getPacking_fee()); feeTypes.add("打包费"); - logger.debug("添加打包费: {},订单ID: {}", order_data_row.getPacking_fee(), order_id); + logger.info("添加打包费: {},订单ID: {}", order_data_row.getPacking_fee(), order_id); } // 处理配送费 @@ -2009,9 +2009,11 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl 0) { additionalFees = additionalFees.add(order_data_row.getOrder_shipping_fee()); feeTypes.add("配送费"); - logger.debug("添加配送费: {},订单ID: {}", order_data_row.getOrder_shipping_fee(), order_id); + logger.info("添加配送费: {},订单ID: {}", order_data_row.getOrder_shipping_fee(), order_id); } + logger.info("处理运费和打包费结果:{}, 金额:{}", order_id, additionalFees); + // 更新退款金额和说明 if (additionalFees.compareTo(BigDecimal.ZERO) > 0) { BigDecimal newRefundAmount = return_row.getReturn_refund_amount().add(additionalFees); @@ -2031,7 +2033,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl 0) { - log.debug("[订单是否禁止退货] 订单已超过退货期限,禁止退货,orderId: {}, orderDealTime: {}, withdrawTime: {}", + log.warn("[订单是否禁止退货] 订单已超过退货期限,禁止退货,orderId: {}, orderDealTime: {}, withdrawTime: {}", orderId, orderDealTime, withdrawTime); return true; } @@ -2677,13 +2679,13 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl transportList = shopStoreSameCityTransportService.selectShopStoreSameCityTransportList(storeId); - + // List transportList = shopStoreSameCityTransportService.selectShopStoreSameCityTransportList(storeId); + List transportList = shopStoreSameCityTransportService.selectShopStoreSameCityTransportListByTransportBaseId(transportBase.getTransport_base_id()); if (CollUtil.isEmpty(transportList)) { // 没有配送范围和起配金额规则的时候,直接以基础配送费来配送 return new SameCityDeliveryFeeRespDTO(true, false, deliveryBaseFee, BigDecimal.ZERO, deliveryBaseFee, ""); @@ -690,7 +694,7 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl 0) { // 没有一个满足起送距离和起送金额的规则订单 @@ -827,7 +831,7 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl 0) { - logger.debug(storeName + "下单时,超出基础距离、重量的额外配送费:{}元。", deliveryBaseFee); + logger.warn(storeName + "下单时,{}超出基础距离、重量的额外配送费:{}元。", tip, deliveryBaseFee); } } // #### 额外配送费计算完毕 @@ -851,7 +855,7 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl transportList = shopStoreSameCityTransportService.selectShopStoreSameCityTransportList(Convert.toLong(storeId)); -// -// if (CollUtil.isEmpty(transportList)) { -// // 没有配送范围规则的时候,直接以基础配送费来配送 -// return deliveryBaseFee.multiply(BigDecimal.valueOf(100)).intValue(); -// } -// -// // 判断配送范围和起送金额条件 -// String canNotDeliveryReason = ""; -// boolean canDelivery = false; -// -// // 优先处理距离和金额都满足的规则 -// for (ShopStoreSameCityTransport transport : transportList) { -// // 判断订单距离是否在配送范围内 -// if (transport.getMax_delivery_radius() >= distance) { -// // 距离在配送范围内,判断金额是否符合起配金额额度 -// boolean moneyPassed = false; -// if (CommonConstant.Delivery_Amount_Comput_Type_Original.equals(transport.getMin_delivery_amount_type())) { -// moneyPassed = orderProductAmount != null && transport.getMin_delivery_amount().compareTo(orderProductAmount) <= 0; -// } else if (CommonConstant.Delivery_Amount_Comput_Type_Discounted.equals(transport.getMin_delivery_amount_type())) { -// moneyPassed = orderDiscountAmount != null && transport.getMin_delivery_amount().compareTo(orderDiscountAmount) <= 0; -// } else if (CommonConstant.Delivery_Amount_Comput_Type_Payment.equals(transport.getMin_delivery_amount_type())) { -// moneyPassed = orderPayAmount != null && transport.getMin_delivery_amount().compareTo(orderPayAmount) <= 0; -// } -// -// // 距离和金额都满足条件 -// if (moneyPassed) { -// canDelivery = true; -// break; -// } -// } -// } -// -// // 如果没有找到完全满足条件的规则,再详细检查找出失败原因 -// if (!canDelivery) { -// for (ShopStoreSameCityTransport transport : transportList) { -// // 判断订单距离是否在配送范围内 -// if (transport.getMax_delivery_radius() < distance) { -// // 记录距离不满足的原因 -// canNotDeliveryReason = storeName + "的订单不在配送范围内,订单无法配送。"; -// } else { -// // 距离在配送范围内,判断金额是否符合起配金额额度 -// if (CommonConstant.Delivery_Amount_Comput_Type_Original.equals(transport.getMin_delivery_amount_type())) { -// if (orderProductAmount != null && transport.getMin_delivery_amount().compareTo(orderProductAmount) > 0) { -// BigDecimal diffMoney = transport.getMin_delivery_amount().subtract(orderProductAmount); -// canNotDeliveryReason = String.format("%s商品原价金额还差%.2f元,才满足配送条件,请检查订单。", storeName, diffMoney); -// } else { -// canDelivery = true; -// break; -// } -// } else if (CommonConstant.Delivery_Amount_Comput_Type_Discounted.equals(transport.getMin_delivery_amount_type())) { -// if (orderDiscountAmount != null && transport.getMin_delivery_amount().compareTo(orderDiscountAmount) > 0) { -// BigDecimal diffMoney = transport.getMin_delivery_amount().subtract(orderDiscountAmount); -// canNotDeliveryReason = String.format("%s订单折后金额还差%.2f元,才满足配送条件,请检查订单。", storeName, diffMoney); -// } else { -// canDelivery = true; -// break; -// } -// } else if (CommonConstant.Delivery_Amount_Comput_Type_Payment.equals(transport.getMin_delivery_amount_type())) { -// if (orderPayAmount != null && transport.getMin_delivery_amount().compareTo(orderPayAmount) > 0) { -// BigDecimal diffMoney = transport.getMin_delivery_amount().subtract(orderPayAmount); -// canNotDeliveryReason = String.format("%s订单应支付金额还差%.2f元,才满足配送条件,请检查订单。", storeName, diffMoney); -// } else { -// canDelivery = true; -// break; -// } -// } -// } -// } -// } -// -// // 如果仍然不能配送,记录日志并返回0 -// if (!canDelivery) { -// logger.warn(canNotDeliveryReason.isEmpty() ? (storeName + "订单不在配送范围内或未达起送金额,请检查!") : canNotDeliveryReason); -// return 0; -// } -// -// // 额外配送费计算 -// // 每增加一个距离累加运费 -// if (transportBase.getDistance_increase_km() != null && transportBase.getDistance_increase_fee() != null && distance > transportBase.getDistance_base() * 1000) { -// // 实际配送距离超出基础距离,单位km -// BigDecimal diffDistanceM = CommonUtil.DecimalRoundHalfUp(BigDecimal.valueOf(distance - transportBase.getDistance_base() * 1000).divide(BigDecimal.valueOf(1000))); -// // 倍数 -// BigDecimal times = BigDecimal.ZERO; -// if (transportBase.getDistance_increase_km() > 0 && diffDistanceM.intValue() > transportBase.getDistance_increase_km()) { -// // 末尾非零进位,比如:2.1将是3, 2.0将是2,2.001将是3 -// times = NumberUtil.div(diffDistanceM, transportBase.getDistance_increase_km()).setScale(0, RoundingMode.UP); -// } -// -// // 超过基础运费距离后,累加上运费 -// deliveryBaseFee = deliveryBaseFee.add(transportBase.getDistance_increase_fee().multiply(times)); -// } -// -// // 每增加一个重量累加运费(重量暂时忽略,配置的时候设置0) -// if (transportBase.getWeight_increase_kg() != null && transportBase.getWeight_increase_fee() != null && orderWeightGram != null && orderWeightGram > transportBase.getWeight_base() * 1000) { -// // 实际配送重量超出基础重量,单位kg -// BigDecimal diffWeightKg = CommonUtil.DecimalRoundHalfUp(BigDecimal.valueOf(orderWeightGram - transportBase.getWeight_base() * 1000).divide(BigDecimal.valueOf(1000))); -// // 倍数 -// BigDecimal times = BigDecimal.ZERO; -// if (transportBase.getWeight_increase_kg() > 0 && diffWeightKg.intValue() > transportBase.getWeight_increase_kg()) { -// // 末尾非零进位,比如:2.1将是3, 2.0将是2,2.001将是3 -// times = NumberUtil.div(diffWeightKg, transportBase.getWeight_increase_kg()).setScale(0, RoundingMode.UP); -// } -// -// deliveryBaseFee = deliveryBaseFee.add(transportBase.getWeight_increase_fee().multiply(times)); -// } -// -// // 返回单位为分的配送费 -// return deliveryBaseFee.multiply(BigDecimal.valueOf(100)).intValue(); + return sameCityDeliveryFeeRespDTO.getDeliveryFee().multiply(new BigDecimal(100)).intValue(); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreSameCityTransportServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreSameCityTransportServiceImpl.java index a46c4082..ac789165 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreSameCityTransportServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreSameCityTransportServiceImpl.java @@ -78,19 +78,15 @@ public class ShopStoreSameCityTransportServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("transport_base_id", transportBaseId); - queryWrapper.eq("status", CommonConstant.Enable); - queryWrapper.orderByAsc("transport_id"); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ShopStoreSameCityTransport::getTransport_base_id, transportBaseId) + .eq(ShopStoreSameCityTransport::getStatus, CommonConstant.Enable) + .orderByAsc(ShopStoreSameCityTransport::getTransport_id); - List shopStoreSameCityTransportList = list(queryWrapper); - if (CollectionUtil.isEmpty(shopStoreSameCityTransportList)) { - shopStoreSameCityTransportList = Collections.emptyList(); - } - - return shopStoreSameCityTransportList; + return list(queryWrapper); } + /** * 根据同城配送基础配置自增 Id 获取同城配送扩展设置列表 * diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/user/service/impl/ShopUserCartServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/user/service/impl/ShopUserCartServiceImpl.java index 36537806..04578ccd 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/user/service/impl/ShopUserCartServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/user/service/impl/ShopUserCartServiceImpl.java @@ -58,7 +58,6 @@ import com.suisung.mall.shop.user.mapper.ShopUserCartMapper; import com.suisung.mall.shop.user.service.ShopUserCartService; import com.suisung.mall.shop.user.service.ShopUserDeliveryAddressService; import com.suisung.mall.shop.user.service.ShopUserVoucherService; -import io.swagger.models.auth.In; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; @@ -435,16 +434,16 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl= 0 ? Math.max(1, cart_quantity) : Math.min(-1, cart_quantity)); // 购买商品数量 data.put("cart_type", cart_type); - // data.put("activity_id", activity_id); + // data.put("activity_id", activity_id); //data.put("activity_item_id", activity_item_id); data.put("cart_file", cart_file); data.put("chain_id", chain_id); @@ -648,13 +647,13 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl itemInfoList = StrUtil.split(cartId, ","); - if(0!=activityId){ - Map data=new HashMap(); - String itemIdStr= itemInfoList.get(0); + if (0 != activityId) { + Map data = new HashMap(); + String itemIdStr = itemInfoList.get(0); long[] itemData = StrUtil.splitToLong(itemIdStr, "|"); - if(itemData[1]>0){ - data= checkActivity(activityId,0L,currentUserId,data,itemData[0]); - activityId= Convert.toInt(data.get("activity_id")); + if (itemData[1] > 0) { + data = checkActivity(activityId, 0L, currentUserId, data, itemData[0]); + activityId = Convert.toInt(data.get("activity_id")); } } // 购物车行项目列表 @@ -1302,74 +1301,74 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl queryWrapper, Integer page, Integer rows) { - List cart_rows =null; - if(null!=page&&null!=rows){ - Page userCartPage =lists(queryWrapper,page,rows); - cart_rows =userCartPage.getRecords(); - }else { - cart_rows = find(queryWrapper); + List cart_rows = null; + if (null != page && null != rows) { + Page userCartPage = lists(queryWrapper, page, rows); + cart_rows = userCartPage.getRecords(); + } else { + cart_rows = find(queryWrapper); } - QueryWrapper shopStoreActivityBaseQueryWrapper=new QueryWrapper<>(); - List activityIdList=cart_rows.stream().map(ShopUserCart::getActivity_id).filter(activityId -> activityId !=0).collect(Collectors.toList()); - if(!activityIdList.isEmpty()){//把折扣的活动分开,进入shopItem时就会分开处理 - shopStoreActivityBaseQueryWrapper.in("activity_id",activityIdList); - List shopStoreActivityBases= shopStoreActivityBaseService.list(shopStoreActivityBaseQueryWrapper); - Map shopStoreActivityBaseHashMap=new HashMap<>(); + QueryWrapper shopStoreActivityBaseQueryWrapper = new QueryWrapper<>(); + List activityIdList = cart_rows.stream().map(ShopUserCart::getActivity_id).filter(activityId -> activityId != 0).collect(Collectors.toList()); + if (!activityIdList.isEmpty()) {//把折扣的活动分开,进入shopItem时就会分开处理 + shopStoreActivityBaseQueryWrapper.in("activity_id", activityIdList); + List shopStoreActivityBases = shopStoreActivityBaseService.list(shopStoreActivityBaseQueryWrapper); + Map shopStoreActivityBaseHashMap = new HashMap<>(); shopStoreActivityBases.forEach(shopStoreActivityBase -> { - if(shopStoreActivityBase.getActivity_type_id()==StateCode.ACTIVITY_TYPE_LIMITED_DISCOUNT){ - shopStoreActivityBaseHashMap.put(shopStoreActivityBase.getActivity_id(),shopStoreActivityBase); + if (shopStoreActivityBase.getActivity_type_id() == StateCode.ACTIVITY_TYPE_LIMITED_DISCOUNT) { + shopStoreActivityBaseHashMap.put(shopStoreActivityBase.getActivity_id(), shopStoreActivityBase); } }); - List newShopUserCartList=new ArrayList<>(); - Map activityCountLimitMap=new HashMap<>(); + List newShopUserCartList = new ArrayList<>(); + Map activityCountLimitMap = new HashMap<>(); cart_rows.forEach(shopUserCart -> { - if(null!=shopStoreActivityBaseHashMap.get(shopUserCart.getActivity_id())){ - ShopStoreActivityBase shopStoreActivityBase=shopStoreActivityBaseHashMap.get(shopUserCart.getActivity_id()); + if (null != shopStoreActivityBaseHashMap.get(shopUserCart.getActivity_id())) { + ShopStoreActivityBase shopStoreActivityBase = shopStoreActivityBaseHashMap.get(shopUserCart.getActivity_id()); //校验扣减逻辑 - Integer orderLimit= shopStoreActivityBase.getOrder_limit();//每单限购 - Integer cart_quantity= shopUserCart.getCart_quantity();//购物车数量 - Integer activity_id= shopStoreActivityBase.getActivity_id();//活动id - if(orderLimit>0){//限购逻辑处理 - if(orderLimit>=cart_quantity){//没有超限购 - if(null!=activityCountLimitMap.get(activity_id)){//相同的活动有其他购买,可能需要分开 - Integer countOrderLimit= activityCountLimitMap.get(activity_id); - int noDiscountLest=orderLimit-countOrderLimit-cart_quantity; - if(noDiscountLest>=0){//没有超出限购,直接加入统计,不用分开 + Integer orderLimit = shopStoreActivityBase.getOrder_limit();//每单限购 + Integer cart_quantity = shopUserCart.getCart_quantity();//购物车数量 + Integer activity_id = shopStoreActivityBase.getActivity_id();//活动id + if (orderLimit > 0) {//限购逻辑处理 + if (orderLimit >= cart_quantity) {//没有超限购 + if (null != activityCountLimitMap.get(activity_id)) {//相同的活动有其他购买,可能需要分开 + Integer countOrderLimit = activityCountLimitMap.get(activity_id); + int noDiscountLest = orderLimit - countOrderLimit - cart_quantity; + if (noDiscountLest >= 0) {//没有超出限购,直接加入统计,不用分开 newShopUserCartList.add(shopUserCart); - activityCountLimitMap.put(activity_id,(countOrderLimit+cart_quantity)); - }else {//超出限购,需要分开 - noDiscountLest= noDiscountLest*(-1); - ShopUserCart newUserCart=new ShopUserCart(); - BeanUtils.copyProperties(shopUserCart,newUserCart);//新建一个分开的购物清单 + activityCountLimitMap.put(activity_id, (countOrderLimit + cart_quantity)); + } else {//超出限购,需要分开 + noDiscountLest = noDiscountLest * (-1); + ShopUserCart newUserCart = new ShopUserCart(); + BeanUtils.copyProperties(shopUserCart, newUserCart);//新建一个分开的购物清单 shopUserCart.setCart_quantity(orderLimit);//数量改变,旧的活动依旧 newShopUserCartList.add(newUserCart); newUserCart.setCart_quantity(noDiscountLest); newUserCart.setActivity_id(0);//新的购物清单无活动 newShopUserCartList.add(shopUserCart); - if(!activityCountLimitMap.containsKey(activity_id)){ - activityCountLimitMap.put(activity_id,orderLimit); + if (!activityCountLimitMap.containsKey(activity_id)) { + activityCountLimitMap.put(activity_id, orderLimit); } } - }else {//相同的活动没有其他购买,不用分开 - newShopUserCartList.add(shopUserCart); - activityCountLimitMap.put(activity_id,cart_quantity); + } else {//相同的活动没有其他购买,不用分开 + newShopUserCartList.add(shopUserCart); + activityCountLimitMap.put(activity_id, cart_quantity); } - }else {//超出限购范围了,直接分开 - int noDiscountLest=cart_quantity-orderLimit; - ShopUserCart newUserCart=new ShopUserCart(); - BeanUtils.copyProperties(shopUserCart,newUserCart);//新建一个分开的购物清单 + } else {//超出限购范围了,直接分开 + int noDiscountLest = cart_quantity - orderLimit; + ShopUserCart newUserCart = new ShopUserCart(); + BeanUtils.copyProperties(shopUserCart, newUserCart);//新建一个分开的购物清单 shopUserCart.setCart_quantity(orderLimit);//数量改变,旧的活动依旧 newShopUserCartList.add(newUserCart); newUserCart.setCart_quantity(noDiscountLest); newUserCart.setActivity_id(0);//新的购物清单无活动 newShopUserCartList.add(shopUserCart); - if(!activityCountLimitMap.containsKey(activity_id)){ - activityCountLimitMap.put(activity_id,orderLimit); + if (!activityCountLimitMap.containsKey(activity_id)) { + activityCountLimitMap.put(activity_id, orderLimit); } } } - }else { + } else { newShopUserCartList.add(shopUserCart); } }); @@ -1882,13 +1881,13 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl0){ - BigDecimal item_unit_price=Convert.toBigDecimal(productItemInStore.get("item_unit_price")); - BigDecimal num=BigDecimal.valueOf(Convert.toInt(productItemInStore.get("num"))); - BigDecimal oldSubTotal=NumberUtil.mul(item_unit_price, num);//原总价 - BigDecimal subTotal=NumberUtil.sub(oldSubTotal,Convert.toBigDecimal(productItemInStore.get("item_discount_amount")));//最终价格=原总价-总优惠价 + if (productItemInStore.get("item_discount_quantity") != null && Convert.toInt(productItemInStore.get("item_discount_quantity")) > 0) { + BigDecimal item_unit_price = Convert.toBigDecimal(productItemInStore.get("item_unit_price")); + BigDecimal num = BigDecimal.valueOf(Convert.toInt(productItemInStore.get("num"))); + BigDecimal oldSubTotal = NumberUtil.mul(item_unit_price, num);//原总价 + BigDecimal subTotal = NumberUtil.sub(oldSubTotal, Convert.toBigDecimal(productItemInStore.get("item_discount_amount")));//最终价格=原总价-总优惠价 storeTotalAmount = NumberUtil.add(subTotal, storeTotalAmount); - }else { + } else { storeTotalAmount = NumberUtil.add(Convert.toBigDecimal(productItemInStore.get("subtotal")), storeTotalAmount); } @@ -2788,6 +2787,7 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl shopStoreActivityBaseQueryWrapper=new QueryWrapper<>(); + private Map checkActivity(Integer activity_id, Long activity_item_id, Integer user_id, Map data, Long item_id) { + QueryWrapper shopStoreActivityBaseQueryWrapper = new QueryWrapper<>(); shopStoreActivityBaseQueryWrapper.eq("activity_id", activity_id); - List shopStoreActivityBases= shopStoreActivityBaseService.list(shopStoreActivityBaseQueryWrapper); - if(shopStoreActivityBases.isEmpty()){ + List shopStoreActivityBases = shopStoreActivityBaseService.list(shopStoreActivityBaseQueryWrapper); + if (shopStoreActivityBases.isEmpty()) { throw new ApiException("活动不存在"); } - ShopStoreActivityBase shopStoreActivityBase=shopStoreActivityBases.get(0); + ShopStoreActivityBase shopStoreActivityBase = shopStoreActivityBases.get(0); //店铺会员等级,店铺会员才能参加 - boolean canTakePart=checkStoreMemberLever(user_id,shopStoreActivityBase); - if(!canTakePart){//不能参加活动 - data.put("activity_id",0); - data.put("activity_item_id",0); + boolean canTakePart = checkStoreMemberLever(user_id, shopStoreActivityBase); + if (!canTakePart) {//不能参加活动 + data.put("activity_id", 0); + data.put("activity_item_id", 0); return data; } - if(shopStoreActivityBase.getActivity_type_id()==StateCode.ACTIVITY_TYPE_LIMITED_DISCOUNT){//限时折扣才有这种规则 - String is_new_person_shop=shopStoreActivityBase.getIs_new_person_shop(); - if(DicEnum.YESORNO_1.getCode().equals(is_new_person_shop)){ - Integer store_id=shopStoreActivityBase.getStore_id(); - boolean isNewUser=checkoutNewPerson(user_id,store_id); - if(!isNewUser){//不能参加活动 - data.put("activity_id",0); - data.put("activity_item_id",0); + if (shopStoreActivityBase.getActivity_type_id() == StateCode.ACTIVITY_TYPE_LIMITED_DISCOUNT) {//限时折扣才有这种规则 + String is_new_person_shop = shopStoreActivityBase.getIs_new_person_shop(); + if (DicEnum.YESORNO_1.getCode().equals(is_new_person_shop)) { + Integer store_id = shopStoreActivityBase.getStore_id(); + boolean isNewUser = checkoutNewPerson(user_id, store_id); + if (!isNewUser) {//不能参加活动 + data.put("activity_id", 0); + data.put("activity_item_id", 0); return data; - // throw new ApiException("店铺新人才能购买"); + // throw new ApiException("店铺新人才能购买"); } // else { // Integer person_limit=shopStoreActivityBase.getPerson_limit();//每人限购 每单限购不能大于每人限购 @@ -3335,22 +3337,22 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl shopOrderItemQueryWrapper=new QueryWrapper<>(); + } else {//如果不是新人活动,要考虑每人限购问题,就是每人参加活动的次数 todo 按店铺会员等级 + Integer person_limit = shopStoreActivityBase.getPerson_limit();//每人限购 每单限购不能大于每人限购 + QueryWrapper shopOrderItemQueryWrapper = new QueryWrapper<>(); shopOrderItemQueryWrapper.eq("activity_id", activity_id); shopOrderItemQueryWrapper.eq("item_id", item_id); - List shopOrderItemList= shopOrderItemService.list(shopOrderItemQueryWrapper);//计算用户购买的商品 - Integer person_limit_count=shopOrderItemList.stream().mapToInt(ShopOrderItem::getOrder_item_quantity).sum(); - if(person_limit_count >= person_limit){//不能参加活动 - data.put("activity_id",0); - data.put("activity_item_id",0); + List shopOrderItemList = shopOrderItemService.list(shopOrderItemQueryWrapper);//计算用户购买的商品 + Integer person_limit_count = shopOrderItemList.stream().mapToInt(ShopOrderItem::getOrder_item_quantity).sum(); + if (person_limit_count >= person_limit) {//不能参加活动 + data.put("activity_id", 0); + data.put("activity_item_id", 0); return data; } } } - data.put("activity_id",activity_id); - data.put("activity_item_id",activity_item_id); + data.put("activity_id", activity_id); + data.put("activity_item_id", activity_item_id); // Integer person_limit= shopStoreActivityBase.getPerson_limit(); // Integer order_limit=shopStoreActivityBase.getOrder_limit(); // data.put("person_limit",person_limit); @@ -3360,29 +3362,31 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl shopStoreMemberLevelQueryWrapper=new QueryWrapper(); - shopStoreMemberLevelQueryWrapper.eq("user_id",user_id); - shopStoreMemberLevelQueryWrapper.eq("store_id",store_id); - shopStoreMemberLevelQueryWrapper.eq("",new BigDecimal("0.00")); - long count=shopStoreMemberLevelService.count(shopStoreMemberLevelQueryWrapper); - if(count>0){ - isNewUser=true; + private boolean checkoutNewPerson(Integer user_id, Integer store_id) { + boolean isNewUser = false; + QueryWrapper shopStoreMemberLevelQueryWrapper = new QueryWrapper(); + shopStoreMemberLevelQueryWrapper.eq("user_id", user_id); + shopStoreMemberLevelQueryWrapper.eq("store_id", store_id); + shopStoreMemberLevelQueryWrapper.eq("", new BigDecimal("0.00")); + long count = shopStoreMemberLevelService.count(shopStoreMemberLevelQueryWrapper); + if (count > 0) { + isNewUser = true; } - return isNewUser; + return isNewUser; } /** * 检查等级是否可以参加 + * * @param user_id */ - public boolean checkStoreMemberLever(Integer user_id,ShopStoreActivityBase shopStoreActivityBase){ + public boolean checkStoreMemberLever(Integer user_id, ShopStoreActivityBase shopStoreActivityBase) { String activity_use_levels = shopStoreActivityBase.getActivity_use_level(); - if(StringUtils.isNotEmpty(activity_use_levels)) { + if (StringUtils.isNotEmpty(activity_use_levels)) { QueryWrapper shopStoreMemberLevelQueryWrapper = new QueryWrapper<>(); shopStoreMemberLevelQueryWrapper.eq("user_id", user_id); shopStoreMemberLevelQueryWrapper.eq("store_id", shopStoreActivityBase.getStore_id()); @@ -3391,7 +3395,7 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl activity_use_level = Convert.toList(Integer.class, activity_use_levels); - if(!activity_use_level.contains(userLeveId)){ + if (!activity_use_level.contains(userLeveId)) { return false; } }