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
e6aca3ce
Commit
e6aca3ce
authored
Apr 22, 2022
by
罗长华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加PAAS平台 回调相关类
SDK增加getFriend接口
parent
ae4aa1d6
Hide whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
525 additions
and
114 deletions
+525
-114
bootstrap/src/main/java/io/geekidea/springbootplus/config/RestTemplateConfig.java
+1
-0
config/src/main/resources/config/application-dev.yml
+2
-3
core/pom.xml
+5
-2
core/src/main/java/com/wecloud/im/entity/ImApplication.java
+6
-0
core/src/main/java/com/wecloud/im/event/ClientOnlineStatusChangeEvent.java
+22
-0
core/src/main/java/com/wecloud/im/event/ClientSendMessageEvent.java
+22
-0
core/src/main/java/com/wecloud/im/event/listener/ClientOnlineStatusChangeListener.java
+21
-0
core/src/main/java/com/wecloud/im/event/listener/ClientSendMessageListener.java
+20
-0
core/src/main/java/com/wecloud/im/externalaccess/controller/FriendController.java
+58
-8
core/src/main/java/com/wecloud/im/externalaccess/service/FriendService.java
+20
-38
core/src/main/java/com/wecloud/im/friend/controller/ImFriendController.java
+0
-21
core/src/main/java/com/wecloud/im/friend/param/ImFriendBaseParam.java
+3
-0
core/src/main/java/com/wecloud/im/param/ClientOnlineStatusChangeDto.java
+40
-0
core/src/main/java/com/wecloud/im/service/ImCallbackService.java
+29
-0
core/src/main/java/com/wecloud/im/service/impl/ImCallbackServiceImpl.java
+106
-0
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/signature/SignUtils.java
+15
-0
im-sdk/src/main/java/com/wecloud/im/sdk/ResourcePathConstants.java
+6
-1
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudIm.java
+13
-4
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudImClient.java
+13
-4
im-sdk/src/main/java/com/wecloud/im/sdk/internal/SignUtils.java
+15
-0
im-sdk/src/main/java/com/wecloud/im/sdk/internal/WecloudImClientOperation.java
+29
-7
im-sdk/src/main/java/com/wecloud/im/sdk/internal/WecloudImOperation.java
+0
-2
im-sdk/src/main/java/com/wecloud/im/sdk/model/ClientLoginRequest.java
+1
-1
im-sdk/src/main/java/com/wecloud/im/sdk/model/Friend.java
+1
-16
im-sdk/src/main/java/com/wecloud/im/sdk/model/GetFriendsRequest.java
+22
-0
im-sdk/src/main/java/com/wecloud/im/sdk/model/GetUnsureFriendsRequest.java
+1
-1
im-sdk/src/main/java/com/wecloud/im/sdk/model/ModifyUserRequest.java
+1
-1
im-sdk/src/main/java/com/wecloud/im/sdk/model/RegisterClientRequest.java
+1
-1
im-sdk/src/main/java/com/wecloud/im/sdk/model/UnsureFriend.java
+48
-0
im-sdk/src/main/java/com/wecloud/im/sdk/sample/GetTokenSample.java
+1
-1
im-sdk/src/main/java/com/wecloud/im/sdk/sample/ModifySample.java
+1
-1
im-sdk/src/main/java/com/wecloud/im/sdk/sample/RegisterClientSample.java
+1
-1
pom.xml
+1
-1
No files found.
bootstrap/src/main/java/io/geekidea/springbootplus/config/RestTemplateConfig.java
View file @
e6aca3ce
...
@@ -41,6 +41,7 @@ public class RestTemplateConfig {
...
@@ -41,6 +41,7 @@ public class RestTemplateConfig {
factory
.
setReadTimeout
(
5000
);
factory
.
setReadTimeout
(
5000
);
//单位为ms
//单位为ms
factory
.
setConnectTimeout
(
5000
);
factory
.
setConnectTimeout
(
5000
);
return
factory
;
return
factory
;
}
}
}
}
config/src/main/resources/config/application-dev.yml
View file @
e6aca3ce
...
@@ -39,7 +39,7 @@ spring:
...
@@ -39,7 +39,7 @@ spring:
dubbo
:
dubbo
:
protocol
:
protocol
:
port
:
2088
1
port
:
2088
2
name
:
dubbo
name
:
dubbo
registry
:
registry
:
address
:
nacos://localhost:8848?username=nacos&password=nacos
address
:
nacos://localhost:8848?username=nacos&password=nacos
...
@@ -58,4 +58,4 @@ load-blance:
...
@@ -58,4 +58,4 @@ load-blance:
rocketmq
:
rocketmq
:
namesrvAddr
:
127.0.0.1:9876
namesrvAddr
:
127.0.0.1:9876
# 生产者的组名
# 生产者的组名
producerId
:
im-server
producerId
:
im-server
\ No newline at end of file
core/pom.xml
View file @
e6aca3ce
...
@@ -145,6 +145,10 @@
...
@@ -145,6 +145,10 @@
<artifactId>
lombok
</artifactId>
<artifactId>
lombok
</artifactId>
<scope>
provided
</scope>
<scope>
provided
</scope>
</dependency>
</dependency>
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
</dependency>
</dependencies>
</dependencies>
<!-- <build>-->
<!-- <build>-->
...
@@ -177,4 +181,4 @@
...
@@ -177,4 +181,4 @@
<!-- </plugins>-->
<!-- </plugins>-->
<!-- </build>-->
<!-- </build>-->
</project>
</project>
\ No newline at end of file
core/src/main/java/com/wecloud/im/entity/ImApplication.java
View file @
e6aca3ce
...
@@ -69,6 +69,12 @@ public class ImApplication extends BaseEntity implements Application {
...
@@ -69,6 +69,12 @@ public class ImApplication extends BaseEntity implements Application {
@ApiModelProperty
(
"创建会话时对比扩展字段 0不 1是"
)
@ApiModelProperty
(
"创建会话时对比扩展字段 0不 1是"
)
private
Integer
contrastExtendedFieldStatus
;
private
Integer
contrastExtendedFieldStatus
;
@ApiModelProperty
(
"在线状态订阅地址"
)
private
String
onlineStatusSubscribeUrl
;
@ApiModelProperty
(
"全量消息订阅地址"
)
private
String
fullMessageSubscribeUrl
;
@Override
@Override
public
Boolean
isActive
()
{
public
Boolean
isActive
()
{
return
true
;
return
true
;
...
...
core/src/main/java/com/wecloud/im/event/ClientOnlineStatusChangeEvent.java
0 → 100644
View file @
e6aca3ce
package
com
.
wecloud
.
im
.
event
;
import
org.springframework.context.ApplicationEvent
;
/**
* 客户端在线状态变化事件
* @Author luozh
* @Date 2022年04月22日 09:44
* @Version 1.0
*/
public
class
ClientOnlineStatusChangeEvent
extends
ApplicationEvent
{
/**
* Create a new {@code ApplicationEvent}.
* @param source the object on which the event initially occurred or with
* which the event is associated (never {@code null})
*/
public
ClientOnlineStatusChangeEvent
(
Object
source
)
{
super
(
source
);
}
}
core/src/main/java/com/wecloud/im/event/ClientSendMessageEvent.java
0 → 100644
View file @
e6aca3ce
package
com
.
wecloud
.
im
.
event
;
import
org.springframework.context.ApplicationEvent
;
/**
* 消息发送事件
* @Author luozh
* @Date 2022年04月22日 09:40
* @Version 1.0
*/
public
class
ClientSendMessageEvent
extends
ApplicationEvent
{
/**
* Create a new {@code ApplicationEvent}.
* @param source the object on which the event initially occurred or with
* which the event is associated (never {@code null})
*/
public
ClientSendMessageEvent
(
Object
source
)
{
super
(
source
);
}
}
core/src/main/java/com/wecloud/im/event/listener/ClientOnlineStatusChangeListener.java
0 → 100644
View file @
e6aca3ce
package
com
.
wecloud
.
im
.
event
.
listener
;
import
org.springframework.context.ApplicationListener
;
import
org.springframework.stereotype.Component
;
import
com.wecloud.im.event.ClientOnlineStatusChangeEvent
;
/**
*
* @Author luozh
* @Date 2022年04月22日 09:47
* @Version 1.0
*/
@Component
public
class
ClientOnlineStatusChangeListener
implements
ApplicationListener
<
ClientOnlineStatusChangeEvent
>
{
@Override
public
void
onApplicationEvent
(
ClientOnlineStatusChangeEvent
event
)
{
}
}
core/src/main/java/com/wecloud/im/event/listener/ClientSendMessageListener.java
0 → 100644
View file @
e6aca3ce
package
com
.
wecloud
.
im
.
event
.
listener
;
import
org.springframework.context.ApplicationListener
;
import
org.springframework.stereotype.Component
;
import
com.wecloud.im.event.ClientSendMessageEvent
;
/**
*
* @Author luozh
* @Date 2022年04月22日 09:48
* @Version 1.0
*/
@Component
public
class
ClientSendMessageListener
implements
ApplicationListener
<
ClientSendMessageEvent
>
{
@Override
public
void
onApplicationEvent
(
ClientSendMessageEvent
event
)
{
}
}
core/src/main/java/com/wecloud/im/externalaccess/controller/FriendController.java
View file @
e6aca3ce
package
com
.
wecloud
.
im
.
externalaccess
.
controller
;
package
com
.
wecloud
.
im
.
externalaccess
.
controller
;
import
com.wecloud.im.friend.param.ImFriendBaseParam
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.externalaccess.param.FriendDto
;
import
com.wecloud.im.externalaccess.service.FriendService
;
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.controller.BaseController
;
import
io.geekidea.springbootplus.framework.common.controller.BaseController
;
import
io.geekidea.springbootplus.framework.shiro.util.SecurityUtils
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.externalaccess.param.FriendDto
;
import
com.wecloud.im.externalaccess.service.FriendService
;
import
com.wecloud.im.friend.param.ImFriendBaseParam
;
import
com.wecloud.im.service.ImClientService
;
/**
/**
* @Author wenzhida
* @Author wenzhida
...
@@ -41,16 +47,18 @@ public class FriendController extends BaseController {
...
@@ -41,16 +47,18 @@ public class FriendController extends BaseController {
@PostMapping
(
"/info"
)
@PostMapping
(
"/info"
)
@ApiOperation
(
value
=
"查询好友信息,只有自己的好友才查得到"
)
@ApiOperation
(
value
=
"查询好友信息,只有自己的好友才查得到"
)
public
ApiResult
<
FriendDto
>
getFriendInfo
(
@RequestBody
ImFriendBaseParam
param
)
{
public
ApiResult
<
FriendDto
>
getFriendInfo
(
@RequestBody
ImFriendBaseParam
param
)
{
ImClient
imClient
=
imClientService
.
getCurrentClient
();
if
(
param
==
null
)
{
if
(
param
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
}
}
return
ApiResult
.
ok
(
friendService
.
getFriendInfo
(
param
));
return
ApiResult
.
ok
(
friendService
.
getFriendInfo
(
imClient
,
param
));
}
}
@PostMapping
(
"/getFriends"
)
@PostMapping
(
"/getFriends"
)
@ApiOperation
(
value
=
"全量获取好友列表"
)
@ApiOperation
(
value
=
"全量获取好友列表"
)
public
ApiResult
<
List
<
FriendDto
>>
getFriends
()
{
public
ApiResult
<
List
<
FriendDto
>>
getFriends
()
{
return
ApiResult
.
ok
(
friendService
.
getFriends
());
ImClient
imClient
=
imClientService
.
getCurrentClient
();
return
ApiResult
.
ok
(
friendService
.
getFriends
(
imClient
));
}
}
/**
/**
...
@@ -59,7 +67,49 @@ public class FriendController extends BaseController {
...
@@ -59,7 +67,49 @@ public class FriendController extends BaseController {
@PostMapping
(
"/unsureFriends"
)
@PostMapping
(
"/unsureFriends"
)
@ApiOperation
(
value
=
"获取好友请求列表,最多只返回1000个"
)
@ApiOperation
(
value
=
"获取好友请求列表,最多只返回1000个"
)
public
ApiResult
<
List
<
FriendDto
>>
getUnsureFriends
()
{
public
ApiResult
<
List
<
FriendDto
>>
getUnsureFriends
()
{
List
<
FriendDto
>
applyFriends
=
friendService
.
getApplyFriends
();
ImClient
imClient
=
imClientService
.
getCurrentClient
();
List
<
FriendDto
>
applyFriends
=
friendService
.
getApplyFriends
(
imClient
);
return
ApiResult
.
ok
(
applyFriends
);
}
/**
* 查询好友信息,只有自己的好友才查得到 sdk
*/
@GetMapping
(
"/sdk/info"
)
@ApiOperation
(
value
=
"查询好友信息,只有自己的好友才查得到"
)
public
ApiResult
<
FriendDto
>
getFriendInfoSdk
(
@RequestBody
ImFriendBaseParam
param
)
{
if
(
param
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
}
Long
appId
=
SecurityUtils
.
getCurrentAppId
();
ImClient
imClient
=
imClientService
.
getCacheImClient
(
appId
,
param
.
getClientId
());
return
ApiResult
.
ok
(
friendService
.
getFriendInfo
(
imClient
,
param
));
}
/**
* 全量获取好友列表 sdk使用
* @Author luozh
* @Date 2022年04月22日 11:28:44
* @param
* @Return
*/
@GetMapping
(
"/sdk/getFriends"
)
@ApiOperation
(
value
=
"全量获取好友列表"
)
public
ApiResult
<
List
<
FriendDto
>>
getFriendsSdk
(
@RequestParam
(
"clientId"
)
String
clientId
)
{
Long
appId
=
SecurityUtils
.
getCurrentAppId
();
ImClient
imClient
=
imClientService
.
getCacheImClient
(
appId
,
clientId
);
return
ApiResult
.
ok
(
friendService
.
getFriends
(
imClient
));
}
/**
* 好友请求列表,最多只返回1000个 sdk使用
*/
@GetMapping
(
"/sdk/unsureFriends"
)
@ApiOperation
(
value
=
"获取好友请求列表,最多只返回1000个"
)
public
ApiResult
<
List
<
FriendDto
>>
getUnsureFriendsSdk
(
@RequestParam
(
"clientId"
)
String
clientId
)
{
Long
appId
=
SecurityUtils
.
getCurrentAppId
();
ImClient
imClient
=
imClientService
.
getCacheImClient
(
appId
,
clientId
);
List
<
FriendDto
>
applyFriends
=
friendService
.
getApplyFriends
(
imClient
);
return
ApiResult
.
ok
(
applyFriends
);
return
ApiResult
.
ok
(
applyFriends
);
}
}
...
...
core/src/main/java/com/wecloud/im/externalaccess/service/FriendService.java
View file @
e6aca3ce
package
com
.
wecloud
.
im
.
externalaccess
.
service
;
package
com
.
wecloud
.
im
.
externalaccess
.
service
;
import
io.geekidea.springbootplus.framework.common.exception.BusinessException
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
com.google.common.collect.Maps
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.externalaccess.entity.User
;
import
com.wecloud.im.externalaccess.mapper.UserMapper
;
import
com.wecloud.im.externalaccess.param.FriendDto
;
import
com.wecloud.im.friend.param.ImFriendApplyDto
;
import
com.wecloud.im.friend.param.ImFriendApplyDto
;
import
com.wecloud.im.friend.param.ImFriendBaseDto
;
import
com.wecloud.im.friend.param.ImFriendBaseDto
;
import
com.wecloud.im.friend.param.ImFriendBaseParam
;
import
com.wecloud.im.friend.param.ImFriendBaseParam
;
import
com.wecloud.im.friend.param.ImFriendPageParam
;
import
com.wecloud.im.friend.param.ImFriendPageParam
;
import
com.wecloud.im.friend.service.ImFriendService
;
import
com.wecloud.im.friend.service.ImFriendService
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.externalaccess.entity.User
;
import
com.wecloud.im.externalaccess.mapper.UserMapper
;
import
com.wecloud.im.externalaccess.param.FriendDto
;
import
io.geekidea.springbootplus.framework.common.exception.BusinessException
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
/**
* @Author wenzhida
* @Author wenzhida
...
@@ -43,8 +45,7 @@ public class FriendService extends BaseServiceImpl<UserMapper, User> {
...
@@ -43,8 +45,7 @@ public class FriendService extends BaseServiceImpl<UserMapper, User> {
private
UserService
userService
;
private
UserService
userService
;
public
FriendDto
getFriendInfo
(
ImFriendBaseParam
param
)
{
public
FriendDto
getFriendInfo
(
ImClient
currentClient
,
ImFriendBaseParam
param
)
{
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
if
(
currentClient
==
null
)
{
if
(
currentClient
==
null
)
{
throw
new
BusinessException
(
"当前登录用户未找到"
);
throw
new
BusinessException
(
"当前登录用户未找到"
);
}
}
...
@@ -73,8 +74,7 @@ public class FriendService extends BaseServiceImpl<UserMapper, User> {
...
@@ -73,8 +74,7 @@ public class FriendService extends BaseServiceImpl<UserMapper, User> {
/**
/**
* 全量获取好友列表
* 全量获取好友列表
*/
*/
public
List
<
FriendDto
>
getFriends
()
{
public
List
<
FriendDto
>
getFriends
(
ImClient
currentClient
)
{
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
if
(
currentClient
==
null
)
{
if
(
currentClient
==
null
)
{
throw
new
BusinessException
(
"当前登录用户未找到"
);
throw
new
BusinessException
(
"当前登录用户未找到"
);
}
}
...
@@ -86,27 +86,10 @@ public class FriendService extends BaseServiceImpl<UserMapper, User> {
...
@@ -86,27 +86,10 @@ public class FriendService extends BaseServiceImpl<UserMapper, User> {
if
(
pageFriends
==
null
||
CollectionUtils
.
isEmpty
(
pageFriends
.
getRecords
()))
{
if
(
pageFriends
==
null
||
CollectionUtils
.
isEmpty
(
pageFriends
.
getRecords
()))
{
return
friendDtoList
;
return
friendDtoList
;
}
}
List
<
String
>
friendClientIds
=
pageFriends
.
getRecords
().
stream
().
map
(
ImFriendBaseDto:
:
getFriendClientId
).
collect
(
Collectors
.
toList
());
List
<
User
>
userList
=
userService
.
list
(
new
QueryWrapper
<
User
>().
lambda
()
.
in
(
User:
:
getId
,
friendClientIds
)
);
if
(
CollectionUtils
.
isEmpty
(
userList
))
{
return
friendDtoList
;
}
Map
<
String
,
User
>
userMap
=
Maps
.
newHashMap
();
for
(
User
user
:
userList
)
{
userMap
.
put
(
user
.
getId
().
toString
(),
user
);
}
for
(
ImFriendBaseDto
record
:
pageFriends
.
getRecords
())
{
for
(
ImFriendBaseDto
record
:
pageFriends
.
getRecords
())
{
FriendDto
friendDto
=
new
FriendDto
();
FriendDto
friendDto
=
new
FriendDto
();
BeanUtils
.
copyProperties
(
record
,
friendDto
);
BeanUtils
.
copyProperties
(
record
,
friendDto
);
User
user
=
userMap
.
get
(
record
.
getFriendClientId
());
if
(
user
!=
null
)
{
friendDto
.
setIdNumber
(
user
.
getIdNumber
());
friendDto
.
setHeadPortrait
(
user
.
getHeadPortrait
());
friendDto
.
setNickname
(
user
.
getNickname
());
}
friendDtoList
.
add
(
friendDto
);
friendDtoList
.
add
(
friendDto
);
}
}
return
friendDtoList
;
return
friendDtoList
;
...
@@ -115,8 +98,7 @@ public class FriendService extends BaseServiceImpl<UserMapper, User> {
...
@@ -115,8 +98,7 @@ public class FriendService extends BaseServiceImpl<UserMapper, User> {
/**
/**
* 获取好友列表申请
* 获取好友列表申请
*/
*/
public
List
<
FriendDto
>
getApplyFriends
()
{
public
List
<
FriendDto
>
getApplyFriends
(
ImClient
currentClient
)
{
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
if
(
currentClient
==
null
)
{
if
(
currentClient
==
null
)
{
throw
new
BusinessException
(
"当前登录用户未找到"
);
throw
new
BusinessException
(
"当前登录用户未找到"
);
}
}
...
...
core/src/main/java/com/wecloud/im/friend/controller/ImFriendController.java
View file @
e6aca3ce
...
@@ -7,7 +7,6 @@ import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
...
@@ -7,7 +7,6 @@ import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.log.annotation.OperationLog
;
import
io.geekidea.springbootplus.framework.log.annotation.OperationLog
;
import
io.geekidea.springbootplus.framework.log.enums.OperationLogType
;
import
io.geekidea.springbootplus.framework.log.enums.OperationLogType
;
import
io.geekidea.springbootplus.framework.shiro.util.SecurityUtils
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -16,11 +15,9 @@ import java.util.List;
...
@@ -16,11 +15,9 @@ import java.util.List;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImClient
;
...
@@ -114,24 +111,6 @@ public class ImFriendController extends BaseController {
...
@@ -114,24 +111,6 @@ public class ImFriendController extends BaseController {
}
}
/**
/**
* 待接受的好友请求列表,最多只返回1000个(sdk 调用)
* @Author luozh
* @Date 2022年04月21日 05:07:31
* @param
* @Return
*/
@GetMapping
(
"/sdk/unsureFriends"
)
@ApiOperation
(
value
=
"待接受的好友请求列表,最多只返回1000个"
)
public
ApiResult
<
List
<
ImFriendApplyDto
>>
getUnsureFriendsSdk
(
@RequestParam
(
"clientId"
)
String
clientId
)
{
ImClient
currentClient
=
imClientService
.
getCacheImClient
(
SecurityUtils
.
getCurrentAppId
(),
clientId
);
if
(
currentClient
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
CLIENT_NOT_FOUNT
,
null
);
}
List
<
ImFriendApplyDto
>
friendInfo
=
imFriendService
.
getApplyFriends
(
currentClient
);
return
ApiResult
.
ok
(
friendInfo
);
}
/**
* 接受/拒绝好友申请
* 接受/拒绝好友申请
*/
*/
@PostMapping
(
"/approve"
)
@PostMapping
(
"/approve"
)
...
...
core/src/main/java/com/wecloud/im/friend/param/ImFriendBaseParam.java
View file @
e6aca3ce
...
@@ -14,6 +14,9 @@ import java.io.Serializable;
...
@@ -14,6 +14,9 @@ import java.io.Serializable;
public
class
ImFriendBaseParam
implements
Serializable
{
public
class
ImFriendBaseParam
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"clientId"
)
private
String
clientId
;
@ApiModelProperty
(
"好友的client-id"
)
@ApiModelProperty
(
"好友的client-id"
)
private
String
friendClientId
;
private
String
friendClientId
;
}
}
core/src/main/java/com/wecloud/im/param/ClientOnlineStatusChangeDto.java
0 → 100644
View file @
e6aca3ce
package
com
.
wecloud
.
im
.
param
;
import
lombok.Builder
;
import
lombok.Data
;
/**
*
* @Author luozh
* @Date 2022年04月22日 11:07
* @Version 1.0
*/
@Builder
@Data
public
class
ClientOnlineStatusChangeDto
{
/**
* 用户id
*/
private
String
userId
;
/**
* 状态:0:online 上线、1:offline 离线、2:logout 登出。
*/
private
Integer
status
;
/**
* 操作系统:iOS、Android、Websocket、PC、MiniProgram(小程序),用户上线时同步。
*/
private
String
os
;
/**
* 发生时间
*/
private
Long
time
;
/**
* 用户当前的 IP 地址及端口。
*/
private
String
clientIp
;
}
core/src/main/java/com/wecloud/im/service/ImCallbackService.java
0 → 100644
View file @
e6aca3ce
package
com
.
wecloud
.
im
.
service
;
/**
* sdk 回调服务
* @Author luozh
* @Date 2022年04月22日 09:08
* @Version 1.0
*/
public
interface
ImCallbackService
{
/**
* 全量消息路由
* @Author luozh
* @Date 2022年04月22日 09:10:15
* @param
* @Return 路由结果
*/
Boolean
fullMessageRouting
();
/**
* 用户在线状态变化
* @Author luozh
* @Date 2022年04月22日 09:11:28
* @param
* @Return
*/
Boolean
clientOnlineStatusChange
(
Long
applicationId
,
String
clientId
,
Integer
status
,
Integer
deviceType
,
Long
time
,
String
clientIp
);
}
core/src/main/java/com/wecloud/im/service/impl/ImCallbackServiceImpl.java
0 → 100644
View file @
e6aca3ce
package
com
.
wecloud
.
im
.
service
.
impl
;
import
io.geekidea.springbootplus.framework.common.exception.BusinessException
;
import
io.geekidea.springbootplus.framework.shiro.signature.SignUtils
;
import
java.util.Date
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.client.RestTemplate
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.lang.id.NanoId
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.param.ClientOnlineStatusChangeDto
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.ImCallbackService
;
/**
* 回调服务实现类
* @Author luozh
* @Date 2022年04月22日 09:11
* @Version 1.0
*/
public
class
ImCallbackServiceImpl
implements
ImCallbackService
{
@Autowired
private
RestTemplate
restTemplate
;
@Autowired
private
ImApplicationService
applicationService
;
/**
* 全量消息路由
* @Author luozh
* @Date 2022年04月22日 09:35:24
* @param
* @Return
*/
@Override
public
Boolean
fullMessageRouting
()
{
return
null
;
}
/**
* 用户在线状态
* @Author luozh
* @Date 2022年04月22日 09:35:47
* @param clientId
* @param status
* @param deviceType
* @param time
* @param clientIp
* @Return
*/
@Override
public
Boolean
clientOnlineStatusChange
(
Long
applicationId
,
String
clientId
,
Integer
status
,
Integer
deviceType
,
Long
time
,
String
clientIp
)
{
ImApplication
application
=
applicationService
.
getCacheById
(
applicationId
);
if
(
application
==
null
)
{
throw
new
BusinessException
(
"application not exist"
);
}
String
subscribeUrl
=
application
.
getOnlineStatusSubscribeUrl
();
String
appKey
=
application
.
getAppKey
();
String
appSecret
=
application
.
getAppSecret
();
String
callbackUrl
=
buildCallbackUrl
(
subscribeUrl
,
appKey
,
appSecret
);
ClientOnlineStatusChangeDto
body
=
ClientOnlineStatusChangeDto
.
builder
()
.
userId
(
clientId
)
.
status
(
status
)
.
os
(
""
)
.
time
(
time
)
.
clientIp
(
clientIp
)
.
build
();
ResponseEntity
<
Object
>
response
=
restTemplate
.
postForEntity
(
callbackUrl
,
body
,
Object
.
class
);
// 同步在线状态时需要接收服务提供应答,只要有 HTTP 应答码 200 即认为状态已经同步
if
(
response
.
getStatusCode
().
equals
(
HttpStatus
.
OK
))
{
// do nothing
}
else
{
// 如果应答超时 5 秒,会再尝试推送 2 次,如果仍然失败,将不再同步此条状态。如短时间内有大面积超时,将暂停推送,1 分钟后会继续推送。
}
return
true
;
}
/**
* 构建回调请求
* @Author luozh
* @Date 2022年04月22日 10:58:42
* @param
* @Return
*/
private
String
buildCallbackUrl
(
String
subscribeUrl
,
String
appKey
,
String
appSecret
)
{
// 计算 Signature (数据签名)
String
nonce
=
NanoId
.
randomNanoId
();
String
date
=
DateUtil
.
formatHttpDate
(
new
Date
());
String
signature
=
SignUtils
.
buildSignature
(
appKey
,
appSecret
,
nonce
,
date
);
String
finalUrl
=
subscribeUrl
+
"?appKey="
+
appKey
+
"&nonce="
+
nonce
+
"&date="
+
date
+
"&signature="
+
signature
;
return
finalUrl
;
}
}
framework/src/main/java/io/geekidea/springbootplus/framework/shiro/signature/SignUtils.java
View file @
e6aca3ce
...
@@ -136,4 +136,19 @@ public class SignUtils {
...
@@ -136,4 +136,19 @@ public class SignUtils {
return
new
HmacSHA256Signature
().
computeSignature
(
secretAccessKey
,
canonicalString
);
return
new
HmacSHA256Signature
().
computeSignature
(
secretAccessKey
,
canonicalString
);
}
}
/**
* 创建回调 Signature (数据签名)
* @Author luozh
* @Date 2022年04月22日 08:43:04
* @param appKey 蔚可云平台分配的App Key
* @param appSecret 蔚可云平台分配的App Secret
* @param nonce 随机字符串 长度为21
* @param date GMT格式时间8
* @Return 数据签名
*/
public
static
String
buildSignature
(
String
appKey
,
String
appSecret
,
String
nonce
,
String
date
)
{
String
canonicalString
=
appKey
+
nonce
+
date
;
return
new
HmacSHA256Signature
().
computeSignature
(
appSecret
,
canonicalString
);
}
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/ResourcePathConstants.java
View file @
e6aca3ce
...
@@ -29,7 +29,12 @@ public class ResourcePathConstants {
...
@@ -29,7 +29,12 @@ public class ResourcePathConstants {
/**
/**
* 获取好友申请列表
* 获取好友申请列表
*/
*/
public
static
final
String
GET_UNSURE_FRIENDS
=
"/api/friend/sdk/unsureFriends"
;
public
static
final
String
GET_UNSURE_FRIENDS
=
"/api/friends/sdk/unsureFriends"
;
/**
* 全量获取好友列表
*/
public
static
final
String
GET_FRIENDS
=
"/api/friends/sdk/getFriends"
;
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudIm.java
View file @
e6aca3ce
...
@@ -5,6 +5,7 @@ import java.util.List;
...
@@ -5,6 +5,7 @@ import java.util.List;
import
com.wecloud.im.sdk.model.Friend
;
import
com.wecloud.im.sdk.model.Friend
;
import
com.wecloud.im.sdk.model.ImClient
;
import
com.wecloud.im.sdk.model.ImClient
;
import
com.wecloud.im.sdk.model.Token
;
import
com.wecloud.im.sdk.model.Token
;
import
com.wecloud.im.sdk.model.UnsureFriend
;
/**
/**
*
*
...
@@ -25,7 +26,7 @@ public interface WecloudIm {
...
@@ -25,7 +26,7 @@ public interface WecloudIm {
* @Return
* @Return
* @return
* @return
*/
*/
ImClient
registerClient
(
Lo
ng
userId
,
String
headPortrait
,
String
nickname
);
ImClient
registerClient
(
Stri
ng
userId
,
String
headPortrait
,
String
nickname
);
/**
/**
* 获取用户token
* 获取用户token
...
@@ -35,7 +36,7 @@ public interface WecloudIm {
...
@@ -35,7 +36,7 @@ public interface WecloudIm {
* @param deviceType 设备类型 1:ios; 2:android; 3:web; 4:win; 5:mac
* @param deviceType 设备类型 1:ios; 2:android; 3:web; 4:win; 5:mac
* @Return
* @Return
*/
*/
Token
getToken
(
Lo
ng
userId
,
Integer
deviceType
);
Token
getToken
(
Stri
ng
userId
,
Integer
deviceType
);
/**
/**
...
@@ -47,7 +48,7 @@ public interface WecloudIm {
...
@@ -47,7 +48,7 @@ public interface WecloudIm {
* @param headPortrait 头像
* @param headPortrait 头像
* @Return
* @Return
*/
*/
Boolean
modifyUser
(
Lo
ng
userId
,
String
nickname
,
String
headPortrait
);
Boolean
modifyUser
(
Stri
ng
userId
,
String
nickname
,
String
headPortrait
);
/**
/**
* 获取好友请求列表
* 获取好友请求列表
...
@@ -56,6 +57,14 @@ public interface WecloudIm {
...
@@ -56,6 +57,14 @@ public interface WecloudIm {
* @param userId 用户id
* @param userId 用户id
* @Return
* @Return
*/
*/
List
<
Friend
>
getUnsureFriends
(
Lo
ng
userId
);
List
<
UnsureFriend
>
getUnsureFriends
(
Stri
ng
userId
);
/**
* 获取所有好友列表
* @Author luozh
* @Date 2022年04月22日 11:45:15
* @param userId 用户id
* @Return
*/
List
<
Friend
>
getFriends
(
String
userId
);
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudImClient.java
View file @
e6aca3ce
...
@@ -6,11 +6,13 @@ import java.util.List;
...
@@ -6,11 +6,13 @@ import java.util.List;
import
com.wecloud.im.sdk.internal.WecloudImClientOperation
;
import
com.wecloud.im.sdk.internal.WecloudImClientOperation
;
import
com.wecloud.im.sdk.model.ClientLoginRequest
;
import
com.wecloud.im.sdk.model.ClientLoginRequest
;
import
com.wecloud.im.sdk.model.Friend
;
import
com.wecloud.im.sdk.model.Friend
;
import
com.wecloud.im.sdk.model.GetFriendsRequest
;
import
com.wecloud.im.sdk.model.GetUnsureFriendsRequest
;
import
com.wecloud.im.sdk.model.GetUnsureFriendsRequest
;
import
com.wecloud.im.sdk.model.ImClient
;
import
com.wecloud.im.sdk.model.ImClient
;
import
com.wecloud.im.sdk.model.ModifyUserRequest
;
import
com.wecloud.im.sdk.model.ModifyUserRequest
;
import
com.wecloud.im.sdk.model.RegisterClientRequest
;
import
com.wecloud.im.sdk.model.RegisterClientRequest
;
import
com.wecloud.im.sdk.model.Token
;
import
com.wecloud.im.sdk.model.Token
;
import
com.wecloud.im.sdk.model.UnsureFriend
;
/**
/**
*
*
...
@@ -46,7 +48,7 @@ public class WecloudImClient implements WecloudIm {
...
@@ -46,7 +48,7 @@ public class WecloudImClient implements WecloudIm {
}
}
@Override
@Override
public
ImClient
registerClient
(
Lo
ng
userId
,
String
headPortrait
,
String
nickname
)
{
public
ImClient
registerClient
(
Stri
ng
userId
,
String
headPortrait
,
String
nickname
)
{
RegisterClientRequest
registerClientRequest
=
RegisterClientRequest
registerClientRequest
=
RegisterClientRequest
.
builder
()
RegisterClientRequest
.
builder
()
.
userId
(
userId
).
headPortrait
(
headPortrait
)
.
userId
(
userId
).
headPortrait
(
headPortrait
)
...
@@ -56,14 +58,14 @@ public class WecloudImClient implements WecloudIm {
...
@@ -56,14 +58,14 @@ public class WecloudImClient implements WecloudIm {
}
}
@Override
@Override
public
Token
getToken
(
Lo
ng
userId
,
Integer
deviceType
)
{
public
Token
getToken
(
Stri
ng
userId
,
Integer
deviceType
)
{
ClientLoginRequest
clientLoginRequest
=
ClientLoginRequest
.
builder
().
clientId
(
userId
).
deviceType
(
deviceType
).
build
();
ClientLoginRequest
clientLoginRequest
=
ClientLoginRequest
.
builder
().
clientId
(
userId
).
deviceType
(
deviceType
).
build
();
return
imClientOperation
.
getToken
(
clientLoginRequest
);
return
imClientOperation
.
getToken
(
clientLoginRequest
);
}
}
@Override
@Override
public
Boolean
modifyUser
(
Lo
ng
userId
,
String
nickname
,
String
headPortrait
)
{
public
Boolean
modifyUser
(
Stri
ng
userId
,
String
nickname
,
String
headPortrait
)
{
ModifyUserRequest
modifyUserRequest
=
ModifyUserRequest
modifyUserRequest
=
ModifyUserRequest
.
builder
().
userId
(
userId
).
nickname
(
nickname
).
headPortrait
(
headPortrait
).
build
();
ModifyUserRequest
.
builder
().
userId
(
userId
).
nickname
(
nickname
).
headPortrait
(
headPortrait
).
build
();
...
@@ -71,12 +73,19 @@ public class WecloudImClient implements WecloudIm {
...
@@ -71,12 +73,19 @@ public class WecloudImClient implements WecloudIm {
}
}
@Override
@Override
public
List
<
Friend
>
getUnsureFriends
(
Lo
ng
userId
)
{
public
List
<
UnsureFriend
>
getUnsureFriends
(
Stri
ng
userId
)
{
GetUnsureFriendsRequest
getUnsureFriendsRequest
=
GetUnsureFriendsRequest
.
builder
().
userId
(
userId
).
build
();
GetUnsureFriendsRequest
getUnsureFriendsRequest
=
GetUnsureFriendsRequest
.
builder
().
userId
(
userId
).
build
();
return
imClientOperation
.
getUnsureFriends
(
getUnsureFriendsRequest
);
return
imClientOperation
.
getUnsureFriends
(
getUnsureFriendsRequest
);
}
}
@Override
public
List
<
Friend
>
getFriends
(
String
userId
)
{
GetFriendsRequest
getFriendsRequest
=
GetFriendsRequest
.
builder
().
userId
(
userId
).
build
();
return
imClientOperation
.
getFriends
(
getFriendsRequest
);
}
private
void
initOperations
()
{
private
void
initOperations
()
{
this
.
imClientOperation
=
new
WecloudImClientOperation
(
apiDomain
,
appKey
,
appSecret
);
this
.
imClientOperation
=
new
WecloudImClientOperation
(
apiDomain
,
appKey
,
appSecret
);
}
}
...
...
im-sdk/src/main/java/com/wecloud/im/sdk/internal/SignUtils.java
View file @
e6aca3ce
...
@@ -144,4 +144,19 @@ public class SignUtils {
...
@@ -144,4 +144,19 @@ public class SignUtils {
return
new
HmacSHA256Signature
().
computeSignature
(
secretAccessKey
,
canonicalString
);
return
new
HmacSHA256Signature
().
computeSignature
(
secretAccessKey
,
canonicalString
);
}
}
/**
* 创建回调 Signature (数据签名)
* @Author luozh
* @Date 2022年04月22日 08:43:04
* @param appKey 蔚可云平台分配的App Key
* @param appSecret 蔚可云平台分配的App Secret
* @param nonce 随机字符串 长度为21
* @param date GMT格式时间8
* @Return 数据签名
*/
public
static
String
buildSignature
(
String
appKey
,
String
appSecret
,
String
nonce
,
String
date
)
{
String
canonicalString
=
appKey
+
nonce
+
date
;
return
new
HmacSHA256Signature
().
computeSignature
(
appSecret
,
canonicalString
);
}
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/internal/WecloudImClientOperation.java
View file @
e6aca3ce
...
@@ -12,12 +12,15 @@ import com.wecloud.im.sdk.common.HttpMethod;
...
@@ -12,12 +12,15 @@ import com.wecloud.im.sdk.common.HttpMethod;
import
com.wecloud.im.sdk.common.RequestMessage
;
import
com.wecloud.im.sdk.common.RequestMessage
;
import
com.wecloud.im.sdk.model.ClientLoginRequest
;
import
com.wecloud.im.sdk.model.ClientLoginRequest
;
import
com.wecloud.im.sdk.model.Friend
;
import
com.wecloud.im.sdk.model.Friend
;
import
com.wecloud.im.sdk.model.GetFriendsRequest
;
import
com.wecloud.im.sdk.model.GetUnsureFriendsRequest
;
import
com.wecloud.im.sdk.model.GetUnsureFriendsRequest
;
import
com.wecloud.im.sdk.model.ImClient
;
import
com.wecloud.im.sdk.model.ImClient
;
import
com.wecloud.im.sdk.model.ModifyUserRequest
;
import
com.wecloud.im.sdk.model.ModifyUserRequest
;
import
com.wecloud.im.sdk.model.RegisterClientRequest
;
import
com.wecloud.im.sdk.model.RegisterClientRequest
;
import
com.wecloud.im.sdk.model.Token
;
import
com.wecloud.im.sdk.model.Token
;
import
com.wecloud.im.sdk.model.UnsureFriend
;
import
static
com
.
wecloud
.
im
.
sdk
.
ResourcePathConstants
.
GET_FRIENDS
;
import
static
com
.
wecloud
.
im
.
sdk
.
ResourcePathConstants
.
GET_TOKEN_URL
;
import
static
com
.
wecloud
.
im
.
sdk
.
ResourcePathConstants
.
GET_TOKEN_URL
;
import
static
com
.
wecloud
.
im
.
sdk
.
ResourcePathConstants
.
GET_UNSURE_FRIENDS
;
import
static
com
.
wecloud
.
im
.
sdk
.
ResourcePathConstants
.
GET_UNSURE_FRIENDS
;
import
static
com
.
wecloud
.
im
.
sdk
.
ResourcePathConstants
.
MODIFY_USER_URL
;
import
static
com
.
wecloud
.
im
.
sdk
.
ResourcePathConstants
.
MODIFY_USER_URL
;
...
@@ -45,7 +48,7 @@ public class WecloudImClientOperation extends WecloudImOperation {
...
@@ -45,7 +48,7 @@ public class WecloudImClientOperation extends WecloudImOperation {
* @Return
* @Return
*/
*/
public
ImClient
registerClient
(
RegisterClientRequest
registerClientRequest
)
{
public
ImClient
registerClient
(
RegisterClientRequest
registerClientRequest
)
{
Lo
ng
userId
=
registerClientRequest
.
getUserId
();
Stri
ng
userId
=
registerClientRequest
.
getUserId
();
// 参数校验
// 参数校验
assertParameterNotNull
(
userId
,
"userId"
);
assertParameterNotNull
(
userId
,
"userId"
);
// 校验通过 构建参数
// 校验通过 构建参数
...
@@ -71,7 +74,7 @@ public class WecloudImClientOperation extends WecloudImOperation {
...
@@ -71,7 +74,7 @@ public class WecloudImClientOperation extends WecloudImOperation {
* @Return
* @Return
*/
*/
public
Token
getToken
(
ClientLoginRequest
clientLoginRequest
)
{
public
Token
getToken
(
ClientLoginRequest
clientLoginRequest
)
{
Lo
ng
clientId
=
clientLoginRequest
.
getClientId
();
Stri
ng
clientId
=
clientLoginRequest
.
getClientId
();
Integer
deviceType
=
clientLoginRequest
.
getDeviceType
();
Integer
deviceType
=
clientLoginRequest
.
getDeviceType
();
// 参数校验
// 参数校验
assertParameterNotNull
(
clientId
,
"userId"
);
assertParameterNotNull
(
clientId
,
"userId"
);
...
@@ -99,7 +102,7 @@ public class WecloudImClientOperation extends WecloudImOperation {
...
@@ -99,7 +102,7 @@ public class WecloudImClientOperation extends WecloudImOperation {
* @Return
* @Return
*/
*/
public
Boolean
modifyUser
(
ModifyUserRequest
modifyUserRequest
)
{
public
Boolean
modifyUser
(
ModifyUserRequest
modifyUserRequest
)
{
Lo
ng
userId
=
modifyUserRequest
.
getUserId
();
Stri
ng
userId
=
modifyUserRequest
.
getUserId
();
String
headPortrait
=
modifyUserRequest
.
getHeadPortrait
();
String
headPortrait
=
modifyUserRequest
.
getHeadPortrait
();
String
nickname
=
modifyUserRequest
.
getNickname
();
String
nickname
=
modifyUserRequest
.
getNickname
();
// 参数校验
// 参数校验
...
@@ -128,8 +131,8 @@ public class WecloudImClientOperation extends WecloudImOperation {
...
@@ -128,8 +131,8 @@ public class WecloudImClientOperation extends WecloudImOperation {
* @param getUnsureFriendsRequest
* @param getUnsureFriendsRequest
* @Return
* @Return
*/
*/
public
List
<
Friend
>
getUnsureFriends
(
GetUnsureFriendsRequest
getUnsureFriendsRequest
)
{
public
List
<
Unsure
Friend
>
getUnsureFriends
(
GetUnsureFriendsRequest
getUnsureFriendsRequest
)
{
Lo
ng
userId
=
getUnsureFriendsRequest
.
getUserId
();
Stri
ng
userId
=
getUnsureFriendsRequest
.
getUserId
();
// 参数校验
// 参数校验
assertParameterNotNull
(
userId
,
"userId"
);
assertParameterNotNull
(
userId
,
"userId"
);
// 校验通过 构建参数
// 校验通过 构建参数
...
@@ -142,9 +145,28 @@ public class WecloudImClientOperation extends WecloudImOperation {
...
@@ -142,9 +145,28 @@ public class WecloudImClientOperation extends WecloudImOperation {
.
setOriginalRequest
(
getUnsureFriendsRequest
).
build
();
.
setOriginalRequest
(
getUnsureFriendsRequest
).
build
();
Object
result
=
doOperation
(
request
);
Object
result
=
doOperation
(
request
);
TypeReference
<
List
<
UnsureFriend
>>
typeReference
=
new
TypeReference
<
List
<
UnsureFriend
>>()
{
};
List
<
UnsureFriend
>
unsureFriends
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
result
),
typeReference
);
return
unsureFriends
;
}
public
List
<
Friend
>
getFriends
(
GetFriendsRequest
getFriendsRequest
)
{
String
userId
=
getFriendsRequest
.
getUserId
();
// 参数校验
assertParameterNotNull
(
userId
,
"userId"
);
// 校验通过 构建参数
Map
<
String
,
String
>
param
=
new
HashMap
<>();
param
.
put
(
"clientId"
,
userId
+
""
);
// 发送请求
RequestMessage
request
=
new
WecloudRequestMessageBuilder
().
setEndpoint
(
GET_FRIENDS
)
.
setMethod
(
HttpMethod
.
GET
).
setParameters
(
param
)
.
setOriginalRequest
(
getFriendsRequest
).
build
();
Object
result
=
doOperation
(
request
);
TypeReference
<
List
<
Friend
>>
typeReference
=
new
TypeReference
<
List
<
Friend
>>()
{
TypeReference
<
List
<
Friend
>>
typeReference
=
new
TypeReference
<
List
<
Friend
>>()
{
};
};
List
<
Friend
>
f
riends
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
result
),
typeReference
);
List
<
Friend
>
unsureF
riends
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
result
),
typeReference
);
return
f
riends
;
return
unsureF
riends
;
}
}
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/internal/WecloudImOperation.java
View file @
e6aca3ce
...
@@ -85,6 +85,4 @@ public abstract class WecloudImOperation {
...
@@ -85,6 +85,4 @@ public abstract class WecloudImOperation {
return
new
RequestSigner
(
method
.
toString
(),
resourcePath
,
creds
);
return
new
RequestSigner
(
method
.
toString
(),
resourcePath
,
creds
);
}
}
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/model/ClientLoginRequest.java
View file @
e6aca3ce
...
@@ -18,7 +18,7 @@ public class ClientLoginRequest extends WebServiceRequest {
...
@@ -18,7 +18,7 @@ public class ClientLoginRequest extends WebServiceRequest {
/**
/**
* 用户id
* 用户id
*/
*/
private
Lo
ng
clientId
;
private
Stri
ng
clientId
;
/**
/**
* 设备类型 1:ios; 2:android; 3:web; 4:win; 5:mac
* 设备类型 1:ios; 2:android; 3:web; 4:win; 5:mac
...
...
im-sdk/src/main/java/com/wecloud/im/sdk/model/Friend.java
View file @
e6aca3ce
...
@@ -5,7 +5,7 @@ import lombok.Data;
...
@@ -5,7 +5,7 @@ import lombok.Data;
import
java.io.Serializable
;
import
java.io.Serializable
;
/**
/**
*
*
申请中的用户信息
* @Author luozh
* @Author luozh
* @Date 2022年04月13日 11:03
* @Date 2022年04月13日 11:03
* @Version 1.0
* @Version 1.0
...
@@ -30,19 +30,4 @@ public class Friend implements Serializable {
...
@@ -30,19 +30,4 @@ public class Friend implements Serializable {
*/
*/
private
Integer
state
;
private
Integer
state
;
/**
* 好友申请者
*/
private
String
claimerClientId
;
/**
* 好友拒绝原因
*/
private
String
rejectRemark
;
/**
* 好友请求说明
*/
private
String
requestRemark
;
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/model/GetFriendsRequest.java
0 → 100644
View file @
e6aca3ce
package
com
.
wecloud
.
im
.
sdk
.
model
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* 全量获取好友列表请求
* @Author luozh
* @Date 2022年04月21日 16:51
* @Version 1.0
*/
@EqualsAndHashCode
(
callSuper
=
true
)
@Builder
@Data
public
class
GetFriendsRequest
extends
WebServiceRequest
{
/**
* 用户id
*/
private
String
userId
;
}
im-sdk/src/main/java/com/wecloud/im/sdk/model/GetUnsureFriendsRequest.java
View file @
e6aca3ce
...
@@ -18,5 +18,5 @@ public class GetUnsureFriendsRequest extends WebServiceRequest {
...
@@ -18,5 +18,5 @@ public class GetUnsureFriendsRequest extends WebServiceRequest {
/**
/**
* 用户id
* 用户id
*/
*/
private
Lo
ng
userId
;
private
Stri
ng
userId
;
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/model/ModifyUserRequest.java
View file @
e6aca3ce
...
@@ -18,7 +18,7 @@ public class ModifyUserRequest extends WebServiceRequest {
...
@@ -18,7 +18,7 @@ public class ModifyUserRequest extends WebServiceRequest {
/**
/**
* userId
* userId
*/
*/
private
Lo
ng
userId
;
private
Stri
ng
userId
;
/**
/**
* 昵称
* 昵称
...
...
im-sdk/src/main/java/com/wecloud/im/sdk/model/RegisterClientRequest.java
View file @
e6aca3ce
...
@@ -18,7 +18,7 @@ public class RegisterClientRequest extends WebServiceRequest {
...
@@ -18,7 +18,7 @@ public class RegisterClientRequest extends WebServiceRequest {
/**
/**
* app 用户id
* app 用户id
*/
*/
private
Lo
ng
userId
;
private
Stri
ng
userId
;
/**
/**
* 头像
* 头像
...
...
im-sdk/src/main/java/com/wecloud/im/sdk/model/UnsureFriend.java
0 → 100644
View file @
e6aca3ce
package
com
.
wecloud
.
im
.
sdk
.
model
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* 申请中的用户信息
* @Author luozh
* @Date 2022年04月13日 11:03
* @Version 1.0
*/
@Data
public
class
UnsureFriend
implements
Serializable
{
private
static
final
long
serialVersionUID
=
5580006330057637138L
;
/**
* 好友的client-id
*/
private
String
friendClientId
;
/**
* 好友的昵称备注
*/
private
String
friendName
;
/**
* 好友关系状态,1:待确定,2:已确认,3:已拒绝,4:已删除
*/
private
Integer
state
;
/**
* 好友申请者
*/
private
String
claimerClientId
;
/**
* 好友拒绝原因
*/
private
String
rejectRemark
;
/**
* 好友请求说明
*/
private
String
requestRemark
;
}
im-sdk/src/main/java/com/wecloud/im/sdk/sample/GetTokenSample.java
View file @
e6aca3ce
...
@@ -18,7 +18,7 @@ public class GetTokenSample {
...
@@ -18,7 +18,7 @@ public class GetTokenSample {
"QizKVHcILRWp6Td2"
,
"QizKVHcILRWp6Td2"
,
"287d04828099fb7de871e9dda845fa8b6b2302faf2ab3737"
);
"287d04828099fb7de871e9dda845fa8b6b2302faf2ab3737"
);
Long
userId
=
20220413001L
;
String
userId
=
"20220413001"
;
Integer
deviceType
=
1
;
Integer
deviceType
=
1
;
Token
token
=
im
.
getToken
(
userId
,
deviceType
);
Token
token
=
im
.
getToken
(
userId
,
deviceType
);
System
.
out
.
println
(
"\t get token result="
+
JSONObject
.
toJSONString
(
token
));
System
.
out
.
println
(
"\t get token result="
+
JSONObject
.
toJSONString
(
token
));
...
...
im-sdk/src/main/java/com/wecloud/im/sdk/sample/ModifySample.java
View file @
e6aca3ce
...
@@ -17,7 +17,7 @@ public class ModifySample {
...
@@ -17,7 +17,7 @@ public class ModifySample {
"QizKVHcILRWp6Td2"
,
"QizKVHcILRWp6Td2"
,
"287d04828099fb7de871e9dda845fa8b6b2302faf2ab3737"
);
"287d04828099fb7de871e9dda845fa8b6b2302faf2ab3737"
);
Long
userId
=
20220413001L
;
String
userId
=
"20220413001"
;
String
headPortrait
=
"http://123"
;
String
headPortrait
=
"http://123"
;
String
nickname
=
"luo_test2"
;
String
nickname
=
"luo_test2"
;
Boolean
result
=
im
.
modifyUser
(
userId
,
nickname
,
headPortrait
);
Boolean
result
=
im
.
modifyUser
(
userId
,
nickname
,
headPortrait
);
...
...
im-sdk/src/main/java/com/wecloud/im/sdk/sample/RegisterClientSample.java
View file @
e6aca3ce
...
@@ -18,7 +18,7 @@ public class RegisterClientSample {
...
@@ -18,7 +18,7 @@ public class RegisterClientSample {
"QizKVHcILRWp6Td2"
,
"QizKVHcILRWp6Td2"
,
"287d04828099fb7de871e9dda845fa8b6b2302faf2ab3737"
);
"287d04828099fb7de871e9dda845fa8b6b2302faf2ab3737"
);
Long
userId
=
20220413001L
;
String
userId
=
"20220413001"
;
String
headPortrait
=
""
;
String
headPortrait
=
""
;
String
nickname
=
"luo_test1"
;
String
nickname
=
"luo_test1"
;
ImClient
imClient
=
im
.
registerClient
(
userId
,
headPortrait
,
nickname
);
ImClient
imClient
=
im
.
registerClient
(
userId
,
headPortrait
,
nickname
);
...
...
pom.xml
View file @
e6aca3ce
...
@@ -38,7 +38,7 @@
...
@@ -38,7 +38,7 @@
<reflections.version>
0.9.9
</reflections.version>
<reflections.version>
0.9.9
</reflections.version>
<jansi.version>
1.18
</jansi.version>
<jansi.version>
1.18
</jansi.version>
<lombok.version>
1.18.12
</lombok.version>
<lombok.version>
1.18.12
</lombok.version>
<hutool.version>
5.
2.4
</hutool.version>
<hutool.version>
5.
7.22
</hutool.version>
<junit.version>
4.12
</junit.version>
<junit.version>
4.12
</junit.version>
<ini4j.version>
0.5.4
</ini4j.version>
<ini4j.version>
0.5.4
</ini4j.version>
<mapstruct.version>
1.3.1.Final
</mapstruct.version>
<mapstruct.version>
1.3.1.Final
</mapstruct.version>
...
...
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