You've already forked FrameTour-BE
feat(examples): 移除设备和问卷集成示例代码
- 删除默认配置集成服务使用示例类- 移除设备配置筛选功能使用示例 - 清理设备集成基础操作示例代码 - 移除设备集成降级机制示例 - 删除Kafka集成使用示例 - 清理问卷集成服务示例代码
This commit is contained in:
@@ -1,306 +0,0 @@
|
||||
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.questionnaire.dto.answer.AnswerRequest;
|
||||
import com.ycwl.basic.integration.questionnaire.dto.answer.ResponseDetailResponse;
|
||||
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.CreateQuestionRequest;
|
||||
import com.ycwl.basic.integration.questionnaire.dto.questionnaire.CreateQuestionnaireRequest;
|
||||
import com.ycwl.basic.integration.questionnaire.dto.questionnaire.QuestionnaireResponse;
|
||||
import com.ycwl.basic.integration.questionnaire.dto.statistics.QuestionnaireStatistics;
|
||||
import com.ycwl.basic.integration.questionnaire.service.QuestionnaireIntegrationService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.context.event.ApplicationReadyEvent;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
@ConditionalOnProperty(prefix = "integration.questionnaire.example", name = "enabled", havingValue = "true")
|
||||
public class QuestionnaireIntegrationExample {
|
||||
|
||||
private final QuestionnaireIntegrationService questionnaireService;
|
||||
private final IntegrationFallbackService fallbackService;
|
||||
|
||||
@EventListener(ApplicationReadyEvent.class)
|
||||
public void runExamples() {
|
||||
try {
|
||||
log.info("=== 开始问卷集成服务示例 ===");
|
||||
|
||||
// 示例1:创建问卷
|
||||
createQuestionnaireExample();
|
||||
|
||||
// 示例2:查询问卷
|
||||
queryQuestionnaireExample();
|
||||
|
||||
// 示例3:提交答案
|
||||
submitAnswerExample();
|
||||
|
||||
// 示例4:统计查询
|
||||
statisticsExample();
|
||||
|
||||
// 示例5:Fallback 缓存管理
|
||||
fallbackCacheExample();
|
||||
|
||||
log.info("=== 问卷集成服务示例完成 ===");
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("问卷集成服务示例执行失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 示例1:创建问卷
|
||||
*/
|
||||
private void createQuestionnaireExample() {
|
||||
log.info("--- 示例1:创建客户满意度问卷 ---");
|
||||
|
||||
try {
|
||||
CreateQuestionnaireRequest request = new CreateQuestionnaireRequest();
|
||||
request.setName("客户满意度调查");
|
||||
request.setDescription("用于了解客户对我们服务的满意度");
|
||||
request.setIsAnonymous(true);
|
||||
request.setMaxAnswers(1000);
|
||||
|
||||
// 添加单选题
|
||||
CreateQuestionRequest question1 = new CreateQuestionRequest();
|
||||
question1.setTitle("您对我们的服务满意吗?");
|
||||
question1.setType(1); // 单选题
|
||||
question1.setIsRequired(true);
|
||||
question1.setSort(1);
|
||||
|
||||
List<CreateQuestionOptionRequest> options1 = new ArrayList<>();
|
||||
options1.add(new CreateQuestionOptionRequest("非常满意", "5", 1));
|
||||
options1.add(new CreateQuestionOptionRequest("满意", "4", 2));
|
||||
options1.add(new CreateQuestionOptionRequest("一般", "3", 3));
|
||||
options1.add(new CreateQuestionOptionRequest("不满意", "2", 4));
|
||||
options1.add(new CreateQuestionOptionRequest("非常不满意", "1", 5));
|
||||
question1.setOptions(options1);
|
||||
|
||||
// 添加多选题
|
||||
CreateQuestionRequest question2 = new CreateQuestionRequest();
|
||||
question2.setTitle("您感兴趣的服务有哪些?");
|
||||
question2.setType(2); // 多选题
|
||||
question2.setIsRequired(false);
|
||||
question2.setSort(2);
|
||||
|
||||
List<CreateQuestionOptionRequest> options2 = new ArrayList<>();
|
||||
options2.add(new CreateQuestionOptionRequest("技术支持", "tech_support", 1));
|
||||
options2.add(new CreateQuestionOptionRequest("产品培训", "training", 2));
|
||||
options2.add(new CreateQuestionOptionRequest("定制开发", "custom_dev", 3));
|
||||
options2.add(new CreateQuestionOptionRequest("其他", "others", 4));
|
||||
question2.setOptions(options2);
|
||||
|
||||
// 添加文本域题
|
||||
CreateQuestionRequest question3 = new CreateQuestionRequest();
|
||||
question3.setTitle("您还有什么建议吗?");
|
||||
question3.setType(4); // 文本域题
|
||||
question3.setIsRequired(false);
|
||||
question3.setSort(3);
|
||||
question3.setOptions(null); // 文本域题不需要选项
|
||||
|
||||
request.setQuestions(Arrays.asList(question1, question2, question3));
|
||||
|
||||
QuestionnaireResponse response = questionnaireService.createQuestionnaire(request, "admin");
|
||||
log.info("✅ 问卷创建成功,ID: {}, 名称: {}", response.getId(), response.getName());
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("❌ 创建问卷示例失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 示例2:查询问卷
|
||||
*/
|
||||
private void queryQuestionnaireExample() {
|
||||
log.info("--- 示例2:查询问卷示例 ---");
|
||||
|
||||
try {
|
||||
// 获取问卷列表(支持 fallback)
|
||||
PageResponse<QuestionnaireResponse> listResponse = questionnaireService.getQuestionnaireList(1, 10, null, null, null);
|
||||
log.info("✅ 问卷列表查询成功,总数: {}, 当前页数据: {}",
|
||||
listResponse.getTotal(), listResponse.getList().size());
|
||||
|
||||
if (listResponse.getList() != null && !listResponse.getList().isEmpty()) {
|
||||
Long questionnaireId = listResponse.getList().get(0).getId();
|
||||
|
||||
// 获取问卷详情(支持 fallback)
|
||||
QuestionnaireResponse detailResponse = questionnaireService.getQuestionnaire(questionnaireId);
|
||||
log.info("✅ 问卷详情查询成功,ID: {}, 名称: {}, 问题数: {}",
|
||||
detailResponse.getId(), detailResponse.getName(),
|
||||
detailResponse.getQuestions() != null ? detailResponse.getQuestions().size() : 0);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("❌ 查询问卷示例失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 示例3:提交答案
|
||||
*/
|
||||
private void submitAnswerExample() {
|
||||
log.info("--- 示例3:提交问卷答案示例 ---");
|
||||
|
||||
try {
|
||||
SubmitAnswerRequest request = new SubmitAnswerRequest();
|
||||
request.setQuestionnaireId(1001L);
|
||||
request.setUserId("user123");
|
||||
|
||||
List<AnswerRequest> answers = new ArrayList<>();
|
||||
// 单选题答案
|
||||
answers.add(new AnswerRequest(123L, "4")); // 满意
|
||||
// 多选题答案
|
||||
answers.add(new AnswerRequest(124L, "tech_support,training")); // 技术支持和产品培训
|
||||
// 文本域题答案
|
||||
answers.add(new AnswerRequest(125L, "服务很好,希望能增加更多实用功能"));
|
||||
|
||||
request.setAnswers(answers);
|
||||
|
||||
ResponseDetailResponse response = questionnaireService.submitAnswer(request);
|
||||
log.info("✅ 问卷答案提交成功,回答ID: {}, 提交时间: {}",
|
||||
response.getId(), response.getSubmittedAt());
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("❌ 提交答案示例失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 示例4:统计查询
|
||||
*/
|
||||
private void statisticsExample() {
|
||||
log.info("--- 示例4:问卷统计查询示例 ---");
|
||||
|
||||
try {
|
||||
Long questionnaireId = 1001L;
|
||||
|
||||
// 获取问卷统计(支持 fallback)
|
||||
QuestionnaireStatistics stats = questionnaireService.getStatistics(questionnaireId);
|
||||
log.info("✅ 统计查询成功,总回答数: {}, 完成率: {}%, 平均用时: {}秒",
|
||||
stats.getTotalResponses(),
|
||||
stats.getCompletionRate() != null ? stats.getCompletionRate() * 100 : 0,
|
||||
stats.getAverageTime());
|
||||
|
||||
// 获取回答记录列表(支持 fallback)
|
||||
questionnaireService.getResponseList(1, 10, questionnaireId, null, null, null);
|
||||
log.info("✅ 回答记录列表查询成功");
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("❌ 统计查询示例失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 示例5:Fallback 缓存管理
|
||||
*/
|
||||
private void fallbackCacheExample() {
|
||||
log.info("--- 示例5:Fallback 缓存管理示例 ---");
|
||||
|
||||
try {
|
||||
String serviceName = "zt-questionnaire";
|
||||
|
||||
// 检查缓存状态
|
||||
boolean hasQuestionnaireCache = fallbackService.hasFallbackCache(serviceName, "questionnaire:1001");
|
||||
boolean hasListCache = fallbackService.hasFallbackCache(serviceName, "questionnaire:list:1:10:null:null:null");
|
||||
log.info("✅ 缓存状态检查 - 问卷缓存: {}, 列表缓存: {}", hasQuestionnaireCache, hasListCache);
|
||||
|
||||
// 获取缓存统计
|
||||
IntegrationFallbackService.FallbackCacheStats stats = fallbackService.getFallbackCacheStats(serviceName);
|
||||
log.info("✅ 缓存统计 - 缓存项目数: {}, TTL: {} 天",
|
||||
stats.getTotalCacheCount(), stats.getFallbackTtlDays());
|
||||
|
||||
// 清理特定缓存示例(仅演示,实际使用时谨慎操作)
|
||||
// fallbackService.clearFallbackCache(serviceName, "questionnaire:1001");
|
||||
// log.info("✅ 已清理问卷缓存");
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("❌ Fallback 缓存管理示例失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 问卷管理工作流示例
|
||||
*/
|
||||
public void questionnaireWorkflowExample(String userId) {
|
||||
log.info("--- 问卷管理工作流示例 ---");
|
||||
|
||||
try {
|
||||
// 1. 创建问卷
|
||||
CreateQuestionnaireRequest createRequest = createSampleQuestionnaire();
|
||||
QuestionnaireResponse questionnaire = questionnaireService.createQuestionnaire(createRequest, userId);
|
||||
log.info("✅ 步骤1 - 问卷创建成功: {}", questionnaire.getName());
|
||||
|
||||
Long questionnaireId = questionnaire.getId();
|
||||
|
||||
// 2. 发布问卷
|
||||
QuestionnaireResponse published = questionnaireService.publishQuestionnaire(questionnaireId, userId);
|
||||
log.info("✅ 步骤2 - 问卷发布成功,状态: {}", published.getStatusText());
|
||||
|
||||
// 3. 模拟用户提交答案
|
||||
SubmitAnswerRequest answerRequest = createSampleAnswers(questionnaireId);
|
||||
ResponseDetailResponse answerResponse = questionnaireService.submitAnswer(answerRequest);
|
||||
log.info("✅ 步骤3 - 答案提交成功: {}", answerResponse.getId());
|
||||
|
||||
// 4. 查看统计数据
|
||||
QuestionnaireStatistics statistics = questionnaireService.getStatistics(questionnaireId);
|
||||
log.info("✅ 步骤4 - 统计查询成功,回答数: {}", statistics.getTotalResponses());
|
||||
|
||||
// 5. 停止问卷
|
||||
QuestionnaireResponse stopped = questionnaireService.stopQuestionnaire(questionnaireId, userId);
|
||||
log.info("✅ 步骤5 - 问卷停止成功,状态: {}", stopped.getStatusText());
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("❌ 问卷管理工作流示例失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
private CreateQuestionnaireRequest createSampleQuestionnaire() {
|
||||
CreateQuestionnaireRequest request = new CreateQuestionnaireRequest();
|
||||
request.setName("产品体验调查");
|
||||
request.setDescription("收集用户对产品的使用体验反馈");
|
||||
request.setIsAnonymous(false);
|
||||
request.setMaxAnswers(500);
|
||||
|
||||
// 评分题
|
||||
CreateQuestionRequest ratingQuestion = new CreateQuestionRequest();
|
||||
ratingQuestion.setTitle("请对我们的产品进行评分(1-10分)");
|
||||
ratingQuestion.setType(5); // 评分题
|
||||
ratingQuestion.setIsRequired(true);
|
||||
ratingQuestion.setSort(1);
|
||||
ratingQuestion.setOptions(null); // 评分题不需要选项
|
||||
|
||||
// 填空题
|
||||
CreateQuestionRequest textQuestion = new CreateQuestionRequest();
|
||||
textQuestion.setTitle("请输入您的姓名");
|
||||
textQuestion.setType(3); // 填空题
|
||||
textQuestion.setIsRequired(true);
|
||||
textQuestion.setSort(2);
|
||||
textQuestion.setOptions(null); // 填空题不需要选项
|
||||
|
||||
request.setQuestions(Arrays.asList(ratingQuestion, textQuestion));
|
||||
return request;
|
||||
}
|
||||
|
||||
private SubmitAnswerRequest createSampleAnswers(Long questionnaireId) {
|
||||
SubmitAnswerRequest request = new SubmitAnswerRequest();
|
||||
request.setQuestionnaireId(questionnaireId);
|
||||
request.setUserId("test_user");
|
||||
|
||||
List<AnswerRequest> answers = new ArrayList<>();
|
||||
answers.add(new AnswerRequest(1L, "8")); // 评分题答案
|
||||
answers.add(new AnswerRequest(2L, "张三")); // 填空题答案
|
||||
|
||||
request.setAnswers(answers);
|
||||
return request;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user