丁云鹏 11 месяцев назад
Родитель
Сommit
3ff29538b5

+ 1 - 1
recommend-feature-client/pom.xml

@@ -10,7 +10,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>recommend-feature-client</artifactId>
-    <version>1.1.19</version>
+    <version>1.1.20</version>
 
     <dependencies>
         <dependency>

+ 49 - 0
recommend-feature-client/src/main/java/com/tzld/piaoquan/recommend/feature/client/FeatureV2Client.java

@@ -0,0 +1,49 @@
+package com.tzld.piaoquan.recommend.feature.client;
+
+import com.tzld.piaoquan.recommend.feature.model.feature.FeatureKeyProto;
+import com.tzld.piaoquan.recommend.feature.model.feature.FeatureV2ServiceGrpc;
+import com.tzld.piaoquan.recommend.feature.model.feature.MultiGetFeatureRequest;
+import com.tzld.piaoquan.recommend.feature.model.feature.MultiGetFeatureResponse;
+import lombok.extern.slf4j.Slf4j;
+import net.devh.boot.grpc.client.inject.GrpcClient;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author dyp
+ */
+@Component
+@Slf4j
+public class FeatureV2Client {
+    @GrpcClient("recommend-feature")
+    private FeatureV2ServiceGrpc.FeatureV2ServiceBlockingStub client;
+
+    public Map<String, String> multiGetFeature(List<FeatureKeyProto> protos) {
+        if (CollectionUtils.isEmpty(protos)) {
+            return Collections.emptyMap();
+        }
+        MultiGetFeatureRequest request = MultiGetFeatureRequest.newBuilder()
+                .addAllFeatureKey(protos)
+                .build();
+        MultiGetFeatureResponse response = client.multiGetFeature(request);
+        if (response == null || !response.hasResult()) {
+            log.info("multiGetFeature grpc error");
+            return null;
+        }
+        if (response.getResult().getCode() != 1) {
+            log.info("multiGetFeature grpc code={}, msg={}", response.getResult().getCode(),
+                    response.getResult().getMessage());
+            return null;
+        }
+        if (response.getFeatureCount() == 0) {
+            log.info("multiGetFeature no feature");
+            return Collections.emptyMap();
+        }
+        return response.getFeatureMap();
+    }
+
+}