From 461f3a6c3c87f09fd3d689f032b1ea2146132a94 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Wed, 16 Aug 2023 18:02:17 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 19 +++++++- .../nanopart/api/BlackAndWhiteListApi.java | 1 - nanopart-server/pom.xml | 5 +++ .../nanopart/NanopartApplicationTests.java | 38 ++++++++++++++++ .../cn/axzo/nanopart/config/FeignConfig.java | 43 +++++++++++++++++++ 5 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 nanopart-server/src/test/java/cn/axzo/nanopart/NanopartApplicationTests.java create mode 100644 nanopart-server/src/test/java/cn/axzo/nanopart/config/FeignConfig.java diff --git a/README.md b/README.md index 232da083..1535bf8e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,19 @@ # 项目介绍 -一个通用的聚合服务:通用黑名单服务 \ No newline at end of file +一个通用的聚合服务:通用黑名单服务 + +# vm参数 +## dev环境 +-Dspring.datasource.url=jdbc:mysql://116.63.13.181:3311/pudge-dev?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&useSSL=true&verifyServerCertificate=false&rewriteBatchedStatements=true +-Dspring.redis.host=123.249.44.111 +-Dspring.redis.port=31270 +-Dspring.redis.password=Kjgnj93JKj3je +-DCUSTOM_ENV=dev +-Dserver.port=8080 + +## test环境 +-Dspring.datasource.url=jdbc:mysql://124.70.43.174:3306/pudge?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&useSSL=true&verifyServerCertificate=false&rewriteBatchedStatements=true +-Dspring.redis.host=123.249.44.111 +-Dspring.redis.port=31276 +-Dspring.redis.password=Kjgnj93JKj3je +-DCUSTOM_ENV=test +-Dserver.port=8080 \ No newline at end of file diff --git a/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/BlackAndWhiteListApi.java b/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/BlackAndWhiteListApi.java index 58488431..70af2ebd 100644 --- a/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/BlackAndWhiteListApi.java +++ b/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/BlackAndWhiteListApi.java @@ -30,7 +30,6 @@ public interface BlackAndWhiteListApi { /** * 删除黑名单 - * * @return */ @PostMapping("api/black-list/delete") diff --git a/nanopart-server/pom.xml b/nanopart-server/pom.xml index a9c147f7..802b59c2 100644 --- a/nanopart-server/pom.xml +++ b/nanopart-server/pom.xml @@ -51,6 +51,11 @@ axzo-logger-spring-boot-starter + + cn.axzo.framework + axzo-test-spring-boot-starter + + cn.axzo.pokonyan pokonyan diff --git a/nanopart-server/src/test/java/cn/axzo/nanopart/NanopartApplicationTests.java b/nanopart-server/src/test/java/cn/axzo/nanopart/NanopartApplicationTests.java new file mode 100644 index 00000000..9de4dd20 --- /dev/null +++ b/nanopart-server/src/test/java/cn/axzo/nanopart/NanopartApplicationTests.java @@ -0,0 +1,38 @@ +package cn.axzo.nanopart; + +import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.nanopart.api.BlackAndWhiteListApi; +import cn.axzo.nanopart.api.request.BlackAndWhiteListReq; +import cn.axzo.nanopart.api.response.BlackAndWhiteListResp; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; + +/** + * @author: chenwenjian + * @date: 2023/8/16 17:24 + * @description: + * @modifiedBy: + * @version: 1.0 + */ +@SpringBootTest +public class NanopartApplicationTests { + + @Resource + private BlackAndWhiteListApi blackAndWhiteListApi; + + @Test + void contextLoad(){ + BlackAndWhiteListReq blackAndWhiteListReq = new BlackAndWhiteListReq(); + blackAndWhiteListReq.setModule("cms-login"); + HashMap hashMap = new HashMap<>(); + hashMap.put("phone","17870574155"); + blackAndWhiteListReq.setParam(hashMap); + + ApiResult> detail = blackAndWhiteListApi.detail(blackAndWhiteListReq); + System.out.println(detail.getData().toString()); + } +} diff --git a/nanopart-server/src/test/java/cn/axzo/nanopart/config/FeignConfig.java b/nanopart-server/src/test/java/cn/axzo/nanopart/config/FeignConfig.java new file mode 100644 index 00000000..234fe465 --- /dev/null +++ b/nanopart-server/src/test/java/cn/axzo/nanopart/config/FeignConfig.java @@ -0,0 +1,43 @@ +package cn.axzo.nanopart.config; + +import cn.hutool.core.util.ReflectUtil; +import feign.RequestInterceptor; +import feign.RequestTemplate; +import feign.Target.HardCodedTarget; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; + +import java.lang.reflect.Field; +import java.util.Map; + +@Configuration +@Slf4j +@Profile({"dev", "local"}) +public class FeignConfig implements RequestInterceptor { + + private static String POD_NAMESPACE; + + static { + Map env = System.getenv(); + if (env != null) { + POD_NAMESPACE = env.get("MY_POD_NAMESPACE"); + } + log.info("init FeignConfig, POD_NAMESPACE value is {}", POD_NAMESPACE); + } + + @SneakyThrows + @Override + public void apply(RequestTemplate requestTemplate) { + if (POD_NAMESPACE == null) { + HardCodedTarget target = (HardCodedTarget) requestTemplate.feignTarget(); + String url = requestTemplate.feignTarget().url(); + url = url.replace("http://nanopart:8080", "http://127.0.0.1:8080"); + requestTemplate.target(url); + Field field = ReflectUtil.getField(target.getClass(), "url"); + field.setAccessible(true); + field.set(target, url); + } + } +} From 52d7982b7c77385b4a744267333bb4ac8cc02210 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Thu, 17 Aug 2023 10:31:44 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E7=B2=BE=E7=AE=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/api/BlackAndWhiteListApi.java | 31 ++++++++++------- .../config/NanopartApiAutoConfiguration.java | 15 -------- .../api/constant/NanopartConstant.java | 2 -- .../api/response/BlackAndWhiteListResp.java | 3 +- .../resources/META-INF/spring.factories.bak | 2 -- .../BlackAndWhiteListController.java | 2 +- .../BlackAndWhiteListRepository.java | 21 +++++------- .../service/BlackAndWhiteListService.java | 2 +- .../impl/BlackAndWhiteListServiceImpl.java | 34 +++++++------------ 9 files changed, 44 insertions(+), 68 deletions(-) delete mode 100644 black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/config/NanopartApiAutoConfiguration.java delete mode 100644 black-list/black-list-api/src/main/resources/META-INF/spring.factories.bak diff --git a/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/BlackAndWhiteListApi.java b/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/BlackAndWhiteListApi.java index 70af2ebd..5665bfb5 100644 --- a/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/BlackAndWhiteListApi.java +++ b/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/BlackAndWhiteListApi.java @@ -21,28 +21,35 @@ import java.util.List; public interface BlackAndWhiteListApi { /** - * 创建黑名单 - * @param req - * @return + * 创建黑名单或白名单 + * @param req 包含module和param两个字段 + * @return 记录id */ - @PostMapping("api/black-list/create") + @PostMapping("api/black-white-list/create") ApiResult create(@RequestBody @Validated BlackAndWhiteListReq req); /** - * 删除黑名单 - * @return + * 删除黑名单或白名单 + * @param req 包含module和param两个字段 + * @return void */ - @PostMapping("api/black-list/delete") - ApiResult> delete(@RequestBody @Validated BlackAndWhiteListReq req); + @PostMapping("api/black-white-list/delete") + ApiResult delete(@RequestBody @Validated BlackAndWhiteListReq req); /** - * 查询黑名单 - * @return + * 查询黑名单或白名单 + * @param req 包含module和param两个字段 + * @return 黑白名单记录列表 */ - @PostMapping("api/black-list/query") + @PostMapping("api/black-white-list/query") ApiResult> detail(@RequestBody @Validated BlackAndWhiteListReq req); - @PostMapping("api/black-list/is-in") + /** + * 判断指定模块、指定参数记录是否在黑名单或白名单中 + * @param req 包含module和param两个字段 + * @return 若记录存在则返回true,否则返回false + */ + @PostMapping("api/black-white-list/is-in") ApiResult isInBlackOrWhiteList(@RequestBody @Validated BlackAndWhiteListReq req); } diff --git a/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/config/NanopartApiAutoConfiguration.java b/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/config/NanopartApiAutoConfiguration.java deleted file mode 100644 index 506d569a..00000000 --- a/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/config/NanopartApiAutoConfiguration.java +++ /dev/null @@ -1,15 +0,0 @@ -//package cn.axzo.nanopart.api.config; -// -//import cn.axzo.nanopart.api.constant.NanopartConstant; -//import org.springframework.cloud.openfeign.EnableFeignClients; -// -///** -// * @author: chenwenjian -// * @date: 2023/8/11 16:28 -// * @description: -// * @modifiedBy: -// * @version: 1.0 -// */ -//@EnableFeignClients(NanopartConstant.BASIC_FEIGN_PACKAGE) -//public class NanopartApiAutoConfiguration { -//} diff --git a/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/constant/NanopartConstant.java b/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/constant/NanopartConstant.java index 996d603a..d7245dd4 100644 --- a/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/constant/NanopartConstant.java +++ b/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/constant/NanopartConstant.java @@ -8,7 +8,5 @@ package cn.axzo.nanopart.api.constant; * @version: 1.0 */ public class NanopartConstant { - public static final String BASIC_FEIGN_PACKAGE = "cn.axzo.nanopart.black_list.api"; - public static final String PHONE_REGEXP = "^1[3456789]\\d{9}$"; } \ No newline at end of file diff --git a/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/response/BlackAndWhiteListResp.java b/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/response/BlackAndWhiteListResp.java index 77dcb9f6..f8d929c6 100644 --- a/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/response/BlackAndWhiteListResp.java +++ b/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/response/BlackAndWhiteListResp.java @@ -3,6 +3,7 @@ package cn.axzo.nanopart.api.response; import lombok.Data; import java.util.Date; +import java.util.Map; /** * @author: chenwenjian @@ -24,7 +25,7 @@ public class BlackAndWhiteListResp { /** * 参数 */ - private String param; + private Map param; private Date createAt; diff --git a/black-list/black-list-api/src/main/resources/META-INF/spring.factories.bak b/black-list/black-list-api/src/main/resources/META-INF/spring.factories.bak deleted file mode 100644 index bf796ec6..00000000 --- a/black-list/black-list-api/src/main/resources/META-INF/spring.factories.bak +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -cn.axzo.nanopart.api.config.NanopartApiAutoConfiguration \ No newline at end of file diff --git a/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/controller/BlackAndWhiteListController.java b/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/controller/BlackAndWhiteListController.java index fecdeb4e..ac9efcdf 100644 --- a/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/controller/BlackAndWhiteListController.java +++ b/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/controller/BlackAndWhiteListController.java @@ -29,7 +29,7 @@ public class BlackAndWhiteListController implements BlackAndWhiteListApi { } @Override - public ApiResult> delete(BlackAndWhiteListReq req) { + public ApiResult delete(BlackAndWhiteListReq req) { return blackAndWhiteListService.delete(req); } diff --git a/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/dao/repository/BlackAndWhiteListRepository.java b/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/dao/repository/BlackAndWhiteListRepository.java index c648ef76..08836493 100644 --- a/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/dao/repository/BlackAndWhiteListRepository.java +++ b/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/dao/repository/BlackAndWhiteListRepository.java @@ -6,6 +6,7 @@ import cn.axzo.nanopart.api.request.BlackAndWhiteListReq; import cn.axzo.nanopart.server.dao.entity.SaasBlackWhiteList; import cn.axzo.nanopart.server.dao.mapper.BlackAndWhiteListMapper; import cn.azxo.framework.common.utils.StringUtils; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; @@ -13,7 +14,6 @@ import lombok.extern.slf4j.Slf4j; import org.json.JSONObject; import org.springframework.stereotype.Repository; -import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @@ -34,26 +34,25 @@ public class BlackAndWhiteListRepository extends ServiceImpl delete(BlackAndWhiteListReq req) { + public Void delete(BlackAndWhiteListReq req) { List blackWhiteLists = detail(req); - ArrayList deletedList = new ArrayList<>(); - if (blackWhiteLists!=null&&blackWhiteLists.size()>0){ - blackWhiteLists.stream().forEach(saasBlackWhiteList -> { + if (CollectionUtil.isNotEmpty(blackWhiteLists)){ + blackWhiteLists.forEach(saasBlackWhiteList -> { lambdaUpdate().eq(SaasBlackWhiteList::getId,saasBlackWhiteList.getId()) .eq(SaasBlackWhiteList::getIsDelete,0) .set(SaasBlackWhiteList::getIsDelete,saasBlackWhiteList.getId()) .update(); - deletedList.add(saasBlackWhiteList.getId()); log.info("deleted record:{}", JSONObject.valueToString(saasBlackWhiteList)); }); } - return deletedList; + return null; } public List detail(BlackAndWhiteListReq req) { @@ -65,9 +64,7 @@ public class BlackAndWhiteListRepository extends ServiceImpl queryWrapper, Map params, String prefix) { - params.entrySet().stream().forEach(entry -> { - String key = entry.getKey(); - Object value = entry.getValue(); + params.forEach((key, value) -> { String fullKey = prefix.isEmpty() ? key : prefix + "." + key; if (value instanceof Map) { buildQueryWrapper(queryWrapper, (Map) value, fullKey); diff --git a/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/service/BlackAndWhiteListService.java b/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/service/BlackAndWhiteListService.java index da759951..8987ad75 100644 --- a/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/service/BlackAndWhiteListService.java +++ b/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/service/BlackAndWhiteListService.java @@ -18,7 +18,7 @@ public interface BlackAndWhiteListService { ApiResult create(BlackAndWhiteListReq req); - ApiResult> delete(BlackAndWhiteListReq req); + ApiResult delete(BlackAndWhiteListReq req); ApiResult> detail(BlackAndWhiteListReq req); diff --git a/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/service/impl/BlackAndWhiteListServiceImpl.java b/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/service/impl/BlackAndWhiteListServiceImpl.java index d53f7178..a22e7247 100644 --- a/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/service/impl/BlackAndWhiteListServiceImpl.java +++ b/black-list/black-list-service/src/main/java/cn/axzo/nanopart/server/service/impl/BlackAndWhiteListServiceImpl.java @@ -7,9 +7,9 @@ import cn.axzo.nanopart.api.response.BlackAndWhiteListResp; import cn.axzo.nanopart.server.dao.entity.SaasBlackWhiteList; import cn.axzo.nanopart.server.dao.repository.BlackAndWhiteListRepository; import cn.axzo.nanopart.server.service.BlackAndWhiteListService; +import cn.hutool.core.collection.CollectionUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.json.JSONObject; import org.springframework.stereotype.Service; import java.util.List; @@ -30,8 +30,8 @@ public class BlackAndWhiteListServiceImpl implements BlackAndWhiteListService { /** * 新增一条黑白名单记录 - * @param req - * @return + * @param req 包含module和param两个字段 + * @return 记录id */ @Override public ApiResult create(BlackAndWhiteListReq req) { @@ -41,44 +41,34 @@ public class BlackAndWhiteListServiceImpl implements BlackAndWhiteListService { /** * 删除指定条件的所有黑白名单记录 * - * @param req - * @return + * @param req 包含module和param两个字段 + * @return null */ @Override - public ApiResult> delete(BlackAndWhiteListReq req) { + public ApiResult delete(BlackAndWhiteListReq req) { return ApiResult.ok(blackAndWhiteListRepository.delete(req)); } /** * 查询指定条件的所有黑白名单记录 - * @param req - * @return + * @param req 包含module和param两个字段 + * @return 记录列表 */ @Override public ApiResult> detail(BlackAndWhiteListReq req) { List saasBlackWhiteLists = blackAndWhiteListRepository.detail(req); - List blackAndWhiteListResps = BeanMapper.copyList(saasBlackWhiteLists, BlackAndWhiteListResp.class, (saasBlackWhiteList, blackAndWhiteListResp) -> { - JSONObject jsonObject = new JSONObject(saasBlackWhiteList.getParam()); - blackAndWhiteListResp.setParam(jsonObject.toString()); -// String jsonObjectString = jsonObject.toString(); -// // 将json串中的\去除并返回 -// String formattedJson = jsonObjectString.replace("", ""); -// blackAndWhiteListResp.setParam(formattedJson); - }); + List blackAndWhiteListResps = BeanMapper.copyList(saasBlackWhiteLists, BlackAndWhiteListResp.class); return ApiResult.ok(blackAndWhiteListResps); } /** * 判断是否存在指定条件的黑白名单记录 - * @param req - * @return + * @param req 包含module和param两个字段 + * @return 记录存在返回true,否则返回false */ @Override public ApiResult isInBlackOrWhiteList(BlackAndWhiteListReq req) { List blackWhiteLists = blackAndWhiteListRepository.detail(req); - if (blackWhiteLists!=null&&blackWhiteLists.size()>0){ - return ApiResult.ok(true); - } - return ApiResult.ok(false); + return ApiResult.ok(CollectionUtil.isNotEmpty(blackWhiteLists)); } } \ No newline at end of file From 32e9b81b579b23d902dcebc1a7172206730d1597 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Thu, 17 Aug 2023 10:41:45 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0.gitattibutes=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattibutes | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitattibutes diff --git a/.gitattibutes b/.gitattibutes new file mode 100644 index 00000000..c36262c4 --- /dev/null +++ b/.gitattibutes @@ -0,0 +1 @@ +nanopart-server/src/main/resources/bootstrap.yml merge=ours \ No newline at end of file