Commit 94708e1f authored by 陈立彬's avatar 陈立彬

接口规范&接口调整

parent 224b181a
......@@ -11,11 +11,11 @@ public class ExamineQaRequestDto implements Serializable {
@Schema(description = "页码")
@JsonProperty("page_no")
private Integer pageNo;
private Integer pageNo = 1;
@Schema(description = "分页数量")
@JsonProperty("page_size")
private Integer pageSize;
private Integer pageSize = 10;
@Schema(description = "题目名称")
private String name;
......
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;
import java.util.Date;
@Data
public class ExamineRecordMobileRequestDto implements Serializable {
@Schema(description = "页码")
@JsonProperty("page_no")
private Integer pageNo = 1;
@Schema(description = "分页数量")
@JsonProperty("page_size")
private Integer pageSize = 10;
@Schema(description = "对练模式(0练习 1对练)")
@JsonProperty("examine_mode")
private Integer examineMode;
}
......@@ -12,11 +12,11 @@ public class ExamineRecordRequestDto implements Serializable {
@Schema(description = "页码")
@JsonProperty("page_no")
private Integer pageNo;
private Integer pageNo = 1;
@Schema(description = "分页数量")
@JsonProperty("page_size")
private Integer pageSize;
private Integer pageSize = 10;
@Schema(description = "用户ID")
@JsonProperty("user_id")
......
......@@ -11,11 +11,11 @@ public class ExamineRequestDto implements Serializable {
@Schema(description = "页码")
@JsonProperty("page_no")
private Integer pageNo;
private Integer pageNo = 1;
@Schema(description = "分页数量")
@JsonProperty("page_size")
private Integer pageSize;
private Integer pageSize = 10;
@Schema(description = "对练名称")
private String name;
......
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 ExamineSceneMobileRequestDto implements Serializable {
@Schema(description = "页码")
@JsonProperty("page_no")
private Integer pageNo = 1;
@Schema(description = "分页数量")
@JsonProperty("page_size")
private Integer pageSize = 10;
}
......@@ -12,11 +12,11 @@ public class ExamineSceneRequestDto implements Serializable {
@Schema(description = "页码")
@JsonProperty("page_no")
private Integer pageNo;
private Integer pageNo = 1;
@Schema(description = "分页数量")
@JsonProperty("page_size")
private Integer pageSize;
private Integer pageSize = 10;
@Schema(description = "场景名称")
private String name;
......
......@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.web.bind.annotation.RequestParam;
import java.io.Serializable;
import java.util.Date;
......@@ -16,11 +17,7 @@ public class ExamineUpdateResultDto implements Serializable {
@JsonProperty("examine_id")
private Integer examineId;
@Schema(description = "用户ID")
@JsonProperty("user_id")
private String userId;
@Schema(description = "考试总点评")
@JsonProperty("exam_criteria")
private String examCriteria;
@Schema(description = "考试流水号")
@JsonProperty("business_no")
String businessNo;
}
......@@ -11,13 +11,10 @@ public class QaAssistantRequestDto implements Serializable {
@Schema(description = "页码")
@JsonProperty("page_no")
private Integer pageNo;
private Integer pageNo = 1;
@Schema(description = "分页数量")
@JsonProperty("page_size")
private Integer pageSize;
@Schema(description = "助手名称")
private String name;
private Integer pageSize = 10;
}
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 org.springframework.web.bind.annotation.RequestParam;
import java.io.Serializable;
@Data
public class StartExamineMobileRequestDto implements Serializable {
@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 org.springframework.web.bind.annotation.RequestParam;
import java.io.Serializable;
@Data
public class SubmitAnswerMobileRequestDto implements Serializable {
@Schema(description = "对练ID")
@JsonProperty("examine_id")
private Integer examineId;
@Schema(description = "考试流水号,答题、结束考试都需要传此参数")
@JsonProperty("business_no")
private String businessNo;
@Schema(description = "题目ID")
@JsonProperty("question_id")
private Integer questionId;
@Schema(description = "用户答案")
@JsonProperty("answer")
private String answer;
}
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 SwitchAssistantMobileRequestDto implements Serializable {
@Schema(description = "助手ID")
@JsonProperty("assistant_id")
private Integer assistantId;
}
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 UserQaHistoryMobileRequestDto implements Serializable {
@Schema(description = "页码")
@JsonProperty("page_no")
private Integer pageNo;
@Schema(description = "分页数量")
@JsonProperty("page_size")
private Integer pageSize;
@Schema(description = "用户ID")
@JsonProperty("user_id")
private String userId;
@Schema(description = "会话ID")
@JsonProperty("session_id")
private String sessionId;
@Schema(description = "内容")
private String content;
@Schema(description = "会话记录ID")
@JsonProperty("chat_completion_id")
private Integer chatCompletionId;
}
......@@ -16,19 +16,4 @@ public class UserQaHistoryRequestDto implements Serializable {
@Schema(description = "分页数量")
@JsonProperty("page_size")
private Integer pageSize;
@Schema(description = "用户ID")
@JsonProperty("user_id")
private String userId;
@Schema(description = "会话ID")
@JsonProperty("session_id")
private String sessionId;
@Schema(description = "内容")
private String content;
@Schema(description = "会话记录ID")
@JsonProperty("chat_completion_id")
private Integer chatCompletionId;
}
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 UserQaMobileRequestDto implements Serializable {
@Schema(description = "会话ID,首次提问没有则不传,提问后接口返回会话ID,则后续提问都需要传")
@JsonProperty("chat_completion_id")
private Integer chatCompletionId;
@Schema(description = "提问内容")
@JsonProperty("content")
private String content;
}
......@@ -11,11 +11,11 @@ public class UserQaRequestDto implements Serializable {
@Schema(description = "页码")
@JsonProperty("page_no")
private Integer pageNo;
private Integer pageNo = 1;
@Schema(description = "分页数量")
@JsonProperty("page_size")
private Integer pageSize;
private Integer pageSize = 10;
@Schema(description = "用户ID")
@JsonProperty("user_id")
......
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class CompleteExamineMobileDto implements Serializable {
@Schema(description = "考试记录ID")
@JsonProperty("record_id")
private Integer recordId;
}
......@@ -18,6 +18,10 @@ public class ExamineFinalResultDto implements Serializable {
@JsonProperty("total_score")
private Double totalScore;
@Schema(description = "考试总点评")
@JsonProperty("exam_criteria")
private String examCriteria;
@Schema(description = "答题数量")
@JsonProperty("answered_num")
private Integer answeredNum;
......
......@@ -30,34 +30,6 @@ public class ExamineMobileDto implements Serializable {
@Schema(description = "海报图")
private String poster;
/**
* 对练场景ID
*/
@Schema(description = "对练场景ID")
@JsonProperty("scene_id")
private Integer sceneId;
/**
* 对练分类ID
*/
@Schema(description = "对练分类ID")
@JsonProperty("category_id")
private Integer categoryId;
/**
* 开始时间
*/
@Schema(description = "对练开始时间")
@JsonProperty("start_time")
private Long startTime;
/**
* 结束时间
*/
@Schema(description = "对练结束时间")
@JsonProperty("end_time")
private Long endTime;
/**
* 题目数量
*/
......
......@@ -61,7 +61,7 @@ public class ExamineRecordMobileDto implements Serializable {
/**
* 综合评分
*/
@Schema(description = "用户ID")
@Schema(description = "综合评分")
@JsonProperty("overall_score")
private Float overallScore;
......
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class ExamineSceneCategoryMobileDto implements Serializable {
@Schema(description = "场景分类ID")
private Integer id;
/**
* 分类名称
*/
@Schema(description = "场景分类名称")
private String name;
/**
* 分类描述
*/
@Schema(description = "场景分类描述")
private String description;
}
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class ExamineSceneMobileDto implements Serializable {
@Schema(description = "场景ID")
private Integer id;
/**
* 场景名称
*/
@Schema(description = "场景名称")
private String name;
/**
* 场景描述
*/
@Schema(description = "场景描述")
private String description;
}
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class ExamineStartResultDto implements Serializable {
@Schema(description = "考试流水号,答题、结束考试都需要传此参数")
@JsonProperty("business_no")
private String businessNo;
@Schema(description = "题目ID")
@JsonProperty("question_id")
private Integer questionId;
@Schema(description = "问题")
private String question;
@Schema(description = "标准答案")
private String answer;
@Schema(description = "是否有下一题")
private boolean next;
}
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class NewCompletionResultMobileDto implements Serializable {
@Schema(description = "新会话ID")
@JsonProperty("chat_completion_id")
private Integer chatCompletionId;
}
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class UserAskResultMobileDto implements Serializable {
@Schema(description = "会话记录ID,后续用户提问需传此ID")
@JsonProperty("chat_completion_id")
private Integer chatCompletionId;
@Schema(description = "AI回复内容")
@JsonProperty("reply_content")
private String replyContent;
}
......@@ -20,6 +20,27 @@ public class UserChatCompletionDto implements Serializable {
@JsonProperty("user_id")
private String userId;
/**
* 用户名称
*/
@Schema(description = "用户名称")
@JsonProperty("user_name")
private String userName;
/**
* 所属门店ID
*/
@Schema(description = "所属门店ID")
@JsonProperty("shop_id")
private String shopId;
/**
* 所属门店名称
*/
@Schema(description = "所属门店名称")
@JsonProperty("shop_name")
private String shopName;
/**
* 会话ID
*/
......@@ -27,6 +48,20 @@ public class UserChatCompletionDto implements Serializable {
@JsonProperty("session_id")
private String sessionId;
/**
* 首次提问
*/
@Schema(description = "首次提问")
@JsonProperty("first_question")
private String firstQuestion;
/**
* 最后一次提问
*/
@Schema(description = "最后提问")
@JsonProperty("last_question")
private String lastQuestion;
/**
* 创建时间
*/
......
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class UserChatCompletionHistoryMobileDto implements Serializable {
@Schema(description = "会话历史ID")
private Integer id;
/**
* 会话ID
*/
@Schema(description = "会话记录ID")
@JsonProperty("chat_completion_id")
private Integer chatCompletionId;
/**
* 类型(0用户提问 1AI回答)
*/
@Schema(description = "类型(0用户提问 1AI回答)")
private Integer type;
/**
* 内容
*/
@Schema(description = "内容")
private String content;
/**
* 创建时间
*/
@Schema(description = "创建时间")
@JsonProperty("create_time")
private Date createTime;
}
package cn.breeze.elleai.application.dto.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class UserChatCompletionMobileDto implements Serializable {
@Schema(description = "会话记录ID")
private Integer id;
/**
* 内容
*/
@Schema(description = "内容")
private String content;
/**
* 创建时间
*/
@Schema(description = "创建时间")
@JsonProperty("create_time")
private Date createTime;
}
package cn.breeze.elleai.application.service;
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.UserQaHistoryRequestDto;
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.dto.request.*;
import cn.breeze.elleai.application.dto.response.*;
import cn.breeze.elleai.domain.sparring.model.request.QaAssistantRequestModel;
import cn.breeze.elleai.domain.sparring.model.request.QaAssistantSaveModel;
import cn.breeze.elleai.domain.sparring.model.request.UserQaHistoryRequestModel;
......@@ -16,6 +11,7 @@ import cn.breeze.elleai.domain.sparring.model.response.QaAssistantResponseModel;
import cn.breeze.elleai.domain.sparring.model.response.UserChatCompletionHistoryResponseModel;
import cn.breeze.elleai.domain.sparring.model.response.UserChatCompletionResponseModel;
import cn.breeze.elleai.domain.sparring.service.ChatCompletionService;
import cn.breeze.elleai.util.UserPrincipal;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSONObject;
......@@ -30,10 +26,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
......@@ -200,21 +193,23 @@ public class AppChatCompletionService {
* @param request
* @return
*/
public List<UserChatCompletionDto> userQaList(UserQaRequestDto request) {
List<UserChatCompletionDto> resultList = new ArrayList<>();
public PageResult<UserChatCompletionDto> userQaMobilePaginQuery(UserQaRequestDto request) {
UserQaRequestModel requestModel = BeanUtil.copyProperties(request, UserQaRequestModel.class);
List<UserChatCompletionResponseModel> models = chatCompletionService.userQaList(requestModel);
if(CollectionUtil.isNotEmpty(models)) {
resultList = models.stream().map(v -> {
Page<UserChatCompletionResponseModel> page = chatCompletionService.userQaPaginQuery(requestModel);
PageResult<UserChatCompletionDto> pageResult = PageResult.of(request.getPageNo(), request.getPageSize(), (int) page.getTotalRow(), null);
if(CollectionUtil.isNotEmpty(page.getRecords())) {
List<UserChatCompletionDto> dtoList = page.getRecords().stream().map(v -> {
UserChatCompletionDto dto = BeanUtil.copyProperties(v, UserChatCompletionDto.class);
return dto;
}).collect(Collectors.toList());
}
return resultList;
pageResult.setItems(dtoList);
}
return pageResult;
}
/**
......@@ -222,33 +217,28 @@ public class AppChatCompletionService {
* @param request
* @return
*/
public PageResult<UserChatCompletionHistoryDto> userQaHistoryPaginQuery(UserQaHistoryRequestDto request) {
public PageResult<UserChatCompletionMobileDto> userQaHistoryPaginQuery(UserPrincipal userPrincipal, UserQaHistoryRequestDto request) {
UserQaRequestDto req = new UserQaRequestDto();
req.setUserId(request.getUserId());
List<UserChatCompletionDto> chatCompletionDtos = this.userQaList(req);
if(CollectionUtil.isNotEmpty(chatCompletionDtos)) {
List<Integer> idList = chatCompletionDtos.stream().map(UserChatCompletionDto::getId).collect(Collectors.toList());
UserQaHistoryRequestModel requestModel = BeanUtil.copyProperties(request, UserQaHistoryRequestModel.class);
requestModel.setChatCompletionIdList(idList);
requestModel.setType(0);
Page<UserChatCompletionHistoryResponseModel> page = chatCompletionService.userQaHistoryPaginQuery(requestModel);
PageResult<UserChatCompletionHistoryDto> pageResult = PageResult.of(request.getPageNo(), request.getPageSize(), (int) page.getTotalRow(), null);
if(CollectionUtil.isNotEmpty(page.getRecords())) {
List<UserChatCompletionHistoryDto> dtoList = page.getRecords().stream().map(v -> {
UserChatCompletionHistoryDto dto = BeanUtil.copyProperties(v, UserChatCompletionHistoryDto.class);
return dto;
}).collect(Collectors.toList());
pageResult.setItems(dtoList);
}
return pageResult;
req.setUserId(userPrincipal.getUserId());
PageResult<UserChatCompletionDto> userChatCompletionPageResult = userQaMobilePaginQuery(req);
PageResult<UserChatCompletionMobileDto> pageResult = PageResult.of(userChatCompletionPageResult.getPageNo(), userChatCompletionPageResult.getPageSize(), userChatCompletionPageResult.getTotal(), null);
if(Objects.nonNull(userChatCompletionPageResult) && CollectionUtil.isNotEmpty(userChatCompletionPageResult.getItems())) {
List<UserChatCompletionMobileDto> items = userChatCompletionPageResult.getItems().stream().map(v -> {
UserChatCompletionMobileDto dto = BeanUtil.copyProperties(v, UserChatCompletionMobileDto.class);
dto.setContent(v.getFirstQuestion());
return dto;
}).collect(Collectors.toList());
BeanUtil.copyProperties(userChatCompletionPageResult, pageResult);
pageResult.setItems(items);
}
return null;
return pageResult;
}
/**
......@@ -256,17 +246,20 @@ public class AppChatCompletionService {
* @param request
* @return
*/
public String userAsk(UserQaHistoryRequestDto request) {
public UserAskResultMobileDto userAsk(UserPrincipal userPrincipal, UserQaMobileRequestDto request) {
//TODO 生成sessionId
UserAskResultMobileDto result = new UserAskResultMobileDto();
result.setChatCompletionId(1);
result.setReplyContent("moke ai reply.");
// 更新问答记录
Integer recordId = chatCompletionService.saveUserQaSession(request.getUserId(), request.getSessionId());
// 保存问答详情
String content = request.getContent();
chatCompletionService.saveUserQaRecord(recordId, 0, content);
return ask4Knowledge(request.getSessionId(), request.getUserId(), content);
// Integer recordId = chatCompletionService.saveUserQaSession(request.getUserId(), request.getSessionId());
//
// // 保存问答详情
// String content = request.getContent();
// chatCompletionService.saveUserQaRecord(recordId, 0, content);
//
// return ask4Knowledge(request.getSessionId(), request.getUserId(), content);
return result;
}
......
......@@ -7,6 +7,7 @@ import cn.breeze.elleai.application.dto.response.*;
import cn.breeze.elleai.domain.sparring.model.request.*;
import cn.breeze.elleai.domain.sparring.model.response.*;
import cn.breeze.elleai.domain.sparring.service.ExamineService;
import cn.breeze.elleai.util.UserPrincipal;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Assert;
......@@ -138,25 +139,18 @@ public class AppExamineService {
* @param request
* @return
*/
public PageResult<ExamineSceneCategoryDto> examineSceneCategoryMobilePaginQuery(ExamineSceneCategoryRequestDto request) {
public PageResult<ExamineSceneCategoryMobileDto> examineSceneCategoryMobilePaginQuery(ExamineSceneCategoryRequestDto request) {
ExamineSceneCategoryRequestModel requestModel = BeanUtil.copyProperties(request, ExamineSceneCategoryRequestModel.class);
requestModel.setStatus(1);
Page<ExamineSceneCategoryResponseModel> page = examineService.sceneCategoryPaginQuery(requestModel);
PageResult<ExamineSceneCategoryDto> pageResult = PageResult.of(request.getPageNo(), request.getPageSize(), (int) page.getTotalRow(), null);
PageResult<ExamineSceneCategoryMobileDto> pageResult = PageResult.of(request.getPageNo(), request.getPageSize(), (int) page.getTotalRow(), null);
if(CollectionUtil.isNotEmpty(page.getRecords())) {
List<ExamineSceneCategoryDto> dtoList = page.getRecords().stream().map(v -> {
ExamineSceneCategoryDto dto = BeanUtil.copyProperties(v, ExamineSceneCategoryDto.class);
if(Objects.nonNull(dto.getSceneId())) {
ExamineSceneResponseModel sceneResponseModel = examineService.sceneDetail(dto.getSceneId());
if(Objects.nonNull(sceneResponseModel)) {
dto.setSceneName(sceneResponseModel.getName());
}
}
List<ExamineSceneCategoryMobileDto> dtoList = page.getRecords().stream().map(v -> {
ExamineSceneCategoryMobileDto dto = BeanUtil.copyProperties(v, ExamineSceneCategoryMobileDto.class);
return dto;
}).collect(Collectors.toList());
......@@ -264,7 +258,7 @@ public class AppExamineService {
* @param request
* @return
*/
public PageResult<ExamineSceneDto> examineMobileScenePaginQuery(ExamineSceneRequestDto request) {
public PageResult<ExamineSceneMobileDto> examineMobileScenePaginQuery(ExamineSceneMobileRequestDto request) {
ExamineSceneRequestModel requestModel = BeanUtil.copyProperties(request, ExamineSceneRequestModel.class);
// 移动端默认查询启用状态
......@@ -272,11 +266,11 @@ public class AppExamineService {
Page<ExamineSceneResponseModel> page = examineService.scenePaginQuery(requestModel);
PageResult<ExamineSceneDto> pageResult = PageResult.of(request.getPageNo(), request.getPageSize(), (int) page.getTotalRow(), null);
PageResult<ExamineSceneMobileDto> pageResult = PageResult.of(request.getPageNo(), request.getPageSize(), (int) page.getTotalRow(), null);
if(CollectionUtil.isNotEmpty(page.getRecords())) {
List<ExamineSceneDto> dtoList = page.getRecords().stream().map(v -> {
ExamineSceneDto dto = BeanUtil.copyProperties(v, ExamineSceneDto.class);
List<ExamineSceneMobileDto> dtoList = page.getRecords().stream().map(v -> {
ExamineSceneMobileDto dto = BeanUtil.copyProperties(v, ExamineSceneMobileDto.class);
return dto;
}).collect(Collectors.toList());
......@@ -593,9 +587,6 @@ public class AppExamineService {
List<ExamineMobileDto> dtoList = page.getRecords().stream().map(v -> {
ExamineMobileDto dto = BeanUtil.copyProperties(v, ExamineMobileDto.class);
dto.setStartTime(v.getStartTime().getTime());
dto.setEndTime(v.getEndTime().getTime());
// 已考人数
long examCount = 0;
ExamineRecordRequestModel req = new ExamineRecordRequestModel();
......@@ -639,7 +630,7 @@ public class AppExamineService {
* @param request
* @return
*/
public PageResult<ExamineRecordMobileDto> examineRecordMobilePaginQuery(ExamineRecordRequestDto request) {
public PageResult<ExamineRecordMobileDto> examineRecordMobilePaginQuery(ExamineRecordMobileRequestDto request) {
ExamineRecordRequestModel requestModel = BeanUtil.copyProperties(request, ExamineRecordRequestModel.class);
......@@ -928,24 +919,31 @@ public class AppExamineService {
* @param examineMode
* @return
*/
public ExamineQaDifyDto getQuestion(Integer examineId, String userId, Integer examineMode) {
public ExamineStartResultDto startExamine(UserPrincipal userPrincipal, StartExamineMobileRequestDto request) {
// 获取缓存考试会话信息
String examSessionKey = String.format(EXAM_REDIS_SESSION_KEY, examineId, examineMode, userId);
String sessionId = redisTemplate.opsForValue().get(examSessionKey);
if(StrUtil.isEmptyIfStr(sessionId)) {
// 生成sessionId
sessionId = UUID.randomUUID().toString();
redisTemplate.opsForValue().set(examSessionKey, sessionId, 1, TimeUnit.DAYS);
}
ExamineStartResultDto result = new ExamineStartResultDto();
// 获取缓存考题信息
String questionKey = String.format(EXAM_REDIS_QUESTION_KEY, examineId, examineMode, userId, sessionId);
result.setBusinessNo(UUID.randomUUID().toString());
result.setQuestionId(1);
result.setQuestion("请问毛巾都是干净的嘛?");
result.setAnswer("是的");
result.setNext(true);
ExamineQaDifyDto result = new ExamineQaDifyDto();
ExamineQaRequestModel req = null;
examineService.examineQaList(req);
// // 获取缓存考试会话信息
// String examSessionKey = String.format(EXAM_REDIS_SESSION_KEY, examineId, examineMode, userId);
// String sessionId = redisTemplate.opsForValue().get(examSessionKey);
// if(StrUtil.isEmptyIfStr(sessionId)) {
// // 生成sessionId
// sessionId = UUID.randomUUID().toString();
// redisTemplate.opsForValue().set(examSessionKey, sessionId, 1, TimeUnit.DAYS);
// }
//
// // 获取缓存考题信息
// String questionKey = String.format(EXAM_REDIS_QUESTION_KEY, examineId, examineMode, userId, sessionId);
//
//
// ExamineQaRequestModel req = null;
// examineService.examineQaList(req);
// // 根据分类获取考题
// ExamineResponseModel model = examineService.examineDetail(examineId);
......
......@@ -3,22 +3,22 @@ package cn.breeze.elleai.controller.front;
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.HotQaMobileDto;
import cn.breeze.elleai.application.dto.response.QaAssistantDto;
import cn.breeze.elleai.application.dto.response.UserChatCompletionHistoryDto;
import cn.breeze.elleai.application.dto.request.*;
import cn.breeze.elleai.application.dto.response.*;
import cn.breeze.elleai.application.service.AppChatCompletionService;
import cn.breeze.elleai.config.QueryParam;
import cn.breeze.elleai.util.UserPrincipal;
import com.alibaba.fastjson.JSON;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(value = "/front/chat")
@Tag(name = "AI问答移动端")
@Tag(name = "移动端-AI问答")
@RequiredArgsConstructor
public class ChatCompletionMobileController {
......@@ -42,25 +42,35 @@ public class ChatCompletionMobileController {
@Operation(summary = "历史对话")
@GetMapping("/history")
public ApiResponse<PageResult<UserChatCompletionHistoryDto>> history(@RequestParam("user_id") String userId,
@QueryParam UserQaHistoryRequestDto request) {
request.setUserId(userId);
PageResult<UserChatCompletionHistoryDto> pageResult = chatCompletionService.userQaHistoryPaginQuery(request);
public ApiResponse<PageResult<UserChatCompletionMobileDto>> history(@Parameter(hidden = true) UserPrincipal userPrincipal,
@QueryParam UserQaHistoryRequestDto request) {
PageResult<UserChatCompletionMobileDto> pageResult = chatCompletionService.userQaHistoryPaginQuery(userPrincipal, 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);
public ApiResponse<UserAskResultMobileDto> ask(@Parameter(hidden = true) UserPrincipal userPrincipal,
@RequestBody UserQaMobileRequestDto request) {
UserAskResultMobileDto result = chatCompletionService.userAsk(userPrincipal, request);
return ApiResponse.ok(result);
}
@Operation(summary = "开启新会话")
@PostMapping("/new")
public ApiResponse<String> newChatCompletion(@RequestParam("user_id") String userId) {
@Operation(summary = "切换助手")
@PostMapping("/assistant/switch")
public ApiResponse<String> switchAssistant(@Parameter(hidden = true) UserPrincipal userPrincipal,
@RequestBody SwitchAssistantMobileRequestDto request) {
return ApiResponse.ok("ok");
}
@Operation(summary = "开启新会话,返回新会话ID")
@PostMapping("/new_completion")
public ApiResponse<NewCompletionResultMobileDto> newChatCompletion(@Parameter(hidden = true) UserPrincipal userPrincipal) {
NewCompletionResultMobileDto result = new NewCompletionResultMobileDto();
result.setChatCompletionId(1);
return ApiResponse.ok(result);
}
}
......@@ -19,6 +19,21 @@ public class ExamineRecordResponseModel implements Serializable {
*/
private String userId;
/**
* 用户名称
*/
private String userName;
/**
* 所属门店ID
*/
private String shopId;
/**
* 所属门店名称
*/
private String shopName;
/**
* 会话ID
*/
......
......@@ -16,11 +16,36 @@ public class UserChatCompletionResponseModel implements Serializable {
*/
private String userId;
/**
* 用户名称
*/
private String userName;
/**
* 所属门店ID
*/
private String shopId;
/**
* 所属门店名称
*/
private String shopName;
/**
* 会话ID
*/
private String sessionId;
/**
* 首次提问时间
*/
private String firstQuestion;
/**
* 最后一次提问
*/
private String lastQuestion;
/**
* 创建时间
*/
......
......@@ -52,6 +52,7 @@ public class ChatCompletionServiceImpl implements ChatCompletionService{
if(StrUtil.isNotEmpty(request.getUserId())) {
queryWrapper.where(USER_CHAT_COMPLETION_ENTITY.USER_ID.eq(request.getUserId()));
}
queryWrapper.orderBy(USER_CHAT_COMPLETION_ENTITY.CREATE_TIME, false);
Page<UserChatCompletionResponseModel> page = chatCompletionMapper.paginateAs(pageNo, pageSize, queryWrapper, UserChatCompletionResponseModel.class);
......
......@@ -37,11 +37,36 @@ public class UserChatCompletionEntity implements Serializable {
*/
private String userId;
/**
* 用户名称
*/
private String userName;
/**
* 所属门店ID
*/
private String shopId;
/**
* 所属门店名称
*/
private String shopName;
/**
* 会话ID
*/
private String sessionId;
/**
* 首次提问时间
*/
private String firstQuestion;
/**
* 最后一次提问
*/
private String lastQuestion;
/**
* 创建时间
*/
......
......@@ -37,6 +37,21 @@ public class UserExamineRecordEntity implements Serializable {
*/
private String userId;
/**
* 用户名称
*/
private String userName;
/**
* 所属门店ID
*/
private String shopId;
/**
* 所属门店名称
*/
private String shopName;
/**
* 会话ID
*/
......
......@@ -34,6 +34,21 @@ public class UserChatCompletionTableDef extends TableDef {
*/
public final QueryColumn USER_ID = new QueryColumn(this, "user_id");
/**
* 用户名称
*/
public final QueryColumn USER_NAME = new QueryColumn(this, "user_name");
/**
* 所属门店ID
*/
public final QueryColumn SHOP_ID = new QueryColumn(this, "shop_id");
/**
* 所属门店名称
*/
public final QueryColumn SHOP_NAME = new QueryColumn(this, "shop_name");
/**
* DIFY会话ID
*/
......@@ -62,7 +77,7 @@ public class UserChatCompletionTableDef extends TableDef {
/**
* 默认字段,不包含逻辑删除或者 large 等字段。
*/
public final QueryColumn[] DEFAULT_COLUMNS = new QueryColumn[]{ID, USER_ID, SESSION_ID, TYPE, CONTENT, CREATE_TIME, UPDATE_TIME};
public final QueryColumn[] DEFAULT_COLUMNS = new QueryColumn[]{ID, USER_ID, USER_NAME, SHOP_ID, SHOP_NAME, SESSION_ID, TYPE, CONTENT, CREATE_TIME, UPDATE_TIME};
public UserChatCompletionTableDef() {
super("", "ai_user_chat_completion");
......
......@@ -29,6 +29,21 @@ public class UserExamineRecordTableDef extends TableDef {
*/
public final QueryColumn USER_ID = new QueryColumn(this, "user_id");
/**
* 用户名称
*/
public final QueryColumn USER_NAME = new QueryColumn(this, "user_name");
/**
* 所属门店ID
*/
public final QueryColumn SHOP_ID = new QueryColumn(this, "shop_id");
/**
* 所属门店名称
*/
public final QueryColumn SHOP_NAME = new QueryColumn(this, "shop_name");
/**
* 对练ID
*/
......@@ -77,7 +92,7 @@ public class UserExamineRecordTableDef extends TableDef {
/**
* 默认字段,不包含逻辑删除或者 large 等字段。
*/
public final QueryColumn[] DEFAULT_COLUMNS = new QueryColumn[]{ID, USER_ID, SESSION_ID, EXAMINE_ID, EXAMINE_MODE, ANSWERED_NUM, OVERALL_SCORE, OVERALL_EVALUATION, CREATE_TIME, UPDATE_TIME};
public final QueryColumn[] DEFAULT_COLUMNS = new QueryColumn[]{ID, USER_ID, USER_NAME, SHOP_ID, SHOP_NAME, SESSION_ID, EXAMINE_ID, EXAMINE_MODE, ANSWERED_NUM, OVERALL_SCORE, OVERALL_EVALUATION, CREATE_TIME, UPDATE_TIME};
public UserExamineRecordTableDef() {
super("", "ai_user_examine_record");
......
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