From 8785d3f680639a926ce0bab2fcb61ecf612c8742 Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Mon, 25 Aug 2025 09:13:53 +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 | 5 ++ .../com/heyu/api/data/dao/vv/VvSkuDao.java | 8 +- .../heyu/api/data/entity/vv/VvSkuEntity.java | 75 ++++++++++++++++--- .../java/com/test/xxx/MysqlMain_update.java | 2 +- .../request/mm/order/resp/OrderSkuDTO.java | 12 +++ .../api/controller/vv/AppOrderController.java | 41 +++++++--- 6 files changed, 119 insertions(+), 24 deletions(-) create mode 100644 api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/OrderSkuDTO.java 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 7f0151d..c3f6aeb 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 @@ -78,4 +78,9 @@ public interface VvProductDao extends BaseMapper { @IF @OrderBy(VvProductEntity.create_timestamp) String createTimestampSort); List selectVvProductByProductIds(@IN List id); + + + + + int updateShowSaleCountAndSaleCount(@Plus Integer showSaleCount,@Plus Integer realSaleCount,@By Long 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 1bfa4d1..911b30f 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,8 +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 com.lz.mybatis.plugin.annotations.*; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -46,4 +45,9 @@ public interface VvSkuDao extends BaseMapper { List selectVvSkuBySkuIds(@IN List id); + + + + + int updateVvSkuStockSaleCountById(@Sub Integer stock, @Plus Integer realSaleCount,@Plus Integer showSaleCount, @By Long skuId); } \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvSkuEntity.java b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvSkuEntity.java index 2852198..c2e7285 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvSkuEntity.java +++ b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvSkuEntity.java @@ -10,7 +10,7 @@ import java.util.Date;import java.util.Date; /** *sku详描 * @author quyixiao -* @since 2025-08-24 +* @since 2025-08-25 */ @Data @@ -21,14 +21,17 @@ private static final long serialVersionUID = 1L; public final static String CLASS_NAME ="com.heyu.api.data.entity.vv.VvSkuEntity:"; public final static String all = CLASS_NAME + "*"; - public final static String id_ = CLASS_NAME + "id"; // - public final static String is_delete = CLASS_NAME + "is_delete"; // 是否删除:0 否 1 删除 - public final static String create_time = CLASS_NAME + "create_time"; // 创建时间 - public final static String modify_time = CLASS_NAME + "modify_time"; // 修改时间 - public final static String image_url = CLASS_NAME + "image_url"; // 图片url - public final static String sale_price = CLASS_NAME + "sale_price"; // 销售价 - public final static String origin_price = CLASS_NAME + "origin_price"; // 原价 - public final static String product_id = CLASS_NAME + "product_id"; // 商品id + public final static String id_ = CLASS_NAME + "id"; // + public final static String is_delete = CLASS_NAME + "is_delete"; // 是否删除:0 否 1 删除 + public final static String create_time = CLASS_NAME + "create_time"; // 创建时间 + public final static String modify_time = CLASS_NAME + "modify_time"; // 修改时间 + public final static String image_url = CLASS_NAME + "image_url"; // 图片url + public final static String sale_price = CLASS_NAME + "sale_price"; // 销售价 + public final static String origin_price = CLASS_NAME + "origin_price"; // 原价 + public final static String product_id = CLASS_NAME + "product_id"; // 商品id + public final static String stock_ = CLASS_NAME + "stock"; // 库存 + public final static String real_sale_count = CLASS_NAME + "real_sale_count"; // 真实销售数量 + public final static String show_sale_count = CLASS_NAME + "show_sale_count"; // 展示销售数量 // @TableId(value = "id", type = IdType.AUTO) private Long id; @@ -46,6 +49,12 @@ private static final long serialVersionUID = 1L; private BigDecimal originPrice; //商品id private Long productId; + //库存 + private Integer stock; + //真实销售数量 + private Integer realSaleCount; + //展示销售数量 + private Integer showSaleCount; /** * * @return @@ -166,6 +175,51 @@ private static final long serialVersionUID = 1L; this.productId = productId; } + /** + * 库存 + * @return + */ + public Integer getStock() { + return stock; + } + /** + * 库存 + * @param stock + */ + public void setStock(Integer stock) { + this.stock = stock; + } + + /** + * 真实销售数量 + * @return + */ + public Integer getRealSaleCount() { + return realSaleCount; + } + /** + * 真实销售数量 + * @param realSaleCount + */ + public void setRealSaleCount(Integer realSaleCount) { + this.realSaleCount = realSaleCount; + } + + /** + * 展示销售数量 + * @return + */ + public Integer getShowSaleCount() { + return showSaleCount; + } + /** + * 展示销售数量 + * @param showSaleCount + */ + public void setShowSaleCount(Integer showSaleCount) { + this.showSaleCount = showSaleCount; + } + @Override public String toString() { return "VvSkuEntity{" + @@ -177,6 +231,9 @@ private static final long serialVersionUID = 1L; ",salePrice=" + salePrice + ",originPrice=" + originPrice + ",productId=" + productId + + ",stock=" + stock + + ",realSaleCount=" + realSaleCount + + ",showSaleCount=" + showSaleCount + "}"; } } \ No newline at end of file diff --git a/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java b/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java index 861399e..0cf413b 100644 --- a/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java +++ b/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java @@ -49,7 +49,7 @@ public class MysqlMain_update { List list = new ArrayList(); - String a = "vv_product"; + String a = "vv_sku"; for (String s : a.split(",")) { list.add(new TablesBean(s)); } diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/OrderSkuDTO.java b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/OrderSkuDTO.java new file mode 100644 index 0000000..115605e --- /dev/null +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/OrderSkuDTO.java @@ -0,0 +1,12 @@ +package com.heyu.api.alibaba.request.mm.order.resp; + +import lombok.Data; + +@Data +public class OrderSkuDTO { + + private Long skuId; + + + private String message; +} 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 d05a441..864c192 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 @@ -78,6 +78,7 @@ public class AppOrderController { vvOrderRequest.setOrderIds(orderIds); } + PPageUtils pageUtils = PPageUtils.startPage(vvOrderRequest.getPageNum(), vvOrderRequest.getPageSize()) .doSelect(new ISelect() { @Override @@ -93,7 +94,6 @@ public class AppOrderController { } }); List vvTradeOrderEntities = pageUtils.getRows(); - List tradeOrderIds = new ArrayList<>(); for (VvTradeOrderEntity vvTradeOrderEntity : vvTradeOrderEntities) { @@ -102,7 +102,6 @@ public class AppOrderController { List list = vvTradeOrderLineDao.selectVvTradeOrderLineByTradeOrderIds(tradeOrderIds); - List trackNumbers = new ArrayList<>(); for (VvTradeOrderLineEntity vvTradeOrderLineEntity : list) { trackNumbers.add(vvTradeOrderLineEntity.getTrackNumber()); @@ -126,7 +125,6 @@ public class AppOrderController { List vvTradeOrderLineEntityList = new ArrayList<>(); - for (VvTradeOrderLineEntity tradeOrderLineEntity : list) { if (vvTradeOrderEntity.getId().equals(tradeOrderLineEntity.getTradeOrderId())) { vvTradeOrderLineEntityList.add(tradeOrderLineEntity); @@ -142,13 +140,11 @@ public class AppOrderController { for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) { if (StringUtils.isNotBlank(tradeOrderLineEntity.getTrackNumber())) { PackageDTO packageDTO = packageDTOMap.get(tradeOrderLineEntity.getTrackNumber()); - if (packageDTO == null) { VvPackageEntity vvPackage = vvPackageEntityMap.get(tradeOrderLineEntity.getTrackNumber()); packageDTO = new PackageDTO(); BeanUtils.copyProperties(vvPackage, packageDTO); } - List vvTradeOrderLineEntitys = packageDTO.getVvTradeOrderLineEntityList(); if (vvTradeOrderLineEntitys == null) { vvTradeOrderLineEntitys.add(tradeOrderLineEntity); @@ -167,10 +163,8 @@ public class AppOrderController { packageList.add(entry.getValue()); } - vvOrderListResp.setVvTradeOrderLineList(vvTradeOrderLineList); vvOrderListResp.setPackageList(packageList); - vvOrderListResps.add(vvOrderListResp); } return R.ok().setData(vvOrderListResps); @@ -183,11 +177,9 @@ public class AppOrderController { @RequestMapping("/add") public R add(@RequestBody VvTradeOrderDTO vvOrderRequest) { List vvTradeOrderLineEntityList = new ArrayList<>(); - BigDecimal allPrice = BigDecimal.ZERO; int allNum = 0; - List skuIds = new ArrayList<>(); for (VvTradeOrderLineDTO vvTradeOrderLineDTO : vvOrderRequest.getVvTradeOrderLineDTOList()) { skuIds.add(vvTradeOrderLineDTO.getSkuId()); @@ -205,12 +197,18 @@ public class AppOrderController { vvSkuPropertyValueMap.put(vvSkuPropertyValueEntity.getSkuId(), vvSkuPropertyValueEntities); productIds.add(vvSkuPropertyValueEntity.getProductId()); } - - Map skuEntityMap = new HashMap<>(); List vvSkuEntities = vvSkuDao.selectVvSkuBySkuIds(skuIds); + for (VvSkuEntity vvSkuEntity : vvSkuEntities) { skuEntityMap.put(vvSkuEntity.getId(), vvSkuEntity); + // 如果库存少于 0 ,则显示库存不足 + if (vvSkuEntity.getStock() <= 0) { + OrderSkuDTO orderSkuDTO = new OrderSkuDTO(); + orderSkuDTO.setSkuId(vvSkuEntity.getId()); + orderSkuDTO.setMessage("库存不足"); + return R.error().setData(orderSkuDTO); + } } List productIdList = new ArrayList<>(); @@ -222,9 +220,21 @@ public class AppOrderController { vvProductMap.put(vvProductEntity.getId(), vvProductEntity); } + Map productNumMap = new HashMap<>(); + for (VvTradeOrderLineDTO vvTradeOrderLineDTO : vvOrderRequest.getVvTradeOrderLineDTOList()) { VvSkuEntity vvSkuEntity = skuEntityMap.get(vvTradeOrderLineDTO.getSkuId()); + Integer saleCount = productNumMap.get(vvSkuEntity.getProductId()); + if (saleCount == null) { + saleCount = 0; + } + + saleCount = saleCount + vvTradeOrderLineDTO.getNum(); + + productNumMap.put(vvSkuEntity.getProductId(), saleCount); + allNum = allNum + vvTradeOrderLineDTO.getNum(); + allPrice = BigDecimalUtil.add(BigDecimalUtil.multiply(vvSkuEntity.getSalePrice(), new BigDecimal(vvTradeOrderLineDTO.getNum())), allPrice); List vvSkuPropertyValueEntities = vvSkuPropertyValueMap.get(vvTradeOrderLineDTO.getSkuId()); @@ -283,7 +293,14 @@ public class AppOrderController { vvTradeOrderLineDao.insertOrUpdateVvTradeOrderLine(tradeOrderLineEntity); } - return R.ok(); + for (VvTradeOrderLineDTO vvTradeOrderLineDTO : vvOrderRequest.getVvTradeOrderLineDTOList()) { + vvSkuDao.updateVvSkuStockSaleCountById(vvTradeOrderLineDTO.getNum(), vvTradeOrderLineDTO.getNum(), vvTradeOrderLineDTO.getNum(), vvTradeOrderLineDTO.getSkuId()); + } + + for (Map.Entry map : productNumMap.entrySet()) { + vvProductDao.updateShowSaleCountAndSaleCount(map.getValue(), map.getValue(), map.getKey()); + } + return R.ok("订单创建成功"); } @RequestMapping("/delete")