|
|
@@ -1,7 +1,9 @@
|
|
|
package cn.seecoder.bok.client;
|
|
|
|
|
|
+import cn.seecoder.bok.common.api.*;
|
|
|
import cn.seecoder.bok.common.dto.CollectDTO;
|
|
|
import cn.seecoder.bok.common.dto.RateDTO;
|
|
|
+import cn.seecoder.bok.common.utility.RestPage;
|
|
|
import cn.seecoder.bok.common.vo.*;
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
|
|
@@ -28,9 +30,9 @@ import java.util.function.Function;
|
|
|
public class SeecoderBokClient
|
|
|
implements SeecoderBokQuestionApi, SeecoderBokQuestionQueryApi,
|
|
|
SeecoderBokRecordApi, SeecoderBokUserInteractiveApi,
|
|
|
- SeecoderBokKnowledgeApi, SeecoderBokCodeQuestionApi {
|
|
|
+ SeecoderBokKnowledgeApi {
|
|
|
|
|
|
- private final Logger logger = LoggerFactory.getLogger(getClass());
|
|
|
+ private final Logger logger = LoggerFactory.getLogger(SeecoderBokClient.class);
|
|
|
|
|
|
private final OkHttpClient client;
|
|
|
private final ObjectMapper mapper;
|
|
|
@@ -63,18 +65,17 @@ public class SeecoderBokClient
|
|
|
HttpUrl httpUrl = createUrlBuilder("/api/knowledge")
|
|
|
.addQueryParameter("name", name).build();
|
|
|
Response response = get(httpUrl);
|
|
|
- return getResponseBody(response, new TypeReference<List<KnowledgeNodeVO>>() {
|
|
|
- })
|
|
|
+ return getResponseBody(response, new TypeReference<List<KnowledgeNodeVO>>() {})
|
|
|
.orElse(Collections.emptyList());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Page<QuestionVO> getQuestionList(
|
|
|
- String stem, String tag, String knowledgeId, Pageable pageable) {
|
|
|
+ String stem, List<String> tags, List<String> knowledgeIds, Pageable pageable) {
|
|
|
HttpUrl.Builder urlBuilder = createUrlBuilder("/api/question")
|
|
|
.addQueryParameter("stem", stem)
|
|
|
- .addQueryParameter("tag", tag)
|
|
|
- .addQueryParameter("knowledgeId", knowledgeId);
|
|
|
+ .addQueryParameter("tag", joinComma(tags))
|
|
|
+ .addQueryParameter("knowledgeId", joinComma(knowledgeIds));
|
|
|
return getQuestionVOS(pageable, urlBuilder);
|
|
|
}
|
|
|
|
|
|
@@ -85,6 +86,14 @@ public class SeecoderBokClient
|
|
|
return getResponseBody(response, QuestionVO.class).orElseThrow(() -> SeecoderBokException.UNWRAP_EXCEPTION);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<QuestionVO> createQuestions(@NotNull List<QuestionVO> questionVOS) {
|
|
|
+ HttpUrl httpUrl = createUrlBuilder("/api/questions").build();
|
|
|
+ Response response = post(httpUrl, writeRequestBody(questionVOS));
|
|
|
+ return getResponseBody(response, new TypeReference<List<QuestionVO>>() {})
|
|
|
+ .orElseThrow(() -> SeecoderBokException.UNWRAP_EXCEPTION);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public Optional<QuestionVO> getQuestionById(@NotBlank String questionId) {
|
|
|
HttpUrl httpUrl = createUrlBuilder(MessageFormat.format("/api/question/{0}", questionId)).build();
|
|
|
@@ -135,7 +144,7 @@ public class SeecoderBokClient
|
|
|
.addQueryParameter("recordId", joinComma(recordIdList));
|
|
|
HttpUrl httpUrl = addPageableToParams(urlBuilder, pageable).build();
|
|
|
Response response = get(httpUrl);
|
|
|
- return getResponseBody(response, new TypeReference<Page<RecordVO>>() {})
|
|
|
+ return getResponseBody(response, new TypeReference<RestPage<RecordVO>>() {})
|
|
|
.map(recordVOS -> new PageImpl<>(
|
|
|
recordVOS.getContent(),
|
|
|
parseBokToPageable(recordVOS.getNumber(), recordVOS.getSize(), pageable),
|
|
|
@@ -144,19 +153,13 @@ public class SeecoderBokClient
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public PageableRecordQuestionVO getUserRecordQuestions(
|
|
|
+ public RecordQuestionVO getUserRecordQuestions(
|
|
|
@NotNull String userId, Pageable pageable) {
|
|
|
HttpUrl.Builder urlBuilder = createUrlBuilder(MessageFormat.format("/api/record/{0}/question", userId));
|
|
|
HttpUrl httpUrl = addPageableToParams(urlBuilder, pageable).build();
|
|
|
Response response = get(httpUrl);
|
|
|
- return getResponseBody(response, PageableRecordQuestionVO.class)
|
|
|
- .map(pageableRecordQuestionVO -> {
|
|
|
- PageVO page = pageableRecordQuestionVO.getPage();
|
|
|
- page.setNumber(parseBokToPageableNumber(page.getNumber()));
|
|
|
- pageableRecordQuestionVO.setPage(page);
|
|
|
- return pageableRecordQuestionVO;
|
|
|
- })
|
|
|
- .orElse(PageableRecordQuestionVO.ofEmpty());
|
|
|
+ return getResponseBody(response, RecordQuestionVO.class)
|
|
|
+ .orElse(RecordQuestionVO.empty());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -185,72 +188,29 @@ public class SeecoderBokClient
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Optional<InteractiveVO> getUserInteractiveQuestion(
|
|
|
+ public Optional<InteractionVO> getUserInteractiveQuestion(
|
|
|
@NotBlank String userId, @NotBlank String questionId) {
|
|
|
HttpUrl httpUrl = createUrlBuilder(
|
|
|
MessageFormat.format("/api/user/{0}/question/{1}", userId, questionId)).build();
|
|
|
Response response = get(httpUrl);
|
|
|
- return getResponseBody(response, InteractiveVO.class);
|
|
|
+ return getResponseBody(response, InteractionVO.class);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<InteractiveVO> getUserInteractiveQuestionIn(
|
|
|
+ public List<InteractionVO> getUserInteractiveQuestionIn(
|
|
|
@NotBlank String userId, List<String> questionIdList) {
|
|
|
HttpUrl httpUrl = createUrlBuilder(
|
|
|
MessageFormat.format("/api/user/{0}/questionInList", userId)).build();
|
|
|
Response response = get(httpUrl);
|
|
|
- return getResponseBody(response, new TypeReference<List<InteractiveVO>>() {})
|
|
|
+ return getResponseBody(response, new TypeReference<List<InteractionVO>>() {})
|
|
|
.orElse(Collections.emptyList());
|
|
|
}
|
|
|
|
|
|
private Page<QuestionVO> getQuestionVOS(Pageable pageable, HttpUrl.Builder urlBuilder) {
|
|
|
HttpUrl httpUrl = addPageableToParams(urlBuilder, pageable).build();
|
|
|
Response response = get(httpUrl);
|
|
|
- return getResponseBody(response, PageableQuestionListVO.class)
|
|
|
- .map(pageableQuestionListVO ->
|
|
|
- new PageImpl<>(
|
|
|
- pageableQuestionListVO.getQuestions(),
|
|
|
- parseBokToPageable(pageableQuestionListVO.getPage(), pageable),
|
|
|
- pageableQuestionListVO.getPage().getTotalElements()))
|
|
|
- .orElse(new PageImpl<>(Collections.emptyList()));
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- @Override
|
|
|
- public Page<CodeQuestionVO> getCodeQuestions(String title, Pageable pageable) {
|
|
|
- HttpUrl.Builder urlBuilder = createUrlBuilder("/api/codeQuestion")
|
|
|
- .addQueryParameter("title", title);
|
|
|
- HttpUrl httpUrl = addPageableToParams(urlBuilder, pageable).build();
|
|
|
- Response response = get(httpUrl);
|
|
|
- return getResponseBody(response, new TypeReference<Page<CodeQuestionVO>>() {})
|
|
|
- .map(codeQuestionVOS ->
|
|
|
- new PageImpl<>(
|
|
|
- codeQuestionVOS.getContent(),
|
|
|
- parseBokToPageable(codeQuestionVOS.getNumber(), codeQuestionVOS.getSize(), pageable),
|
|
|
- codeQuestionVOS.getTotalElements()))
|
|
|
- .orElse(new PageImpl<>(Collections.emptyList()));
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public Optional<CodeQuestionVO> getCodeQuestionById(@NotBlank String id) {
|
|
|
- HttpUrl httpUrl = createUrlBuilder(MessageFormat.format("/api/codeQuestion/{0}", id)).build();
|
|
|
- Response response = get(httpUrl);
|
|
|
- return getResponseBody(response, CodeQuestionVO.class);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public CodeQuestionVO createCodeQuestion(@NotNull CodeQuestionVO codeQuestionVO) {
|
|
|
- HttpUrl httpUrl = createUrlBuilder("/api/codeQuestion").build();
|
|
|
- Response response = post(httpUrl, writeRequestBody(codeQuestionVO));
|
|
|
- return getResponseBody(response, CodeQuestionVO.class).orElseThrow(() -> SeecoderBokException.UNWRAP_EXCEPTION);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public CodeQuestionVO updateCodeQuestion(@NotNull CodeQuestionVO codeQuestionVO) {
|
|
|
- HttpUrl httpUrl = createUrlBuilder(
|
|
|
- MessageFormat.format("/api/codeQuestion/{0}", codeQuestionVO.getId())).build();
|
|
|
- Response response = put(httpUrl, writeRequestBody(codeQuestionVO));
|
|
|
- return getResponseBody(response, CodeQuestionVO.class).orElseThrow(() -> SeecoderBokException.UNWRAP_EXCEPTION);
|
|
|
+ return getResponseBody(response, new TypeReference<RestPage<QuestionVO>>() {})
|
|
|
+ .orElse(new RestPage<>());
|
|
|
}
|
|
|
|
|
|
private Response get(HttpUrl httpUrl) {
|
|
|
@@ -343,10 +303,6 @@ public class SeecoderBokClient
|
|
|
return bokPageNumber - SeecoderBokConstants.PAGE_START + CONFIG_PAGE_START;
|
|
|
}
|
|
|
|
|
|
- private Pageable parseBokToPageable(PageVO pageVO, Pageable pageable) {
|
|
|
- return parseBokToPageable(pageVO.getNumber(), pageVO.getSize(), pageable);
|
|
|
- }
|
|
|
-
|
|
|
private Pageable parseBokToPageable(int page, int size, Pageable pageable) {
|
|
|
if (pageable == null) {
|
|
|
return PageRequest.of(parseBokToPageableNumber(page), size);
|