From 5bc6f98ce475ed16fed4688da7f1789d3d7efca6 Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Mon, 25 Aug 2025 08:51:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../heyu/api/data/dao/vv/VvProductDao.java | 2 + .../com/heyu/api/data/dao/vv/VvSkuDao.java | 4 + .../data/dao/vv/VvSkuPropertyValueDao.java | 5 ++ .../api/controller/vv/AppOrderController.java | 89 +++++++++++-------- 4 files changed, 63 insertions(+), 37 deletions(-) diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvProductDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvProductDao.java index b430203..7f0151d 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvProductDao.java +++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvProductDao.java @@ -76,4 +76,6 @@ public interface VvProductDao extends BaseMapper { @IF @OrderBy(VvProductEntity.show_sale_price) String salePriceSort, @IF @OrderBy(VvProductEntity.show_sale_count) String saleCountSort, @IF @OrderBy(VvProductEntity.create_timestamp) String createTimestampSort); + + List selectVvProductByProductIds(@IN List id); } \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvSkuDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvSkuDao.java index 6a42ca10..1bfa4d1 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvSkuDao.java +++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvSkuDao.java @@ -10,6 +10,7 @@ package com.heyu.api.data.dao.vv; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.heyu.api.data.entity.vv.VvSkuEntity; +import com.lz.mybatis.plugin.annotations.IN; import com.lz.mybatis.plugin.annotations.Realy; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -42,4 +43,7 @@ public interface VvSkuDao extends BaseMapper { @Realy int deleteVvSkuByRealId(Long id); + + + List selectVvSkuBySkuIds(@IN List id); } \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvSkuPropertyValueDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvSkuPropertyValueDao.java index e7de0ca..358ace0 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvSkuPropertyValueDao.java +++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvSkuPropertyValueDao.java @@ -9,6 +9,7 @@ package com.heyu.api.data.dao.vv; */ import com.heyu.api.data.entity.vv.VvSkuPropertyValueEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.lz.mybatis.plugin.annotations.IN; import com.lz.mybatis.plugin.annotations.Realy; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -49,5 +50,9 @@ public interface VvSkuPropertyValueDao extends BaseMapper selectVvSkuPropertyValueBySkuIds(@IN List skuId); } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java index fcc17f7..d05a441 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java @@ -92,8 +92,6 @@ public class AppOrderController { ); } }); - - List vvTradeOrderEntities = pageUtils.getRows(); List tradeOrderIds = new ArrayList<>(); @@ -189,55 +187,76 @@ public class AppOrderController { BigDecimal allPrice = BigDecimal.ZERO; int allNum = 0; + + List skuIds = new ArrayList<>(); for (VvTradeOrderLineDTO vvTradeOrderLineDTO : vvOrderRequest.getVvTradeOrderLineDTOList()) { - VvTradeOrderLineEntity vvTradeOrderLineEntity = new VvTradeOrderLineEntity(); + skuIds.add(vvTradeOrderLineDTO.getSkuId()); + } - vvTradeOrderLineEntity.setSkuId(vvTradeOrderLineDTO.getSkuId()); - vvTradeOrderLineEntity.setNum(vvTradeOrderLineDTO.getNum()); + Set productIds = new HashSet<>(); + List vvSkuPropertyValueList = vvSkuPropertyValueDao.selectVvSkuPropertyValueBySkuIds(skuIds); + Map> vvSkuPropertyValueMap = new HashMap<>(); + for (VvSkuPropertyValueEntity vvSkuPropertyValueEntity : vvSkuPropertyValueList) { + List vvSkuPropertyValueEntities = vvSkuPropertyValueMap.get(vvSkuPropertyValueEntity.getSkuId()); + if (vvSkuPropertyValueEntities == null) { + vvSkuPropertyValueEntities = new ArrayList<>(); + } + vvSkuPropertyValueEntities.add(vvSkuPropertyValueEntity); + vvSkuPropertyValueMap.put(vvSkuPropertyValueEntity.getSkuId(), vvSkuPropertyValueEntities); + productIds.add(vvSkuPropertyValueEntity.getProductId()); + } - vvTradeOrderLineEntity.setCreateTime(new Date()); - vvTradeOrderLineEntity.setModifyTime(new Date()); - allNum =allNum + vvTradeOrderLineEntity.getNum(); + Map skuEntityMap = new HashMap<>(); + List vvSkuEntities = vvSkuDao.selectVvSkuBySkuIds(skuIds); + for (VvSkuEntity vvSkuEntity : vvSkuEntities) { + skuEntityMap.put(vvSkuEntity.getId(), vvSkuEntity); + } - VvSkuEntity vvSkuEntity = vvSkuDao.selectVvSkuById(vvTradeOrderLineDTO.getSkuId()); + List productIdList = new ArrayList<>(); + productIdList.addAll(productIds); + List vvProductList = vvProductDao.selectVvProductByProductIds(productIdList); - vvTradeOrderLineEntity.setSinglePrice(vvSkuEntity.getSalePrice()); - vvTradeOrderLineEntity.setSkuImageUrl(vvSkuEntity.getImageUrl()); + Map vvProductMap = new HashMap<>(); + for (VvProductEntity vvProductEntity : vvProductList) { + vvProductMap.put(vvProductEntity.getId(), vvProductEntity); + } - BigDecimal tradeOrderLineAllPrice = BigDecimalUtil.multiply(vvSkuEntity.getSalePrice(), new BigDecimal(vvTradeOrderLineDTO.getNum())); + for (VvTradeOrderLineDTO vvTradeOrderLineDTO : vvOrderRequest.getVvTradeOrderLineDTOList()) { + VvSkuEntity vvSkuEntity = skuEntityMap.get(vvTradeOrderLineDTO.getSkuId()); + allNum = allNum + vvTradeOrderLineDTO.getNum(); + allPrice = BigDecimalUtil.add(BigDecimalUtil.multiply(vvSkuEntity.getSalePrice(), new BigDecimal(vvTradeOrderLineDTO.getNum())), allPrice); - vvTradeOrderLineEntity.setAllPrice(tradeOrderLineAllPrice); + List vvSkuPropertyValueEntities = vvSkuPropertyValueMap.get(vvTradeOrderLineDTO.getSkuId()); - allPrice = BigDecimalUtil.add(tradeOrderLineAllPrice, allPrice); - - vvTradeOrderLineEntity.setStatus(OrderStatusEnums.wait_pay.getStatus()); - - - vvTradeOrderLineEntity.setProductId(vvSkuEntity.getProductId()); - - - VvProductEntity vvProduct = vvProductDao.selectVvProductById(vvSkuEntity.getProductId()); - vvTradeOrderLineEntity.setProductName(vvProduct.getTitle()); - vvTradeOrderLineEntity.setProductMainImageUrl(vvProduct.getMainImageUrl()); - - List vvSkuPropertyValueEntities = vvSkuPropertyValueDao.selectVvSkuPropertyValueBySkuId(vvTradeOrderLineDTO.getSkuId()); + VvProductEntity vvProduct = vvProductMap.get(vvSkuEntity.getProductId()); List propertyNameValues = new ArrayList<>(); for (VvSkuPropertyValueEntity vvSkuPropertyValueEntity : vvSkuPropertyValueEntities) { - PropertyNameValue propertyNameValue = new PropertyNameValue(); propertyNameValue.setPropertyName(vvSkuPropertyValueEntity.getProductPropertyName()); propertyNameValue.setPropertyValue(vvSkuPropertyValueEntity.getProductPropertyValue()); propertyNameValues.add(propertyNameValue); } - - vvTradeOrderLineEntity.setSkuInfo(JSON.toJSONString(propertyNameValues)); - vvTradeOrderLineEntityList.add(vvTradeOrderLineEntity); + for (int i = 0; i < vvTradeOrderLineDTO.getNum(); i++) { + VvTradeOrderLineEntity vvTradeOrderLineEntity = new VvTradeOrderLineEntity(); + vvTradeOrderLineEntity.setSkuId(vvTradeOrderLineDTO.getSkuId()); + vvTradeOrderLineEntity.setNum(1); // 拆成最细粒度的单 + vvTradeOrderLineEntity.setCreateTime(new Date()); + vvTradeOrderLineEntity.setModifyTime(new Date()); + vvTradeOrderLineEntity.setSinglePrice(vvSkuEntity.getSalePrice()); + vvTradeOrderLineEntity.setSkuImageUrl(vvSkuEntity.getImageUrl()); + vvTradeOrderLineEntity.setAllPrice(vvSkuEntity.getSalePrice()); + vvTradeOrderLineEntity.setStatus(OrderStatusEnums.wait_pay.getStatus()); + vvTradeOrderLineEntity.setProductId(vvSkuEntity.getProductId()); + vvTradeOrderLineEntity.setProductName(vvProduct.getTitle()); + vvTradeOrderLineEntity.setProductMainImageUrl(vvProduct.getMainImageUrl()); + vvTradeOrderLineEntity.setSkuInfo(JSON.toJSONString(propertyNameValues)); + vvTradeOrderLineEntityList.add(vvTradeOrderLineEntity); + } } VvTradeOrderEntity vvTradeOrderEntity = new VvTradeOrderEntity(); - VvBuyerEntity vvBuyerEntity = vvBuyerDao.selectVvBuyerById(vvOrderRequest.getBuyerId()); //创建时间 vvTradeOrderEntity.setCreateTime(new Date()); @@ -248,8 +267,6 @@ public class AppOrderController { vvTradeOrderEntity.setBuyerWeixin(vvBuyerEntity.getBuyerWeixin()); VvBuyerAddressEntity vvBuyerAddress = vvBuyerAddressDao.selectVvBuyerAddressById(vvOrderRequest.getBuyerAddressId()); - - vvTradeOrderEntity.setContry(vvBuyerAddress.getContry()); vvTradeOrderEntity.setProvince(vvBuyerAddress.getProvince()); vvTradeOrderEntity.setCity(vvBuyerAddress.getCity()); @@ -261,19 +278,17 @@ public class AppOrderController { vvTradeOrderEntity.setCreateTimestamp(System.currentTimeMillis()); vvTradeOrderEntity.setModifyTimestamp(System.currentTimeMillis()); vvTradeOrderDao.insertVvTradeOrder(vvTradeOrderEntity); - for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) { - tradeOrderLineEntity.setTradeOrderId(vvTradeOrderEntity.getId()); - vvTradeOrderLineDao.insertOrUpdateVvTradeOrderLine(tradeOrderLineEntity); } + return R.ok(); } @RequestMapping("/delete") public R add(@RequestBody VvTradeOrderDeleteDTO vvOrderRequest) { - vvTradeOrderDao.updateByBuerIdAndIds(OrderStatusEnums.delete.getStatus(),vvOrderRequest.getBuyerId(), vvOrderRequest.getIds()); + vvTradeOrderDao.updateByBuerIdAndIds(OrderStatusEnums.delete.getStatus(), vvOrderRequest.getBuyerId(), vvOrderRequest.getIds()); return R.ok(); } }