Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Q
qk_backend
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
quanku
qk_backend
Commits
d15af2cf
Commit
d15af2cf
authored
Oct 19, 2023
by
shiyu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ai会话
parent
998368a1
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
151 additions
and
16 deletions
+151
-16
ch-core/src/main/java/com/wwdz/ch/core/entity/im/IMChatRequestDto.java
...ain/java/com/wwdz/ch/core/entity/im/IMChatRequestDto.java
+2
-2
ch-core/src/main/java/com/wwdz/ch/core/entity/im/vo/ConversationResponse.java
...a/com/wwdz/ch/core/entity/im/vo/ConversationResponse.java
+21
-0
ch-core/src/main/java/com/wwdz/ch/core/entity/im/vo/IMChatVo.java
...src/main/java/com/wwdz/ch/core/entity/im/vo/IMChatVo.java
+30
-0
ch-core/src/main/java/com/wwdz/ch/core/im/api/ConversationApi.java
...rc/main/java/com/wwdz/ch/core/im/api/ConversationApi.java
+44
-9
ch-core/src/main/java/com/wwdz/ch/core/util/IMUtil.java
ch-core/src/main/java/com/wwdz/ch/core/util/IMUtil.java
+2
-2
ch-dao/src/main/java/com/wwdz/ch/db/dto/request/AiAssistantRequestDto.java
...ava/com/wwdz/ch/db/dto/request/AiAssistantRequestDto.java
+2
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/entity/vo/AiAssistantVo.java
...src/main/java/com/wwdz/ch/wx/entity/vo/AiAssistantVo.java
+5
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/AiAssistantServiceImpl.java
...main/java/com/wwdz/ch/wx/impl/AiAssistantServiceImpl.java
+43
-1
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/IMServiceImpl.java
...-api/src/main/java/com/wwdz/ch/wx/impl/IMServiceImpl.java
+1
-1
ch-wx-api/src/test/java/com/wwdz/ch/wx/api/ChatApiTest.java
ch-wx-api/src/test/java/com/wwdz/ch/wx/api/ChatApiTest.java
+1
-1
No files found.
ch-core/src/main/java/com/wwdz/ch/core/entity/im/IMChatRequestDto.java
View file @
d15af2cf
...
@@ -12,12 +12,12 @@ public class IMChatRequestDto extends BaseRequestDto implements Entity {
...
@@ -12,12 +12,12 @@ public class IMChatRequestDto extends BaseRequestDto implements Entity {
/**
/**
* 普通会话的起始时间,第一页填 0。
* 普通会话的起始时间,第一页填 0。
*/
*/
private
Integer
timeStamp
;
private
Integer
timeStamp
=
0
;
/**
/**
* 普通会话的起始位置,第一页填 0。
* 普通会话的起始位置,第一页填 0。
*/
*/
private
Integer
startIndex
;
private
Integer
startIndex
=
0
;
/**
/**
* 置顶会话的起始时间,第一页填 0。
* 置顶会话的起始时间,第一页填 0。
...
...
ch-core/src/main/java/com/wwdz/ch/core/entity/im/vo/ConversationResponse.java
0 → 100644
View file @
d15af2cf
package
com.wwdz.ch.core.entity.im.vo
;
import
com.xxdxxs.entity.Entity
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
ConversationResponse
implements
Entity
{
private
List
<
IMChatVo
>
dataList
;
private
Integer
timeStamp
;
/**
* 结束标识:
* 1:表示已返回全量会话
* 0:表示还有会话没拉完
*/
private
Integer
completeFlag
;
}
ch-core/src/main/java/com/wwdz/ch/core/entity/im/vo/IMChatVo.java
View file @
d15af2cf
...
@@ -5,4 +5,34 @@ import lombok.Data;
...
@@ -5,4 +5,34 @@ import lombok.Data;
@Data
@Data
public
class
IMChatVo
implements
Entity
{
public
class
IMChatVo
implements
Entity
{
/**
* 拉取会话的用户账号
*/
private
String
operaterAccount
;
/**
* 拉取会话的用户在系统中原始账号
*/
private
String
orginalOperaterAccount
;
/**
* 会话另一方的用户账号
*/
private
String
toAccount
;
/**
* 会话另一方的用户在系统中原始账号
*/
private
String
orginalToAccount
;
/**
* 最后一条消息的时间
*/
private
Integer
msgTime
;
/**
* 会话类型
*/
private
Integer
type
;
}
}
ch-core/src/main/java/com/wwdz/ch/core/im/api/ConversationApi.java
View file @
d15af2cf
...
@@ -2,13 +2,14 @@ package com.wwdz.ch.core.im.api;
...
@@ -2,13 +2,14 @@ package com.wwdz.ch.core.im.api;
import
com.wwdz.ch.core.consts.IMEnum
;
import
com.wwdz.ch.core.consts.IMEnum
;
import
com.wwdz.ch.core.entity.im.IMChatMsg
;
import
com.wwdz.ch.core.entity.im.IMChatRequestDto
;
import
com.wwdz.ch.core.entity.im.IMChatRequestDto
;
import
com.wwdz.ch.core.entity.im.SendChatMsgRequestDto
;
import
com.wwdz.ch.core.entity.im.SendChatMsgRequestDto
;
import
com.wwdz.ch.core.entity.im.IMChatMsg
;
import
com.wwdz.ch.core.entity.im.vo.ConversationResponse
;
import
com.wwdz.ch.core.entity.im.vo.IMChatVo
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.util.IMUtil
;
import
com.wwdz.ch.core.util.IMUtil
;
import
com.wwdz.ch.core.util.OkHttpUtil
;
import
com.wwdz.ch.core.util.OkHttpUtil
;
import
com.xxdxxs.utils.EntityMapper
;
import
com.xxdxxs.utils.JsonUtils
;
import
com.xxdxxs.utils.JsonUtils
;
import
com.xxdxxs.utils.MapUtils
;
import
com.xxdxxs.utils.MapUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
...
@@ -17,10 +18,8 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -17,10 +18,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.util.Arrays
;
import
java.io.IOException
;
import
java.util.HashMap
;
import
java.util.*
;
import
java.util.Map
;
import
java.util.Random
;
/**
/**
* 会话api
* 会话api
...
@@ -104,8 +103,8 @@ public class ConversationApi {
...
@@ -104,8 +103,8 @@ public class ConversationApi {
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"From_Account"
,
imUtil
.
formatUserId
(
imChatRequestDto
.
getUserId
()
+
""
));
paramMap
.
put
(
"From_Account"
,
imUtil
.
formatUserId
(
imChatRequestDto
.
getUserId
()
+
""
));
paramMap
.
put
(
"TimeStamp"
,
0
);
paramMap
.
put
(
"TimeStamp"
,
imChatRequestDto
.
getTimeStamp
()
);
paramMap
.
put
(
"StartIndex"
,
0
);
paramMap
.
put
(
"StartIndex"
,
imChatRequestDto
.
getStartIndex
()
);
paramMap
.
put
(
"TopTimeStamp"
,
0
);
paramMap
.
put
(
"TopTimeStamp"
,
0
);
paramMap
.
put
(
"TopStartIndex"
,
0
);
paramMap
.
put
(
"TopStartIndex"
,
0
);
paramMap
.
put
(
"AssistFlags"
,
15
);
paramMap
.
put
(
"AssistFlags"
,
15
);
...
@@ -121,7 +120,43 @@ public class ConversationApi {
...
@@ -121,7 +120,43 @@ public class ConversationApi {
logger
.
error
(
"用户id : {}, 拉取会话列表, errorCode : {}, errmsg : {} "
,
imChatRequestDto
.
getUserId
(),
errorCode
,
errorInfo
);
logger
.
error
(
"用户id : {}, 拉取会话列表, errorCode : {}, errmsg : {} "
,
imChatRequestDto
.
getUserId
(),
errorCode
,
errorInfo
);
return
Result
.
failed
(
errorInfo
);
return
Result
.
failed
(
errorInfo
);
}
}
ConversationResponse
conversationResponse
=
new
ConversationResponse
();
String
completeFlag
=
JsonUtils
.
getValueByPath
(
responseStr
,
"CompleteFlag"
);
String
timeStamp
=
JsonUtils
.
getValueByPath
(
responseStr
,
"TimeStamp"
);
conversationResponse
.
setCompleteFlag
(
Integer
.
valueOf
(
completeFlag
));
conversationResponse
.
setTimeStamp
(
Integer
.
valueOf
(
timeStamp
));
if
(
responseStr
.
contains
(
"SessionItem"
))
{
String
sessionItem
=
JsonUtils
.
getValueByPath
(
responseStr
,
"SessionItem"
);
try
{
List
<
IMChatVo
>
imChatVos
=
new
ArrayList
<>();
List
<
Map
<
String
,
Object
>>
list
=
JsonUtils
.
toMapList
(
sessionItem
);
list
.
forEach
(
map
->{
IMChatVo
imChatVo
=
new
IMChatVo
();
imChatVo
.
setType
((
Integer
)
map
.
get
(
"Type"
));
String
toAccount
=
(
String
)
map
.
get
(
"To_Account"
);
imChatVo
.
setToAccount
(
toAccount
);
imChatVo
.
setOrginalToAccount
(
imUtil
.
revertAppletUserId
(
toAccount
));
imChatVo
.
setMsgTime
((
Integer
)
map
.
get
(
"MsgTime"
));
imChatVos
.
add
(
imChatVo
);
});
conversationResponse
.
setDataList
(
imChatVos
);
}
catch
(
IOException
e
)
{
logger
.
error
(
">>>>>> 解析会话列表出错:{}"
,
e
);
return
Result
.
failed
();
}
}
logger
.
info
(
"============= 拉取会话列表成功 ==========="
);
logger
.
info
(
"============= 拉取会话列表成功 ==========="
);
return
Result
.
success
();
return
Result
.
success
(
conversationResponse
);
}
/**
* 拉取历史聊天记录
* @param imChatRequestDto
* @return
*/
public
Result
getHistoryMsg
(
IMChatRequestDto
imChatRequestDto
)
{
return
null
;
}
}
}
}
ch-core/src/main/java/com/wwdz/ch/core/util/IMUtil.java
View file @
d15af2cf
...
@@ -32,9 +32,9 @@ public class IMUtil {
...
@@ -32,9 +32,9 @@ public class IMUtil {
* @param userId
* @param userId
* @return
* @return
*/
*/
public
long
ge
tAppletUserId
(
String
userId
)
{
public
String
rever
tAppletUserId
(
String
userId
)
{
String
appletUserId
=
userId
.
split
(
"_"
)[
1
];
String
appletUserId
=
userId
.
split
(
"_"
)[
1
];
return
Long
.
valueOf
(
appletUserId
)
;
return
appletUserId
;
}
}
...
...
ch-dao/src/main/java/com/wwdz/ch/db/dto/request/AiAssistantRequestDto.java
View file @
d15af2cf
...
@@ -7,6 +7,8 @@ import lombok.Data;
...
@@ -7,6 +7,8 @@ import lombok.Data;
@Data
@Data
public
class
AiAssistantRequestDto
extends
BaseRequestDto
implements
Entity
{
public
class
AiAssistantRequestDto
extends
BaseRequestDto
implements
Entity
{
private
Long
userId
;
private
Integer
id
;
private
Integer
id
;
/**
/**
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/entity/vo/AiAssistantVo.java
View file @
d15af2cf
...
@@ -10,6 +10,11 @@ public class AiAssistantVo implements Entity {
...
@@ -10,6 +10,11 @@ public class AiAssistantVo implements Entity {
private
Integer
id
;
private
Integer
id
;
/**
* 编号
*/
private
String
code
;
/**
/**
* 头像
* 头像
*/
*/
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/AiAssistantServiceImpl.java
View file @
d15af2cf
package
com.wwdz.ch.wx.impl
;
package
com.wwdz.ch.wx.impl
;
import
com.github.pagehelper.PageInfo
;
import
com.github.pagehelper.PageInfo
;
import
com.wwdz.ch.core.entity.im.IMChatRequestDto
;
import
com.wwdz.ch.core.entity.im.vo.ConversationResponse
;
import
com.wwdz.ch.core.entity.im.vo.IMChatVo
;
import
com.wwdz.ch.core.im.api.ConversationApi
;
import
com.wwdz.ch.core.type.PageSearchResult
;
import
com.wwdz.ch.core.type.PageSearchResult
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.util.IMUtil
;
import
com.wwdz.ch.db.dao.AiAssistantDao
;
import
com.wwdz.ch.db.dao.AiAssistantDao
;
import
com.wwdz.ch.db.domain.AiAssistant
;
import
com.wwdz.ch.db.domain.AiAssistant
;
import
com.wwdz.ch.db.dto.request.AiAssistantRequestDto
;
import
com.wwdz.ch.db.dto.request.AiAssistantRequestDto
;
...
@@ -17,6 +22,7 @@ import org.springframework.stereotype.Service;
...
@@ -17,6 +22,7 @@ import org.springframework.stereotype.Service;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
/**
* ai助手
* ai助手
...
@@ -29,17 +35,53 @@ public class AiAssistantServiceImpl implements AiAssistantService {
...
@@ -29,17 +35,53 @@ public class AiAssistantServiceImpl implements AiAssistantService {
@Autowired
@Autowired
AiAssistantDao
aiAssistantDao
;
AiAssistantDao
aiAssistantDao
;
@Autowired
ConversationApi
conversationApi
;
@Autowired
IMUtil
imUtil
;
@Override
@Override
public
Result
findList
(
AiAssistantRequestDto
dto
)
{
public
Result
findList
(
AiAssistantRequestDto
dto
)
{
try
{
try
{
//查询当前用户的会话列表
int
page
=
0
;
int
timeStamp
=
0
;
boolean
isContinue
=
true
;
//所有会话用户的id
List
<
String
>
converstionUserIdList
=
new
ArrayList
<>();
while
(
isContinue
)
{
IMChatRequestDto
imChatRequestDto
=
new
IMChatRequestDto
();
imChatRequestDto
.
setUserId
(
dto
.
getUserId
());
imChatRequestDto
.
setStartIndex
(
page
);
imChatRequestDto
.
setTimeStamp
(
timeStamp
);
Result
<
ConversationResponse
>
chatResult
=
conversationApi
.
getChatList
(
imChatRequestDto
);
if
(!
chatResult
.
getSuccess
())
{
return
Result
.
failed
(
"获取列表失败"
);
}
List
<
IMChatVo
>
imChatVoList
=
chatResult
.
getData
().
getDataList
();
List
<
String
>
ids
=
imChatVoList
.
stream
().
map
(
IMChatVo:
:
getOrginalToAccount
).
collect
(
Collectors
.
toList
());
converstionUserIdList
.
addAll
(
ids
);
if
(
chatResult
.
getData
().
getCompleteFlag
()
==
1
)
{
isContinue
=
false
;
}
else
{
page
=
page
+
1
;
timeStamp
=
chatResult
.
getData
().
getTimeStamp
();
}
}
List
<
AiAssistantVo
>
aiAssistantVos
=
new
ArrayList
<>();
List
<
AiAssistantVo
>
aiAssistantVos
=
new
ArrayList
<>();
List
<
AiAssistant
>
aiAssistantList
=
aiAssistantDao
.
findList
(
dto
);
List
<
AiAssistant
>
aiAssistantList
=
aiAssistantDao
.
findList
(
dto
);
PageInfo
<
AiAssistant
>
pageInfo
=
new
PageInfo
<>(
aiAssistantList
);
PageInfo
<
AiAssistant
>
pageInfo
=
new
PageInfo
<>(
aiAssistantList
);
aiAssistantList
.
forEach
(
aiAssistant
->
{
aiAssistantList
.
forEach
(
aiAssistant
->
{
AiAssistantVo
aiAssistantVo
=
new
AiAssistantVo
();
AiAssistantVo
aiAssistantVo
=
new
AiAssistantVo
();
EntityMapper
.
copyAttribute
(
aiAssistant
,
aiAssistantVo
);
EntityMapper
.
copyAttribute
(
aiAssistant
,
aiAssistantVo
);
aiAssistantVo
.
setIsHasChated
(
false
);
//判断该AI助手是否已有会话
if
(
converstionUserIdList
.
contains
(
aiAssistant
.
getCode
()))
{
aiAssistantVo
.
setIsHasChated
(
true
);
}
else
{
aiAssistantVo
.
setIsHasChated
(
false
);
}
aiAssistantVos
.
add
(
aiAssistantVo
);
aiAssistantVos
.
add
(
aiAssistantVo
);
});
});
return
Result
.
success
(
PageSearchResult
.
of
(
pageInfo
,
aiAssistantVos
));
return
Result
.
success
(
PageSearchResult
.
of
(
pageInfo
,
aiAssistantVos
));
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/IMServiceImpl.java
View file @
d15af2cf
...
@@ -69,10 +69,10 @@ public class IMServiceImpl implements IMService {
...
@@ -69,10 +69,10 @@ public class IMServiceImpl implements IMService {
public
Result
findChatList
(
IMChatRequestDto
dto
)
{
public
Result
findChatList
(
IMChatRequestDto
dto
)
{
try
{
try
{
Result
result
=
conversationApi
.
getChatList
(
dto
);
Result
result
=
conversationApi
.
getChatList
(
dto
);
return
result
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
error
(
"获取会话列表失败:{}"
,
e
);
logger
.
error
(
"获取会话列表失败:{}"
,
e
);
}
}
return
Result
.
failed
();
return
Result
.
failed
();
}
}
...
...
ch-wx-api/src/test/java/com/wwdz/ch/wx/api/ChatApiTest.java
View file @
d15af2cf
...
@@ -104,7 +104,7 @@ public class ChatApiTest {
...
@@ -104,7 +104,7 @@ public class ChatApiTest {
@Test
@Test
public
void
getChatList
()
{
public
void
getChatList
()
{
IMChatRequestDto
imChatRequestDto
=
new
IMChatRequestDto
();
IMChatRequestDto
imChatRequestDto
=
new
IMChatRequestDto
();
imChatRequestDto
.
setUserId
(
24
1
L
);
imChatRequestDto
.
setUserId
(
24
2
L
);
conversationApi
.
getChatList
(
imChatRequestDto
);
conversationApi
.
getChatList
(
imChatRequestDto
);
}
}
...
...
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