Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wecloud_im_server
Overview
Overview
Details
Activity
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hewei
wecloud_im_server
Commits
33ade855
Commit
33ade855
authored
Jun 02, 2022
by
hewei
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'upay-test' into 'upay-prod'
Upay test See merge request
!31
parents
51116217
f78c4891
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
309 additions
and
65 deletions
+309
-65
README-zh.md
+1
-1
common/src/main/java/com/wecloud/im/controller/serverapi/ApiImConversationController.java
+64
-0
common/src/main/java/com/wecloud/im/controller/serverapi/ApiImConversationMembersController.java
+48
-10
common/src/main/java/com/wecloud/im/mapper/ImConversationMapper.java
+2
-0
common/src/main/java/com/wecloud/im/mapper/ImConversationMembersMapper.java
+3
-0
common/src/main/java/com/wecloud/im/netty/core/NettyChannelInitializer.java
+1
-1
common/src/main/java/com/wecloud/im/netty/core/WsReadHandler.java
+2
-2
common/src/main/java/com/wecloud/im/param/ApiImConversationMembersInfoPageParam.java
+26
-0
common/src/main/java/com/wecloud/im/param/ApiImConversationMembersInfoQueryVo.java
+34
-0
common/src/main/java/com/wecloud/im/param/add/ImConversationMemApiAdd.java
+34
-0
common/src/main/java/com/wecloud/im/service/ImConversationMembersService.java
+7
-1
common/src/main/java/com/wecloud/im/service/ImConversationService.java
+1
-0
common/src/main/java/com/wecloud/im/service/impl/ImConversationMembersServiceImpl.java
+0
-0
common/src/main/java/com/wecloud/im/service/impl/ImConversationServiceImpl.java
+45
-49
common/src/main/java/com/wecloud/im/ws/enums/MsgTypeEnum.java
+2
-0
common/src/main/resources/mapper/ImConversationMapper.xml
+24
-0
common/src/main/resources/mapper/ImConversationMembersMapper.xml
+14
-0
config/src/main/resources/config/application-dev.yml
+1
-1
No files found.
README-zh.md
View file @
33ade855
...
...
@@ -22,7 +22,7 @@
##redis6(必须本地开启)
### docker安装redis
docker run -p 6379:6379 -d --restart=always
--name redis6 -v $PWD/dockerData/redis6:/data redis:6 --appendonly yes
docker run -p 6379:6379 -d --restart=always
--name redis6 redis:6.0 redis-server --appendonly yes --requirepass "123456"
##mysql5.7(如果本地不开,可以连上测试环境)
### docker 安装mysql
...
...
common/src/main/java/com/wecloud/im/controller/serverapi/ApiImConversationController.java
0 → 100644
View file @
33ade855
package
com
.
wecloud
.
im
.
controller
.
serverapi
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.ImConversationService
;
import
com.wecloud.im.vo.MyConversationListVo
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.controller.BaseController
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestHeader
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 会话表 控制器
*
* @author wei
* @since 2021-05-07
*/
@Slf4j
@RestController
@RequestMapping
(
"/server/conversation"
)
@Api
(
value
=
"会话表API"
,
tags
=
{
"会话表"
})
public
class
ApiImConversationController
extends
BaseController
{
@Autowired
private
ImConversationService
imConversationService
;
@Autowired
private
ImApplicationService
imApplicationService
;
/**
* 获取会话表详情
*/
@GetMapping
(
"/info"
)
@ApiOperation
(
value
=
"会话表详情"
)
public
ApiResult
<
MyConversationListVo
>
getImConversation
(
@RequestParam
(
"conversationId"
)
Long
conversationId
,
@RequestHeader
String
appkey
,
@RequestHeader
String
appSecret
)
throws
Exception
{
// 根据appKey从数据库查询密钥
ImApplication
imApplication
=
imApplicationService
.
getOneByAppKey
(
appkey
);
if
(
imApplication
==
null
)
{
return
ApiResult
.
result
(
ApiCode
.
FAIL
,
null
);
}
// 校验appkey 和appSecret
if
(!
imApplication
.
getAppSecret
().
equals
(
appSecret
))
{
return
ApiResult
.
result
(
ApiCode
.
FAIL
,
null
);
}
MyConversationListVo
imConversationQueryVo
=
imConversationService
.
getImConversationInfoByIdForServerApi
(
conversationId
);
return
ApiResult
.
ok
(
imConversationQueryVo
);
}
}
common/src/main/java/com/wecloud/im/controller/serverapi/ApiImConversationMembersController.java
View file @
33ade855
package
com
.
wecloud
.
im
.
controller
.
serverapi
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.param.ApiImConversationMembersInfoPageParam
;
import
com.wecloud.im.param.ApiImConversationMembersInfoQueryVo
;
import
com.wecloud.im.param.ApiImConversationMembersPageParam
;
import
com.wecloud.im.param.ApiImConversationMembersQueryVo
;
import
com.wecloud.im.param.add.ImConversationMemApiAdd
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.ImConversationMembersService
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.controller.BaseController
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.core.validator.groups.Add
;
import
io.geekidea.springbootplus.framework.log.annotation.OperationLog
;
import
io.geekidea.springbootplus.framework.log.enums.OperationLogType
;
import
io.swagger.annotations.Api
;
...
...
@@ -44,6 +49,28 @@ public class ApiImConversationMembersController extends BaseController {
/**
* 会话成员表分页列表
*/
@PostMapping
(
"/findInfoList"
)
@OperationLog
(
name
=
"rest-api-会话成员信息表分页列表"
,
type
=
OperationLogType
.
PAGE
)
@ApiOperation
(
value
=
"rest-api-会话成员信息表分页列表"
)
public
ApiResult
<
Paging
<
ApiImConversationMembersInfoQueryVo
>>
getApiImConversationMembersInfoList
(
@Validated
@RequestBody
ApiImConversationMembersInfoPageParam
apiImConversationMembersInfoPageParam
,
@RequestHeader
String
appkey
,
@RequestHeader
String
appSecret
)
{
// 根据appKey从数据库查询密钥
ImApplication
imApplication
=
imApplicationService
.
getOneByAppKey
(
appkey
);
if
(
imApplication
==
null
)
{
return
ApiResult
.
result
(
ApiCode
.
FAIL
,
null
);
}
// 校验appkey 和appSecret
if
(!
imApplication
.
getAppSecret
().
equals
(
appSecret
))
{
return
ApiResult
.
result
(
ApiCode
.
FAIL
,
null
);
}
return
imConversationMembersService
.
getApiImConversationMembersInfoList
(
apiImConversationMembersInfoPageParam
,
imApplication
);
}
/**
* 会话成员表分页列表
*/
@PostMapping
(
"/findList"
)
@OperationLog
(
name
=
"rest-api-会话成员表分页列表"
,
type
=
OperationLogType
.
PAGE
)
@ApiOperation
(
value
=
"rest-api-会话成员表分页列表"
)
...
...
@@ -64,16 +91,27 @@ public class ApiImConversationMembersController extends BaseController {
return
imConversationMembersService
.
getRestApiImConversationMembersList
(
apiImConversationMembersPageParam
,
imApplication
);
}
// /**
// * 添加会话成员表
// */
// @PostMapping("/add")
// @OperationLog(name = "添加会话成员表", type = OperationLogType.ADD)
// @ApiOperation(value = "添加会话成员表")
// public ApiResult<Boolean> addImConversationMembers(@Validated(Add.class) @RequestBody ImConversationMembers imConversationMembers) throws Exception {
// boolean flag = imConversationMembersService.saveImConversationMembers(imConversationMembers);
// return ApiResult.result(flag);
// }
/**
* 服务端api调用 将一名用户添加至会话: ${clientID}通过${type}加入会话 -1014
*/
@PostMapping
(
"/add"
)
@ApiOperation
(
value
=
"服务端api调用 将一名用户添加至会话:${clientID}通过${type}加入会话 -1014"
)
public
ApiResult
<
Boolean
>
addImConversationMembers
(
@Validated
(
Add
.
class
)
@RequestBody
ImConversationMemApiAdd
imConversationMemApiAdd
,
@RequestHeader
String
appkey
,
@RequestHeader
String
appSecret
)
throws
Exception
{
// 根据appKey从数据库查询密钥
ImApplication
imApplication
=
imApplicationService
.
getOneByAppKey
(
appkey
);
if
(
imApplication
==
null
)
{
return
ApiResult
.
result
(
ApiCode
.
FAIL
,
null
);
}
// 校验appkey 和appSecret
if
(!
imApplication
.
getAppSecret
().
equals
(
appSecret
))
{
return
ApiResult
.
result
(
ApiCode
.
FAIL
,
null
);
}
boolean
flag
=
imConversationMembersService
.
addImConversationMembersApi
(
imConversationMemApiAdd
,
imApplication
);
return
ApiResult
.
result
(
flag
);
}
//
// /**
// * 修改会话成员表
...
...
common/src/main/java/com/wecloud/im/mapper/ImConversationMapper.java
View file @
33ade855
...
...
@@ -50,6 +50,8 @@ public interface ImConversationMapper extends BaseMapper<ImConversation> {
MyConversationListVo
getImConversationAndMsgCountById
(
@Param
(
"clientId"
)
Long
clientId
,
@Param
(
"conversationId"
)
Long
conversationId
);
MyConversationListVo
getImConversationInfoByIdForServerApi
(
@Param
(
"conversationId"
)
Long
conversationId
);
/**
* 查询用户加入的所有会话
*
...
...
common/src/main/java/com/wecloud/im/mapper/ImConversationMembersMapper.java
View file @
33ade855
...
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.wecloud.im.entity.ImConversationMembers
;
import
com.wecloud.im.param.ApiImConversationMembersInfoQueryVo
;
import
com.wecloud.im.param.ApiImConversationMembersQueryVo
;
import
com.wecloud.im.param.ImConversationMembersPageParam
;
import
com.wecloud.im.param.ImConversationMembersQueryVo
;
...
...
@@ -34,6 +35,8 @@ public interface ImConversationMembersMapper extends BaseMapper<ImConversationMe
List
<
ApiImConversationMembersQueryVo
>
getRestApiImConversationMembersList
(
@Param
(
"conversationId"
)
Long
conversationId
);
IPage
<
ApiImConversationMembersInfoQueryVo
>
getApiImConversationMembersInfoList
(
@Param
(
"page"
)
Page
page
,
@Param
(
"conversationId"
)
Long
conversationId
);
List
<
ImConversationMemberListVo
>
getImConversationMembersList
(
@Param
(
"conversationId"
)
Long
conversationId
);
...
...
common/src/main/java/com/wecloud/im/netty/core/NettyChannelInitializer.java
View file @
33ade855
...
...
@@ -44,7 +44,7 @@ public class NettyChannelInitializer extends ChannelInitializer<SocketChannel> {
* allIdleTime—状态为IdleState的IdleStateEvent。在一定时间内不读不写会触发ALL_IDLE。指定0禁用。
* unit—readerIdleTime、writeIdleTime和allIdleTime的时间单位
*/
pipeline
.
addLast
(
new
IdleStateHandler
(
35
,
0
,
0
,
TimeUnit
.
SECONDS
));
pipeline
.
addLast
(
new
IdleStateHandler
(
150
,
0
,
0
,
TimeUnit
.
SECONDS
));
}
}
common/src/main/java/com/wecloud/im/netty/core/WsReadHandler.java
View file @
33ade855
...
...
@@ -114,8 +114,8 @@ public class WsReadHandler extends SimpleChannelInboundHandler<TextWebSocketFram
break
;
}
log
.
info
(
clientId
+
"超时事件:"
+
eventType
);
if
(
readIdleTimes
>=
5
)
{
log
.
info
(
clientId
+
".读空闲超过
5
次关闭连接"
);
if
(
readIdleTimes
>=
2
)
{
log
.
info
(
clientId
+
".读空闲超过
2
次关闭连接"
);
ctx
.
channel
().
close
();
}
}
...
...
common/src/main/java/com/wecloud/im/param/ApiImConversationMembersInfoPageParam.java
0 → 100644
View file @
33ade855
package
com
.
wecloud
.
im
.
param
;
import
io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* <pre>
* 会话成员表 分页参数对象
* </pre>
*
* @author wei
* @date 2021-05-07
*/
@Data
@Accessors
(
chain
=
true
)
@ApiModel
(
value
=
"ApiImConversationMembersInfoPageParam"
)
public
class
ApiImConversationMembersInfoPageParam
extends
BasePageOrderParam
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"会话表id"
,
required
=
true
)
private
Long
conversationId
;
}
common/src/main/java/com/wecloud/im/param/ApiImConversationMembersInfoQueryVo.java
0 → 100644
View file @
33ade855
package
com
.
wecloud
.
im
.
param
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
/**
* <pre>
* 会话成员信息表 查询结果对象
* </pre>
*
* @author wei
* @date 2021-05-07
*/
@Data
@Accessors
(
chain
=
true
)
@ApiModel
(
value
=
"ApiImConversationMembersInfoQueryVo"
)
public
class
ApiImConversationMembersInfoQueryVo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"会话中client的备注名"
)
private
String
clientRemarkName
;
@ApiModelProperty
(
"头像"
)
private
String
headPortrait
;
@ApiModelProperty
(
"主昵称"
)
private
String
nickname
;
@ApiModelProperty
(
"clientId"
)
private
String
clientId
;
}
\ No newline at end of file
common/src/main/java/com/wecloud/im/param/add/ImConversationMemApiAdd.java
0 → 100644
View file @
33ade855
package
com
.
wecloud
.
im
.
param
.
add
;
import
io.geekidea.springbootplus.framework.common.entity.BaseEntity
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
/**
* api添加会话成员
*
* @author wei
* @since 2022年05月16日14:13:46
*/
@Data
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
@ApiModel
(
value
=
"ImConversationMemAttrApiAdd"
)
public
class
ImConversationMemApiAdd
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"会话表id"
,
required
=
true
)
private
Long
conversationId
;
@ApiModelProperty
(
"操作者client ID,可为空"
)
private
String
operator
=
""
;
@ApiModelProperty
(
value
=
"被操作的client ID"
,
required
=
true
)
private
String
passivityOperator
;
@ApiModelProperty
(
"加入的类型, link或qrCode等"
)
private
String
joinType
=
""
;
}
common/src/main/java/com/wecloud/im/service/ImConversationMembersService.java
View file @
33ade855
...
...
@@ -2,12 +2,15 @@ package com.wecloud.im.service;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImConversationMembers
;
import
com.wecloud.im.param.ApiImConversationMembersInfoPageParam
;
import
com.wecloud.im.param.ApiImConversationMembersInfoQueryVo
;
import
com.wecloud.im.param.ApiImConversationMembersPageParam
;
import
com.wecloud.im.param.ApiImConversationMembersQueryVo
;
import
com.wecloud.im.param.ImConvMemeClientRemarkNameParam
;
import
com.wecloud.im.param.ImConversationMembersListParam
;
import
com.wecloud.im.param.ImConversationMembersPageParam
;
import
com.wecloud.im.param.ImConversationMembersQueryVo
;
import
com.wecloud.im.param.add.ImConversationMemApiAdd
;
import
com.wecloud.im.param.add.ImConversationMemAttrUpdate
;
import
com.wecloud.im.vo.ImConversationMemberListVo
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
...
...
@@ -34,10 +37,10 @@ public interface ImConversationMembersService extends BaseService<ImConversation
*/
ApiResult
<
List
<
ApiImConversationMembersQueryVo
>>
getRestApiImConversationMembersList
(
ApiImConversationMembersPageParam
apiImConversationMembersPageParam
,
ImApplication
imApplication
);
ApiResult
<
Paging
<
ApiImConversationMembersInfoQueryVo
>>
getApiImConversationMembersInfoList
(
ApiImConversationMembersInfoPageParam
apiImConversationMembersInfoPageParam
,
ImApplication
imApplication
);
ApiResult
<
Boolean
>
saveOrUpdateClientRemarkName
(
ImConvMemeClientRemarkNameParam
imConvMemeClientRemarkNameParam
);
/**
* 会话成员表分页列表
*
...
...
@@ -59,6 +62,9 @@ public interface ImConversationMembersService extends BaseService<ImConversation
*/
boolean
saveImConversationMembers
(
ImConversationMembers
imConversationMembers
)
throws
Exception
;
boolean
addImConversationMembersApi
(
ImConversationMemApiAdd
imConversationMemApiAdd
,
ImApplication
imApplication
);
/**
* 修改
*
...
...
common/src/main/java/com/wecloud/im/service/ImConversationService.java
View file @
33ade855
...
...
@@ -107,6 +107,7 @@ public interface ImConversationService extends BaseService<ImConversation> {
MyConversationListVo
getImConversationInfoById
(
Long
id
)
throws
Exception
;
MyConversationListVo
getImConversationInfoByIdForServerApi
(
Long
id
)
throws
Exception
;
/**
* 获取分页对象
...
...
common/src/main/java/com/wecloud/im/service/impl/ImConversationMembersServiceImpl.java
View file @
33ade855
This diff is collapsed.
Click to expand it.
common/src/main/java/com/wecloud/im/service/impl/ImConversationServiceImpl.java
View file @
33ade855
...
...
@@ -229,11 +229,20 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
// shiro线程中获取当前token
JwtToken
curentJwtToken
=
JwtUtil
.
getCurentJwtToken
();
// 根据appKey查询application
ImApplication
imApplication
=
imApplicationService
.
getOneByAppKey
(
curentJwtToken
.
getAppKey
());
ImClient
imClientSender
=
imClientService
.
getCurentClient
();
if
(
addMember
(
imClientToConversation
,
curentJwtToken
.
getAppKey
(),
imClientSender
))
{
return
ApiResult
.
fail
();
}
return
ApiResult
.
ok
();
}
private
boolean
addMember
(
ImClientToConversation
imClientToConversation
,
String
appKey
,
ImClient
imClientSender
)
{
// 根据appKey查询application
ImApplication
imApplication
=
imApplicationService
.
getOneByAppKey
(
appKey
);
// 查询该会话所有成员
List
<
ImConversationMembers
>
membersList
=
imConversationMembersService
.
list
(
new
QueryWrapper
<
ImConversationMembers
>().
lambda
()
...
...
@@ -244,7 +253,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
);
if
(
membersList
.
isEmpty
())
{
log
.
info
(
"membersList为空,toConversationId:"
+
imClientToConversation
.
getConversationId
());
return
ApiResult
.
fail
()
;
return
true
;
}
// 将他人添加到会话
...
...
@@ -305,6 +314,14 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
imMessage
.
setFkConversationId
(
imClientToConversation
.
getConversationId
());
boolean
save
=
imMessageService
.
save
(
imMessage
);
//推送到被拉入方
Long
fkConversationId
=
imClientToConversation
.
getConversationId
();
String
clientId
=
imClientSender
.
getClientId
();
String
toClientId
=
client2
.
getClientId
();
String
imApplicationAppKey
=
imApplication
.
getAppKey
();
sendEventMsg
(
messageId
,
(
HashMap
)
content
,
fkConversationId
,
clientId
,
toClientId
,
imApplicationAppKey
);
// 遍历发送
for
(
ImConversationMembers
conversationMembers
:
membersList
)
{
...
...
@@ -317,13 +334,23 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
continue
;
}
sendEventMsg
(
messageId
,
(
HashMap
)
content
,
conversationMembers
.
getFkConversationId
(),
imClientSender
.
getClientId
(),
imClientReceiver
.
getClientId
(),
imApplication
.
getAppKey
());
}
}
return
false
;
}
private
void
sendEventMsg
(
long
messageId
,
HashMap
content
,
Long
fkConversationId
,
String
clientId
,
String
toClientId
,
String
imApplicationAppKey
)
{
// 封装响应的实体
ImMessageOnlineSend
imMessageOnlineSend
=
new
ImMessageOnlineSend
();
imMessageOnlineSend
.
setMsgId
(
messageId
);
imMessageOnlineSend
.
setSender
(
imClientSender
.
getClientId
()
);
imMessageOnlineSend
.
setContent
((
HashMap
)
content
);
imMessageOnlineSend
.
setConversationId
(
conversationMembers
.
getFkConversationId
()
);
imMessageOnlineSend
.
setSender
(
clientId
);
imMessageOnlineSend
.
setContent
(
content
);
imMessageOnlineSend
.
setConversationId
(
fkConversationId
);
imMessageOnlineSend
.
setWithdraw
(
Boolean
.
FALSE
);
imMessageOnlineSend
.
setEvent
(
Boolean
.
TRUE
);
...
...
@@ -335,13 +362,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
responseModel
.
setMsg
(
result
.
getMessage
());
responseModel
.
setData
(
imMessageOnlineSend
);
responseModel
.
setReqId
(
null
);
writeDataService
.
write
(
responseModel
,
imApplication
.
getAppKey
(),
imClientReceiver
.
getClientId
());
}
}
return
ApiResult
.
ok
();
writeDataService
.
write
(
responseModel
,
imApplicationAppKey
,
toClientId
);
}
@Override
...
...
@@ -434,24 +455,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
}
// 封装响应的实体
ImMessageOnlineSend
imMessageOnlineSend
=
new
ImMessageOnlineSend
();
imMessageOnlineSend
.
setMsgId
(
messageId
);
imMessageOnlineSend
.
setSender
(
imClientSender
.
getClientId
());
imMessageOnlineSend
.
setContent
((
HashMap
)
content
);
imMessageOnlineSend
.
setConversationId
(
conversationMembers
.
getFkConversationId
());
imMessageOnlineSend
.
setWithdraw
(
Boolean
.
FALSE
);
imMessageOnlineSend
.
setEvent
(
Boolean
.
TRUE
);
// 向接收方推送
WsResponseModel
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponseModel
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
CONVERSATION_EVENT_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
responseModel
.
setMsg
(
result
.
getMessage
());
responseModel
.
setData
(
imMessageOnlineSend
);
responseModel
.
setReqId
(
null
);
writeDataService
.
write
(
responseModel
,
imApplication
.
getAppKey
(),
imClientReceiver
.
getClientId
());
sendEventMsg
(
messageId
,
(
HashMap
)
content
,
conversationMembers
.
getFkConversationId
(),
imClientSender
.
getClientId
(),
imClientReceiver
.
getClientId
(),
imApplication
.
getAppKey
());
}
...
...
@@ -546,24 +550,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
}
// 封装响应的实体
ImMessageOnlineSend
imMessageOnlineSend
=
new
ImMessageOnlineSend
();
imMessageOnlineSend
.
setMsgId
(
messageId
);
imMessageOnlineSend
.
setSender
(
imClientSender
.
getClientId
());
imMessageOnlineSend
.
setContent
((
HashMap
)
content
);
imMessageOnlineSend
.
setConversationId
(
conversationMembers
.
getFkConversationId
());
imMessageOnlineSend
.
setWithdraw
(
Boolean
.
FALSE
);
imMessageOnlineSend
.
setEvent
(
Boolean
.
TRUE
);
// 向接收方推送
WsResponseModel
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponseModel
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
CONVERSATION_EVENT_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
responseModel
.
setMsg
(
result
.
getMessage
());
responseModel
.
setData
(
imMessageOnlineSend
);
responseModel
.
setReqId
(
null
);
writeDataService
.
write
(
responseModel
,
imApplication
.
getAppKey
(),
imClientReceiver
.
getClientId
());
sendEventMsg
(
messageId
,
(
HashMap
)
content
,
conversationMembers
.
getFkConversationId
(),
imClientSender
.
getClientId
(),
imClientReceiver
.
getClientId
(),
imApplication
.
getAppKey
());
}
...
...
@@ -808,6 +795,15 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
}
@Override
public
MyConversationListVo
getImConversationInfoByIdForServerApi
(
Long
id
)
throws
Exception
{
MyConversationListVo
imConversationAndMsgCountById
=
imConversationMapper
.
getImConversationInfoByIdForServerApi
(
id
);
JsonMapper
jsonMapper
=
new
JsonMapper
();
HashMap
attributess
=
jsonMapper
.
readValue
(
imConversationAndMsgCountById
.
getAttribute
(),
HashMap
.
class
);
imConversationAndMsgCountById
.
setAttributes
(
attributess
);
return
imConversationAndMsgCountById
;
}
@Override
public
Paging
<
ImConversationQueryVo
>
getImConversationPageList
(
ImConversationPageParam
imConversationPageParam
)
throws
Exception
{
Page
<
ImConversationQueryVo
>
page
=
new
PageInfo
<>(
imConversationPageParam
,
OrderItem
.
desc
(
getLambdaColumn
(
ImConversation:
:
getCreateTime
)));
IPage
<
ImConversationQueryVo
>
iPage
=
imConversationMapper
.
getImConversationPageList
(
page
,
imConversationPageParam
);
...
...
common/src/main/java/com/wecloud/im/ws/enums/MsgTypeEnum.java
View file @
33ade855
...
...
@@ -29,6 +29,8 @@ public enum MsgTypeEnum {
// 成为新群主 -1013
CONVERSATION_NEW_CREATOR
(-
1013
),
// 服务端api调用 将一名用户添加至会话: ${clientID}通过${type}加入会话 -1014
SERVER_INVITE_CLIENT_JOIN_CONVERSATION
(-
1014
),
;
private
final
int
uriCode
;
...
...
common/src/main/resources/mapper/ImConversationMapper.xml
View file @
33ade855
...
...
@@ -136,5 +136,29 @@
GROUP BY imConversation.id
</select>
<select
id=
"getImConversationInfoByIdForServerApi"
resultType=
"com.wecloud.im.vo.MyConversationListVo"
>
SELECT imConversation.id,
imConversation.create_time,
imConversation.`name`,
imConversation.attributes AS attribute,
imConversation.system,
im_client.client_id AS creator,
(
SELECT GROUP_CONCAT(im_client.client_id)
FROM im_conversation_members AS im_conversation_members
INNER JOIN im_client AS im_client ON im_client.id = im_conversation_members.fk_client_id
WHERE im_conversation_members.fk_conversation_id = imConversation.id
) AS members,
(SELECT COUNT(*)
FROM im_conversation_members
WHERE fk_conversation_id = imConversation.id) AS memberCount
FROM im_conversation AS imConversation
INNER JOIN im_client AS im_client ON im_client.id = imConversation.creator
WHERE imConversation.id = #{conversationId}
GROUP BY imConversation.id
</select>
</mapper>
common/src/main/resources/mapper/ImConversationMembersMapper.xml
View file @
33ade855
...
...
@@ -42,5 +42,19 @@
WHERE im_conversation_members.fk_conversation_id = #{conversationId}
</select>
<select
id=
"getApiImConversationMembersInfoList"
resultType=
"com.wecloud.im.param.ApiImConversationMembersInfoQueryVo"
>
SELECT im_client.client_id as clientId,
im_conversation_members.client_remark_name as clientRemarkName,
im_client.head_portrait as headPortrait,
im_client.nickname,
im_conversation_members.attributes AS memberAttributes,
im_client.attributes AS clientAttributes
FROM im_conversation_members AS im_conversation_members
INNER JOIN im_client AS im_client ON im_client.id = im_conversation_members.fk_client_id
WHERE im_conversation_members.fk_conversation_id = #{conversationId}
</select>
</mapper>
config/src/main/resources/config/application-dev.yml
View file @
33ade855
...
...
@@ -28,7 +28,7 @@ spring:
redis
:
database
:
0
host
:
localhost
password
:
password
:
123456
port
:
6379
cloud
:
...
...
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