commit 5224cfb1a75dcf5e65112bb52a39ab14e17c5944
Author: 中青华年 <2957899895@qq.com>
Date: Mon Apr 14 17:01:00 2025 +0800
完工
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..35410ca
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..0e93d12
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
new file mode 100644
index 0000000..609fb19
--- /dev/null
+++ b/.idea/dataSources.xml
@@ -0,0 +1,17 @@
+
+
+
+
+ mysql.8
+ true
+ com.mysql.cj.jdbc.Driver
+ jdbc:mysql://62.234.217.137:3306/mbti
+
+
+
+
+
+ $ProjectFileDir$
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..63e9001
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..abb532a
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..15a25de
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000..d58dfb7
--- /dev/null
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+wrapperVersion=3.3.2
+distributionType=only-script
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..e99f5f5
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,77 @@
+
+
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 3.4.4
+
+
+ com.yang
+ test
+ 0.0.1-SNAPSHOT
+ test
+ test
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 17
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+ 3.0.4
+
+
+
+ com.mysql
+ mysql-connector-j
+ runtime
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter-test
+ 3.0.4
+ test
+
+
+ org.projectlombok
+ lombok
+ 1.18.26
+ provided
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
diff --git a/server.log b/server.log
new file mode 100644
index 0000000..e69de29
diff --git a/src/main/java/com/yang/test/TestApplication.java b/src/main/java/com/yang/test/TestApplication.java
new file mode 100644
index 0000000..60e6e34
--- /dev/null
+++ b/src/main/java/com/yang/test/TestApplication.java
@@ -0,0 +1,20 @@
+package com.yang.test;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.core.env.Environment;
+
+@Slf4j
+@SpringBootApplication
+public class TestApplication {
+
+ public static void main(String[] args) {
+ ConfigurableApplicationContext context = SpringApplication.run(TestApplication.class, args);
+ Environment env = context.getEnvironment();
+ String port = env.getProperty("server.port", "8080");
+ log.info("MBTI测试系统启动成功! 服务运行在端口: {}", port);
+ }
+
+}
diff --git a/src/main/java/com/yang/test/config/CorsConfig.java b/src/main/java/com/yang/test/config/CorsConfig.java
new file mode 100644
index 0000000..92712d1
--- /dev/null
+++ b/src/main/java/com/yang/test/config/CorsConfig.java
@@ -0,0 +1,23 @@
+package com.yang.test.config;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class CorsConfig implements WebMvcConfigurer {
+
+ @Value("${cors.allowed-origins}")
+ private String allowedOrigins;
+
+ @Override
+ public void addCorsMappings(CorsRegistry registry) {
+ registry.addMapping("/api/**")
+ .allowedOrigins(allowedOrigins.split(","))
+ .allowedMethods("GET", "POST", "OPTIONS")
+ .allowedHeaders("Content-Type")
+ .allowCredentials(true)
+ .maxAge(3600);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/config/DatabaseConfig.java b/src/main/java/com/yang/test/config/DatabaseConfig.java
new file mode 100644
index 0000000..62266dc
--- /dev/null
+++ b/src/main/java/com/yang/test/config/DatabaseConfig.java
@@ -0,0 +1,46 @@
+package com.yang.test.config;
+
+import com.zaxxer.hikari.HikariConfig;
+import com.zaxxer.hikari.HikariDataSource;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.jdbc.core.JdbcTemplate;
+
+import javax.sql.DataSource;
+
+@Configuration
+public class DatabaseConfig {
+
+ @Value("${spring.datasource.url}")
+ private String jdbcUrl;
+
+ @Value("${spring.datasource.username}")
+ private String username;
+
+ @Value("${spring.datasource.password}")
+ private String password;
+
+ @Value("${spring.datasource.driver-class-name}")
+ private String driverClassName;
+
+ @Bean
+ public DataSource dataSource() {
+ HikariConfig config = new HikariConfig();
+ config.setJdbcUrl(jdbcUrl);
+ config.setUsername(username);
+ config.setPassword(password);
+ config.setDriverClassName(driverClassName);
+ config.setMaximumPoolSize(10);
+ config.setMinimumIdle(5);
+ config.setConnectionTimeout(30000);
+ config.setIdleTimeout(600000);
+ config.setMaxLifetime(1800000);
+ return new HikariDataSource(config);
+ }
+
+ @Bean
+ public JdbcTemplate jdbcTemplate(DataSource dataSource) {
+ return new JdbcTemplate(dataSource);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/config/RestTemplateConfig.java b/src/main/java/com/yang/test/config/RestTemplateConfig.java
new file mode 100644
index 0000000..651a41c
--- /dev/null
+++ b/src/main/java/com/yang/test/config/RestTemplateConfig.java
@@ -0,0 +1,18 @@
+package com.yang.test.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.client.SimpleClientHttpRequestFactory;
+import org.springframework.web.client.RestTemplate;
+
+@Configuration
+public class RestTemplateConfig {
+
+ @Bean
+ public RestTemplate restTemplate() {
+ SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
+ factory.setConnectTimeout(5000);
+ factory.setReadTimeout(300000); // 5分钟超时
+ return new RestTemplate(factory);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/controller/HldzyController.java b/src/main/java/com/yang/test/controller/HldzyController.java
new file mode 100644
index 0000000..039e8e1
--- /dev/null
+++ b/src/main/java/com/yang/test/controller/HldzyController.java
@@ -0,0 +1,52 @@
+package com.yang.test.controller;
+
+import com.yang.test.domain.DTO.ResultRequest;
+import com.yang.test.domain.DTO.ResultResponse;
+import com.yang.test.domain.QuestionH;
+import com.yang.test.service.HldzyService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/api")
+public class HldzyController {
+
+ @Autowired
+ private HldzyService hldzyService;
+
+ /**
+ * 获取所有测试题目
+ */
+ @GetMapping("/questionsH")
+ public Map getAllQuestions() {
+ List questions = hldzyService.getAllQuestions();
+ Collections.shuffle(questions); // 随机排序问题
+
+ Map response = new HashMap<>();
+ response.put("code", 0);
+ response.put("message", "success");
+ response.put("data", questions);
+
+ return response;
+ }
+
+ /**
+ * 提交测试结果并获取分析
+ */
+ @PostMapping("/results")
+ public Map submitResult(@RequestBody ResultRequest request) {
+ ResultResponse result = hldzyService.calculateResult(request.getAnswers());
+
+ Map response = new HashMap<>();
+ response.put("code", 0);
+ response.put("message", "success");
+ response.put("data", result);
+
+ return response;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/controller/MbtiController.java b/src/main/java/com/yang/test/controller/MbtiController.java
new file mode 100644
index 0000000..4abb168
--- /dev/null
+++ b/src/main/java/com/yang/test/controller/MbtiController.java
@@ -0,0 +1,82 @@
+package com.yang.test.controller;
+
+import com.yang.test.domain.Answer;
+import com.yang.test.domain.VO.QuestionVO;
+import com.yang.test.domain.VO.ResultVO;
+import com.yang.test.service.MbtiService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.Duration;
+import java.time.Instant;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@RestController
+@RequestMapping("/api")
+public class MbtiController {
+
+ @Autowired
+ private MbtiService mbtiService;
+
+ @GetMapping("/questions")
+ public ResponseEntity> getQuestions(@RequestParam(value = "type", defaultValue = "simple") String testType) {
+ Instant start = Instant.now();
+ log.info("开始获取题目, 类型: {}", testType);
+ try {
+ List questions = mbtiService.getQuestions(testType);
+
+ log.info("获取题目完成, 类型: {}, 题目数量: {}, 总耗时: {}",
+ testType, questions.size(), Duration.between(start, Instant.now()));
+
+ return ResponseEntity.ok(questions);
+ } catch (Exception e) {
+ log.error("获取题目失败: {}", e.getMessage(), e);
+ return ResponseEntity.internalServerError().body(Map.of("error", "获取题目失败"));
+ }
+ }
+
+ @PostMapping("/submit")
+ public ResponseEntity> submitAnswers(@RequestBody Answer answer,
+ @RequestParam(value = "type", defaultValue = "simple") String testType) {
+ Instant start = Instant.now();
+ log.info("开始处理答案提交请求");
+
+ try {
+ String resultId = mbtiService.processAnswers(answer.getAnswers(), testType);
+
+ log.info("答案提交处理完成, 结果ID: {}, 总耗时: {}",
+ resultId, Duration.between(start, Instant.now()));
+
+ return ResponseEntity.ok(Map.of("resultId", resultId));
+ } catch (Exception e) {
+ log.error("处理答案提交请求失败: {}", e.getMessage(), e);
+ return ResponseEntity.internalServerError().body(Map.of("error", "处理请求失败"));
+ }
+ }
+
+ @GetMapping("/result/{id}")
+ public ResponseEntity> getResult(@PathVariable("id") String resultId) {
+ Instant start = Instant.now();
+ log.info("开始获取结果, ID: {}", resultId);
+
+ try {
+ ResultVO result = mbtiService.getResult(resultId);
+
+ if (result == null) {
+ return ResponseEntity.notFound().build();
+ }
+
+ log.info("获取结果完成, ID: {}, 类型: {}, 总耗时: {}",
+ resultId, result.getType(), Duration.between(start, Instant.now()));
+
+ return ResponseEntity.ok(result);
+ } catch (Exception e) {
+ log.error("获取结果失败: {}", e.getMessage(), e);
+ return ResponseEntity.internalServerError().body(Map.of("error", "获取结果失败"));
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/domain/Answer.java b/src/main/java/com/yang/test/domain/Answer.java
new file mode 100644
index 0000000..21aa0fe
--- /dev/null
+++ b/src/main/java/com/yang/test/domain/Answer.java
@@ -0,0 +1,9 @@
+package com.yang.test.domain;
+
+import lombok.Data;
+import java.util.List;
+
+@Data
+public class Answer {
+ private List answers;
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/domain/Category.java b/src/main/java/com/yang/test/domain/Category.java
new file mode 100644
index 0000000..c68bed7
--- /dev/null
+++ b/src/main/java/com/yang/test/domain/Category.java
@@ -0,0 +1,14 @@
+package com.yang.test.domain;
+
+import lombok.Data;
+import java.util.Date;
+
+@Data
+public class Category {
+ private Integer id;
+ private String cateKey;
+ private String cateName;
+ private String typeDesc;
+ private String info;
+ private Date createTime;
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/domain/DTO/ResultRequest.java b/src/main/java/com/yang/test/domain/DTO/ResultRequest.java
new file mode 100644
index 0000000..9ddfedd
--- /dev/null
+++ b/src/main/java/com/yang/test/domain/DTO/ResultRequest.java
@@ -0,0 +1,9 @@
+package com.yang.test.domain.DTO;
+
+import lombok.Data;
+import java.util.Map;
+
+@Data
+public class ResultRequest {
+ private Map answers;
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/domain/DTO/ResultResponse.java b/src/main/java/com/yang/test/domain/DTO/ResultResponse.java
new file mode 100644
index 0000000..0de0af9
--- /dev/null
+++ b/src/main/java/com/yang/test/domain/DTO/ResultResponse.java
@@ -0,0 +1,12 @@
+package com.yang.test.domain.DTO;
+
+import com.yang.test.domain.Category;
+import lombok.Data;
+import java.util.Map;
+
+@Data
+public class ResultResponse {
+ private String resultCode;
+ private Map scores;
+ private Category primaryType;
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/domain/Dimension.java b/src/main/java/com/yang/test/domain/Dimension.java
new file mode 100644
index 0000000..e41c1d9
--- /dev/null
+++ b/src/main/java/com/yang/test/domain/Dimension.java
@@ -0,0 +1,15 @@
+package com.yang.test.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class Dimension {
+ private String left;
+ private String right;
+ private double leftValue;
+ private double rightValue;
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/domain/Question.java b/src/main/java/com/yang/test/domain/Question.java
new file mode 100644
index 0000000..15b4ffe
--- /dev/null
+++ b/src/main/java/com/yang/test/domain/Question.java
@@ -0,0 +1,16 @@
+package com.yang.test.domain;
+
+import lombok.Data;
+import java.util.List;
+import java.util.Date;
+
+@Data
+public class Question {
+ private Integer id;
+ private String question;
+ private String dimension;
+ private Integer direction;
+ private String type;
+ private Date createdAt;
+ private List options;
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/domain/QuestionH.java b/src/main/java/com/yang/test/domain/QuestionH.java
new file mode 100644
index 0000000..571ecd7
--- /dev/null
+++ b/src/main/java/com/yang/test/domain/QuestionH.java
@@ -0,0 +1,15 @@
+package com.yang.test.domain;
+
+import lombok.Data;
+import java.util.Date;
+
+@Data
+public class QuestionH {
+ private Long id;
+ private String title;
+ private String cateKey;
+ private Integer cateId;
+ private String cateName;
+ private Integer score;
+ private Date createTime;
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/domain/Result.java b/src/main/java/com/yang/test/domain/Result.java
new file mode 100644
index 0000000..36a5df5
--- /dev/null
+++ b/src/main/java/com/yang/test/domain/Result.java
@@ -0,0 +1,14 @@
+package com.yang.test.domain;
+
+import lombok.Data;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class Result {
+ private String id;
+ private String type;
+ private List dimensions;
+ private String report;
+ private Date createdAt;
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/domain/TestResult.java b/src/main/java/com/yang/test/domain/TestResult.java
new file mode 100644
index 0000000..77feb6d
--- /dev/null
+++ b/src/main/java/com/yang/test/domain/TestResult.java
@@ -0,0 +1,18 @@
+package com.yang.test.domain;
+
+import lombok.Data;
+import java.util.Date;
+
+@Data
+public class TestResult {
+ private Long id;
+ private Long userId;
+ private String resultCode;
+ private Integer rScore;
+ private Integer cScore;
+ private Integer eScore;
+ private Integer sScore;
+ private Integer aScore;
+ private Integer iScore;
+ private Date createTime;
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/domain/VO/QuestionVO.java b/src/main/java/com/yang/test/domain/VO/QuestionVO.java
new file mode 100644
index 0000000..988020e
--- /dev/null
+++ b/src/main/java/com/yang/test/domain/VO/QuestionVO.java
@@ -0,0 +1,13 @@
+package com.yang.test.domain.VO;
+
+import lombok.Data;
+import java.util.List;
+
+@Data
+public class QuestionVO {
+ private Integer id;
+ private String question;
+ private List options;
+ private String dimension;
+ private Integer direction;
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/domain/VO/ResultVO.java b/src/main/java/com/yang/test/domain/VO/ResultVO.java
new file mode 100644
index 0000000..13cdc99
--- /dev/null
+++ b/src/main/java/com/yang/test/domain/VO/ResultVO.java
@@ -0,0 +1,14 @@
+package com.yang.test.domain.VO;
+
+
+import com.yang.test.domain.Dimension;
+import lombok.Data;
+import java.util.List;
+
+@Data
+public class ResultVO {
+ private String id;
+ private String type;
+ private List dimensions;
+ private String report;
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/handler/GlobalExceptionHandler.java b/src/main/java/com/yang/test/handler/GlobalExceptionHandler.java
new file mode 100644
index 0000000..cb138f1
--- /dev/null
+++ b/src/main/java/com/yang/test/handler/GlobalExceptionHandler.java
@@ -0,0 +1,25 @@
+package com.yang.test.handler;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+import java.util.Map;
+
+@Slf4j
+@RestControllerAdvice
+public class GlobalExceptionHandler {
+
+ @ExceptionHandler(MbtiException.class)
+ public ResponseEntity> handleMbtiException(MbtiException e) {
+ log.error("业务异常: {}", e.getMessage(), e);
+ return ResponseEntity.badRequest().body(Map.of("error", e.getMessage()));
+ }
+
+ @ExceptionHandler(Exception.class)
+ public ResponseEntity> handleException(Exception e) {
+ log.error("系统异常: {}", e.getMessage(), e);
+ return ResponseEntity.internalServerError().body(Map.of("error", "系统内部错误"));
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/handler/MbtiException.java b/src/main/java/com/yang/test/handler/MbtiException.java
new file mode 100644
index 0000000..662701c
--- /dev/null
+++ b/src/main/java/com/yang/test/handler/MbtiException.java
@@ -0,0 +1,12 @@
+package com.yang.test.handler;
+
+public class MbtiException extends RuntimeException {
+
+ public MbtiException(String message) {
+ super(message);
+ }
+
+ public MbtiException(String message, Throwable cause) {
+ super(message, cause);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/mapper/HldzyMapper.java b/src/main/java/com/yang/test/mapper/HldzyMapper.java
new file mode 100644
index 0000000..fc9427d
--- /dev/null
+++ b/src/main/java/com/yang/test/mapper/HldzyMapper.java
@@ -0,0 +1,28 @@
+package com.yang.test.mapper;
+
+import com.yang.test.domain.Category;
+import com.yang.test.domain.QuestionH;
+import com.yang.test.domain.TestResult;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface HldzyMapper {
+ /**
+ * 查询所有问题
+ */
+ List selectAllQuestions();
+
+
+ /**
+ * 根据键值查询类型
+ */
+ Category selectCategoryByKey(@Param("cateKey") String cateKey);
+
+ /**
+ * 插入测试结果
+ */
+ int insertTestResult(TestResult testResult);
+}
\ No newline at end of file
diff --git a/src/main/java/com/yang/test/mapper/MbtiMapper.java b/src/main/java/com/yang/test/mapper/MbtiMapper.java
new file mode 100644
index 0000000..876d399
--- /dev/null
+++ b/src/main/java/com/yang/test/mapper/MbtiMapper.java
@@ -0,0 +1,41 @@
+package com.yang.test.mapper;
+
+
+
+import com.yang.test.domain.Question;
+import com.yang.test.domain.Result;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface MbtiMapper {
+ /**
+ * 根据类型获取题目列表
+ * @param types 题目类型
+ * @return 题目列表
+ */
+ List getQuestionsByTypes(List types);
+
+ /**
+ * 获取题目的维度和方向信息
+ * @param types 题目类型
+ * @return 维度和方向信息列表
+ */
+ List