Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
elleai
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ai-tech
E
ellehuis-group
backend
elleai
Commits
f1286ecc
Commit
f1286ecc
authored
Oct 31, 2024
by
陈立彬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增 赞、踩 接口
parent
a5babef5
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
186 additions
and
17 deletions
+186
-17
UserAskResultMobileDto.java
...leai/application/dto/response/UserAskResultMobileDto.java
+4
-0
UserChatCompletionHistoryMobileDto.java
...tion/dto/response/UserChatCompletionHistoryMobileDto.java
+10
-0
AppChatCompletionService.java
.../elleai/application/service/AppChatCompletionService.java
+43
-14
ChatCompletionMobileController.java
...leai/controller/front/ChatCompletionMobileController.java
+18
-0
UserQaHistorySaveModel.java
...domain/sparring/model/request/UserQaHistorySaveModel.java
+47
-0
UserChatCompletionHistoryResponseModel.java
...odel/response/UserChatCompletionHistoryResponseModel.java
+10
-0
ChatCompletionService.java
...elleai/domain/sparring/service/ChatCompletionService.java
+5
-1
ChatCompletionServiceImpl.java
...ai/domain/sparring/service/ChatCompletionServiceImpl.java
+19
-1
UserChatCompletionHistoryEntity.java
.../elleai/infra/entity/UserChatCompletionHistoryEntity.java
+14
-0
UserChatCompletionHistoryTableDef.java
...infra/entity/table/UserChatCompletionHistoryTableDef.java
+16
-1
No files found.
src/main/java/cn/breeze/elleai/application/dto/response/UserAskResultMobileDto.java
View file @
f1286ecc
...
...
@@ -18,4 +18,8 @@ public class UserAskResultMobileDto implements Serializable {
@Schema
(
description
=
"AI回复内容"
)
@JsonProperty
(
"reply_content"
)
private
String
replyContent
;
@Schema
(
description
=
"消息ID"
)
@JsonProperty
(
"message_id"
)
private
Integer
messageId
;
}
src/main/java/cn/breeze/elleai/application/dto/response/UserChatCompletionHistoryMobileDto.java
View file @
f1286ecc
...
...
@@ -32,6 +32,16 @@ public class UserChatCompletionHistoryMobileDto implements Serializable {
@Schema
(
description
=
"内容"
)
private
String
content
;
/**
* 踩(0否 1是)
*/
private
Integer
diss
;
/**
* 赞(0否 1是)
*/
private
Integer
likes
;
/**
* 创建时间
*/
...
...
src/main/java/cn/breeze/elleai/application/service/AppChatCompletionService.java
View file @
f1286ecc
...
...
@@ -4,10 +4,7 @@ import cn.breeze.elleai.application.dto.PageResult;
import
cn.breeze.elleai.application.dto.inner.AiChatComplateResultDto
;
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.UserChatCompletionSaveModel
;
import
cn.breeze.elleai.domain.sparring.model.request.UserQaRequestModel
;
import
cn.breeze.elleai.domain.sparring.model.request.*
;
import
cn.breeze.elleai.domain.sparring.model.response.KbTagResponseModel
;
import
cn.breeze.elleai.domain.sparring.model.response.QaAssistantResponseModel
;
import
cn.breeze.elleai.domain.sparring.model.response.UserChatCompletionHistoryResponseModel
;
...
...
@@ -356,10 +353,10 @@ public class AppChatCompletionService {
saveModel
.
setCreateTime
(
new
Date
());
saveModel
.
setFirstQuestion
(
request
.
getContent
());
}
Integer
record
Id
=
chatCompletionService
.
saveUserQaSession
(
saveModel
);
Integer
chatCompletion
Id
=
chatCompletionService
.
saveUserQaSession
(
saveModel
);
// 保存问答详情
chatCompletionService
.
saveUserQaRecord
(
recordId
,
0
,
request
.
getContent
(),
request
.
getAssistantId
());
Integer
userQaRecordId
=
chatCompletionService
.
saveUserQaRecord
(
chatCompletionId
,
0
,
null
,
request
.
getContent
(),
request
.
getAssistantId
());
// 问一下AI
AiChatComplateResultDto
complateResultDto
=
ask4Knowledge
(
sessionId
,
userPrincipal
.
getUserId
(),
request
.
getContent
(),
request
.
getAssistantId
());
...
...
@@ -369,15 +366,15 @@ public class AppChatCompletionService {
// 更新DIFY会话ID
if
(
StrUtil
.
isEmpty
(
sessionId
))
{
UserChatCompletionSaveModel
updateModel
=
new
UserChatCompletionSaveModel
();
updateModel
.
setId
(
record
Id
);
updateModel
.
setId
(
chatCompletion
Id
);
updateModel
.
setSessionId
(
sessionId
);
chatCompletionService
.
saveUserQaSession
(
updateModel
);
}
// 保存AI问答详情
chatCompletionService
.
saveUserQaRecord
(
recordId
,
1
,
replyContent
,
request
.
getAssistantId
());
chatCompletionService
.
saveUserQaRecord
(
chatCompletionId
,
1
,
userQaRecordId
,
replyContent
,
request
.
getAssistantId
());
result
.
setChatCompletionId
(
record
Id
);
result
.
setChatCompletionId
(
chatCompletion
Id
);
result
.
setReplyContent
(
replyContent
);
}
return
result
;
...
...
@@ -414,10 +411,10 @@ public class AppChatCompletionService {
saveModel
.
setCreateTime
(
new
Date
());
saveModel
.
setFirstQuestion
(
request
.
getContent
());
}
Integer
record
Id
=
chatCompletionService
.
saveUserQaSession
(
saveModel
);
Integer
chatCompletion
Id
=
chatCompletionService
.
saveUserQaSession
(
saveModel
);
// 保存问答详情
chatCompletionService
.
saveUserQaRecord
(
recordId
,
0
,
request
.
getContent
(),
request
.
getAssistantId
());
Integer
userQaRecordId
=
chatCompletionService
.
saveUserQaRecord
(
chatCompletionId
,
0
,
null
,
request
.
getContent
(),
request
.
getAssistantId
());
Map
<
String
,
String
>
inputs
=
new
HashMap
<>();
inputs
.
put
(
"assistant_id"
,
Objects
.
nonNull
(
request
.
getAssistantId
())
?
String
.
valueOf
(
request
.
getAssistantId
())
:
""
);
...
...
@@ -444,7 +441,8 @@ public class AppChatCompletionService {
UserAskResultMobileDto
result
=
new
UserAskResultMobileDto
();
result
.
setReplyContent
(
buffer
.
toString
());
result
.
setChatCompletionId
(
recordId
);
result
.
setChatCompletionId
(
chatCompletionId
);
result
.
setMessageId
(
userQaRecordId
);
return
result
;
}).
doOnComplete
(
()
->
{
...
...
@@ -452,12 +450,12 @@ public class AppChatCompletionService {
// 更新DIFY会话ID
if
(
StrUtil
.
isEmpty
(
finalSessionId
))
{
UserChatCompletionSaveModel
updateModel
=
new
UserChatCompletionSaveModel
();
updateModel
.
setId
(
record
Id
);
updateModel
.
setId
(
chatCompletion
Id
);
updateModel
.
setSessionId
(
difySessionId
[
0
]);
chatCompletionService
.
saveUserQaSession
(
updateModel
);
}
// 保存AI问答详情
chatCompletionService
.
saveUserQaRecord
(
recordId
,
1
,
replyContent
,
request
.
getAssistantId
());
chatCompletionService
.
saveUserQaRecord
(
chatCompletionId
,
1
,
userQaRecordId
,
replyContent
,
request
.
getAssistantId
());
}
).
map
(
v
->
ServerSentEvent
.
builder
(
v
).
build
());
}
...
...
@@ -524,4 +522,35 @@ public class AppChatCompletionService {
public
PageResult
<
HotQaMobileDto
>
hotQaList
(
QaAssistantRequestDto
request
)
{
return
kbService
.
hotQaList
(
request
);
}
/**
* 更新 踩 状态
* @param messageId
* @param status
*/
public
void
updateDissStatus
(
Integer
messageId
,
Integer
status
)
{
UserChatCompletionHistoryResponseModel
model
=
chatCompletionService
.
getReplyMessageByUserMessageId
(
messageId
);
if
(
Objects
.
nonNull
(
model
))
{
UserQaHistorySaveModel
saveModel
=
new
UserQaHistorySaveModel
();
saveModel
.
setId
(
model
.
getId
());
saveModel
.
setDiss
(
status
);
chatCompletionService
.
saveUserQaRecord
(
saveModel
);
}
}
/**
* 更新 赞 状态
* @param messageId
* @param status
*/
public
void
updateLikesStatus
(
Integer
messageId
,
Integer
status
)
{
UserChatCompletionHistoryResponseModel
model
=
chatCompletionService
.
getReplyMessageByUserMessageId
(
messageId
);
if
(
Objects
.
nonNull
(
model
))
{
UserQaHistorySaveModel
saveModel
=
new
UserQaHistorySaveModel
();
saveModel
.
setId
(
model
.
getId
());
saveModel
.
setLikes
(
status
);
chatCompletionService
.
saveUserQaRecord
(
saveModel
);
}
}
}
src/main/java/cn/breeze/elleai/controller/front/ChatCompletionMobileController.java
View file @
f1286ecc
...
...
@@ -97,4 +97,22 @@ public class ChatCompletionMobileController {
UserAskResultMobileDto
result
=
chatCompletionService
.
userAsk
(
userPrincipal
,
request
);
return
ApiResponse
.
ok
(
result
);
}
@Operation
(
summary
=
"踩/取消踩"
)
@PostMapping
(
"/diss/{message_id}/{status}"
)
public
ApiResponse
<
String
>
diss
(
@Schema
(
description
=
"消息ID"
)
@PathVariable
(
"message_id"
)
Integer
messageId
,
@Schema
(
description
=
"状态(0取消 1踩)"
)
@PathVariable
(
"status"
)
Integer
status
)
{
chatCompletionService
.
updateDissStatus
(
messageId
,
status
);
return
ApiResponse
.
ok
(
"ok"
);
}
@Operation
(
summary
=
"赞/取消赞"
)
@PostMapping
(
"/likes/{message_id}/{status}"
)
public
ApiResponse
<
String
>
likes
(
@Schema
(
description
=
"消息ID"
)
@PathVariable
(
"message_id"
)
Integer
messageId
,
@Schema
(
description
=
"状态(0取消 1赞)"
)
@PathVariable
(
"status"
)
Integer
status
)
{
chatCompletionService
.
updateLikesStatus
(
messageId
,
status
);
return
ApiResponse
.
ok
(
"ok"
);
}
}
src/main/java/cn/breeze/elleai/domain/sparring/model/request/UserQaHistorySaveModel.java
0 → 100644
View file @
f1286ecc
package
cn
.
breeze
.
elleai
.
domain
.
sparring
.
model
.
request
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.List
;
@Data
public
class
UserQaHistorySaveModel
implements
Serializable
{
private
Integer
id
;
/**
* 会话ID
*/
private
Integer
chatCompletionId
;
/**
* 类型(0用户提问 1AI回答)
*/
private
Integer
type
;
/**
* 问答助手ID
*/
private
Integer
assistantId
;
/**
* 内容
*/
private
String
content
;
/**
* 踩(0否 1是)
*/
private
Integer
diss
;
/**
* 赞(0否 1是)
*/
private
Integer
likes
;
/**
* AI回复用户消息ID
*/
private
Integer
replyMessageId
;
}
src/main/java/cn/breeze/elleai/domain/sparring/model/response/UserChatCompletionHistoryResponseModel.java
View file @
f1286ecc
...
...
@@ -25,6 +25,16 @@ public class UserChatCompletionHistoryResponseModel implements Serializable {
*/
private
String
content
;
/**
* 踩(0否 1是)
*/
private
Integer
diss
;
/**
* 赞(0否 1是)
*/
private
Integer
likes
;
/**
* 创建时间
*/
...
...
src/main/java/cn/breeze/elleai/domain/sparring/service/ChatCompletionService.java
View file @
f1286ecc
...
...
@@ -19,13 +19,17 @@ public interface ChatCompletionService {
List
<
UserChatCompletionHistoryResponseModel
>
userQaHistoryDetail
(
Integer
chatCompletionId
);
UserChatCompletionHistoryResponseModel
getReplyMessageByUserMessageId
(
Integer
userMessageId
);
Page
<
UserChatCompletionHistoryResponseModel
>
userQaHistoryDetailPaginQuery
(
Integer
chatCompletionId
,
Integer
pageNo
,
Integer
pageSize
);
UserChatCompletionResponseModel
userQaDetail
(
UserQaRequestModel
request
);
Integer
saveUserQaSession
(
UserChatCompletionSaveModel
dto
);
void
saveUserQaRecord
(
Integer
chatCompletionId
,
Integer
type
,
String
content
,
Integer
assistantId
);
Integer
saveUserQaRecord
(
Integer
chatCompletionId
,
Integer
type
,
Integer
replyMessageId
,
String
content
,
Integer
assistantId
);
Integer
saveUserQaRecord
(
UserQaHistorySaveModel
dto
);
/***************************************** AI助手 *****************************************/
Page
<
QaAssistantResponseModel
>
qaAssistantPaginQuery
(
QaAssistantRequestModel
request
);
...
...
src/main/java/cn/breeze/elleai/domain/sparring/service/ChatCompletionServiceImpl.java
View file @
f1286ecc
...
...
@@ -100,6 +100,14 @@ public class ChatCompletionServiceImpl implements ChatCompletionService{
return
chatCompletionHistoryMapper
.
selectListByQueryAs
(
queryWrapper
,
UserChatCompletionHistoryResponseModel
.
class
);
}
@Override
public
UserChatCompletionHistoryResponseModel
getReplyMessageByUserMessageId
(
Integer
userMessageId
)
{
QueryWrapper
queryWrapper
=
QueryWrapper
.
create
();
queryWrapper
.
where
(
USER_CHAT_COMPLETION_HISTORY_ENTITY
.
REPLY_MESSAGE_ID
.
eq
(
userMessageId
));
return
chatCompletionHistoryMapper
.
selectOneByQueryAs
(
queryWrapper
,
UserChatCompletionHistoryResponseModel
.
class
);
}
@Override
public
Page
<
UserChatCompletionHistoryResponseModel
>
userQaHistoryDetailPaginQuery
(
Integer
chatCompletionId
,
Integer
pageNo
,
Integer
pageSize
)
{
...
...
@@ -135,14 +143,24 @@ public class ChatCompletionServiceImpl implements ChatCompletionService{
}
@Override
public
void
saveUserQaRecord
(
Integer
chatCompletionId
,
Integer
type
,
String
content
,
Integer
assistantId
)
{
public
Integer
saveUserQaRecord
(
Integer
chatCompletionId
,
Integer
type
,
Integer
replyMessageId
,
String
content
,
Integer
assistantId
)
{
UserChatCompletionHistoryEntity
entity
=
new
UserChatCompletionHistoryEntity
();
entity
.
setChatCompletionId
(
chatCompletionId
);
entity
.
setType
(
type
);
entity
.
setReplyMessageId
(
replyMessageId
);
entity
.
setContent
(
content
);
entity
.
setAssistantId
(
assistantId
);
entity
.
setCreateTime
(
new
Date
());
chatCompletionHistoryMapper
.
insertOrUpdateSelective
(
entity
);
return
entity
.
getId
();
}
@Override
public
Integer
saveUserQaRecord
(
UserQaHistorySaveModel
dto
)
{
UserChatCompletionHistoryEntity
entity
=
new
UserChatCompletionHistoryEntity
();
BeanUtil
.
copyProperties
(
dto
,
entity
);
chatCompletionHistoryMapper
.
insertOrUpdateSelective
(
entity
);
return
entity
.
getId
();
}
@Override
...
...
src/main/java/cn/breeze/elleai/infra/entity/UserChatCompletionHistoryEntity.java
View file @
f1286ecc
...
...
@@ -51,6 +51,20 @@ public class UserChatCompletionHistoryEntity implements Serializable {
*/
private
String
content
;
/**
* 踩(0否 1是)
*/
private
Integer
diss
;
/**
* 赞(0否 1是)
*/
private
Integer
likes
;
/**
* AI回复用户消息ID
*/
private
Integer
replyMessageId
;
/**
* 创建时间
*/
...
...
src/main/java/cn/breeze/elleai/infra/entity/table/UserChatCompletionHistoryTableDef.java
View file @
f1286ecc
...
...
@@ -39,6 +39,21 @@ public class UserChatCompletionHistoryTableDef extends TableDef {
*/
public
final
QueryColumn
CONTENT
=
new
QueryColumn
(
this
,
"content"
);
/**
* AI回复用户消息ID
*/
public
final
QueryColumn
REPLY_MESSAGE_ID
=
new
QueryColumn
(
this
,
"reply_message_id"
);
/**
* 踩
*/
public
final
QueryColumn
DISS
=
new
QueryColumn
(
this
,
"diss"
);
/**
* 赞
*/
public
final
QueryColumn
LIKES
=
new
QueryColumn
(
this
,
"likes"
);
/**
* 创建时间
*/
...
...
@@ -52,7 +67,7 @@ public class UserChatCompletionHistoryTableDef extends TableDef {
/**
* 默认字段,不包含逻辑删除或者 large 等字段。
*/
public
final
QueryColumn
[]
DEFAULT_COLUMNS
=
new
QueryColumn
[]{
ID
,
CHAT_COMPLETION_ID
,
TYPE
,
CONTENT
,
CREATE_TIME
};
public
final
QueryColumn
[]
DEFAULT_COLUMNS
=
new
QueryColumn
[]{
ID
,
CHAT_COMPLETION_ID
,
TYPE
,
CONTENT
,
REPLY_MESSAGE_ID
,
DISS
,
LIKES
,
CREATE_TIME
};
public
UserChatCompletionHistoryTableDef
()
{
super
(
""
,
"ai_user_chat_completion_history"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment