From a6db5a7600889d9b2419b2b57de063db0be1105e Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Fri, 5 Apr 2024 02:22:03 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E8=A7=84=E5=88=99=EF=BC=8C=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E5=85=B3=E9=94=AE=E5=AD=97=E8=8E=B7=E5=8F=96sku=E5=88=97?= =?UTF-8?q?=E8=A1=A8=EF=BC=8C=E6=B4=BB=E5=8A=A8=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/product/ProductFeignClient.java | 4 ++ .../activity/mapper/ActivityInfoMapper.java | 9 ++++ .../service/impl/ActivityInfoServiceImpl.java | 51 +++++++++++++++++-- .../resources/mapper/ActivityInfoMapper.xml | 14 ++++- .../product/api/ProductInnerController.java | 7 +++ .../ssyx/product/service/SkuInfoService.java | 8 +++ .../service/impl/SkuInfoServiceImpl.java | 11 ++++ 7 files changed, 98 insertions(+), 6 deletions(-) diff --git a/service-client/service-product-client/src/main/java/com/atguigu/ssyx/client/product/ProductFeignClient.java b/service-client/service-product-client/src/main/java/com/atguigu/ssyx/client/product/ProductFeignClient.java index bc0990c..d621d31 100644 --- a/service-client/service-product-client/src/main/java/com/atguigu/ssyx/client/product/ProductFeignClient.java +++ b/service-client/service-product-client/src/main/java/com/atguigu/ssyx/client/product/ProductFeignClient.java @@ -24,4 +24,8 @@ public interface ProductFeignClient { // 根据skuId得到sku信息列表 @PostMapping("inner/findSkuInfoList") Result> findSkuInfoList(@RequestBody List skuIdList); + + // 根据关键字获取sku列表 + @GetMapping("inner/findSkuInfoByKeyword/{keyword}") + Result> findSkuInfoByKeyword(@PathVariable("keyword") String keyword); } diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivityInfoMapper.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivityInfoMapper.java index 98653a8..3104f27 100644 --- a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivityInfoMapper.java +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivityInfoMapper.java @@ -4,6 +4,8 @@ import com.atguigu.ssyx.model.activity.ActivityInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** *

* 活动表 Mapper 接口 @@ -15,4 +17,11 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface ActivityInfoMapper extends BaseMapper { + /** + * 判断添加商品之前是否参加过活动 + * + * @param skuIdList skuId + * @return List + */ + List selectSkuIdListExist(List skuIdList); } diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/impl/ActivityInfoServiceImpl.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/impl/ActivityInfoServiceImpl.java index 853136a..0a67c14 100644 --- a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/impl/ActivityInfoServiceImpl.java +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/impl/ActivityInfoServiceImpl.java @@ -16,6 +16,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; import java.util.List; @@ -23,6 +24,7 @@ import java.util.Map; import java.util.stream.Collectors; @Service +@Transactional public class ActivityInfoServiceImpl extends ServiceImpl implements ActivityInfoService { @Autowired private ProductFeignClient productFeignClient; @@ -57,10 +59,17 @@ public class ActivityInfoServiceImpl extends ServiceImpl findActivityRuleList(Long id) { Map result = new HashMap<>(); - List activityInfoList = activityRuleMapper.selectList(Wrappers.lambdaQuery().eq(ActivityRule::getActivityId, id)); + + // 活动信息列表 + List activityInfoList = activityRuleMapper.selectList( + Wrappers.lambdaQuery().eq(ActivityRule::getActivityId, id) + ); result.put("activityRuleList", activityInfoList); - List activitySkuList = activitySkuMapper.selectList(Wrappers.lambdaQuery().eq(ActivitySku::getActivityId, id)); + // 查询活动列表 + List activitySkuList = activitySkuMapper.selectList( + Wrappers.lambdaQuery().eq(ActivitySku::getActivityId, id) + ); List skuIdList = activitySkuList.stream().map(ActivitySku::getSkuId).collect(Collectors.toList()); // 通过远程调用根据skuId得到商品信息 @@ -72,11 +81,33 @@ public class ActivityInfoServiceImpl extends ServiceImpl activityRuleList = vo.getActivityRuleList(); + List activitySkuList = vo.getActivitySkuList(); + // 根据id查询活动信息 + ActivityInfo activityInfo = getById(activityId); + + // 删除之前规则数据 + activityRuleMapper.delete(Wrappers.lambdaQuery().eq(ActivityRule::getActivityId, activityId)); + activitySkuMapper.delete(Wrappers.lambdaQuery().eq(ActivitySku::getActivityId, activityId)); + + // 获取规则列表数据 + activityRuleList.forEach(activityRule -> { + activityRule.setActivityId(activityId); + activityRule.setActivityType(activityInfo.getActivityType()); + activityRuleMapper.insert(activityRule); + }); + + // 获取规则范围数据 + activitySkuList.forEach(activitySku -> { + activitySku.setActivityId(activityId); + activitySkuMapper.insert(activitySku); + }); } /** @@ -87,6 +118,16 @@ public class ActivityInfoServiceImpl extends ServiceImpl findSkuInfoByKeyword(String keyword) { - return null; + // 根据关键字查询sku匹配内容 + List skuInfoList = productFeignClient.findSkuInfoByKeyword(keyword).getData(); + List skuIdList = skuInfoList.stream().map(SkuInfo::getId).collect(Collectors.toList()); + + // 判断添加商品之前是否参加过活动 + List existSkuIdList = baseMapper.selectSkuIdListExist(skuIdList); + // 如果参加的话就剔除 + skuInfoList.removeIf(skuInfo -> existSkuIdList.contains(skuInfo.getId())); + + // 返回结果 + return skuInfoList; } } diff --git a/service/service-activity/src/main/resources/mapper/ActivityInfoMapper.xml b/service/service-activity/src/main/resources/mapper/ActivityInfoMapper.xml index 10789a7..492a9b8 100644 --- a/service/service-activity/src/main/resources/mapper/ActivityInfoMapper.xml +++ b/service/service-activity/src/main/resources/mapper/ActivityInfoMapper.xml @@ -1,5 +1,17 @@ - + + diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/api/ProductInnerController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/api/ProductInnerController.java index 98519a7..f33ce5c 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/api/ProductInnerController.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/api/ProductInnerController.java @@ -41,4 +41,11 @@ public class ProductInnerController { List skuInfoList = skuInfoService.findSkuInfoList(skuIdList); return Result.success(skuInfoList); } + + @ApiOperation(value = "根据关键字获取sku列表") + @GetMapping("inner/findSkuInfoByKeyword/{keyword}") + public Result> findSkuInfoByKeyword(@PathVariable("keyword") String keyword) { + List skuInfoList = skuInfoService.findSkuInfoByKeyword(keyword); + return Result.success(skuInfoList); + } } diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuInfoService.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuInfoService.java index d46790b..7576ea3 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuInfoService.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuInfoService.java @@ -81,4 +81,12 @@ public interface SkuInfoService extends IService { * @return List */ List findSkuInfoList(List skuIdList); + + /** + * 根据关键字获取sku列表 + * + * @param keyword 关键字 + * @return List + */ + List findSkuInfoByKeyword(String keyword); } diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java index 19a726f..4725542 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java @@ -234,4 +234,15 @@ public class SkuInfoServiceImpl extends ServiceImpl impl public List findSkuInfoList(List skuIdList) { return baseMapper.selectBatchIds(skuIdList); } + + /** + * 根据关键字获取sku列表 + * + * @param keyword 关键字 + * @return List + */ + @Override + public List findSkuInfoByKeyword(String keyword) { + return list(Wrappers.lambdaQuery().like(SkuInfo::getSkuName, keyword)); + } }