diff --git a/nl-common/src/main/java/org/nl/common/annotation/CommonNoRepeat.java b/nl-common/src/main/java/org/nl/common/annotation/CommonNoRepeat.java index 2db6359..f103a62 100644 --- a/nl-common/src/main/java/org/nl/common/annotation/CommonNoRepeat.java +++ b/nl-common/src/main/java/org/nl/common/annotation/CommonNoRepeat.java @@ -1,24 +1,10 @@ -/* - * Copyright [2022] [https://www.xiaonuo.vip] - * - * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: - * - * 1.请不要删除和修改根目录下的LICENSE文件。 - * 2.请不要删除和修改Snowy源码头部的版权声明。 - * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 - * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip - * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 - * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip - */ + package org.nl.common.annotation; import java.lang.annotation.*; /** * 自定义节流防抖注解 - * - * @author xuyuxiang - * @date 2022/6/20 14:25 **/ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) diff --git a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/controller/MockConfigController.java b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/controller/MockConfigController.java index c17fe3e..4996eb4 100644 --- a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/controller/MockConfigController.java +++ b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/controller/MockConfigController.java @@ -122,6 +122,7 @@ public class MockConfigController { return CommonResult.data(mockConfigService.detail(mockConfigIdParam)); } + @SaIgnore @GetMapping("/test") public String test() { return "WELCOME"; diff --git a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/entity/MockConfig.java b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/entity/MockConfig.java index ab98ca7..2ab5947 100644 --- a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/entity/MockConfig.java +++ b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/entity/MockConfig.java @@ -62,4 +62,14 @@ public class MockConfig { @Schema(description = "更新时间") @TableField(fill = FieldFill.UPDATE) private Date updateTime; + + /** + * 领域方法:生成缓存键 + * 缓存键由API路径和方法组合而成,用于在缓存中唯一标识配置 + * + * @return 格式为 "apiPath:apiMethod" 的缓存键 + */ + public String getCacheKey() { + return apiPath + ":" + apiMethod; + } } diff --git a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigEditParam.java b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigEditParam.java index a89adcb..456e299 100644 --- a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigEditParam.java +++ b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/param/MockConfigEditParam.java @@ -52,4 +52,14 @@ public class MockConfigEditParam { @Schema(description = "是否启用:true-启用,false-禁用") private Boolean isEnabled; + /** + * 领域方法:生成缓存键 + * 缓存键由API路径和方法组合而成,用于在缓存中唯一标识配置 + * + * @return 格式为 "apiPath:apiMethod" 的缓存键 + */ + public String getCacheKey() { + return apiPath + ":" + apiMethod; + } + } diff --git a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/service/impl/MockConfigServiceImpl.java b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/service/impl/MockConfigServiceImpl.java index 2b64c68..b4de29e 100644 --- a/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/service/impl/MockConfigServiceImpl.java +++ b/nl-plugin-tool/src/main/java/org/nl/tool/mock/modular/mockconfig/service/impl/MockConfigServiceImpl.java @@ -20,6 +20,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.nl.tool.mock.core.handle.MockCacheService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.nl.common.enums.CommonSortOrderEnum; @@ -42,9 +46,19 @@ import java.util.Optional; * @author liyongde * @date 2026/01/28 17:50 **/ +@Slf4j @Service public class MockConfigServiceImpl extends ServiceImpl implements MockConfigService { + @Resource + private MockCacheService cacheService; + + private final ObjectMapper objectMapper; + + public MockConfigServiceImpl(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + } + @Override public Page page(MockConfigPageParam mockConfigPageParam) { QueryWrapper queryWrapper = new QueryWrapper().checkSqlInjection(); @@ -71,6 +85,8 @@ public class MockConfigServiceImpl extends ServiceImpl mockConfigIdParamList) { + for (MockConfigIdParam configIdParam : mockConfigIdParamList) { + MockConfig mockConfig = this.queryEntity(configIdParam.getId()); + // 失效缓存 + cacheService.invalidate(mockConfig.getCacheKey()); + } // 执行删除 this.removeByIds(CollStreamUtil.toList(mockConfigIdParamList, MockConfigIdParam::getId)); } @@ -110,4 +146,25 @@ public class MockConfigServiceImpl extends ServiceImpl