refactor(questionnaire): 重构问卷列表和回答记录列表的响应结构

- 将 QuestionnaireListResponse 和 ResponseListResponse 类移除
- 使用泛型化的 PageResponse 类作为列表响应的基类
- 更新相关接口和方法的返回类型
- 调整示例代码和测试用例
This commit is contained in:
2025-09-06 01:04:15 +08:00
parent a49450b795
commit 180f89042c
5 changed files with 15 additions and 56 deletions

View File

@@ -1,11 +1,10 @@
package com.ycwl.basic.integration.questionnaire.client; package com.ycwl.basic.integration.questionnaire.client;
import com.ycwl.basic.integration.common.response.CommonResponse; import com.ycwl.basic.integration.common.response.CommonResponse;
import com.ycwl.basic.integration.common.response.PageResponse;
import com.ycwl.basic.integration.questionnaire.dto.answer.ResponseDetailResponse; import com.ycwl.basic.integration.questionnaire.dto.answer.ResponseDetailResponse;
import com.ycwl.basic.integration.questionnaire.dto.answer.ResponseListResponse;
import com.ycwl.basic.integration.questionnaire.dto.answer.SubmitAnswerRequest; import com.ycwl.basic.integration.questionnaire.dto.answer.SubmitAnswerRequest;
import com.ycwl.basic.integration.questionnaire.dto.questionnaire.CreateQuestionnaireRequest; import com.ycwl.basic.integration.questionnaire.dto.questionnaire.CreateQuestionnaireRequest;
import com.ycwl.basic.integration.questionnaire.dto.questionnaire.QuestionnaireListResponse;
import com.ycwl.basic.integration.questionnaire.dto.questionnaire.QuestionnaireResponse; import com.ycwl.basic.integration.questionnaire.dto.questionnaire.QuestionnaireResponse;
import com.ycwl.basic.integration.questionnaire.dto.statistics.QuestionnaireStatistics; import com.ycwl.basic.integration.questionnaire.dto.statistics.QuestionnaireStatistics;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
@@ -35,7 +34,7 @@ public interface QuestionnaireClient {
* 获取问卷列表 * 获取问卷列表
*/ */
@GetMapping("/questionnaires") @GetMapping("/questionnaires")
CommonResponse<QuestionnaireListResponse> getQuestionnaireList( CommonResponse<PageResponse<QuestionnaireResponse>> getQuestionnaireList(
@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer pageSize, @RequestParam(defaultValue = "10") Integer pageSize,
@RequestParam(required = false) String name, @RequestParam(required = false) String name,
@@ -100,7 +99,7 @@ public interface QuestionnaireClient {
* 获取回答记录列表 * 获取回答记录列表
*/ */
@GetMapping("/responses") @GetMapping("/responses")
CommonResponse<ResponseListResponse> getResponseList( CommonResponse<PageResponse<ResponseDetailResponse>> getResponseList(
@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer pageSize, @RequestParam(defaultValue = "10") Integer pageSize,
@RequestParam(required = false) Long questionnaireId, @RequestParam(required = false) Long questionnaireId,

View File

@@ -1,12 +0,0 @@
package com.ycwl.basic.integration.questionnaire.dto.answer;
import com.ycwl.basic.integration.common.response.PageResponse;
import lombok.Data;
@Data
public class ResponseListResponse extends PageResponse<ResponseDetailResponse> {
public ResponseListResponse() {
super();
}
}

View File

@@ -1,13 +0,0 @@
package com.ycwl.basic.integration.questionnaire.dto.questionnaire;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.ycwl.basic.integration.common.response.PageResponse;
import lombok.Data;
@Data
public class QuestionnaireListResponse extends PageResponse<QuestionnaireResponse> {
public QuestionnaireListResponse() {
super();
}
}

View File

@@ -1,5 +1,6 @@
package com.ycwl.basic.integration.questionnaire.example; package com.ycwl.basic.integration.questionnaire.example;
import com.ycwl.basic.integration.common.response.PageResponse;
import com.ycwl.basic.integration.common.service.IntegrationFallbackService; import com.ycwl.basic.integration.common.service.IntegrationFallbackService;
import com.ycwl.basic.integration.questionnaire.dto.answer.AnswerRequest; import com.ycwl.basic.integration.questionnaire.dto.answer.AnswerRequest;
import com.ycwl.basic.integration.questionnaire.dto.answer.ResponseDetailResponse; import com.ycwl.basic.integration.questionnaire.dto.answer.ResponseDetailResponse;
@@ -7,7 +8,6 @@ import com.ycwl.basic.integration.questionnaire.dto.answer.SubmitAnswerRequest;
import com.ycwl.basic.integration.questionnaire.dto.question.CreateQuestionOptionRequest; import com.ycwl.basic.integration.questionnaire.dto.question.CreateQuestionOptionRequest;
import com.ycwl.basic.integration.questionnaire.dto.question.CreateQuestionRequest; import com.ycwl.basic.integration.questionnaire.dto.question.CreateQuestionRequest;
import com.ycwl.basic.integration.questionnaire.dto.questionnaire.CreateQuestionnaireRequest; import com.ycwl.basic.integration.questionnaire.dto.questionnaire.CreateQuestionnaireRequest;
import com.ycwl.basic.integration.questionnaire.dto.questionnaire.QuestionnaireListResponse;
import com.ycwl.basic.integration.questionnaire.dto.questionnaire.QuestionnaireResponse; import com.ycwl.basic.integration.questionnaire.dto.questionnaire.QuestionnaireResponse;
import com.ycwl.basic.integration.questionnaire.dto.statistics.QuestionnaireStatistics; import com.ycwl.basic.integration.questionnaire.dto.statistics.QuestionnaireStatistics;
import com.ycwl.basic.integration.questionnaire.service.QuestionnaireIntegrationService; import com.ycwl.basic.integration.questionnaire.service.QuestionnaireIntegrationService;
@@ -126,7 +126,7 @@ public class QuestionnaireIntegrationExample {
try { try {
// 获取问卷列表(支持 fallback) // 获取问卷列表(支持 fallback)
QuestionnaireListResponse listResponse = questionnaireService.getQuestionnaireList(1, 10, null, null, null); PageResponse<QuestionnaireResponse> listResponse = questionnaireService.getQuestionnaireList(1, 10, null, null, null);
log.info("✅ 问卷列表查询成功,总数: {}, 当前页数据: {}", log.info("✅ 问卷列表查询成功,总数: {}, 当前页数据: {}",
listResponse.getTotal(), listResponse.getList().size()); listResponse.getTotal(), listResponse.getList().size());

View File

@@ -2,13 +2,12 @@ package com.ycwl.basic.integration.questionnaire.service;
import com.ycwl.basic.integration.common.exception.IntegrationException; import com.ycwl.basic.integration.common.exception.IntegrationException;
import com.ycwl.basic.integration.common.response.CommonResponse; import com.ycwl.basic.integration.common.response.CommonResponse;
import com.ycwl.basic.integration.common.response.PageResponse;
import com.ycwl.basic.integration.common.service.IntegrationFallbackService; import com.ycwl.basic.integration.common.service.IntegrationFallbackService;
import com.ycwl.basic.integration.questionnaire.client.QuestionnaireClient; import com.ycwl.basic.integration.questionnaire.client.QuestionnaireClient;
import com.ycwl.basic.integration.questionnaire.dto.answer.ResponseDetailResponse; import com.ycwl.basic.integration.questionnaire.dto.answer.ResponseDetailResponse;
import com.ycwl.basic.integration.questionnaire.dto.answer.ResponseListResponse;
import com.ycwl.basic.integration.questionnaire.dto.answer.SubmitAnswerRequest; import com.ycwl.basic.integration.questionnaire.dto.answer.SubmitAnswerRequest;
import com.ycwl.basic.integration.questionnaire.dto.questionnaire.CreateQuestionnaireRequest; import com.ycwl.basic.integration.questionnaire.dto.questionnaire.CreateQuestionnaireRequest;
import com.ycwl.basic.integration.questionnaire.dto.questionnaire.QuestionnaireListResponse;
import com.ycwl.basic.integration.questionnaire.dto.questionnaire.QuestionnaireResponse; import com.ycwl.basic.integration.questionnaire.dto.questionnaire.QuestionnaireResponse;
import com.ycwl.basic.integration.questionnaire.dto.statistics.QuestionnaireStatistics; import com.ycwl.basic.integration.questionnaire.dto.statistics.QuestionnaireStatistics;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -40,20 +39,13 @@ public class QuestionnaireIntegrationService {
); );
} }
public QuestionnaireListResponse getQuestionnaireList(Integer page, Integer pageSize, public PageResponse<QuestionnaireResponse> getQuestionnaireList(Integer page, Integer pageSize,
String name, Integer status, String createdBy) { String name, Integer status, String createdBy) {
log.info("获取问卷列表, page: {}, pageSize: {}, name: {}, status: {}, createdBy: {}", log.info("获取问卷列表, page: {}, pageSize: {}, name: {}, status: {}, createdBy: {}",
page, pageSize, name, status, createdBy); page, pageSize, name, status, createdBy);
return fallbackService.executeWithFallback( CommonResponse<PageResponse<QuestionnaireResponse>> response =
SERVICE_NAME, questionnaireClient.getQuestionnaireList(page, pageSize, name, status, createdBy);
"questionnaire:list:" + page + ":" + pageSize + ":" + name + ":" + status + ":" + createdBy, return handleResponse(response, "获取问卷列表失败");
() -> {
CommonResponse<QuestionnaireListResponse> response =
questionnaireClient.getQuestionnaireList(page, pageSize, name, status, createdBy);
return handleResponse(response, "获取问卷列表失败");
},
QuestionnaireListResponse.class
);
} }
public QuestionnaireStatistics getStatistics(Long id) { public QuestionnaireStatistics getStatistics(Long id) {
@@ -69,20 +61,13 @@ public class QuestionnaireIntegrationService {
); );
} }
public ResponseListResponse getResponseList(Integer page, Integer pageSize, Long questionnaireId, public PageResponse<ResponseDetailResponse> getResponseList(Integer page, Integer pageSize, Long questionnaireId,
String userId, String startTime, String endTime) { String userId, String startTime, String endTime) {
log.info("获取回答记录列表, page: {}, pageSize: {}, questionnaireId: {}, userId: {}", log.info("获取回答记录列表, page: {}, pageSize: {}, questionnaireId: {}, userId: {}",
page, pageSize, questionnaireId, userId); page, pageSize, questionnaireId, userId);
return fallbackService.executeWithFallback( CommonResponse<PageResponse<ResponseDetailResponse>> response =
SERVICE_NAME, questionnaireClient.getResponseList(page, pageSize, questionnaireId, userId, startTime, endTime);
"responses:list:" + page + ":" + pageSize + ":" + questionnaireId + ":" + userId, return handleResponse(response, "获取回答记录列表失败");
() -> {
CommonResponse<ResponseListResponse> response =
questionnaireClient.getResponseList(page, pageSize, questionnaireId, userId, startTime, endTime);
return handleResponse(response, "获取回答记录列表失败");
},
ResponseListResponse.class
);
} }
public ResponseDetailResponse getResponseDetail(Long id) { public ResponseDetailResponse getResponseDetail(Long id) {