Commit abfd9ebe authored by 陈立彬's avatar 陈立彬

业务代码

parent bbcf2ffc
...@@ -65,6 +65,33 @@ ...@@ -65,6 +65,33 @@
<artifactId>spring-boot-starter-test</artifactId> <artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.20</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.32</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
package cn.breeze.elleai;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class Swagger2Config {
@Bean
public OpenAPI openAPI() {
return new OpenAPI().addSecurityItem(new SecurityRequirement().
addList("Bearer Authentication"))
.components(new Components().addSecuritySchemes
("Bearer Authentication", createAPIKeyScheme()))
.info(new Info().title("Scaffold API")
.description("description of Scaffold API.")
.version("1.0").contact(new Contact().name("yunzhiliu")
.email("1360194505@qq.com").url("salloszraj@gmail.com"))
.license(new License().name("License of API")
.url("API license URL")));
}
private SecurityScheme createAPIKeyScheme() {
return new SecurityScheme().type(SecurityScheme.Type.HTTP)
.bearerFormat("JWT")
.scheme("bearer");
}
}
package cn.breeze.elleai.application.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* 应用层的API响应包装类
* @author Administrator
*/
@Data
@Schema(description = "API响应包装类")
public class ApiResponse <T> implements Serializable {
@Schema(description = "响应是否成功标志")
private boolean success = true;
@Schema(description = "响应结果")
private T result;
@Schema(description = "状态码,0成功,其他失败")
private Integer code = 0;
@Schema(description = "错误内容")
private String message;
/**
* 成功响应
* @param result
* @return
* @param <T>
*/
public final static <T> ApiResponse<T> ok(T result) {
ApiResponse<T> response = new ApiResponse<>();
response.setSuccess(true);
response.setCode(0);
response.setMessage("成功");
response.setResult(result);
return response;
}
/**
* 失败响应
* @param code
* @param message
* @return
* @param <T>
*/
public final static <T> ApiResponse<T> fail(Integer code, String message) {
ApiResponse<T> response = new ApiResponse<>();
response.setMessage(message);
response.setCode(code);
response.setSuccess(false);
response.setResult(null);
return response;
}
}
package cn.breeze.elleai.application.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class PageResult<T> implements Serializable {
@Schema(description = "记录")
private List<T> items;
@Schema(description = "总数量")
private Integer total;
@Schema(description = "总页数")
private Integer totalPage;
@Schema(description = "页码")
private Integer pageNo;
@Schema(description = "分页大小")
private Integer pageSize;
/**
* 构造
* @param pageNo
* @param pageSize
* @param total
* @param items
* @param <T>
* @return
*/
public final static <T> PageResult<T> of(Integer pageNo, Integer pageSize, Integer total, List<T> items) {
PageResult<T> pageResult = new PageResult<>();
pageResult.setPageNo(pageNo);
pageResult.setPageSize(pageSize);
pageResult.setItems(items);
pageResult.setTotal(total);
pageResult.setTotalPage(total/pageSize + 1);
return pageResult;
}
}
package cn.breeze.elleai.application.dto.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class ExamineQaRequestDto implements Serializable {
private Integer pageNo;
private Integer pageSize;
private String name;
}
package cn.breeze.elleai.application.dto.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ExamineQaSaveDto implements Serializable {
private Integer id;
/**
* 问题
*/
private String question;
/**
* 答案
*/
private String answer;
/**
* 对练分类ID
*/
@JsonProperty("category_id")
private Integer categoryId;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
}
package cn.breeze.elleai.application.dto.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class ExamineRecordRequestDto implements Serializable {
@JsonProperty("page_no")
private Integer pageNo;
@JsonProperty("page_size")
private Integer pageSize;
@JsonProperty("user_id")
private String userId;
@Schema(description = "考试ID")
@JsonProperty("examine_id")
private Integer examineId;
@Schema(description = "对练模式(0练习 1对练)")
@JsonProperty("examine_mode")
private Integer examineMode;
}
package cn.breeze.elleai.application.dto.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class ExamineRequestDto implements Serializable {
@JsonProperty("page_no")
private Integer pageNo;
@JsonProperty("page_size")
private Integer pageSize;
private String name;
private Integer status;
@Schema(description = "场景分类ID")
@JsonProperty("category_id")
private Integer categoryId;
}
package cn.breeze.elleai.application.dto.request;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class ExamineSaveDto implements Serializable {
private Integer id;
/**
* 对练名称
*/
private String name;
/**
* 对练描述
*/
private String description;
/**
* 海报图
*/
private String poster;
/**
* 对练场景ID
*/
@JsonProperty("scene_id")
private Integer sceneId;
/**
* 对练分类ID
*/
@JsonProperty("category_id")
private Integer categoryId;
/**
* 开始时间
*/
@JsonProperty("start_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
private LocalDateTime startTime;
/**
* 结束时间
*/
@JsonProperty("end_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
private LocalDateTime endTime;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 题目数量
*/
@JsonProperty("qa_num")
private Integer qaNum;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 关联题目ID列表
*/
@JsonProperty("qa_id_list")
private List<Integer> qaIdList;
}
package cn.breeze.elleai.application.dto.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class ExamineSceneCategoryRequestDto implements Serializable {
@JsonProperty("page_no")
private Integer pageNo;
@JsonProperty("page_size")
private Integer pageSize;
private String name;
private Integer status;
@Schema(description = "场景ID")
@JsonProperty("scene_id")
private Integer sceneId;
}
package cn.breeze.elleai.application.dto.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ExamineSceneCategorySaveDto implements Serializable {
private Integer id;
/**
* 分类名称
*/
private String name;
/**
* 场景ID描述
*/
@JsonProperty("scene_id")
private Integer sceneId;
/**
* 可见角色IDS
*/
@JsonProperty("visible_role_ids")
private String visibleRoleIds;
/**
* 分类描述
*/
private String description;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 父级分类ID
*/
@JsonProperty("parent_id")
private Integer parentId;
}
package cn.breeze.elleai.application.dto.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class ExamineSceneRequestDto implements Serializable {
private Integer pageNo;
private Integer pageSize;
private String name;
private Integer status;
}
package cn.breeze.elleai.application.dto.request;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ExamineSceneSaveDto implements Serializable {
private Integer id;
/**
* 场景名称
*/
private String name;
/**
* 场景描述
*/
private String description;
/**
* 场景海报图
*/
private String poster;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
}
package cn.breeze.elleai.application.dto.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class ProperNounRequestDto implements Serializable {
private Integer pageNo;
private Integer pageSize;
private String name;
}
package cn.breeze.elleai.application.dto.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ProperNounSaveDto implements Serializable {
private Integer id;
/**
* 专有名词名称
*/
private String name;
/**
* 相似词,以逗号分隔
*/
@JsonProperty("similar_words")
private String similarWords;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
}
package cn.breeze.elleai.application.dto.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class QaAssistantRequestDto implements Serializable {
private Integer pageNo;
private Integer pageSize;
private String name;
}
package cn.breeze.elleai.application.dto.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class QaAssistantSaveDto implements Serializable {
private Integer id;
/**
* 助手名称
*/
private String name;
/**
* 助手描述
*/
private String description;
/**
* 助手图标
*/
@JsonProperty("icon_url")
private String iconUrl;
/**
* 知识库分类IDS,以逗号分隔
*/
@JsonProperty("category_ids")
private String categoryIds;
/**
* 可见角色IDS,以逗号分隔
*/
@JsonProperty("visible_role_ids")
private String visibleRoleIds;
}
package cn.breeze.elleai.application.dto.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class UserQaHistoryRequestDto implements Serializable {
private Integer pageNo;
private Integer pageSize;
private String userId;
private Integer type;
private String sessionId;
private String content;
private Integer chatCompletionId;
}
package cn.breeze.elleai.application.dto.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class UserQaRequestDto implements Serializable {
private Integer pageNo;
private Integer pageSize;
private String name;
private String userId;
}
package cn.breeze.elleai.application.dto.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class WikiCategoryRequestDto implements Serializable {
private Integer pageNo;
private Integer pageSize;
private String name;
}
package cn.breeze.elleai.application.dto.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class WikiCategorySaveDto implements Serializable {
private Integer id;
/**
* 分类名称
*/
private String name;
/**
* 分类描述
*/
private String description;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 父级分类ID
*/
@JsonProperty("parent_id")
private Integer parentId;
}
package cn.breeze.elleai.application.dto.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class WikiRequestDto implements Serializable {
private Integer pageNo;
private Integer pageSize;
private String name;
}
package cn.breeze.elleai.application.dto.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import lombok.Data;
import java.io.Serializable;
@Data
public class WikiSaveDto implements Serializable {
private Integer id;
/**
* 资料名称
*/
private String name;
/**
* 资料描述
*/
private String description;
/**
* 资料海报图
*/
private String poster;
/**
* 资料文件URL
*/
@JsonProperty("file_url")
private String fileUrl;
/**
* 资料分类ID
*/
@JsonProperty("wiki_category_id")
private Integer wikiCategoryId;
/**
* 场景分类ID
*/
@JsonProperty("scene_category_id")
private Integer sceneCategoryId;
/**
* 富文本详情
*/
private String detail;
}
package cn.breeze.elleai.application.dto.response;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ExamineDetailRecordMobileDto implements Serializable {
private Integer id;
/**
* 对练记录ID
*/
private Integer recordId;
/**
* 题目ID
*/
private Integer qaId;
/**
* 题目
*/
private String question;
/**
* 标准答案
*/
private String answer;
/**
* 员工答案
*/
private String userAnswer;
/**
* 评分
*/
private Float score;
/**
* 评价
*/
private String evaluation;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package cn.breeze.elleai.application.dto.response;
import cn.breeze.elleai.domain.sparring.model.response.ExamineQaResponseModel;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class ExamineDto implements Serializable {
private Integer id;
/**
* 对练名称
*/
private String name;
/**
* 对练描述
*/
private String description;
/**
* 海报图
*/
private String poster;
/**
* 对练场景ID
*/
private Integer sceneId;
/**
* 对练分类ID
*/
private Integer categoryId;
/**
* 开始时间
*/
private Long startTime;
/**
* 结束时间
*/
private Long endTime;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 题目数量
*/
private Integer qaNum;
/**
* 关联题目列表
*/
private List<ExamineQaResponseModel> qaList;
}
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class ExamineMobileDto implements Serializable {
private Integer id;
/**
* 对练名称
*/
private String name;
/**
* 对练描述
*/
private String description;
/**
* 海报图
*/
private String poster;
/**
* 对练场景ID
*/
private Integer sceneId;
/**
* 对练分类ID
*/
private Integer categoryId;
/**
* 开始时间
*/
private Long startTime;
/**
* 结束时间
*/
private Long endTime;
/**
* 题目数量
*/
private Integer qaNum;
/**
* 已考试次数
*/
@JsonProperty("exam_total_count")
private long examTotalCount;
/**
* 是否参与考试
*/
@JsonProperty("exam_flag")
private boolean examFlag;
/**
* 练习次数
*/
@JsonProperty("practice_count")
private long practiceCount;
/**
* 对练次数
*/
@JsonProperty("exam_count")
private long examCount;
/**
* 最高综合评分
*/
@JsonProperty("max_overall_score")
private double maxOverallScore;
}
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ExamineQaDifyDto implements Serializable {
@JsonProperty("question_id")
private Integer questionId;
/**
* 问题
*/
private String question;
/**
* 答案
*/
private String answer;
/**
* 对练分类ID
*/
@JsonProperty("category_id")
private Integer categoryId;
/**
* 对练分类ID
*/
@JsonProperty("category_name")
private String categoryName;
/**
* 对练分类ID
*/
private String project;
/**
* 对练分类ID
*/
private String code;
/**
* dify 节点字段
*/
private boolean next;
}
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ExamineQaDto implements Serializable {
private Integer id;
/**
* 问题
*/
private String question;
/**
* 答案
*/
private String answer;
/**
* 对练分类ID
*/
@JsonProperty("category_id")
private Integer categoryId;
/**
* 对练分类ID
*/
@JsonProperty("category_name")
private String categoryName;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package cn.breeze.elleai.application.dto.response;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class ExamineRecordMobileDto implements Serializable {
private Integer id;
/**
* 用户ID
*/
private String userId;
/**
* 会话ID
*/
private String sessionId;
/**
* 对练ID
*/
private Integer examineId;
private String examineName;
private String examineDescription;
/**
* 对练模式(0练习 1对练)
*/
private Integer examineMode;
/**
* 已答题数量
*/
private Integer answeredNum;
/**
* 综合评分
*/
private Float overallScore;
/**
* 综合评价
*/
private String overallEvaluation;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 答题明细
*/
private List<ExamineDetailRecordMobileDto> details;
}
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ExamineSceneCategoryDto implements Serializable {
private Integer id;
/**
* 分类名称
*/
private String name;
/**
* 场景ID描述
*/
@JsonProperty("scene_id")
private Integer sceneId;
/**
* 场景ID描述
*/
@JsonProperty("scene_name")
private String sceneName;
/**
* 可见角色IDS
*/
@JsonProperty("visible_role_ids")
private String visibleRoleIds;
/**
* 可见角色名称S
*/
@JsonProperty("visible_role_names")
private String visibleRoleNames;
/**
* 分类描述
*/
private String description;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 创建时间
*/
@JsonProperty("create_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
private LocalDateTime createTime;
/**
* 更新时间
*/
@JsonProperty("update_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
private LocalDateTime updateTime;
/**
* 父级分类ID
*/
@JsonProperty("parent_id")
private Integer parentId;
}
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ExamineSceneDto implements Serializable {
private Integer id;
/**
* 场景名称
*/
private String name;
/**
* 场景描述
*/
private String description;
/**
* 场景海报图
*/
private String poster;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 创建时间
*/
@JsonProperty("create_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
private LocalDateTime createTime;
/**
* 更新时间
*/
@JsonProperty("update_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
private LocalDateTime updateTime;
}
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ProperNounDto implements Serializable {
private Integer id;
/**
* 专有名词名称
*/
private String name;
/**
* 相似词,以逗号分隔
*/
@JsonProperty("similar_words")
private String similarWords;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 创建时间
*/
@JsonProperty("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@JsonProperty("update_time")
private LocalDateTime updateTime;
}
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class QaAssistantDto implements Serializable {
private Integer id;
/**
* 助手名称
*/
private String name;
/**
* 助手描述
*/
private String description;
/**
* 助手图标
*/
@JsonProperty("icon_url")
private String iconUrl;
/**
* 知识库分类IDS,以逗号分隔
*/
@JsonProperty("category_ids")
private String categoryIds;
/**
* 可见角色IDS,以逗号分隔
*/
@JsonProperty("visible_role_ids")
private String visibleRoleIds;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 创建时间
*/
@JsonProperty("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@JsonProperty("update_time")
private LocalDateTime updateTime;
}
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class UserChatCompletionDto implements Serializable {
private Integer id;
/**
* 用户ID
*/
@JsonProperty("user_id")
private String userId;
/**
* 会话ID
*/
@JsonProperty("session_id")
private String sessionId;
/**
* 创建时间
*/
@JsonProperty("create_time")
private LocalDateTime createTime;
/**
* 最后更新时间
*/
@JsonProperty("update_time")
private LocalDateTime updateTime;
}
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class UserChatCompletionHistoryDto implements Serializable {
private Integer id;
/**
* 会话ID
*/
@JsonProperty("chat_completion_id")
private Integer chatCompletionId;
/**
* 类型(0用户提问 1AI回答)
*/
private Integer type;
/**
* 内容
*/
private String content;
/**
* 创建时间
*/
@JsonProperty("create_time")
private LocalDateTime createTime;
}
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class WikiCategoryDto implements Serializable {
private Integer id;
/**
* 分类名称
*/
private String name;
/**
* 分类描述
*/
private String description;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 父级分类ID
*/
@JsonProperty("parent_id")
private Integer parentId;
/**
* 创建时间
*/
@JsonProperty("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@JsonProperty("update_time")
private LocalDateTime updateTime;
}
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class WikiDto implements Serializable {
private Integer id;
/**
* 资料名称
*/
private String name;
/**
* 资料描述
*/
private String description;
/**
* 资料海报图
*/
private String poster;
/**
* 资料文件URL
*/
@JsonProperty("file_url")
private String fileUrl;
/**
* 资料分类ID
*/
@JsonProperty("wiki_category_id")
private Integer wikiCategoryId;
/**
* 资料分类名称
*/
@JsonProperty("wiki_category_name")
private String wikiCategoryName;
/**
* 场景分类ID
*/
@JsonProperty("scene_category_id")
private Integer sceneCategoryId;
/**
* 场景分类名称
*/
@JsonProperty("scene_category_name")
private String sceneCategoryName;
/**
* 富文本详情
*/
private String detail;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 创建时间
*/
@JsonProperty("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@JsonProperty("update_time")
private LocalDateTime updateTime;
}
package cn.breeze.elleai.application.service;
import cn.breeze.elleai.application.dto.PageResult;
import cn.breeze.elleai.application.dto.request.ProperNounRequestDto;
import cn.breeze.elleai.application.dto.request.ProperNounSaveDto;
import cn.breeze.elleai.application.dto.response.ProperNounDto;
import cn.breeze.elleai.domain.sparring.model.request.ProperNounRequestModel;
import cn.breeze.elleai.domain.sparring.model.request.ProperNounSaveModel;
import cn.breeze.elleai.domain.sparring.model.response.ProperNounResponseModel;
import cn.breeze.elleai.domain.sparring.service.CommonService;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.mybatisflex.core.paginate.Page;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
/**
* 应用服务
*/
@Component
@RequiredArgsConstructor
public class AppCommonService {
private final CommonService commonService;
/************************************************** 专有名词 **************************************************/
/**
* 更新专有名词
* @param id
* @param status
*/
public void updateProperNounStatus(Integer id, Integer status) {
commonService.updateProperNounStatus(id, status);
}
/**
* 删除专有名词
* @param id
*/
public void deleteProperNoun(Integer id) {
commonService.deleteProperNoun(id);
}
/**
* 获取专有名词详情
* @param id
* @return
*/
public ProperNounDto properNounDetail(Integer id) {
ProperNounResponseModel model = commonService.properNounDetail(id);
return BeanUtil.copyProperties(model, ProperNounDto.class);
}
/**
* 保存专有名词
* @param dto
*/
public void saveproperNoun(ProperNounSaveDto dto) {
ProperNounSaveModel model = BeanUtil.copyProperties(dto, ProperNounSaveModel.class);
commonService.saveProperNoun(model);
}
/**
* 专有名词分页查询
* @param request
* @return
*/
public PageResult<ProperNounDto> properNounPaginQuery(ProperNounRequestDto request) {
ProperNounRequestModel requestModel = BeanUtil.copyProperties(request, ProperNounRequestModel.class);
Page<ProperNounResponseModel> page = commonService.properNounPaginQuery(requestModel);
PageResult<ProperNounDto> pageResult = PageResult.of(request.getPageNo(), request.getPageSize(), (int) page.getTotalRow(), null);
if(CollectionUtil.isNotEmpty(page.getRecords())) {
List<ProperNounDto> dtoList = page.getRecords().stream().map(v -> {
ProperNounDto dto = BeanUtil.copyProperties(v, ProperNounDto.class);
return dto;
}).collect(Collectors.toList());
pageResult.setItems(dtoList);
}
return pageResult;
}
}
package cn.breeze.elleai.controller;
import cn.breeze.elleai.application.dto.ApiResponse;
import cn.breeze.elleai.application.dto.PageResult;
import cn.breeze.elleai.application.dto.request.QaAssistantRequestDto;
import cn.breeze.elleai.application.dto.request.QaAssistantSaveDto;
import cn.breeze.elleai.application.dto.request.UserQaRequestDto;
import cn.breeze.elleai.application.dto.response.QaAssistantDto;
import cn.breeze.elleai.application.dto.response.UserChatCompletionDto;
import cn.breeze.elleai.application.dto.response.UserChatCompletionHistoryDto;
import cn.breeze.elleai.application.service.AppChatCompletionService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping(value = "/chat")
@Tag(name = "AI问答相关", description = "AI问答相关")
@RequiredArgsConstructor
public class ChatCompletionController {
private final AppChatCompletionService chatCompletionService;
@Operation(summary = "助手详情")
@GetMapping("/assistant/detail/{id}")
public ApiResponse<QaAssistantDto> qaAssistantDetail(@PathVariable("id") Integer id) {
QaAssistantDto detail = chatCompletionService.qaAssistantDetail(id);
return ApiResponse.ok(detail);
}
@Operation(summary = "启用/禁用助手")
@GetMapping("/assistant/update_status/{id}/{status}")
public ApiResponse<String> updateQaAssistantStatus(@PathVariable("id") Integer id,
@PathVariable("status") Integer status) {
chatCompletionService.updateQaAssistantStatus(id, status);
return ApiResponse.ok("ok");
}
@Operation(summary = "删除助手")
@GetMapping("/assistant/delete/{id}")
public ApiResponse<String> deleteQaAssistant(@PathVariable("id") Integer id) {
chatCompletionService.deleteQaAssistant(id);
return ApiResponse.ok("ok");
}
@Operation(summary = "保存助手")
@PostMapping("/assistant/save")
public ApiResponse<String> saveOrUpdateQaAssistant(@RequestBody QaAssistantSaveDto dto) {
chatCompletionService.saveQaAssistant(dto);
return ApiResponse.ok("ok");
}
@Operation(summary = "助手列表")
@PostMapping("/assistant/list")
public ApiResponse<PageResult<QaAssistantDto>> list(@RequestBody QaAssistantRequestDto request) {
PageResult<QaAssistantDto> pageResult = chatCompletionService.qaAssistantPaginQuery(request);
return ApiResponse.ok(pageResult);
}
@Operation(summary = "AI问答会话详情")
@GetMapping("/user/detail/{session_id}")
public ApiResponse<List<UserChatCompletionHistoryDto>> userQaDetail(@PathVariable("session_id") Integer sessionId) {
List<UserChatCompletionHistoryDto> detail = chatCompletionService.userQaDetail(sessionId);
return ApiResponse.ok(detail);
}
@Operation(summary = "AI问答会话列表")
@PostMapping("/user/list")
public ApiResponse<PageResult<UserChatCompletionDto>> userQaList(@RequestBody UserQaRequestDto request) {
PageResult<UserChatCompletionDto> pageResult = chatCompletionService.userQaPaginQuery(request);
return ApiResponse.ok(pageResult);
}
}
package cn.breeze.elleai.controller;
import cn.breeze.elleai.application.dto.ApiResponse;
import cn.breeze.elleai.application.dto.PageResult;
import cn.breeze.elleai.application.dto.request.QaAssistantRequestDto;
import cn.breeze.elleai.application.dto.request.UserQaHistoryRequestDto;
import cn.breeze.elleai.application.dto.response.QaAssistantDto;
import cn.breeze.elleai.application.dto.response.UserChatCompletionHistoryDto;
import cn.breeze.elleai.application.service.AppChatCompletionService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(value = "/front/chat")
@Tag(name = "对练移动端", description = "对练")
@RequiredArgsConstructor
public class ChatCompletionMobileController {
private final AppChatCompletionService chatCompletionService;
@Operation(summary = "助手列表")
@PostMapping("/assistant/list")
public ApiResponse<PageResult<QaAssistantDto>> assistantList(@RequestBody QaAssistantRequestDto request) {
PageResult<QaAssistantDto> pageResult = chatCompletionService.qaAssistantPaginQuery(request);
return ApiResponse.ok(pageResult);
}
@Operation(summary = "热门提问")
@PostMapping("/hot/list")
public ApiResponse<PageResult<QaAssistantDto>> hotList(@RequestBody QaAssistantRequestDto request) {
PageResult<QaAssistantDto> pageResult = chatCompletionService.qaAssistantPaginQuery(request);
return ApiResponse.ok(pageResult);
}
@Operation(summary = "历史对话")
@PostMapping("/history")
public ApiResponse<PageResult<UserChatCompletionHistoryDto>> history(@RequestParam("user_id") String userId,
@RequestBody UserQaHistoryRequestDto request) {
request.setUserId(userId);
PageResult<UserChatCompletionHistoryDto> pageResult = chatCompletionService.userQaHistoryPaginQuery(request);
return ApiResponse.ok(pageResult);
}
@Operation(summary = "用户提问")
@PostMapping("/ask")
public ApiResponse<String> ask(@RequestParam("user_id") String userId,
@RequestBody UserQaHistoryRequestDto request) {
request.setUserId(userId);
String aiReply = chatCompletionService.userAsk(request);
return ApiResponse.ok(aiReply);
}
}
package cn.breeze.elleai.controller;
import cn.breeze.elleai.application.dto.ApiResponse;
import cn.breeze.elleai.application.dto.PageResult;
import cn.breeze.elleai.application.dto.request.*;
import cn.breeze.elleai.application.dto.response.ProperNounDto;
import cn.breeze.elleai.application.dto.response.WikiCategoryDto;
import cn.breeze.elleai.application.dto.response.WikiDto;
import cn.breeze.elleai.application.service.AppCommonService;
import cn.breeze.elleai.application.service.AppExamineService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(value = "/common")
@Tag(name = "公共服务", description = "公共服务")
@RequiredArgsConstructor
public class CommonController {
private final AppCommonService commonService;
@Operation(summary = "专有名词详情")
@GetMapping("/proper_noun/detail/{id}")
public ApiResponse<ProperNounDto> detail(@PathVariable("id") Integer id) {
ProperNounDto detail = commonService.properNounDetail(id);
return ApiResponse.ok(detail);
}
@Operation(summary = "启用/禁用专有名词")
@GetMapping("/proper_noun/update_status/{id}/{status}")
public ApiResponse<String> updateStatus(@PathVariable("id") Integer id,
@PathVariable("status") Integer status) {
commonService.updateProperNounStatus(id, status);
return ApiResponse.ok("ok");
}
@Operation(summary = "删除专有名词")
@GetMapping("/proper_noun/delete/{id}")
public ApiResponse<String> delete(@PathVariable("id") Integer id) {
commonService.deleteProperNoun(id);
return ApiResponse.ok("ok");
}
@Operation(summary = "保存专有名词")
@PostMapping("/proper_noun/save")
public ApiResponse<String> saveOrUpdate(@RequestBody ProperNounSaveDto dto) {
commonService.saveproperNoun(dto);
return ApiResponse.ok("ok");
}
@Operation(summary = "专有名词列表")
@PostMapping("/proper_noun/list")
public ApiResponse<PageResult<ProperNounDto>> list(@RequestBody ProperNounRequestDto request) {
PageResult<ProperNounDto> pageResult = commonService.properNounPaginQuery(request);
return ApiResponse.ok(pageResult);
}
}
package cn.breeze.elleai.controller;
import cn.breeze.elleai.application.dto.ApiResponse;
import cn.breeze.elleai.application.dto.PageResult;
import cn.breeze.elleai.application.dto.request.ExamineQaRequestDto;
import cn.breeze.elleai.application.dto.request.ExamineQaSaveDto;
import cn.breeze.elleai.application.dto.request.ExamineRequestDto;
import cn.breeze.elleai.application.dto.request.ExamineSaveDto;
import cn.breeze.elleai.application.dto.response.ExamineDto;
import cn.breeze.elleai.application.dto.response.ExamineQaDto;
import cn.breeze.elleai.application.service.AppExamineService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(value = "/examine")
@Tag(name = "对练", description = "对练")
@RequiredArgsConstructor
public class ExamineController {
private final AppExamineService examineService;
@Operation(summary = "对练详情")
@GetMapping("/detail/{id}")
public ApiResponse<ExamineDto> detail(@PathVariable("id") Integer id) {
ExamineDto detail = examineService.examineDetail(id);
return ApiResponse.ok(detail);
}
@Operation(summary = "启用/禁用对练")
@GetMapping("/update_status/{id}/{status}")
public ApiResponse<String> updateStatus(@PathVariable("id") Integer id,
@PathVariable("status") Integer status) {
examineService.updateExamineStatus(id, status);
return ApiResponse.ok("ok");
}
@Operation(summary = "删除对练")
@GetMapping("/delete/{id}")
public ApiResponse<String> delete(@PathVariable("id") Integer id) {
examineService.deleteExamine(id);
return ApiResponse.ok("ok");
}
@Operation(summary = "保存对练")
@PostMapping("/save")
public ApiResponse<String> saveOrUpdate(@RequestBody ExamineSaveDto dto) {
examineService.saveExamine(dto);
return ApiResponse.ok("ok");
}
@Operation(summary = "对练列表")
@PostMapping("/list")
public ApiResponse<PageResult<ExamineDto>> list(@RequestBody ExamineRequestDto request) {
PageResult<ExamineDto> pageResult = examineService.examinePaginQuery(request);
return ApiResponse.ok(pageResult);
}
}
package cn.breeze.elleai.controller;
import cn.breeze.elleai.application.dto.ApiResponse;
import cn.breeze.elleai.application.dto.PageResult;
import cn.breeze.elleai.application.dto.request.ExamineQaRequestDto;
import cn.breeze.elleai.application.dto.request.ExamineQaSaveDto;
import cn.breeze.elleai.application.dto.response.ExamineQaDto;
import cn.breeze.elleai.application.service.AppExamineService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
/**
* 对练QA
*/
@RestController
@RequestMapping(value = "/examine/qa")
@Tag(name = "对练题目", description = "对练题目")
@RequiredArgsConstructor
public class ExamineQaController {
private final AppExamineService examineService;
@Operation(summary = "对练题目详情")
@GetMapping("/detail/{id}")
public ApiResponse<ExamineQaDto> detail(@PathVariable("id") Integer id) {
ExamineQaDto detail = examineService.qaDetail(id);
return ApiResponse.ok(detail);
}
@Operation(summary = "启用/禁用对练题目")
@GetMapping("/update_status/{id}/{status}")
public ApiResponse<String> updateStatus(@PathVariable("id") Integer id,
@PathVariable("status") Integer status) {
examineService.updateQaStatus(id, status);
return ApiResponse.ok("ok");
}
@Operation(summary = "删除对练题目")
@GetMapping("/delete/{id}")
public ApiResponse<String> delete(@PathVariable("id") Integer id) {
examineService.deleteQa(id);
return ApiResponse.ok("ok");
}
@Operation(summary = "保存对练题目")
@PostMapping("/save")
public ApiResponse<String> saveOrUpdate(@RequestBody ExamineQaSaveDto dto) {
examineService.saveExamineQa(dto);
return ApiResponse.ok("ok");
}
@Operation(summary = "对练题目列表")
@PostMapping("/list")
public ApiResponse<PageResult<ExamineQaDto>> list(@RequestBody ExamineQaRequestDto request) {
PageResult<ExamineQaDto> pageResult = examineService.examineQaPaginQuery(request);
return ApiResponse.ok(pageResult);
}
}
package cn.breeze.elleai.controller;
import cn.breeze.elleai.application.dto.ApiResponse;
import cn.breeze.elleai.application.dto.PageResult;
import cn.breeze.elleai.application.dto.request.ExamineSceneCategoryRequestDto;
import cn.breeze.elleai.application.dto.request.ExamineSceneCategorySaveDto;
import cn.breeze.elleai.application.dto.response.ExamineSceneCategoryDto;
import cn.breeze.elleai.application.service.AppExamineService;
import cn.breeze.elleai.domain.sparring.model.request.ExamineSceneCategoryRequestModel;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
/**
* 场景分类
*/
@RestController
@RequestMapping(value = "/examine/scene_category")
@Tag(name = "对练场景分类", description = "对练场景分类")
@RequiredArgsConstructor
public class ExamineSceneCategoryController {
private final AppExamineService examineService;
@Operation(summary = "对练场景分类详情")
@GetMapping("/detail/{id}")
public ApiResponse<ExamineSceneCategoryDto> detail(@PathVariable("id") Integer id) {
ExamineSceneCategoryDto detail = examineService.sceneCategoryDetail(id);
return ApiResponse.ok(detail);
}
@Operation(summary = "启用/禁用对练场景分类")
@GetMapping("/update_status/{id}/{status}")
public ApiResponse<String> updateStatus(@PathVariable("id") Integer id,
@PathVariable("status") Integer status) {
examineService.updateSceneCategoryStatus(id, status);
return ApiResponse.ok("ok");
}
@Operation(summary = "删除对练场景分类")
@GetMapping("/delete/{id}")
public ApiResponse<String> delete(@PathVariable("id") Integer id) {
examineService.deleteSceneCategory(id);
return ApiResponse.ok("ok");
}
@Operation(summary = "保存对练场景分类")
@PostMapping("/save")
public ApiResponse<String> save(@RequestBody ExamineSceneCategorySaveDto dto) {
examineService.saveExamineSceneCategory(dto);
return ApiResponse.ok("ok");
}
@Operation(summary = "对练场景分类列表")
@RequestMapping("/list")
public ApiResponse<PageResult<ExamineSceneCategoryDto>> list(@RequestBody ExamineSceneCategoryRequestDto request) {
PageResult<ExamineSceneCategoryDto> pageResult = examineService.examineSceneCategoryPaginQuery(request);
return ApiResponse.ok(pageResult);
}
}
package cn.breeze.elleai.controller;
import cn.breeze.elleai.application.dto.ApiResponse;
import cn.breeze.elleai.application.dto.PageResult;
import cn.breeze.elleai.application.dto.request.ExamineSceneRequestDto;
import cn.breeze.elleai.application.dto.request.ExamineSceneSaveDto;
import cn.breeze.elleai.application.dto.response.ExamineSceneDto;
import cn.breeze.elleai.application.service.AppExamineService;
import cn.breeze.elleai.domain.sparring.model.request.ExamineSceneRequestModel;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
/**
* 场景
*/
@RestController
@RequestMapping(value = "/examine/scene")
@Tag(name = "对练场景", description = "对练场景")
@RequiredArgsConstructor
public class ExamineSceneController {
private final AppExamineService examineService;
@Operation(summary = "对练场景详情")
@GetMapping("/detail/{id}")
public ApiResponse<ExamineSceneDto> detail(@PathVariable("id") Integer id) {
ExamineSceneDto detail = examineService.sceneDetail(id);
return ApiResponse.ok(detail);
}
@Operation(summary = "启用/禁用对练场景")
@GetMapping("/update_status/{id}/{status}")
public ApiResponse<String> updateStatus(@PathVariable("id") Integer id,
@PathVariable("status") Integer status) {
examineService.updateSceneStatus(id, status);
return ApiResponse.ok("ok");
}
@Operation(summary = "删除对练场景")
@GetMapping("/delete/{id}")
public ApiResponse<String> delete(@PathVariable("id") Integer id) {
examineService.deleteScene(id);
return ApiResponse.ok("ok");
}
@Operation(summary = "保存对练场景")
@PostMapping("/save")
public ApiResponse<String> save(@RequestBody ExamineSceneSaveDto dto) {
examineService.saveExamineScene(dto);
return ApiResponse.ok("ok");
}
@Operation(summary = "对练场景列表")
@PostMapping("/list")
public ApiResponse<PageResult<ExamineSceneDto>> list(@RequestBody ExamineSceneRequestDto request) {
PageResult<ExamineSceneDto> pageResult = examineService.examineScenePaginQuery(request);
return ApiResponse.ok(pageResult);
}
}
package cn.breeze.elleai.controller;
import cn.breeze.elleai.application.dto.ApiResponse;
import cn.breeze.elleai.application.dto.PageResult;
import cn.breeze.elleai.application.dto.request.*;
import cn.breeze.elleai.application.dto.response.ExamineDto;
import cn.breeze.elleai.application.dto.response.WikiCategoryDto;
import cn.breeze.elleai.application.dto.response.WikiDto;
import cn.breeze.elleai.application.service.AppExamineService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(value = "/wiki")
@Tag(name = "资料库", description = "资料库")
@RequiredArgsConstructor
public class WikiController {
private final AppExamineService examineService;
@Operation(summary = "资料库详情")
@GetMapping("/detail/{id}")
public ApiResponse<WikiDto> detail(@PathVariable("id") Integer id) {
WikiDto detail = examineService.wikiDetail(id);
return ApiResponse.ok(detail);
}
@Operation(summary = "启用/禁用资料库")
@GetMapping("/update_status/{id}/{status}")
public ApiResponse<String> updateStatus(@PathVariable("id") Integer id,
@PathVariable("status") Integer status) {
examineService.updateWikiStatus(id, status);
return ApiResponse.ok("ok");
}
@Operation(summary = "删除资料库")
@GetMapping("/delete/{id}")
public ApiResponse<String> delete(@PathVariable("id") Integer id) {
examineService.deleteWiki(id);
return ApiResponse.ok("ok");
}
@Operation(summary = "保存资料库")
@PostMapping("/save")
public ApiResponse<String> saveOrUpdate(@RequestBody WikiSaveDto dto) {
examineService.saveWiki(dto);
return ApiResponse.ok("ok");
}
@Operation(summary = "资料库列表")
@PostMapping("/list")
public ApiResponse<PageResult<WikiDto>> list(@RequestBody WikiRequestDto request) {
PageResult<WikiDto> pageResult = examineService.wikiPaginQuery(request);
return ApiResponse.ok(pageResult);
}
@Operation(summary = "资料库分类详情")
@GetMapping("/category/detail/{id}")
public ApiResponse<WikiCategoryDto> categoryDetail(@PathVariable("id") Integer id) {
WikiCategoryDto detail = examineService.wikiCategoryDetail(id);
return ApiResponse.ok(detail);
}
@Operation(summary = "启用/禁用资料库分类")
@GetMapping("/category/update_status/{id}/{status}")
public ApiResponse<String> updateCategoryStatus(@PathVariable("id") Integer id,
@PathVariable("status") Integer status) {
examineService.updateWikiCategoryStatus(id, status);
return ApiResponse.ok("ok");
}
@Operation(summary = "删除资料库分类")
@GetMapping("/category/delete/{id}")
public ApiResponse<String> deleteCategory(@PathVariable("id") Integer id) {
examineService.deleteWikiCategory(id);
return ApiResponse.ok("ok");
}
@Operation(summary = "保存资料库分类")
@PostMapping("/category/save")
public ApiResponse<String> saveOrUpdateCategory(@RequestBody WikiCategorySaveDto dto) {
examineService.saveWikiCategory(dto);
return ApiResponse.ok("ok");
}
@Operation(summary = "资料库分类列表")
@PostMapping("/category/list")
public ApiResponse<PageResult<WikiCategoryDto>> categoryList(@RequestBody WikiCategoryRequestDto request) {
PageResult<WikiCategoryDto> pageResult = examineService.wikiCategoryPaginQuery(request);
return ApiResponse.ok(pageResult);
}
}
package cn.breeze.elleai.domain.sparring.model;
import java.io.Serializable;
public class CommonRequestModel implements Serializable {
private Integer id;
private Integer pageNo;
private Integer pageSize;
}
package cn.breeze.elleai.domain.sparring.model.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class ExamineDetailRecordRequestModel implements Serializable {
private Integer pageNo;
private Integer pageSize;
private Integer recordId;
}
package cn.breeze.elleai.domain.sparring.model.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class ExamineQaRequestModel implements Serializable {
private Integer pageNo;
private Integer pageSize;
private String name;
}
package cn.breeze.elleai.domain.sparring.model.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class ExamineQaSaveModel implements Serializable {
private Integer id;
/**
* 问题
*/
private String question;
/**
* 答案
*/
private String answer;
/**
* 对练分类ID
*/
private Integer categoryId;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
}
package cn.breeze.elleai.domain.sparring.model.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class ExamineRecordRequestModel implements Serializable {
private Integer pageNo;
private Integer pageSize;
/**
* 用户ID
*/
private String userId;
/**
* 对练ID
*/
private Integer examineId;
/**
* 对练模式(0练习 1对练)
*/
private Integer examineMode;
}
package cn.breeze.elleai.domain.sparring.model.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class ExamineRequestModel implements Serializable {
private Integer pageNo;
private Integer pageSize;
private String name;
private Integer status;
@Schema(description = "场景分类ID")
@JsonProperty("category_id")
private Integer categoryId;
}
package cn.breeze.elleai.domain.sparring.model.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class ExamineSaveModel implements Serializable {
private Integer id;
/**
* 对练名称
*/
private String name;
/**
* 对练描述
*/
private String description;
/**
* 海报图
*/
private String poster;
/**
* 对练场景ID
*/
@JsonProperty("scene_id")
private Integer sceneId;
/**
* 对练分类ID
*/
@JsonProperty("category_id")
private Integer categoryId;
/**
* 开始时间
*/
@JsonProperty("start_time")
private LocalDateTime startTime;
/**
* 结束时间
*/
@JsonProperty("end_time")
private LocalDateTime endTime;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 题目数量
*/
@JsonProperty("qa_num")
private Integer qaNum;
}
package cn.breeze.elleai.domain.sparring.model.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class ExamineSceneCategoryRequestModel implements Serializable {
private Integer pageNo;
private Integer pageSize;
private String name;
private Integer status;
private Integer sceneId;
}
package cn.breeze.elleai.domain.sparring.model.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ExamineSceneCategorySaveModel implements Serializable {
private Integer id;
/**
* 分类名称
*/
private String name;
/**
* 场景ID描述
*/
@JsonProperty("scene_id")
private Integer sceneId;
/**
* 可见角色IDS
*/
@JsonProperty("visible_role_ids")
private String visibleRoleIds;
/**
* 分类描述
*/
private String description;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 创建时间
*/
@JsonProperty("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@JsonProperty("update_time")
private LocalDateTime updateTime;
/**
* 父级分类ID
*/
@JsonProperty("parent_id")
private Integer parentId;
}
package cn.breeze.elleai.domain.sparring.model.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class ExamineSceneRequestModel implements Serializable {
private Integer pageNo;
private Integer pageSize;
private String name;
private Integer status;
}
package cn.breeze.elleai.domain.sparring.model.request;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ExamineSceneSaveModel implements Serializable {
private Integer id;
/**
* 场景名称
*/
private String name;
/**
* 场景描述
*/
private String description;
/**
* 场景海报图
*/
private String poster;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package cn.breeze.elleai.domain.sparring.model.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class ProperNounRequestModel implements Serializable {
private Integer pageNo;
private Integer pageSize;
private String name;
}
package cn.breeze.elleai.domain.sparring.model.request;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ProperNounSaveModel implements Serializable {
private Integer id;
/**
* 专有名词名称
*/
private String name;
/**
* 相似词,以逗号分隔
*/
private String similarWords;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package cn.breeze.elleai.domain.sparring.model.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class QaAssistantRequestModel implements Serializable {
private Integer pageNo;
private Integer pageSize;
private String name;
}
package cn.breeze.elleai.domain.sparring.model.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class QaAssistantSaveModel implements Serializable {
private Integer id;
/**
* 助手名称
*/
private String name;
/**
* 助手描述
*/
private String description;
/**
* 助手图标
*/
private String iconUrl;
/**
* 知识库分类IDS,以逗号分隔
*/
private String categoryIds;
/**
* 可见角色IDS,以逗号分隔
*/
private String visibleRoleIds;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package cn.breeze.elleai.domain.sparring.model.request;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class UserQaHistoryRequestModel implements Serializable {
private Integer pageNo;
private Integer pageSize;
private String userId;
private Integer type;
private Integer chatCompletionId;
private List<Integer> chatCompletionIdList;
}
package cn.breeze.elleai.domain.sparring.model.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class UserQaRequestModel implements Serializable {
private Integer pageNo;
private Integer pageSize;
private String userId;
private String sessionId;
}
package cn.breeze.elleai.domain.sparring.model.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class WikiCategoryRequestModel implements Serializable {
private Integer pageNo;
private Integer pageSize;
private String name;
}
package cn.breeze.elleai.domain.sparring.model.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class WikiCategorySaveModel implements Serializable {
private Integer id;
/**
* 分类名称
*/
private String name;
/**
* 分类描述
*/
private String description;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 父级分类ID
*/
private Integer parentId;
}
package cn.breeze.elleai.domain.sparring.model.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class WikiRequestModel implements Serializable {
private Integer pageNo;
private Integer pageSize;
private String name;
}
package cn.breeze.elleai.domain.sparring.model.request;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class WikiSaveModel implements Serializable {
@Id(keyType = KeyType.Auto)
private Integer id;
/**
* 资料名称
*/
private String name;
/**
* 资料描述
*/
private String description;
/**
* 资料海报图
*/
private String poster;
/**
* 资料文件URL
*/
private String fileUrl;
/**
* 资料分类ID
*/
private Integer wikiCategoryId;
/**
* 场景分类ID
*/
private Integer sceneCategoryId;
/**
* 富文本详情
*/
private String detail;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
}
package cn.breeze.elleai.domain.sparring.model.response;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ExamineDetailRecordResponseModel implements Serializable {
private Integer id;
/**
* 对练记录ID
*/
private Integer recordId;
/**
* 题目ID
*/
private Integer qaId;
/**
* 评分
*/
private Float score;
/**
* 评价
*/
private String evaluation;
/**
* 员工回答
*/
private String answer;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package cn.breeze.elleai.domain.sparring.model.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ExamineQaResponseModel implements Serializable {
private Integer id;
/**
* 问题
*/
private String question;
/**
* 答案
*/
private String answer;
/**
* 对练分类ID
*/
@JsonProperty("category_id")
private Integer categoryId;
private String categoryName;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package cn.breeze.elleai.domain.sparring.model.response;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ExamineQaXrefResponseModel implements Serializable {
private Integer id;
/**
* 对练ID
*/
private Integer examineId;
/**
* 题目ID
*/
private Integer qaId;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package cn.breeze.elleai.domain.sparring.model.response;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class ExamineRecordResponseModel implements Serializable {
private Integer id;
/**
* 用户ID
*/
private String userId;
/**
* 会话ID
*/
private String sessionId;
/**
* 对练ID
*/
private Integer examineId;
/**
* 对练模式(0练习 1对练)
*/
private Integer examineMode;
/**
* 已答题数量
*/
private Integer answeredNum;
/**
* 综合评分
*/
private Float overallScore;
/**
* 综合评价
*/
private String overallEvaluation;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package cn.breeze.elleai.domain.sparring.model.response;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class ExamineResponseModel implements Serializable {
private Integer id;
/**
* 对练名称
*/
private String name;
/**
* 对练描述
*/
private String description;
/**
* 海报图
*/
private String poster;
/**
* 对练场景ID
*/
private Integer sceneId;
/**
* 对练分类ID
*/
private Integer categoryId;
/**
* 开始时间
*/
private LocalDateTime startTime;
/**
* 结束时间
*/
private LocalDateTime endTime;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 题目数量
*/
private Integer qaNum;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 关联题目列表
*/
private List<ExamineQaResponseModel> qaList;
}
package cn.breeze.elleai.domain.sparring.model.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ExamineSceneCategoryResponseModel implements Serializable {
private Integer id;
/**
* 分类名称
*/
private String name;
/**
* 场景ID
*/
private Integer sceneId;
/**
* 场景名称
*/
private Integer sceneName;
/**
* 可见角色IDS
*/
private String visibleRoleIds;
/**
* 可见角色名称S
*/
private String visibleRoleNames;
/**
* 分类描述
*/
private String description;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 父级分类ID
*/
private Integer parentId;
}
package cn.breeze.elleai.domain.sparring.model.response;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ExamineSceneResponseModel implements Serializable {
private Integer id;
/**
* 场景名称
*/
private String name;
/**
* 场景描述
*/
private String description;
/**
* 场景海报图
*/
private String poster;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package cn.breeze.elleai.domain.sparring.model.response;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class ProperNounResponseModel implements Serializable {
private Integer id;
/**
* 专有名词名称
*/
private String name;
/**
* 相似词,以逗号分隔
*/
private String similarWords;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package cn.breeze.elleai.domain.sparring.model.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class QaAssistantResponseModel implements Serializable {
private Integer id;
/**
* 助手名称
*/
private String name;
/**
* 助手描述
*/
private String description;
/**
* 助手图标
*/
private String iconUrl;
/**
* 知识库分类IDS,以逗号分隔
*/
private String categoryIds;
/**
* 可见角色IDS,以逗号分隔
*/
private String visibleRoleIds;
/**
* 状态(0禁用 1启用)
*/
private Integer status;
/**
* 是否删除(0否 1是)
*/
private Integer deleted;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package cn.breeze.elleai.domain.sparring.service;
import cn.breeze.elleai.domain.sparring.model.request.*;
import cn.breeze.elleai.domain.sparring.model.response.ProperNounResponseModel;
import com.mybatisflex.core.paginate.Page;
import java.util.List;
public interface CommonService {
/***************************************** 专有名词 *****************************************/
Page<ProperNounResponseModel> properNounPaginQuery(ProperNounRequestModel request);
List<ProperNounResponseModel> properNounList(ProperNounRequestModel request);
ProperNounResponseModel properNounDetail(Integer id);
void updateProperNounStatus(Integer id, Integer status);
void deleteProperNoun(Integer id);
void saveProperNoun(ProperNounSaveModel dto);
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment