diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCarServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCarServiceImpl.java index 9daab3696..64a8bae54 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCarServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCarServiceImpl.java @@ -28,7 +28,11 @@ import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper; import com.bsd.pjcloud.hard.mapper.order.HardParentCarMapper; import com.bsd.pjcloud.hard.service.HardCarService; import com.bsd.pjcloud.hard.service.HardSpuService; +import com.bsd.pjcloud.supermarket.api.feign.RemoteShopSkuService; +import com.bsd.pjcloud.supermarket.api.feign.RemoteShopSpuService; import com.bsd.pjcloud.supermarket.api.feign.RemoteSupermarketUnitSkuService; +import com.bsd.pjcloud.supermarket.entity.ShopSkuEntity; +import com.bsd.pjcloud.supermarket.vo.app.ShopSpuDetailAppVo; import com.bsd.pjcloud.supermarket.vo.erp.SmErpUnitWithSpuVo; import com.bsd.pjcloud.thirdparty.dto.pay.PayDto; import lombok.RequiredArgsConstructor; @@ -62,6 +66,8 @@ public class HardCarServiceImpl extends ServiceImpl pageJoin(Page page, HardCarDto dto) { @@ -295,32 +301,60 @@ public class HardCarServiceImpl extends ServiceImpl carObjectList = new ArrayList<>(); - List supList = supermarketUnitSkuService.getSupermarketUnits(productIds).getData(); - for (HardCreateCarDto v : productList) { - HardCarEntity item = HardCarEntity.builder().parentCarId(parentCarId).build(); - supList.stream().filter(i -> ObjectUtil.equals(i.getId(), v.getProductId())).findFirst().ifPresent(spu -> { - Integer price = getSupermarket(spu); - int totalPrice = 0; - // 按重量 - if (ObjectUtil.isNotEmpty(v.getProductCount()) && !ObjectUtil.equals(v.getProductCount(), 0)) { - // 按数量 + // 线上 + if (ObjectUtil.equals(HardOrderTypeEnum.RESERVE, orderType)) { + List skuList = remoteShopSkuService.getSelectListAll(productIds).getData(); + List spuList = remoteShopSpuService.getShopSpuDetailByIds(skuList.stream().map(ShopSkuEntity::getSpuId).toList()).getData(); + for (HardCreateCarDto v : productList) { + HardCarEntity item = HardCarEntity.builder().parentCarId(parentCarId).build(); + skuList.stream().filter(i -> ObjectUtil.equals(i.getId(), v.getProductId())).findFirst().ifPresent(sku -> { + Integer price = getSupermarket(sku); + int totalPrice = 0; totalPrice = v.getProductCount() * price; - } else if (ObjectUtil.isNotEmpty(v.getProductWeight()) && v.getProductWeight().compareTo(BigDecimal.valueOf(0)) != 0) { - // 按重量 - totalPrice = v.getProductWeight().multiply(BigDecimal.valueOf(price)).setScale(0, RoundingMode.CEILING).intValue(); - } - item.setProductId(spu.getId()); - item.setProductName(spu.getProductName()); - item.setProductPrice(price); - item.setProductPic(spu.getPicUrl()); - item.setTotalPrice((long) totalPrice); - if (ObjectUtil.isNotEmpty(v.getProductNature())) { - item.setProductNature(v.getProductNature().getType()); - } - item.setProductCount(v.getProductCount()); - item.setProductWeight(v.getProductWeight()); - carObjectList.add(item); - }); + // 找到spu + ShopSpuDetailAppVo spu = spuList.stream().filter(i -> ObjectUtil.equals(i.getId(), sku.getSpuId())).findFirst().orElse(null); + item.setProductId(sku.getId()); + item.setProductPrice(price); + item.setTotalPrice((long) totalPrice); + item.setProductNature(HardProductNatureEnum.DEFAULT.getType()); + item.setProductCount(v.getProductCount()); + item.setProductWeight(BigDecimal.ZERO); + if (ObjectUtil.isNotEmpty(spu)) { + item.setProductName(spu.getProductName()); + item.setProductPic(spu.getPicUrl()); + } + carObjectList.add(item); + }); + } + } + // 线下 + if (ObjectUtil.equals(HardOrderTypeEnum.BELOW, orderType)) { + List spuList = supermarketUnitSkuService.getSupermarketUnits(productIds).getData(); + for (HardCreateCarDto v : productList) { + HardCarEntity item = HardCarEntity.builder().parentCarId(parentCarId).build(); + spuList.stream().filter(i -> ObjectUtil.equals(i.getId(), v.getProductId())).findFirst().ifPresent(spu -> { + Integer price = getSupermarket(spu); + int totalPrice = 0; + if (ObjectUtil.isNotEmpty(v.getProductCount()) && !ObjectUtil.equals(v.getProductCount(), 0)) { + // 按数量 + totalPrice = v.getProductCount() * price; + } else if (ObjectUtil.isNotEmpty(v.getProductWeight()) && v.getProductWeight().compareTo(BigDecimal.valueOf(0)) != 0) { + // 按重量 + totalPrice = v.getProductWeight().multiply(BigDecimal.valueOf(price)).setScale(0, RoundingMode.CEILING).intValue(); + } + item.setProductId(spu.getId()); + item.setProductName(spu.getProductName()); + item.setProductPrice(price); + item.setProductPic(spu.getPicUrl()); + item.setTotalPrice((long) totalPrice); + if (ObjectUtil.isNotEmpty(v.getProductNature())) { + item.setProductNature(v.getProductNature().getType()); + } + item.setProductCount(v.getProductCount()); + item.setProductWeight(v.getProductWeight()); + carObjectList.add(item); + }); + } } baseMapper.insert(carObjectList); return; @@ -416,7 +450,7 @@ public class HardCarServiceImpl extends ServiceImpl carList = hardCarService.getByParentCarId(order.getParentCarId()); if (ObjectUtil.isEmpty(carList)) throw new RuntimeException("扣减库存错误,购物车不存在"); - SupermarketSpuUpdateStockReqDTO dto = new SupermarketSpuUpdateStockReqDTO(); - List list = carList.stream().map(v -> { - SupermarketSpuUpdateStockReqDTO.Item item = new SupermarketSpuUpdateStockReqDTO.Item(); - item.setId(v.getProductId()); - if (ObjectUtil.isNotEmpty(v.getProductCount()) && !ObjectUtil.equals(v.getProductCount(), 0)) { - // 按数量 - int prouctCount = v.getProductCount(); - // 如果退款购物车数组里有,就用退款购物车的数量 - if (ObjectUtil.isNotEmpty(refundCarList)) { - HardCarEntity refundCarTarget = refundCarList.stream().filter(i -> ObjectUtil.equals(i.getProductId(), v.getProductId())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(refundCarTarget) && ObjectUtil.isNotEmpty(refundCarTarget.getProductCount())) { - prouctCount = refundCarTarget.getProductCount(); + // 线下 + if (ObjectUtil.equals(HardOrderTypeEnum.BELOW, orderTypeEnum)) { + SupermarketSpuUpdateStockReqDTO dto = new SupermarketSpuUpdateStockReqDTO(); + List list = carList.stream().map(v -> { + SupermarketSpuUpdateStockReqDTO.Item item = new SupermarketSpuUpdateStockReqDTO.Item(); + item.setId(v.getProductId()); + if (ObjectUtil.isNotEmpty(v.getProductCount()) && !ObjectUtil.equals(v.getProductCount(), 0)) { + // 按数量 + int prouctCount = v.getProductCount(); + // 如果退款购物车数组里有,就用退款购物车的数量 + if (ObjectUtil.isNotEmpty(refundCarList)) { + HardCarEntity refundCarTarget = refundCarList.stream().filter(i -> ObjectUtil.equals(i.getProductId(), v.getProductId())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(refundCarTarget) && ObjectUtil.isNotEmpty(refundCarTarget.getProductCount())) { + prouctCount = refundCarTarget.getProductCount(); + } } - } - double count = BigDecimal.valueOf(prouctCount).multiply(BigDecimal.valueOf(base)).setScale(2, RoundingMode.HALF_UP).doubleValue(); - item.setIncrCount(count); - } else if (ObjectUtil.isNotEmpty(v.getProductWeight()) && v.getProductWeight().compareTo(BigDecimal.valueOf(0)) != 0) { - // 按重量 - BigDecimal productWeight = v.getProductWeight(); - // 如果退款购物车数组里有,就用退款购物车的数量 - if (ObjectUtil.isNotEmpty(refundCarList)) { - HardCarEntity refundCarTarget = refundCarList.stream().filter(i -> ObjectUtil.equals(i.getProductId(), v.getProductId())).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(refundCarTarget) && ObjectUtil.isNotEmpty(refundCarTarget.getProductCount())) { - productWeight = refundCarTarget.getProductWeight(); + double count = BigDecimal.valueOf(prouctCount).multiply(BigDecimal.valueOf(base)).setScale(2, RoundingMode.HALF_UP).doubleValue(); + item.setIncrCount(count); + } else if (ObjectUtil.isNotEmpty(v.getProductWeight()) && v.getProductWeight().compareTo(BigDecimal.valueOf(0)) != 0) { + // 按重量 + BigDecimal productWeight = v.getProductWeight(); + // 如果退款购物车数组里有,就用退款购物车的数量 + if (ObjectUtil.isNotEmpty(refundCarList)) { + HardCarEntity refundCarTarget = refundCarList.stream().filter(i -> ObjectUtil.equals(i.getProductId(), v.getProductId())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(refundCarTarget) && ObjectUtil.isNotEmpty(refundCarTarget.getProductCount())) { + productWeight = refundCarTarget.getProductWeight(); + } } + double weight = productWeight.multiply(BigDecimal.valueOf(base)).setScale(2, RoundingMode.HALF_UP).doubleValue(); + item.setIncrCount(weight); } - double weight = productWeight.multiply(BigDecimal.valueOf(base)).setScale(2, RoundingMode.HALF_UP).doubleValue(); - item.setIncrCount(weight); + return item; + }).filter(v -> ObjectUtil.isNotEmpty(v.getIncrCount()) && v.getIncrCount() > 0).toList(); + dto.setItems(list); + R updateSkuStockRes = supermarketSpuService.updateSpuStock(dto); + if (updateSkuStockRes.getCode() != 0) { + log.info("|{}|{},失败,order:|{}|,isReduce:|{}|,params:|{}|", TAG, CarErrorMsg, JSON.toJSON(order), isReduce, JSON.toJSON(dto)); + throw new RuntimeException(CarErrorMsg + "错误"); } - return item; - }).filter(v -> ObjectUtil.isNotEmpty(v.getIncrCount()) && v.getIncrCount() > 0).toList(); - dto.setItems(list); - R updateSkuStockRes = supermarketSpuService.updateSpuStock(dto); - if (updateSkuStockRes.getCode() != 0) { - log.info("|{}|{},失败,order:|{}|,isReduce:|{}|,params:|{}|", TAG, CarErrorMsg, JSON.toJSON(order), isReduce, JSON.toJSON(dto)); - throw new RuntimeException(CarErrorMsg + "错误"); + log.info("|{}|{},成功,order:|{}|,isReduce:|{}|,params:|{}|", TAG, CarErrorMsg, JSON.toJSON(order), isReduce, JSON.toJSON(dto)); + return; + } + if (ObjectUtil.equals(HardOrderTypeEnum.RESERVE, orderTypeEnum)) { + return; } - log.info("|{}|{},成功,order:|{}|,isReduce:|{}|,params:|{}|", TAG, CarErrorMsg, JSON.toJSON(order), isReduce, JSON.toJSON(dto)); - return; } // 智能柜扣减库存 if (ObjectUtil.equals(hardTypeEnum, HardTypeEnum.DOOR)) { diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/api/feign/RemoteShopSkuService.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/api/feign/RemoteShopSkuService.java index d8a63c2c2..363979e5d 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/api/feign/RemoteShopSkuService.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/api/feign/RemoteShopSkuService.java @@ -62,7 +62,7 @@ public interface RemoteShopSkuService { * 查询所有sku列表信息,根据条件skuIds * @return R */ - @PostMapping("/shopSku/selectListAll") + @GetMapping("/shopSku/selectListAll") R> getSelectListAll(@RequestParam List ids); diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports index 670a7cc7d..b60b55d6b 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports @@ -3,3 +3,4 @@ com.bsd.pjcloud.supermarket.api.feign.RemoteSupermarketSpuService com.bsd.pjcloud.supermarket.api.feign.RemoteSupermarketUnitSkuService com.bsd.pjcloud.supermarket.api.feign.RemoteShopCategoryService com.bsd.pjcloud.supermarket.api.feign.RemoteShopSpuService +com.bsd.pjcloud.supermarket.api.feign.RemoteShopSkuService