importBlackAndWhiteListExcel(@RequestParam(value = "type") @NotNull(message = "名单类型不能为空") ListTypeEnum type,
@RequestParam(value = "module") @NotBlank(message = "模块不能为空") String module, @RequestParam(value = "url", required = false) String url, @RequestPart(value = "file") MultipartFile file);
+
+ /**
+ * 平台同步黑白名单
+ *
+ * 每次最多同步1000条记录且整体上同步策略采用全量覆盖策略
+ * 若总记录数超过1000条请自行分片多次调用
+ *
+ *
+ *
+ * 该接口需要验签,参与签名的字段为header中的:appKey,timestamp,
+ * 签名字段为header中的sign
+ *
+ *
+ * @param req @{link BlackAndWhiteListPlatformSyncReq}
+ * @return true-同步成功,false-同步失败
+ */
+ @PostMapping("api/black-white-list/plat-sync")
+ ApiResult platformSync(@RequestBody @Validated BlackAndWhiteListPlatformSyncReq req);
+
+ /**
+ * TODO 该接口目前耗时较长待优化
+ * 内部自同步黑白名单
+ *
+ * 例如将其他模块的黑名单同步到登录模块黑名单
+ *
+ *
+ * @param req @{link BlackAndWhiteListInternalSyncReq}
+ * @return 同步结果,成功返回同步记录总数
+ */
+ @PostMapping("api/black-white-list/inner-sync")
+ ApiResult internalSync(@RequestBody @Validated BlackAndWhiteListInternalSyncReq req);
}
diff --git a/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/SignatureUtilApi.java b/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/SignatureUtilApi.java
new file mode 100644
index 00000000..9d63fa35
--- /dev/null
+++ b/black-list/black-list-api/src/main/java/cn/axzo/nanopart/api/SignatureUtilApi.java
@@ -0,0 +1,42 @@
+package cn.axzo.nanopart.api;
+
+import cn.axzo.framework.domain.web.result.ApiResult;
+import cn.axzo.nanopart.api.request.SignatureGetReq;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.security.KeyPair;
+import java.util.Map;
+
+/**
+ * 签名工具类
+ *
+ * @author chenwenjian
+ * @version 1.0
+ * @date 2024/1/2 16:53
+ */
+@FeignClient(name = "nanopart", url = "http://nanopart:8080")
+public interface SignatureUtilApi {
+
+ /**
+ * 生成公私钥对
+ *
+ * @param algorithm 算法,例如:RSA
+ * @return 公私钥对
+ */
+ @GetMapping("api/signature/generateKeyPair")
+ ApiResult