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
31427855
Commit
31427855
authored
Feb 15, 2022
by
Future
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
已读接口、读者接口新增
parent
4df4aa53
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
518 additions
and
94 deletions
+518
-94
core/src/main/java/com/wecloud/im/action/NormalChatAction.java
+0
-2
core/src/main/java/com/wecloud/im/controller/ImClientController.java
+28
-0
core/src/main/java/com/wecloud/im/controller/ImInboxController.java
+12
-3
core/src/main/java/com/wecloud/im/controller/ImMessageController.java
+13
-0
core/src/main/java/com/wecloud/im/enums/RelationEnum.java
+45
-0
core/src/main/java/com/wecloud/im/friend/entity/ImFriend.java
+4
-0
core/src/main/java/com/wecloud/im/friend/service/FriendEventSender.java
+1
-5
core/src/main/java/com/wecloud/im/mapper/ImMessageMapper.java
+11
-0
core/src/main/java/com/wecloud/im/param/ClientInfoParam.java
+23
-0
core/src/main/java/com/wecloud/im/param/GetReadersParam.java
+27
-0
core/src/main/java/com/wecloud/im/param/MsgReadStatusUpdateParam.java
+4
-1
core/src/main/java/com/wecloud/im/service/ImClientService.java
+17
-0
core/src/main/java/com/wecloud/im/service/ImInboxService.java
+9
-2
core/src/main/java/com/wecloud/im/service/ImMessageService.java
+9
-35
core/src/main/java/com/wecloud/im/service/impl/ImClientBlacklistServiceImpl.java
+19
-12
core/src/main/java/com/wecloud/im/service/impl/ImClientServiceImpl.java
+55
-0
core/src/main/java/com/wecloud/im/service/impl/ImInboxServiceImpl.java
+32
-7
core/src/main/java/com/wecloud/im/service/impl/ImMessageServiceImpl.java
+38
-26
core/src/main/java/com/wecloud/im/vo/ClientInfoVo.java
+50
-0
core/src/main/java/com/wecloud/im/vo/GetInfoListVo.java
+2
-0
core/src/main/java/com/wecloud/im/vo/MyInfoVo.java
+40
-0
core/src/main/java/com/wecloud/im/vo/ReaderList.java
+29
-0
core/src/main/java/com/wecloud/im/vo/ReaderVo.java
+37
-0
core/src/main/resources/mapper/ImClientMapper.xml
+1
-0
core/src/main/resources/mapper/ImInboxMapper.xml
+0
-1
core/src/main/resources/mapper/ImMessageMapper.xml
+12
-0
No files found.
core/src/main/java/com/wecloud/im/action/NormalChatAction.java
View file @
31427855
...
@@ -61,8 +61,6 @@ public class NormalChatAction {
...
@@ -61,8 +61,6 @@ public class NormalChatAction {
@Autowired
@Autowired
private
ImConversationService
imConversationService
;
private
ImConversationService
imConversationService
;
@Autowired
@Autowired
private
AsyncPush
systemPush
;
@Autowired
private
ImConversationMembersService
imConversationMembersService
;
private
ImConversationMembersService
imConversationMembersService
;
@Autowired
@Autowired
private
ImMessageService
imMessageService
;
private
ImMessageService
imMessageService
;
...
...
core/src/main/java/com/wecloud/im/controller/ImClientController.java
View file @
31427855
...
@@ -2,6 +2,8 @@ package com.wecloud.im.controller;
...
@@ -2,6 +2,8 @@ package com.wecloud.im.controller;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.friend.param.ImFriendApplyDto
;
import
com.wecloud.im.param.ClientInfoParam
;
import
com.wecloud.im.param.GetClientInfoParam
;
import
com.wecloud.im.param.GetClientInfoParam
;
import
com.wecloud.im.param.GetOnlineStatusParam
;
import
com.wecloud.im.param.GetOnlineStatusParam
;
import
com.wecloud.im.param.add.ImClientDeviceInfoAdd
;
import
com.wecloud.im.param.add.ImClientDeviceInfoAdd
;
...
@@ -10,9 +12,12 @@ import com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate;
...
@@ -10,9 +12,12 @@ import com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate;
import
com.wecloud.im.param.add.ImClientNicknameAdd
;
import
com.wecloud.im.param.add.ImClientNicknameAdd
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.vo.ClientInfoVo
;
import
com.wecloud.im.vo.GetInfoListVo
;
import
com.wecloud.im.vo.GetInfoListVo
;
import
com.wecloud.im.vo.ImOnlineStatusVo
;
import
com.wecloud.im.vo.ImOnlineStatusVo
;
import
com.wecloud.im.vo.MyInfoVo
;
import
com.wecloud.im.ws.cache.UserStateCacheManager
;
import
com.wecloud.im.ws.cache.UserStateCacheManager
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.controller.BaseController
;
import
io.geekidea.springbootplus.framework.common.controller.BaseController
;
import
io.geekidea.springbootplus.framework.core.validator.groups.Add
;
import
io.geekidea.springbootplus.framework.core.validator.groups.Add
;
...
@@ -52,6 +57,16 @@ public class ImClientController extends BaseController {
...
@@ -52,6 +57,16 @@ public class ImClientController extends BaseController {
@Autowired
@Autowired
private
ImApplicationService
imApplicationService
;
private
ImApplicationService
imApplicationService
;
/**
* 查询我的信息
*/
@PostMapping
(
"/myInfo"
)
@ApiOperation
(
value
=
"查询我的信息"
)
public
ApiResult
<
MyInfoVo
>
myInfo
()
{
MyInfoVo
myInfo
=
imClientService
.
getMyInfo
();
return
ApiResult
.
ok
(
myInfo
);
}
@PostMapping
(
"/infoList"
)
@PostMapping
(
"/infoList"
)
@ApiOperation
(
value
=
"根据id获取Client的头像昵称"
)
@ApiOperation
(
value
=
"根据id获取Client的头像昵称"
)
...
@@ -59,6 +74,19 @@ public class ImClientController extends BaseController {
...
@@ -59,6 +74,19 @@ public class ImClientController extends BaseController {
return
imClientService
.
getInfoList
(
getClientInfoParam
);
return
imClientService
.
getInfoList
(
getClientInfoParam
);
}
}
/**
* 查询用户信息 用户可能是好友、陌生人、被拉黑名单的人
*/
@PostMapping
(
"/clientInfo"
)
@ApiOperation
(
value
=
"查询用户信息 用户可能是好友、陌生人、被拉黑名单的人"
)
public
ApiResult
<
ClientInfoVo
>
getClientInfo
(
@RequestBody
ClientInfoParam
param
)
{
if
(
param
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
}
ClientInfoVo
clientInfoVo
=
imClientService
.
getClientInfo
(
param
);
return
ApiResult
.
ok
(
clientInfoVo
);
}
/**
/**
* 添加或修改推送设备信息
* 添加或修改推送设备信息
...
...
core/src/main/java/com/wecloud/im/controller/ImInboxController.java
View file @
31427855
package
com
.
wecloud
.
im
.
controller
;
package
com
.
wecloud
.
im
.
controller
;
import
com.wecloud.im.param.
ImMsgReadStatusUpdate
;
import
com.wecloud.im.param.
MsgReadStatusUpdateParam
;
import
com.wecloud.im.param.ImMsgReceivedStatusUpdate
;
import
com.wecloud.im.param.ImMsgReceivedStatusUpdate
;
import
com.wecloud.im.service.ImInboxService
;
import
com.wecloud.im.service.ImInboxService
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
...
@@ -44,8 +44,17 @@ public class ImInboxController extends BaseController {
...
@@ -44,8 +44,17 @@ public class ImInboxController extends BaseController {
*/
*/
@PostMapping
(
"/msgReadUpdate"
)
@PostMapping
(
"/msgReadUpdate"
)
@ApiOperation
(
value
=
"消息修改为已读状态"
)
@ApiOperation
(
value
=
"消息修改为已读状态"
)
public
ApiResult
<
Boolean
>
updateInMsgReadUpdate
(
@RequestBody
ImMsgReadStatusUpdate
imMsgReadStatusUpdate
)
throws
Exception
{
public
ApiResult
<
Boolean
>
updateInMsgReadUpdate
(
@RequestBody
MsgReadStatusUpdateParam
msgReadStatusUpdateParam
)
throws
Exception
{
return
imInboxService
.
updateImMsgRead
(
imMsgReadStatusUpdate
);
return
imInboxService
.
updateImMsgRead
(
msgReadStatusUpdateParam
);
}
/**
* 整个会话消息修改为已读状态
*/
@PostMapping
(
"/updateMsgReadStatusByConversation"
)
@ApiOperation
(
value
=
"整个会话消息修改为已读状态"
)
public
ApiResult
<
Boolean
>
updateMsgReadStatusByConversation
(
@RequestBody
MsgReadStatusUpdateParam
msgReadStatusUpdateParam
)
throws
Exception
{
return
ApiResult
.
ok
(
imInboxService
.
updateMsgReadStatusByConversation
(
msgReadStatusUpdateParam
));
}
}
//
//
...
...
core/src/main/java/com/wecloud/im/controller/ImMessageController.java
View file @
31427855
package
com
.
wecloud
.
im
.
controller
;
package
com
.
wecloud
.
im
.
controller
;
import
com.wecloud.im.param.GetReadersParam
;
import
com.wecloud.im.param.ImHistoryMessagePageParam
;
import
com.wecloud.im.param.ImHistoryMessagePageParam
;
import
com.wecloud.im.param.add.ImMsgRecall
;
import
com.wecloud.im.param.add.ImMsgRecall
;
import
com.wecloud.im.param.add.ImMsgUpdate
;
import
com.wecloud.im.param.add.ImMsgUpdate
;
import
com.wecloud.im.service.ImMessageService
;
import
com.wecloud.im.service.ImMessageService
;
import
com.wecloud.im.vo.ImMessageOfflineListVo
;
import
com.wecloud.im.vo.ImMessageOfflineListVo
;
import
com.wecloud.im.vo.OfflineMsgDto
;
import
com.wecloud.im.vo.OfflineMsgDto
;
import
com.wecloud.im.vo.ReaderList
;
import
com.wecloud.im.vo.ReaderVo
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.controller.BaseController
;
import
io.geekidea.springbootplus.framework.common.controller.BaseController
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
...
@@ -77,6 +80,16 @@ public class ImMessageController extends BaseController {
...
@@ -77,6 +80,16 @@ public class ImMessageController extends BaseController {
return
ApiResult
.
ok
(
paging
);
return
ApiResult
.
ok
(
paging
);
}
}
/**
* 查询某个消息已读client列表和未读client
*/
@PostMapping
(
"/getReaders"
)
@ApiOperation
(
value
=
"查询某个消息已读client列表和未读client"
)
public
ApiResult
<
ReaderList
>
getReaders
(
@Validated
@RequestBody
GetReadersParam
param
)
{
ReaderList
readerList
=
imMessageService
.
getReaders
(
param
);
return
ApiResult
.
ok
(
readerList
);
}
//
//
// /**
// /**
// * 添加消息存储表
// * 添加消息存储表
...
...
core/src/main/java/com/wecloud/im/enums/RelationEnum.java
0 → 100644
View file @
31427855
package
com
.
wecloud
.
im
.
enums
;
import
io.geekidea.springbootplus.framework.common.enums.BaseEnum
;
/**
* @Author wenzhida
* @Date 2022/2/15 13:57
* @Description 与client关系枚举
*/
public
enum
RelationEnum
implements
BaseEnum
{
/**
* 1-陌生人
*/
STRANGER
(
1
,
"陌生人"
),
/**
* 2-好友
*/
FRIEND
(
2
,
"好友"
),
/**
* 3-被我拉黑
*/
BE_BLACK
(
3
,
"被我拉黑"
);
RelationEnum
(
int
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
private
final
Integer
code
;
private
final
String
desc
;
@Override
public
Integer
getCode
()
{
return
this
.
code
;
}
@Override
public
String
getDesc
()
{
return
this
.
desc
;
}
}
core/src/main/java/com/wecloud/im/friend/entity/ImFriend.java
View file @
31427855
...
@@ -46,6 +46,10 @@ public class ImFriend extends BaseEntity {
...
@@ -46,6 +46,10 @@ public class ImFriend extends BaseEntity {
@ApiModelProperty
(
"好友请求说明"
)
@ApiModelProperty
(
"好友请求说明"
)
private
String
requestRemark
;
private
String
requestRemark
;
/**
* 好友关系状态
* @see com.wecloud.im.enums.FriendStateEnum
*/
@ApiModelProperty
(
"好友关系状态"
)
@ApiModelProperty
(
"好友关系状态"
)
private
Integer
state
;
private
Integer
state
;
...
...
core/src/main/java/com/wecloud/im/friend/service/FriendEventSender.java
View file @
31427855
...
@@ -10,7 +10,6 @@ import com.wecloud.im.service.ImApplicationService;
...
@@ -10,7 +10,6 @@ import com.wecloud.im.service.ImApplicationService;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.model.request.PushVO
;
import
com.wecloud.im.ws.model.request.PushVO
;
import
com.wecloud.im.ws.sender.AsyncPush
;
import
com.wecloud.im.ws.sender.ChannelSender
;
import
com.wecloud.im.ws.sender.ChannelSender
;
import
com.wecloud.pushserver.client.model.constant.MqConstant
;
import
com.wecloud.pushserver.client.model.constant.MqConstant
;
import
com.wecloud.pushserver.client.model.dto.PushDTO
;
import
com.wecloud.pushserver.client.model.dto.PushDTO
;
...
@@ -31,9 +30,6 @@ public class FriendEventSender {
...
@@ -31,9 +30,6 @@ public class FriendEventSender {
private
ChannelSender
channelSender
;
private
ChannelSender
channelSender
;
@Autowired
@Autowired
private
AsyncPush
systemPush
;
@Autowired
private
ImApplicationService
imApplicationService
;
private
ImApplicationService
imApplicationService
;
@Autowired
@Autowired
...
@@ -96,7 +92,7 @@ public class FriendEventSender {
...
@@ -96,7 +92,7 @@ public class FriendEventSender {
PushVO
pushVO
=
new
PushVO
();
PushVO
pushVO
=
new
PushVO
();
pushVO
.
setTitle
(
FRIEND_APPROVE_TITLE
);
pushVO
.
setTitle
(
FRIEND_APPROVE_TITLE
);
pushVO
.
setSubTitle
(
isAgree
?
FRIEND_APPROVE_TITLE_AGREE
:
FRIEND_APPROVE_TITLE_REJECT
);
pushVO
.
setSubTitle
(
isAgree
?
FRIEND_APPROVE_TITLE_AGREE
:
FRIEND_APPROVE_TITLE_REJECT
);
PushDTO
pushDTO
=
mqSender
.
buildPushDto
(
pushVO
,
receiveClient
,
app
);
PushDTO
pushDTO
=
mqSender
.
buildPushDto
(
pushVO
,
receiveClient
,
app
);
mqSender
.
sendAsync
(
MqConstant
.
Topic
.
IM_MSG_TOPIC
,
MqConstant
.
Tag
.
IM_MSG_TAG
,
pushDTO
);
mqSender
.
sendAsync
(
MqConstant
.
Topic
.
IM_MSG_TOPIC
,
MqConstant
.
Tag
.
IM_MSG_TAG
,
pushDTO
);
}
}
...
...
core/src/main/java/com/wecloud/im/mapper/ImMessageMapper.java
View file @
31427855
...
@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
...
@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.wecloud.im.entity.ImMessage
;
import
com.wecloud.im.entity.ImMessage
;
import
com.wecloud.im.param.GetReadersParam
;
import
com.wecloud.im.param.ImHistoryMessagePageParam
;
import
com.wecloud.im.param.ImHistoryMessagePageParam
;
import
com.wecloud.im.param.ImMessagePageParam
;
import
com.wecloud.im.param.ImMessagePageParam
;
import
com.wecloud.im.param.ImMessageQueryVo
;
import
com.wecloud.im.param.ImMessageQueryVo
;
import
com.wecloud.im.vo.OfflineMsgDto
;
import
com.wecloud.im.vo.OfflineMsgDto
;
import
com.wecloud.im.vo.ReaderVo
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
...
@@ -75,4 +77,13 @@ public interface ImMessageMapper extends BaseMapper<ImMessage> {
...
@@ -75,4 +77,13 @@ public interface ImMessageMapper extends BaseMapper<ImMessage> {
* @return
* @return
*/
*/
OfflineMsgDto
getLastMsgByConversationId
(
@Param
(
"conversationId"
)
Long
conversationId
);
OfflineMsgDto
getLastMsgByConversationId
(
@Param
(
"conversationId"
)
Long
conversationId
);
/**
* 获取一条消息已读人员和未读人员
* @param currentClientId
* @param param
* @return
*/
List
<
ReaderVo
>
getReaders
(
@Param
(
"currentClientId"
)
Long
currentClientId
,
@Param
(
"param"
)
GetReadersParam
param
);
}
}
core/src/main/java/com/wecloud/im/param/ClientInfoParam.java
0 → 100644
View file @
31427855
package
com
.
wecloud
.
im
.
param
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @Author wenzhida
* @Date 2022/2/15 11:14
* @Description 获取client信息入参
*/
@Data
public
class
ClientInfoParam
implements
Serializable
{
private
static
final
long
serialVersionUID
=
4061204250751318983L
;
@ApiModelProperty
(
"会话id"
)
private
Long
conversationId
;
@ApiModelProperty
(
"clientId"
)
private
String
clientId
;
}
core/src/main/java/com/wecloud/im/param/GetReadersParam.java
0 → 100644
View file @
31427855
package
com
.
wecloud
.
im
.
param
;
import
io.geekidea.springbootplus.framework.common.entity.BaseEntity
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
/**
* @Author wenzhida
* @Date 2022/2/15 20:45
* @Description 获取某条消息已读人员入参
*/
@Getter
@Setter
@ApiModel
(
value
=
"获取某条消息已读人员入参"
)
public
class
GetReadersParam
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
-
2415497107453497807L
;
@ApiModelProperty
(
"会话id"
)
private
Long
conversationId
;
@ApiModelProperty
(
"消息id"
)
private
Long
msgId
;
}
core/src/main/java/com/wecloud/im/param/
ImMsgReadStatusUpdate
.java
→
core/src/main/java/com/wecloud/im/param/
MsgReadStatusUpdateParam
.java
View file @
31427855
...
@@ -19,9 +19,12 @@ import java.util.List;
...
@@ -19,9 +19,12 @@ import java.util.List;
@Accessors
(
chain
=
true
)
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
@ApiModel
(
value
=
"ImMsgReadStatusUpdate"
)
@ApiModel
(
value
=
"ImMsgReadStatusUpdate"
)
public
class
ImMsgReadStatusUpdate
extends
BaseEntity
{
public
class
MsgReadStatusUpdateParam
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"会话id"
)
private
Long
conversationId
;
@ApiModelProperty
(
"消息id数组,可以传入单个或多个, 如接收离线消息列表时可以批量修改 则传入多个"
)
@ApiModelProperty
(
"消息id数组,可以传入单个或多个, 如接收离线消息列表时可以批量修改 则传入多个"
)
private
List
<
Long
>
msgIds
;
private
List
<
Long
>
msgIds
;
...
...
core/src/main/java/com/wecloud/im/service/ImClientService.java
View file @
31427855
package
com
.
wecloud
.
im
.
service
;
package
com
.
wecloud
.
im
.
service
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.param.ClientInfoParam
;
import
com.wecloud.im.param.GetClientInfoParam
;
import
com.wecloud.im.param.GetClientInfoParam
;
import
com.wecloud.im.param.ImClientPageParam
;
import
com.wecloud.im.param.ImClientPageParam
;
import
com.wecloud.im.param.ImClientQueryVo
;
import
com.wecloud.im.param.ImClientQueryVo
;
...
@@ -9,10 +10,13 @@ import com.wecloud.im.param.add.ImClientDeviceInfoAdd;
...
@@ -9,10 +10,13 @@ import com.wecloud.im.param.add.ImClientDeviceInfoAdd;
import
com.wecloud.im.param.add.ImClientHeadPortraitAdd
;
import
com.wecloud.im.param.add.ImClientHeadPortraitAdd
;
import
com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate
;
import
com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate
;
import
com.wecloud.im.param.add.ImClientNicknameAdd
;
import
com.wecloud.im.param.add.ImClientNicknameAdd
;
import
com.wecloud.im.vo.ClientInfoVo
;
import
com.wecloud.im.vo.GetInfoListVo
;
import
com.wecloud.im.vo.GetInfoListVo
;
import
com.wecloud.im.vo.MyInfoVo
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.service.BaseService
;
import
io.geekidea.springbootplus.framework.common.service.BaseService
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
java.util.List
;
import
java.util.List
;
...
@@ -24,6 +28,12 @@ import java.util.List;
...
@@ -24,6 +28,12 @@ import java.util.List;
*/
*/
public
interface
ImClientService
extends
BaseService
<
ImClient
>
{
public
interface
ImClientService
extends
BaseService
<
ImClient
>
{
/**
* 查询我的信息
* @return
*/
MyInfoVo
getMyInfo
();
boolean
updateHeadPortrait
(
ImClientHeadPortraitAdd
imClientHeadPortraitAdd
)
throws
Exception
;
boolean
updateHeadPortrait
(
ImClientHeadPortraitAdd
imClientHeadPortraitAdd
)
throws
Exception
;
boolean
updateHeadAndNickname
(
ImClientHeadPortraitAndNicknameUpdate
imClientHeadPortraitAndNicknameUpdate
);
boolean
updateHeadAndNickname
(
ImClientHeadPortraitAndNicknameUpdate
imClientHeadPortraitAndNicknameUpdate
);
...
@@ -38,6 +48,13 @@ public interface ImClientService extends BaseService<ImClient> {
...
@@ -38,6 +48,13 @@ public interface ImClientService extends BaseService<ImClient> {
*/
*/
ApiResult
<
List
<
GetInfoListVo
>>
getInfoList
(
GetClientInfoParam
getClientInfoParam
)
throws
Exception
;
ApiResult
<
List
<
GetInfoListVo
>>
getInfoList
(
GetClientInfoParam
getClientInfoParam
)
throws
Exception
;
/**
* 获取群里成员信息
* @param param
* @return
*/
ClientInfoVo
getClientInfo
(
ClientInfoParam
param
);
boolean
updateNickname
(
ImClientNicknameAdd
imClientNicknameAdd
)
throws
Exception
;
boolean
updateNickname
(
ImClientNicknameAdd
imClientNicknameAdd
)
throws
Exception
;
...
...
core/src/main/java/com/wecloud/im/service/ImInboxService.java
View file @
31427855
...
@@ -2,7 +2,7 @@ package com.wecloud.im.service;
...
@@ -2,7 +2,7 @@ package com.wecloud.im.service;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.wecloud.im.entity.ImInbox
;
import
com.wecloud.im.entity.ImInbox
;
import
com.wecloud.im.param.
ImMsgReadStatusUpdate
;
import
com.wecloud.im.param.
MsgReadStatusUpdateParam
;
import
com.wecloud.im.param.ImMsgReceivedStatusUpdate
;
import
com.wecloud.im.param.ImMsgReceivedStatusUpdate
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.service.BaseService
;
import
io.geekidea.springbootplus.framework.common.service.BaseService
;
...
@@ -82,6 +82,13 @@ public interface ImInboxService extends BaseService<ImInbox> {
...
@@ -82,6 +82,13 @@ public interface ImInboxService extends BaseService<ImInbox> {
*
*
* @return
* @return
*/
*/
ApiResult
<
Boolean
>
updateImMsgRead
(
ImMsgReadStatusUpdate
imMsgReadStatusUpdate
)
throws
JsonProcessingException
;
ApiResult
<
Boolean
>
updateImMsgRead
(
MsgReadStatusUpdateParam
msgReadStatusUpdateParam
)
throws
JsonProcessingException
;
/**
* 整个会话消息修改为已读状态
* @param msgReadStatusUpdateParam
* @return
*/
Boolean
updateMsgReadStatusByConversation
(
MsgReadStatusUpdateParam
msgReadStatusUpdateParam
);
}
}
core/src/main/java/com/wecloud/im/service/ImMessageService.java
View file @
31427855
...
@@ -4,6 +4,7 @@ import com.wecloud.im.entity.ImApplication;
...
@@ -4,6 +4,7 @@ import com.wecloud.im.entity.ImApplication;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImMessage
;
import
com.wecloud.im.entity.ImMessage
;
import
com.wecloud.im.param.ChatContentVo
;
import
com.wecloud.im.param.ChatContentVo
;
import
com.wecloud.im.param.GetReadersParam
;
import
com.wecloud.im.param.ImClientSimpleDto
;
import
com.wecloud.im.param.ImClientSimpleDto
;
import
com.wecloud.im.param.ImHistoryMessagePageParam
;
import
com.wecloud.im.param.ImHistoryMessagePageParam
;
import
com.wecloud.im.param.add.ImMsgRecall
;
import
com.wecloud.im.param.add.ImMsgRecall
;
...
@@ -11,6 +12,7 @@ import com.wecloud.im.param.add.ImMsgSendToOnlineClient;
...
@@ -11,6 +12,7 @@ import com.wecloud.im.param.add.ImMsgSendToOnlineClient;
import
com.wecloud.im.param.add.ImMsgUpdate
;
import
com.wecloud.im.param.add.ImMsgUpdate
;
import
com.wecloud.im.vo.ImMessageOfflineListVo
;
import
com.wecloud.im.vo.ImMessageOfflineListVo
;
import
com.wecloud.im.vo.OfflineMsgDto
;
import
com.wecloud.im.vo.OfflineMsgDto
;
import
com.wecloud.im.vo.ReaderList
;
import
com.wecloud.im.ws.model.request.ReceiveDataVO
;
import
com.wecloud.im.ws.model.request.ReceiveDataVO
;
import
com.wecloud.im.ws.model.request.ReceiveVO
;
import
com.wecloud.im.ws.model.request.ReceiveVO
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
...
@@ -112,39 +114,11 @@ public interface ImMessageService extends BaseService<ImMessage> {
...
@@ -112,39 +114,11 @@ public interface ImMessageService extends BaseService<ImMessage> {
*/
*/
boolean
saveImMessage
(
ImMessage
imMessage
)
throws
Exception
;
boolean
saveImMessage
(
ImMessage
imMessage
)
throws
Exception
;
// /**
/**
// * 修改
* 获取读取人员
// *
* @param param
// * @param imMessage
* @return
// * @return
*/
// * @throws Exception
ReaderList
getReaders
(
GetReadersParam
param
);
// */
// boolean updateImMessage(ImMessage imMessage) throws Exception;
//
// /**
// * 删除
// *
// * @param id
// * @return
// * @throws Exception
// */
// boolean deleteImMessage(Long id) throws Exception;
//
// /**
// * 根据ID获取查询对象
// *
// * @param id
// * @return
// * @throws Exception
// */
// ImMessageQueryVo getImMessageById(Long id) throws Exception;
//
// /**
// * 获取分页对象
// *
// * @param imMessagePageParam
// * @return
// * @throws Exception
// */
// Paging<ImMessageQueryVo> getImMessagePageList(ImMessagePageParam imMessagePageParam) throws Exception;
}
}
core/src/main/java/com/wecloud/im/service/impl/ImClientBlacklistServiceImpl.java
View file @
31427855
...
@@ -13,6 +13,7 @@ import com.wecloud.im.param.add.ImClientBlacklistUpdate;
...
@@ -13,6 +13,7 @@ import com.wecloud.im.param.add.ImClientBlacklistUpdate;
import
com.wecloud.im.service.ImClientBlacklistService
;
import
com.wecloud.im.service.ImClientBlacklistService
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.service.ImClientService
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.exception.BusinessException
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.core.pagination.PageInfo
;
import
io.geekidea.springbootplus.framework.core.pagination.PageInfo
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
...
@@ -53,19 +54,22 @@ public class ImClientBlacklistServiceImpl extends BaseServiceImpl<ImClientBlackl
...
@@ -53,19 +54,22 @@ public class ImClientBlacklistServiceImpl extends BaseServiceImpl<ImClientBlackl
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ApiResult
<
Boolean
>
addImClientBlacklist
(
ImClientBlacklistUpdate
imClientBlacklistUpdate
)
throws
Exception
{
public
ApiResult
<
Boolean
>
addImClientBlacklist
(
ImClientBlacklistUpdate
imClientBlacklistUpdate
)
throws
Exception
{
ImClient
client
=
imClientService
.
getCurentClient
();
ImClient
client
=
imClientService
.
getCurentClient
();
if
(
client
==
null
)
{
ImClient
client1
=
imClientService
.
getOne
(
new
QueryWrapper
<
ImClient
>().
lambda
()
throw
new
BusinessException
(
"当前用户登录信息失效"
);
}
ImClient
beBlacker
=
imClientService
.
getOne
(
new
QueryWrapper
<
ImClient
>().
lambda
()
.
eq
(
ImClient:
:
getFkAppid
,
client
.
getFkAppid
())
.
eq
(
ImClient:
:
getFkAppid
,
client
.
getFkAppid
())
.
eq
(
ImClient:
:
getClientId
,
imClientBlacklistUpdate
.
getClientIdBePrevent
()));
.
eq
(
ImClient:
:
getClientId
,
imClientBlacklistUpdate
.
getClientIdBePrevent
()));
if
(
beBlacker
==
null
)
{
throw
new
BusinessException
(
"查无用户信息"
);
}
ImClientBlacklist
imClientBlacklist
=
new
ImClientBlacklist
();
ImClientBlacklist
imClientBlacklist
=
new
ImClientBlacklist
();
imClientBlacklist
.
setId
(
SnowflakeUtil
.
getId
());
imClientBlacklist
.
setId
(
SnowflakeUtil
.
getId
());
imClientBlacklist
.
setCreateTime
(
new
Date
());
imClientBlacklist
.
setCreateTime
(
new
Date
());
imClientBlacklist
.
setFkAppid
(
client
.
getFkAppid
());
imClientBlacklist
.
setFkAppid
(
client
.
getFkAppid
());
imClientBlacklist
.
setFkClientIdPrevent
(
client
.
getId
());
imClientBlacklist
.
setFkClientIdPrevent
(
client
.
getId
());
imClientBlacklist
.
setFkClientIdBePrevent
(
client1
.
getId
());
imClientBlacklist
.
setFkClientIdBePrevent
(
beBlacker
.
getId
());
this
.
save
(
imClientBlacklist
);
boolean
save
=
this
.
save
(
imClientBlacklist
);
return
ApiResult
.
ok
();
return
ApiResult
.
ok
();
}
}
...
@@ -75,17 +79,20 @@ public class ImClientBlacklistServiceImpl extends BaseServiceImpl<ImClientBlackl
...
@@ -75,17 +79,20 @@ public class ImClientBlacklistServiceImpl extends BaseServiceImpl<ImClientBlackl
public
ApiResult
<
Boolean
>
removeImClientBlacklist
(
ImClientBlacklistUpdate
imClientBlacklistUpdate
)
throws
Exception
{
public
ApiResult
<
Boolean
>
removeImClientBlacklist
(
ImClientBlacklistUpdate
imClientBlacklistUpdate
)
throws
Exception
{
// 操作者
// 操作者
ImClient
client
=
imClientService
.
getCurentClient
();
ImClient
client
=
imClientService
.
getCurentClient
();
if
(
client
==
null
)
{
throw
new
BusinessException
(
"当前用户登录信息失效"
);
}
// 被拉黑者
// 被拉黑者
ImClient
client1
=
imClientService
.
getOne
(
new
QueryWrapper
<
ImClient
>().
lambda
()
ImClient
beBlacker
=
imClientService
.
getOne
(
new
QueryWrapper
<
ImClient
>().
lambda
()
.
eq
(
ImClient:
:
getFkAppid
,
client
.
getFkAppid
())
.
eq
(
ImClient:
:
getFkAppid
,
client
.
getFkAppid
())
.
eq
(
ImClient:
:
getClientId
,
imClientBlacklistUpdate
.
getClientIdBePrevent
()));
.
eq
(
ImClient:
:
getClientId
,
imClientBlacklistUpdate
.
getClientIdBePrevent
()));
if
(
beBlacker
==
null
)
{
throw
new
BusinessException
(
"查无用户信息"
);
}
// 删除
// 删除
boolean
remove
=
this
.
remove
(
new
QueryWrapper
<
ImClientBlacklist
>().
lambda
()
this
.
remove
(
new
QueryWrapper
<
ImClientBlacklist
>().
lambda
()
.
eq
(
ImClientBlacklist:
:
getFkClientIdPrevent
,
client
.
getId
())
.
eq
(
ImClientBlacklist:
:
getFkClientIdPrevent
,
client
.
getId
())
.
eq
(
ImClientBlacklist:
:
getFkClientIdBePrevent
,
client1
.
getId
()));
.
eq
(
ImClientBlacklist:
:
getFkClientIdBePrevent
,
beBlacker
.
getId
()));
return
ApiResult
.
ok
();
return
ApiResult
.
ok
();
}
}
...
...
core/src/main/java/com/wecloud/im/service/impl/ImClientServiceImpl.java
View file @
31427855
...
@@ -5,9 +5,16 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
...
@@ -5,9 +5,16 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.OrderItem
;
import
com.baomidou.mybatisplus.core.metadata.OrderItem
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.google.common.collect.Lists
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImClientBlacklist
;
import
com.wecloud.im.enums.FriendStateEnum
;
import
com.wecloud.im.enums.RelationEnum
;
import
com.wecloud.im.friend.entity.ImFriend
;
import
com.wecloud.im.friend.service.ImFriendService
;
import
com.wecloud.im.mapper.ImClientMapper
;
import
com.wecloud.im.mapper.ImClientMapper
;
import
com.wecloud.im.param.ClientInfoParam
;
import
com.wecloud.im.param.GetClientInfoParam
;
import
com.wecloud.im.param.GetClientInfoParam
;
import
com.wecloud.im.param.ImClientPageParam
;
import
com.wecloud.im.param.ImClientPageParam
;
import
com.wecloud.im.param.ImClientQueryVo
;
import
com.wecloud.im.param.ImClientQueryVo
;
...
@@ -17,8 +24,11 @@ import com.wecloud.im.param.add.ImClientHeadPortraitAdd;
...
@@ -17,8 +24,11 @@ import com.wecloud.im.param.add.ImClientHeadPortraitAdd;
import
com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate
;
import
com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate
;
import
com.wecloud.im.param.add.ImClientNicknameAdd
;
import
com.wecloud.im.param.add.ImClientNicknameAdd
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.ImClientBlacklistService
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.vo.ClientInfoVo
;
import
com.wecloud.im.vo.GetInfoListVo
;
import
com.wecloud.im.vo.GetInfoListVo
;
import
com.wecloud.im.vo.MyInfoVo
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.exception.BusinessException
;
import
io.geekidea.springbootplus.framework.common.exception.BusinessException
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
...
@@ -27,6 +37,7 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging;
...
@@ -27,6 +37,7 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.util.JwtUtil
;
import
io.geekidea.springbootplus.framework.shiro.util.JwtUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.CacheConfig
;
...
@@ -35,6 +46,7 @@ import org.springframework.cache.annotation.Cacheable;
...
@@ -35,6 +46,7 @@ import org.springframework.cache.annotation.Cacheable;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -53,6 +65,23 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
...
@@ -53,6 +65,23 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
@Autowired
@Autowired
private
ImApplicationService
imApplicationService
;
private
ImApplicationService
imApplicationService
;
@Autowired
private
ImFriendService
imFriendService
;
@Autowired
private
ImClientBlacklistService
imClientBlacklistService
;
@Override
public
MyInfoVo
getMyInfo
()
{
ImClient
currentClient
=
this
.
getCurentClient
();
if
(
currentClient
==
null
)
{
throw
new
BusinessException
(
"当前用户登录信息失效"
);
}
MyInfoVo
myInfoVo
=
new
MyInfoVo
();
BeanUtils
.
copyProperties
(
currentClient
,
myInfoVo
);
return
myInfoVo
;
}
@Override
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
@@ -124,6 +153,32 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
...
@@ -124,6 +153,32 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
}
}
@Override
@Override
public
ClientInfoVo
getClientInfo
(
ClientInfoParam
param
)
{
ImClient
currentClient
=
this
.
getCurentClient
();
if
(
currentClient
==
null
)
{
throw
new
BusinessException
(
"当前用户登录信息失效"
);
}
List
<
GetInfoListVo
>
infoList
=
imClientMapper
.
getInfoList
(
currentClient
.
getFkAppid
(),
param
.
getConversationId
(),
Lists
.
newArrayList
(
param
.
getClientId
()));
if
(
CollectionUtils
.
isEmpty
(
infoList
))
{
throw
new
BusinessException
(
"群内未查询到该用户信息"
);
}
ClientInfoVo
clientInfoVo
=
new
ClientInfoVo
();
BeanUtils
.
copyProperties
(
infoList
.
get
(
0
),
clientInfoVo
);
clientInfoVo
.
setRelation
(
RelationEnum
.
STRANGER
.
getCode
());
// 查询该好友与自己关系: 陌生人、好友、被拉黑名单
ImFriend
imFriend
=
imFriendService
.
getByKey
(
currentClient
.
getId
(),
clientInfoVo
.
getId
());
if
(
imFriend
!=
null
&&
FriendStateEnum
.
CONFORM
.
getCode
().
equals
(
imFriend
.
getState
()))
{
clientInfoVo
.
setRelation
(
RelationEnum
.
FRIEND
.
getCode
());
}
// 查询是否被拉黑
if
(
imClientBlacklistService
.
isBeBlack
(
currentClient
.
getId
(),
clientInfoVo
.
getId
()))
{
clientInfoVo
.
setRelation
(
RelationEnum
.
BE_BLACK
.
getCode
());
}
return
clientInfoVo
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
boolean
updateNickname
(
ImClientNicknameAdd
imClientNicknameAdd
)
throws
Exception
{
public
boolean
updateNickname
(
ImClientNicknameAdd
imClientNicknameAdd
)
throws
Exception
{
ImClient
curentClient
=
getCurentClient
();
ImClient
curentClient
=
getCurentClient
();
...
...
core/src/main/java/com/wecloud/im/service/impl/ImInboxServiceImpl.java
View file @
31427855
package
com
.
wecloud
.
im
.
service
.
impl
;
package
com
.
wecloud
.
im
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.google.common.collect.Maps
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImConversationMembers
;
import
com.wecloud.im.entity.ImConversationMembers
;
...
@@ -8,8 +9,8 @@ import com.wecloud.im.entity.ImInbox;
...
@@ -8,8 +9,8 @@ import com.wecloud.im.entity.ImInbox;
import
com.wecloud.im.entity.ImMessage
;
import
com.wecloud.im.entity.ImMessage
;
import
com.wecloud.im.entity.ImMessageOnlineSend
;
import
com.wecloud.im.entity.ImMessageOnlineSend
;
import
com.wecloud.im.mapper.ImInboxMapper
;
import
com.wecloud.im.mapper.ImInboxMapper
;
import
com.wecloud.im.param.ImMsgReadStatusUpdate
;
import
com.wecloud.im.param.ImMsgReceivedStatusUpdate
;
import
com.wecloud.im.param.ImMsgReceivedStatusUpdate
;
import
com.wecloud.im.param.MsgReadStatusUpdateParam
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.service.ImConversationMembersService
;
import
com.wecloud.im.service.ImConversationMembersService
;
...
@@ -23,6 +24,7 @@ import io.geekidea.springbootplus.framework.common.api.ApiCode;
...
@@ -23,6 +24,7 @@ import io.geekidea.springbootplus.framework.common.api.ApiCode;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -31,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
...
@@ -31,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
/**
* 消息收件箱表 服务实现类
* 消息收件箱表 服务实现类
...
@@ -109,9 +112,9 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
...
@@ -109,9 +112,9 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
// 是否同时修改为已读状态
// 是否同时修改为已读状态
if
(
imMsgReceivedUpdate
.
getReadStatus
())
{
if
(
imMsgReceivedUpdate
.
getReadStatus
())
{
ImMsgReadStatusUpdate
imMsgReadStatusUpdate
=
new
ImMsgReadStatusUpdate
();
MsgReadStatusUpdateParam
msgReadStatusUpdateParam
=
new
MsgReadStatusUpdateParam
();
imMsgReadStatusUpdate
.
setMsgIds
(
imMsgReceivedUpdate
.
getMsgIds
());
msgReadStatusUpdateParam
.
setMsgIds
(
imMsgReceivedUpdate
.
getMsgIds
());
this
.
updateImMsgRead
(
imMsgReadStatusUpdate
);
this
.
updateImMsgRead
(
msgReadStatusUpdateParam
);
}
}
return
ApiResult
.
ok
();
return
ApiResult
.
ok
();
...
@@ -132,11 +135,11 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
...
@@ -132,11 +135,11 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
@Override
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ApiResult
<
Boolean
>
updateImMsgRead
(
ImMsgReadStatusUpdate
imMsgReadStatusUpdate
)
{
public
ApiResult
<
Boolean
>
updateImMsgRead
(
MsgReadStatusUpdateParam
msgReadStatusUpdateParam
)
{
ImClient
curentClient
=
imClientService
.
getCurentClient
();
ImClient
curentClient
=
imClientService
.
getCurentClient
();
// 修改已读状态
// 修改已读状态
Long
aLong
=
imInboxMapper
.
updateImMsgReadByIds
(
curentClient
.
getId
(),
imMsgReadStatusUpdate
.
getMsgIds
());
Long
aLong
=
imInboxMapper
.
updateImMsgReadByIds
(
curentClient
.
getId
(),
msgReadStatusUpdateParam
.
getMsgIds
());
// 根据appKey查询appid
// 根据appKey查询appid
ImApplication
application
=
imApplicationService
.
getCacheById
(
curentClient
.
getFkAppid
());
ImApplication
application
=
imApplicationService
.
getCacheById
(
curentClient
.
getFkAppid
());
...
@@ -144,12 +147,34 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
...
@@ -144,12 +147,34 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
// 内容
// 内容
HashMap
<
String
,
String
>
contentMap
=
new
HashMap
<>();
HashMap
<
String
,
String
>
contentMap
=
new
HashMap
<>();
contentMap
.
put
(
"receiverId"
,
curentClient
.
getClientId
());
contentMap
.
put
(
"receiverId"
,
curentClient
.
getClientId
());
sendMsgStatus
(
curentClient
,
MsgTypeEnum
.
CLIENT_READ_MSG
,
contentMap
,
imMsgReadStatusUpdate
.
getMsgIds
());
sendMsgStatus
(
curentClient
,
MsgTypeEnum
.
CLIENT_READ_MSG
,
contentMap
,
msgReadStatusUpdateParam
.
getMsgIds
());
return
ApiResult
.
ok
();
return
ApiResult
.
ok
();
}
}
@Override
public
Boolean
updateMsgReadStatusByConversation
(
MsgReadStatusUpdateParam
msgReadStatusUpdateParam
)
{
ImClient
currentClient
=
imClientService
.
getCurentClient
();
// 获取该用户该会话所有未读消息 msgId 列表
List
<
ImInbox
>
imInboxList
=
this
.
list
(
new
QueryWrapper
<
ImInbox
>().
lambda
()
.
eq
(
ImInbox:
:
getFkConversationId
,
msgReadStatusUpdateParam
.
getConversationId
())
.
notIn
(
ImInbox:
:
getReceiver
,
currentClient
.
getId
()));
if
(
CollectionUtils
.
isEmpty
(
imInboxList
))
{
return
true
;
}
List
<
Long
>
msgIds
=
imInboxList
.
stream
().
map
(
i
->
i
.
getFkMsgId
()).
collect
(
Collectors
.
toList
());
// 修改已读状态
imInboxMapper
.
updateImMsgReadByIds
(
currentClient
.
getId
(),
msgIds
);
// 内容
HashMap
<
String
,
String
>
contentMap
=
Maps
.
newHashMap
();
contentMap
.
put
(
"receiverId"
,
currentClient
.
getClientId
());
sendMsgStatus
(
currentClient
,
MsgTypeEnum
.
CLIENT_READ_MSG
,
contentMap
,
msgIds
);
return
null
;
}
/**
/**
* 下发状态类型消息
* 下发状态类型消息
*
*
...
...
core/src/main/java/com/wecloud/im/service/impl/ImMessageServiceImpl.java
View file @
31427855
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.OrderItem
;
import
com.baomidou.mybatisplus.core.metadata.OrderItem
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.google.common.collect.Lists
;
import
com.wecloud.im.entity.ImApiMessageOnlineSend
;
import
com.wecloud.im.entity.ImApiMessageOnlineSend
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImClient
;
...
@@ -14,6 +15,7 @@ import com.wecloud.im.entity.ImMessageOnlineSend;
...
@@ -14,6 +15,7 @@ import com.wecloud.im.entity.ImMessageOnlineSend;
import
com.wecloud.im.enums.ChatTypeEnum
;
import
com.wecloud.im.enums.ChatTypeEnum
;
import
com.wecloud.im.mapper.ImMessageMapper
;
import
com.wecloud.im.mapper.ImMessageMapper
;
import
com.wecloud.im.param.ChatContentVo
;
import
com.wecloud.im.param.ChatContentVo
;
import
com.wecloud.im.param.GetReadersParam
;
import
com.wecloud.im.param.ImClientSimpleDto
;
import
com.wecloud.im.param.ImClientSimpleDto
;
import
com.wecloud.im.param.ImHistoryMessagePageParam
;
import
com.wecloud.im.param.ImHistoryMessagePageParam
;
import
com.wecloud.im.param.add.ImMsgRecall
;
import
com.wecloud.im.param.add.ImMsgRecall
;
...
@@ -27,6 +29,8 @@ import com.wecloud.im.service.ImMessageService;
...
@@ -27,6 +29,8 @@ import com.wecloud.im.service.ImMessageService;
import
com.wecloud.im.thousandchat.service.ThousandChatService
;
import
com.wecloud.im.thousandchat.service.ThousandChatService
;
import
com.wecloud.im.vo.ImMessageOfflineListVo
;
import
com.wecloud.im.vo.ImMessageOfflineListVo
;
import
com.wecloud.im.vo.OfflineMsgDto
;
import
com.wecloud.im.vo.OfflineMsgDto
;
import
com.wecloud.im.vo.ReaderList
;
import
com.wecloud.im.vo.ReaderVo
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.model.request.PushVO
;
import
com.wecloud.im.ws.model.request.PushVO
;
...
@@ -37,6 +41,7 @@ import com.wecloud.im.ws.sender.ChannelSender;
...
@@ -37,6 +41,7 @@ import com.wecloud.im.ws.sender.ChannelSender;
import
com.wecloud.utils.JsonUtils
;
import
com.wecloud.utils.JsonUtils
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.exception.BusinessException
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.core.pagination.PageInfo
;
import
io.geekidea.springbootplus.framework.core.pagination.PageInfo
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
...
@@ -319,30 +324,37 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
...
@@ -319,30 +324,37 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
public
boolean
saveImMessage
(
ImMessage
imMessage
)
throws
Exception
{
public
boolean
saveImMessage
(
ImMessage
imMessage
)
throws
Exception
{
return
super
.
save
(
imMessage
);
return
super
.
save
(
imMessage
);
}
}
//
// @Transactional(rollbackFor = Exception.class)
/**
// @Override
* 获取读取人员
// public boolean updateImMessage(ImMessage imMessage) throws Exception {
*
// return super.updateById(imMessage);
* @param param
// }
* @return
//
*/
// @Transactional(rollbackFor = Exception.class)
@Override
// @Override
public
ReaderList
getReaders
(
GetReadersParam
param
)
{
// public boolean deleteImMessage(Long id) throws Exception {
ImClient
currentClient
=
imClientService
.
getCurentClient
();
// return super.removeById(id);
if
(
currentClient
==
null
)
{
// }
throw
new
BusinessException
(
"当前用户登录信息失效"
);
//
}
// @Override
List
<
ReaderVo
>
readerVos
=
imMessageMapper
.
getReaders
(
currentClient
.
getId
(),
param
);
// public ImMessageQueryVo getImMessageById(Long id) throws Exception {
if
(
CollectionUtils
.
isEmpty
(
readerVos
))
{
// return imMessageMapper.getImMessageById(id);
return
null
;
// }
}
//
List
<
ReaderVo
>
readList
=
Lists
.
newArrayList
();
// @Override
List
<
ReaderVo
>
unReadList
=
Lists
.
newArrayList
();
// public Paging<ImMessageQueryVo> getImMessagePageList(ImMessagePageParam imMessagePageParam) throws Exception {
for
(
ReaderVo
readerVo
:
readerVos
)
{
// Page<ImMessageQueryVo> page = new PageInfo<>(imMessagePageParam, OrderItem.desc(getLambdaColumn(ImMessage::getCreateTime)));
if
(
readerVo
.
getReadMsgStatus
()
==
0
)
{
// IPage<ImMessageQueryVo> iPage = imMessageMapper.getImMessagePageList(page, imMessagePageParam);
unReadList
.
add
(
readerVo
);
// return new Paging<ImMessageQueryVo>(iPage);
}
else
{
// }
readList
.
add
(
readerVo
);
}
}
ReaderList
readerList
=
new
ReaderList
();
readerList
.
setReadList
(
readList
);
readerList
.
setUnReadList
(
unReadList
);
return
readerList
;
}
@Override
@Override
public
Paging
<
OfflineMsgDto
>
getHistoryMsgConversationId
(
ImHistoryMessagePageParam
imHistoryMessagePageParam
)
throws
Exception
{
public
Paging
<
OfflineMsgDto
>
getHistoryMsgConversationId
(
ImHistoryMessagePageParam
imHistoryMessagePageParam
)
throws
Exception
{
...
@@ -376,7 +388,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
...
@@ -376,7 +388,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
for
(
ImConversation
imConversation
:
myImConversationList
)
{
for
(
ImConversation
imConversation
:
myImConversationList
)
{
//万人群 暂时跳过,后面统一处理
//万人群 暂时跳过,后面统一处理
if
(
ChatTypeEnum
.
THOUSAND_GROUP
.
getCode
().
equals
(
imConversation
.
getChatType
()))
{
if
(
ChatTypeEnum
.
THOUSAND_GROUP
.
getCode
().
equals
(
imConversation
.
getChatType
()))
{
thousandConversations
.
add
(
imConversation
);
thousandConversations
.
add
(
imConversation
);
continue
;
continue
;
}
}
...
@@ -394,7 +406,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
...
@@ -394,7 +406,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
imMessageOfflineListVoList
.
add
(
imMessageOfflineListVo
);
imMessageOfflineListVoList
.
add
(
imMessageOfflineListVo
);
}
}
// 万人群的部分
// 万人群的部分
if
(
CollectionUtils
.
isNotEmpty
(
thousandConversations
))
{
if
(
CollectionUtils
.
isNotEmpty
(
thousandConversations
))
{
List
<
ImMessageOfflineListVo
>
offlineMsgs
=
thousandChatService
.
findOfflineMsgs
(
thousandConversations
);
List
<
ImMessageOfflineListVo
>
offlineMsgs
=
thousandChatService
.
findOfflineMsgs
(
thousandConversations
);
imMessageOfflineListVoList
.
addAll
(
offlineMsgs
);
imMessageOfflineListVoList
.
addAll
(
offlineMsgs
);
}
}
...
...
core/src/main/java/com/wecloud/im/vo/ClientInfoVo.java
0 → 100644
View file @
31427855
package
com
.
wecloud
.
im
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
/**
* @Author wenzhida
* @Date 2022/2/15 11:29
* @Description
*/
@Data
@Accessors
(
chain
=
true
)
@ApiModel
(
value
=
"ClientInfoVo"
)
public
class
ClientInfoVo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1474979499551389791L
;
@ApiModelProperty
(
"client主键id"
)
private
Long
id
;
@ApiModelProperty
(
"会话中client的备注名"
)
private
String
clientRemarkName
;
@ApiModelProperty
(
"头像"
)
private
String
headPortrait
;
@ApiModelProperty
(
"主昵称"
)
private
String
nickname
;
@ApiModelProperty
(
"clientId"
)
private
String
clientId
;
@ApiModelProperty
(
"client自己的自定义扩展属性"
)
private
String
clientAttributes
;
@ApiModelProperty
(
"会话成员列表的自定义扩展属性"
)
private
String
memberAttributes
;
/**
* 与我关系
* @see com.wecloud.im.enums.RelationEnum
*/
@ApiModelProperty
(
"与我关系 1-陌生人 2-好友 3-被我拉黑"
)
private
Integer
relation
;
}
core/src/main/java/com/wecloud/im/vo/GetInfoListVo.java
View file @
31427855
...
@@ -11,6 +11,8 @@ import java.io.Serializable;
...
@@ -11,6 +11,8 @@ import java.io.Serializable;
@Accessors
(
chain
=
true
)
@Accessors
(
chain
=
true
)
@ApiModel
(
value
=
"GetInfoListVo"
)
@ApiModel
(
value
=
"GetInfoListVo"
)
public
class
GetInfoListVo
implements
Serializable
{
public
class
GetInfoListVo
implements
Serializable
{
@ApiModelProperty
(
"client主键id"
)
private
Long
id
;
@ApiModelProperty
(
"会话中client的备注名"
)
@ApiModelProperty
(
"会话中client的备注名"
)
private
String
clientRemarkName
;
private
String
clientRemarkName
;
@ApiModelProperty
(
"头像"
)
@ApiModelProperty
(
"头像"
)
...
...
core/src/main/java/com/wecloud/im/vo/MyInfoVo.java
0 → 100644
View file @
31427855
package
com
.
wecloud
.
im
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @Author wenzhida
* @Date 2022/2/15 16:22
* @Description 我的信息
*/
@Data
@Accessors
(
chain
=
true
)
@ApiModel
(
value
=
"我的信息"
)
public
class
MyInfoVo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
5423843620435586377L
;
@ApiModelProperty
(
"主键id"
)
private
Long
id
;
@ApiModelProperty
(
"clientId"
)
private
String
clientId
;
@ApiModelProperty
(
"最后离线时间"
)
private
Date
lastOfflineTime
;
@ApiModelProperty
(
"头像"
)
private
String
headPortrait
;
@ApiModelProperty
(
"主昵称"
)
private
String
nickname
;
@ApiModelProperty
(
"可选 自定义属性,供开发者扩展使用。"
)
private
String
attributes
;
}
core/src/main/java/com/wecloud/im/vo/ReaderList.java
0 → 100644
View file @
31427855
package
com
.
wecloud
.
im
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* @Author wenzhida
* @Date 2022/2/15 20:54
* @Description 已读client展示VO
*/
@Data
@Accessors
(
chain
=
true
)
@ApiModel
(
value
=
"已读client展示VO"
)
public
class
ReaderList
implements
Serializable
{
private
static
final
long
serialVersionUID
=
4658402570720540541L
;
@ApiModelProperty
(
"已读人员列表"
)
private
List
<
ReaderVo
>
readList
;
@ApiModelProperty
(
"未读人员列表"
)
private
List
<
ReaderVo
>
unReadList
;
}
core/src/main/java/com/wecloud/im/vo/ReaderVo.java
0 → 100644
View file @
31427855
package
com
.
wecloud
.
im
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
/**
* @Author wenzhida
* @Date 2022/2/15 20:54
* @Description 读者VO
*/
@Data
@Accessors
(
chain
=
true
)
@ApiModel
(
value
=
"读者VO"
)
public
class
ReaderVo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
4390952170006190474L
;
@ApiModelProperty
(
"client主键id"
)
private
Long
id
;
@ApiModelProperty
(
"头像"
)
private
String
headPortrait
;
@ApiModelProperty
(
"主昵称"
)
private
String
nickname
;
@ApiModelProperty
(
"clientId"
)
private
String
clientId
;
@ApiModelProperty
(
"是否已读 0-否 1-是"
)
private
Integer
readMsgStatus
;
}
core/src/main/resources/mapper/ImClientMapper.xml
View file @
31427855
...
@@ -23,6 +23,7 @@
...
@@ -23,6 +23,7 @@
<select
id=
"getInfoList"
resultType=
"com.wecloud.im.vo.GetInfoListVo"
>
<select
id=
"getInfoList"
resultType=
"com.wecloud.im.vo.GetInfoListVo"
>
SELECT
SELECT
im_client.id AS id,
im_client.client_id AS clientId,
im_client.client_id AS clientId,
im_client.head_portrait AS headPortrait,
im_client.head_portrait AS headPortrait,
im_client.nickname,
im_client.nickname,
...
...
core/src/main/resources/mapper/ImInboxMapper.xml
View file @
31427855
...
@@ -24,7 +24,6 @@
...
@@ -24,7 +24,6 @@
UPDATE im_inbox
UPDATE im_inbox
SET `im_inbox`.`update_time` = NOW(),
SET `im_inbox`.`update_time` = NOW(),
`im_inbox`.`read_msg_status` = 1,
`im_inbox`.`read_msg_status` = 1,
`im_inbox`.`receiver_time` = NOW(),
`im_inbox`.`read_time` = NOW()
`im_inbox`.`read_time` = NOW()
WHERE
WHERE
im_inbox.receiver = #{clientId}
im_inbox.receiver = #{clientId}
...
...
core/src/main/resources/mapper/ImMessageMapper.xml
View file @
31427855
...
@@ -119,4 +119,16 @@
...
@@ -119,4 +119,16 @@
ORDER BY create_time DESC LIMIT 1
ORDER BY create_time DESC LIMIT 1
</select>
</select>
<select
id=
"getReaders"
resultType=
"com.wecloud.im.vo.ReaderVo"
>
SELECT client.id as id,
client.head_portrait as headPortrait,
client.nickname as nickname,
client.client_id as clientId,
inbox.read_msg_status as readMsgStatus
FROM `im_inbox` inbox LEFT JOIN im_client client on inbox.receiver = client.id
WHERE inbox.fk_conversation_id = #{param.conversationId}
and inbox.fk_msg_id = #{param.msgId}
and inbox.receiver != #{currentClientId}
</select>
</mapper>
</mapper>
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