diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ShopSyncServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ShopSyncServiceImpl.java index 832a4445..c2cf2f31 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ShopSyncServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ShopSyncServiceImpl.java @@ -1305,7 +1305,7 @@ public class ShopSyncServiceImpl implements ShopSyncService { return; } if ("only".equals(couponSource.getUseShopType())) { - deleteCouponsBySyncId(couponId); + upIsDel(couponId); return; } List ids = new ArrayList<>(); @@ -1328,14 +1328,16 @@ public class ShopSyncServiceImpl implements ShopSyncService { couponSource.setId(null); switch (type) { case 1://新增 - saveCouponsForShops(ids, couponSource, couponId); + saveCouponsForShops(null, ids, couponSource, couponId); break; case 2://先删除再新增 + List couponList = couponService.list(new QueryWrapper().eq(ShopCoupon::getSyncId, couponId)); + Map map = couponList.stream().collect(Collectors.toMap(ShopCoupon::getShopId, ShopCoupon::getId)); deleteCouponsBySyncId(couponId); - saveCouponsForShops(ids, couponSource, couponId); + saveCouponsForShops(map, ids, couponSource, couponId); break; case 3:// 删除 - deleteCouponsBySyncId(couponId); + upIsDel(couponId); break; default: // 处理未知类型,可根据业务需求抛出异常或忽略 @@ -1343,7 +1345,7 @@ public class ShopSyncServiceImpl implements ShopSyncService { } } - private void saveCouponsForShops(List ids, ShopCoupon coupon, Long couponId) { + private void saveCouponsForShops(Map map, List ids, ShopCoupon coupon, Long couponId) { List couponFoodIds = new ArrayList<>(); if (StrUtil.isNotBlank(coupon.getFoods()) && ",".equals(coupon.getFoods())) { if (StrUtil.isNotBlank(coupon.getFoods()) && !",".equals(coupon.getFoods())) { @@ -1362,12 +1364,19 @@ public class ShopSyncServiceImpl implements ShopSyncService { coupon.setShopId(id); coupon.setSyncId(couponId); coupon.setId(null); + if (CollUtil.isNotEmpty(map) && map.containsKey(id)) { + coupon.setId(map.get(id)); + } couponService.save(coupon); } } - private void deleteCouponsBySyncId(Long couponId) { + private void upIsDel(Long couponId) { couponService.update(new ShopCoupon().setIsDel(1), new QueryWrapper() .eq(ShopCoupon::getSyncId, couponId)); } + + private void deleteCouponsBySyncId(Long couponId) { + couponService.remove(new QueryWrapper().eq(ShopCoupon::getSyncId, couponId)); + } }