|
@@ -9,6 +9,7 @@ import graphql.kickstart.execution.context.GraphQLContext;
|
|
|
import graphql.kickstart.servlet.context.DefaultGraphQLServletContext;
|
|
import graphql.kickstart.servlet.context.DefaultGraphQLServletContext;
|
|
|
import graphql.kickstart.servlet.context.DefaultGraphQLWebSocketContext;
|
|
import graphql.kickstart.servlet.context.DefaultGraphQLWebSocketContext;
|
|
|
import graphql.kickstart.servlet.context.GraphQLServletContextBuilder;
|
|
import graphql.kickstart.servlet.context.GraphQLServletContextBuilder;
|
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.dataloader.DataLoader;
|
|
import org.dataloader.DataLoader;
|
|
|
import org.dataloader.DataLoaderRegistry;
|
|
import org.dataloader.DataLoaderRegistry;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -60,33 +61,39 @@ public class GraphqlContextBuilder implements GraphQLServletContextBuilder {
|
|
|
dataLoaderRegistry.register("userDataLoader", userDataLoader());
|
|
dataLoaderRegistry.register("userDataLoader", userDataLoader());
|
|
|
dataLoaderRegistry.register("orderGoodsDataLoader", orderGoodsDataLoader());
|
|
dataLoaderRegistry.register("orderGoodsDataLoader", orderGoodsDataLoader());
|
|
|
dataLoaderRegistry.register("orderUserDataLoader", orderUserDataLoader());
|
|
dataLoaderRegistry.register("orderUserDataLoader", orderUserDataLoader());
|
|
|
|
|
+// dataLoaderRegistry.register("userAttentionsDataLoader", userAttentionsDataLoader());
|
|
|
return dataLoaderRegistry;
|
|
return dataLoaderRegistry;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private DataLoader<String, GoodsDTO> goodsDataLoader() {
|
|
private DataLoader<String, GoodsDTO> goodsDataLoader() {
|
|
|
- RestTemplate restTemplate = new RestTemplate();
|
|
|
|
|
return new DataLoader<>(
|
|
return new DataLoader<>(
|
|
|
goodsSerialNos -> supplyAsync(
|
|
goodsSerialNos -> supplyAsync(
|
|
|
- () -> goodsSerialNos.stream().map(goodsSerialNo -> restTemplate.getForObject(
|
|
|
|
|
- apiEnv.getGoodsEndpoint() + goodsSerialNo, GoodsDTO.class))
|
|
|
|
|
- .collect(Collectors.toList())));
|
|
|
|
|
|
|
+ () -> new RestTemplate().exchange(
|
|
|
|
|
+ apiEnv.getGoodsEndpoint() + "query?serialNos={goodsSerialNos}",
|
|
|
|
|
+ HttpMethod.GET,
|
|
|
|
|
+ new HttpEntity(null),
|
|
|
|
|
+ new ParameterizedTypeReference<List<GoodsDTO>>() {
|
|
|
|
|
+ }, StringUtils.join(goodsSerialNos, ",")).getBody()
|
|
|
|
|
+ ));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private DataLoader<Long, UserDTO> userDataLoader() {
|
|
private DataLoader<Long, UserDTO> userDataLoader() {
|
|
|
- RestTemplate restTemplate = new RestTemplate();
|
|
|
|
|
return new DataLoader<>(
|
|
return new DataLoader<>(
|
|
|
userIDs -> supplyAsync(
|
|
userIDs -> supplyAsync(
|
|
|
- () -> userIDs.stream().map(userID -> restTemplate.getForObject(
|
|
|
|
|
- apiEnv.getUsersEndpoint() + userID, UserDTO.class))
|
|
|
|
|
- .collect(Collectors.toList())));
|
|
|
|
|
|
|
+ () -> new RestTemplate().exchange(
|
|
|
|
|
+ apiEnv.getUsersEndpoint()+ "queryByIds?userIds={userIDs}",
|
|
|
|
|
+ HttpMethod.GET,
|
|
|
|
|
+ new HttpEntity(null),
|
|
|
|
|
+ new ParameterizedTypeReference<List<UserDTO>>() {
|
|
|
|
|
+ }, StringUtils.join(userIDs, ",")).getBody()
|
|
|
|
|
+ ));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private DataLoader<String, List<OrderDTO>> orderGoodsDataLoader() {
|
|
private DataLoader<String, List<OrderDTO>> orderGoodsDataLoader() {
|
|
|
- RestTemplate restTemplate = new RestTemplate();
|
|
|
|
|
return new DataLoader<>(
|
|
return new DataLoader<>(
|
|
|
goodsSerialNos -> supplyAsync(
|
|
goodsSerialNos -> supplyAsync(
|
|
|
() -> goodsSerialNos.stream().map(goodsSerialNo ->
|
|
() -> goodsSerialNos.stream().map(goodsSerialNo ->
|
|
|
- restTemplate.exchange(
|
|
|
|
|
|
|
+ new RestTemplate().exchange(
|
|
|
apiEnv.getOrdersEndpoint() + "query?goodsSerialNo={goodsSerialNo}",
|
|
apiEnv.getOrdersEndpoint() + "query?goodsSerialNo={goodsSerialNo}",
|
|
|
HttpMethod.GET,
|
|
HttpMethod.GET,
|
|
|
new HttpEntity(null),
|
|
new HttpEntity(null),
|
|
@@ -96,11 +103,10 @@ public class GraphqlContextBuilder implements GraphQLServletContextBuilder {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private DataLoader<Long, List<OrderDTO>> orderUserDataLoader() {
|
|
private DataLoader<Long, List<OrderDTO>> orderUserDataLoader() {
|
|
|
- RestTemplate restTemplate = new RestTemplate();
|
|
|
|
|
return new DataLoader<>(
|
|
return new DataLoader<>(
|
|
|
userIDs -> supplyAsync(
|
|
userIDs -> supplyAsync(
|
|
|
() -> userIDs.stream().map(userID ->
|
|
() -> userIDs.stream().map(userID ->
|
|
|
- restTemplate.exchange(
|
|
|
|
|
|
|
+ new RestTemplate().exchange(
|
|
|
apiEnv.getOrdersEndpoint() + "query?userID={userID}",
|
|
apiEnv.getOrdersEndpoint() + "query?userID={userID}",
|
|
|
HttpMethod.GET,
|
|
HttpMethod.GET,
|
|
|
new HttpEntity(null),
|
|
new HttpEntity(null),
|
|
@@ -108,4 +114,16 @@ public class GraphqlContextBuilder implements GraphQLServletContextBuilder {
|
|
|
}, userID).getBody())
|
|
}, userID).getBody())
|
|
|
.collect(Collectors.toList())));
|
|
.collect(Collectors.toList())));
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ private DataLoader<Long, UserDTO> userAttentionsDataLoader() {
|
|
|
|
|
+ return new DataLoader<>(
|
|
|
|
|
+ userIDs -> supplyAsync(
|
|
|
|
|
+ () -> new RestTemplate().exchange(
|
|
|
|
|
+ apiEnv.getOrdersEndpoint() + "queryByIds?userIds={userIds}",
|
|
|
|
|
+ HttpMethod.GET,
|
|
|
|
|
+ new HttpEntity(null),
|
|
|
|
|
+ new ParameterizedTypeReference<List<UserDTO>>() {
|
|
|
|
|
+ }, userIDs).getBody()
|
|
|
|
|
+ ));
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|