From f802b9d21175a3892fb81e81d09e3e8790f0a399 Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Fri, 22 Aug 2025 18:51:52 +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 --- .../api/data/dao/vv/VvProductDetailDao.java | 11 ++ .../api/data/dao/vv/VvProductPropertyDao.java | 3 + .../dao/vv/VvProductPropertyValueDao.java | 3 + .../com/heyu/api/data/dao/vv/VvSkuDao.java | 4 + .../data/dao/vv/VvSkuPropertyValueDao.java | 9 ++ .../heyu/api/data/dto/vv/VvProductDTO.java | 4 +- .../com/test/xxx/mysql/SqlParseUtilsTest.java | 4 +- .../api/controller/mm/ProductController.java | 142 +++++++++++++++++- 8 files changed, 175 insertions(+), 5 deletions(-) diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvProductDetailDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvProductDetailDao.java index 9807ab1..5c6af89 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvProductDetailDao.java +++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvProductDetailDao.java @@ -10,6 +10,7 @@ package com.heyu.api.data.dao.vv; import com.heyu.api.data.entity.vv.VvProductDetailEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.lz.mybatis.plugin.annotations.OrderBy; +import com.lz.mybatis.plugin.annotations.Realy; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -36,6 +37,16 @@ public interface VvProductDetailDao extends BaseMapper { int deleteVvProductDetailById(@Param("id")Long id); + + + @OrderBy(VvProductDetailEntity.default_sort) List selectVvProductDetailByProductId(Long productId); + + + + @Realy + int deleteVvProductDetailRealById(@Param("id")Long id); + + } \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvProductPropertyDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvProductPropertyDao.java index 26ac72f..d39de8f 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvProductPropertyDao.java +++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvProductPropertyDao.java @@ -39,4 +39,7 @@ public interface VvProductPropertyDao extends BaseMapper selectVvProductPropertyByProductId(Long productId); + + + int deleteVvProductPropertyRealById(@Param("id")Long id); } \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvProductPropertyValueDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvProductPropertyValueDao.java index b7f4a3c..1801238 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvProductPropertyValueDao.java +++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvProductPropertyValueDao.java @@ -39,4 +39,7 @@ public interface VvProductPropertyValueDao extends BaseMapper selectVvProductPropertyValueByProductIdPropertyId(Long productId, Long propertyId); + + + int deleteVvProductPropertyValueRealById(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 833a89d..ad562c2 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 @@ -11,6 +11,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.OrderBy; +import com.lz.mybatis.plugin.annotations.Realy; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -40,4 +41,7 @@ public interface VvSkuDao extends BaseMapper { @OrderBy(VvSkuEntity.default_sort) List selectVvSkuByProductId(Long productId); + + @Realy + int deleteVvSkuByRealId(Long 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 39ab075..db068bd 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.Realy; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -37,4 +38,12 @@ public interface VvSkuPropertyValueDao extends BaseMapper selectVvSkuPropertyValueBySkuId(Long skuId); + + @Realy + int deleteVvSkuPropertyValueRealById(Long id); + + + + @Realy + int deleteVvSkuPropertyValueRealBySkuId(Long skuId); } \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/dto/vv/VvProductDTO.java b/api-mapper/src/main/java/com/heyu/api/data/dto/vv/VvProductDTO.java index 6e3845d..b1852d0 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/dto/vv/VvProductDTO.java +++ b/api-mapper/src/main/java/com/heyu/api/data/dto/vv/VvProductDTO.java @@ -1,14 +1,14 @@ package com.heyu.api.data.dto.vv; import com.heyu.api.data.entity.vv.VvProductDetailEntity; -import com.heyu.api.data.entity.vv.VvPropertyEntity; +import com.heyu.api.data.entity.vv.VvProductEntity; import lombok.Data; import java.util.List; @Data -public class VvProductDTO extends VvPropertyEntity { +public class VvProductDTO extends VvProductEntity { diff --git a/api-mapper/src/test/java/com/test/xxx/mysql/SqlParseUtilsTest.java b/api-mapper/src/test/java/com/test/xxx/mysql/SqlParseUtilsTest.java index 42c3268..449fbbc 100644 --- a/api-mapper/src/test/java/com/test/xxx/mysql/SqlParseUtilsTest.java +++ b/api-mapper/src/test/java/com/test/xxx/mysql/SqlParseUtilsTest.java @@ -1,6 +1,6 @@ package com.test.xxx.mysql; -import com.heyu.api.data.dao.vv.VvProductDao; +import com.heyu.api.data.dao.vv.VvProductDetailDao; import com.lz.mybatis.plugin.utils.TestParseUtils; import com.lz.mybatis.plugin.utils.t.Tuple2; import org.junit.Test; @@ -12,7 +12,7 @@ SqlParseUtilsTest { public void test1() { - Tuple2 tuple = TestParseUtils.testSql(VvProductDao::selectVvProductByCondition).getData(); + Tuple2 tuple = TestParseUtils.testSql(VvProductDetailDao::selectVvProductDetailByProductId).getData(); diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/ProductController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/ProductController.java index 73652ea..7c86694 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/ProductController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/ProductController.java @@ -135,11 +135,151 @@ public class ProductController { } vvProductDTO.setVvProductPropertyList(vvProductPropertyDTOS); - return R.ok().setData(vvProductDTO); } + + + @RequestMapping("/insertOrUpadate") + public R insertOrUpadate(VvProductDTO vvProductDTO) { + + Long productId = vvProductDTO.getId() == null ? -1L : vvProductDTO.getId(); + + vvProductDao.insertOrUpdateVvProduct(vvProductDTO); + + List productDetailEntities = vvProductDetailDao.selectVvProductDetailByProductId(productId); + + // 1. 如果传过来的参数存在,则更新 ,如果不存在 ,则直接物理删除掉 + for (VvProductDetailEntity productDetailEntity : productDetailEntities) { + boolean flag = true; + for (VvProductDetailEntity vvProductDetailEntity : vvProductDTO.getVvProductDetailList()) { + if(productDetailEntity.getId().equals(vvProductDetailEntity.getId())){ + flag = false; + } + } + if(flag){ + vvProductDetailDao.deleteVvProductDetailRealById(productDetailEntity.getId()); + } + } + + /** + * 传过来的 + */ + for (VvProductDetailEntity vvProductDetailEntity : vvProductDTO.getVvProductDetailList()) { + vvProductDetailDao.insertOrUpdateVvProductDetail(vvProductDetailEntity); + } + + + List vvSkuDTOS = vvProductDTO.getVvSkuList(); + + List vvSkuEntities = vvSkuDao.selectVvSkuByProductId(productId); + for (VvSkuEntity vvSkuEntity : vvSkuEntities) { + boolean flag = true; + for (VvSkuDTO vvSkuDTO : vvSkuDTOS) { + if (vvSkuEntity.getId().equals(vvSkuDTO.getId())) { + flag = false; + } + } + if (flag) { + vvSkuPropertyValueDao.deleteVvSkuPropertyValueRealById(vvSkuEntity.getId()); + vvSkuDao.deleteVvSkuByRealId(vvSkuEntity.getId()); + } + } + + for (VvSkuDTO vvSkuDTO : vvSkuDTOS) { + + Long skuId = vvSkuDTO.getId() ; + + vvSkuDao.insertOrUpdateVvSku(vvSkuDTO); + + /*** + * 插入 + */ + if(skuId == null){ + List vvSkuPropertyValueEntities = vvSkuDTO.getVvSkuPropertyValueList(); + for (VvSkuPropertyValueEntity vvSkuPropertyValueEntity : vvSkuPropertyValueEntities) { + vvSkuPropertyValueEntity.setSkuId(vvSkuDTO.getId()); + vvSkuPropertyValueDao.insertOrUpdateVvSkuPropertyValue(vvSkuPropertyValueEntity); + } + }else{ // 更新 + List vvSkuPropertyValueEntities = vvSkuDTO.getVvSkuPropertyValueList(); + List vvSkuPropertyValueDB = vvSkuPropertyValueDao.selectVvSkuPropertyValueBySkuId(vvSkuDTO.getId()); + for (VvSkuPropertyValueEntity vvSkuPropertyValueDb : vvSkuPropertyValueDB) { + boolean flag = true; + for (VvSkuPropertyValueEntity skuPropertyValueEntity : vvSkuPropertyValueEntities) { + if (vvSkuPropertyValueDb.getId().equals(skuPropertyValueEntity.getId())) { + flag = false; + } + } + // 如果不存在 ,则直接删除 + if (flag) { + vvSkuPropertyValueDao.deleteVvSkuPropertyValueRealById(vvSkuPropertyValueDb.getId()); + } + + for (VvSkuPropertyValueEntity vvSkuPropertyValueEntity : vvSkuPropertyValueEntities) { + vvSkuPropertyValueDao.insertOrUpdateVvSkuPropertyValue(vvSkuPropertyValueEntity); + } + } + } + } + + List vvProductPropertyDTOS = vvProductDTO.getVvProductPropertyList(); + + List vvProductPropertyEntities = vvProductPropertyDao.selectVvProductPropertyByProductId(productId); + + + for (VvProductPropertyEntity vvProductPropertyDb: vvProductPropertyEntities) { + boolean flag = true; + for (VvProductPropertyDTO vvProductPropertyDTO : vvProductPropertyDTOS) { + if(vvProductPropertyDb.getId().equals(vvProductPropertyDTO.getId())){ + flag = false; + } + } + if (flag) { + vvProductPropertyDao.deleteVvProductPropertyRealById(vvProductPropertyDb.getId()); + } + } + + + for (VvProductPropertyDTO vvProductPropertyDTO : vvProductPropertyDTOS) { + + Long productPropertyId = vvProductPropertyDTO.getId(); + + vvProductPropertyDao.insertOrUpdateVvProductProperty(vvProductPropertyDTO); + List vvProductPropertyValueEntities = vvProductPropertyDTO.getVvProductPropertyValueList(); + if(productPropertyId != null){ + List productPropertyValueDb = vvProductPropertyValueDao.selectVvProductPropertyValueByProductIdPropertyId(productId,productPropertyId); + for (VvProductPropertyValueEntity vvProductPropertyValueEntity : productPropertyValueDb) { + boolean flag = true; + for (VvProductPropertyValueEntity productPropertyValueEntity : vvProductPropertyValueEntities) { + if (vvProductPropertyValueEntity.getId().equals(productPropertyValueEntity.getId())) { + flag = false; + } + } + + if (flag) { + vvProductPropertyValueDao.deleteVvProductPropertyValueRealById(vvProductPropertyValueEntity.getId()); + } + + } + } + for (VvProductPropertyValueEntity vvProductPropertyValueEntity : vvProductPropertyValueEntities) { + vvProductPropertyValueDao.insertOrUpdateVvProductPropertyValue(vvProductPropertyValueEntity); + } + } + return R.ok(); + } + + + + + + + + + + }