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
3e2b90a7
Commit
3e2b90a7
authored
Jun 07, 2022
by
Shadow
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复报错
parent
619c3ca3
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
86 additions
and
99 deletions
+86
-99
im-biz/src/main/java/com/wecloud/im/biz/config/Swagger2Config.java
+1
-1
im-biz/src/main/java/com/wecloud/im/biz/module/message/controller/ImClientController.java
+2
-2
im-biz/src/main/java/com/wecloud/im/biz/module/message/controller/ImFriendController.java
+13
-13
im-biz/src/main/java/com/wecloud/im/biz/module/message/controller/param/ChatSettingParam.java
+3
-2
im-biz/src/main/java/com/wecloud/im/biz/module/message/entity/ImApplication.java
+1
-1
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/ImFriendService.java
+1
-1
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/impl/ImApplicationServiceImpl.java
+2
-2
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/impl/ImCallbackServiceImpl.java
+1
-13
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/impl/ImClientBlacklistServiceImpl.java
+1
-1
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/impl/ImClientLoginServiceImpl.java
+10
-14
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/impl/ImClientServiceImpl.java
+3
-3
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/impl/ImConversationMembersServiceImpl.java
+1
-1
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/impl/ImConversationServiceImpl.java
+1
-1
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/impl/ImGroupServiceImpl.java
+1
-1
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/impl/ImMessageServiceImpl.java
+3
-2
im-common/im-common-log/pom.xml
+4
-0
im-common/im-common-log/src/main/java/com/wecloud/im/log/aop/BaseLogAop.java
+4
-4
im-common/im-common-security/src/main/java/com/wecloud/im/security/cache/impl/AppLoginRedisServiceImpl.java
+1
-1
im-common/im-common-security/src/main/java/com/wecloud/im/security/jwt/JwtToken.java
+14
-1
im-common/im-common-security/src/main/java/com/wecloud/im/security/jwt/SecurityFilter.java
+2
-1
im-common/im-common-security/src/main/java/com/wecloud/im/security/util/JwtTokenUtil.java
+1
-1
im-common/im-common-security/src/main/java/com/wecloud/im/security/util/SaltUtil.java
+2
-1
im-server/pom.xml
+5
-2
im-server/src/main/java/com/wecloud/im/server/handler/NettyApiRequest.java
+9
-29
im-server/src/main/java/com/wecloud/im/server/handler/WsReadHandler.java
+0
-1
No files found.
im-biz/src/main/java/com/wecloud/im/biz/config/Swagger2Config.java
View file @
3e2b90a7
package
com
.
wecloud
.
im
.
biz
.
config
;
import
io.geekidea.springbootplus.framework.common.exception.SpringBootPlusConfigException
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -53,6 +52,7 @@ import com.google.common.base.Function;
import
com.google.common.base.Optional
;
import
com.google.common.base.Predicate
;
import
com.wecloud.im.biz.config.properties.SwaggerProperties
;
import
com.wecloud.im.core.common.exception.SpringBootPlusConfigException
;
import
com.wecloud.netty.dispatch.extend.ActionRequest
;
import
com.wecloud.netty.dispatch.extend.ArgumentBox
;
...
...
im-biz/src/main/java/com/wecloud/im/biz/module/message/controller/ImClientController.java
View file @
3e2b90a7
...
...
@@ -41,9 +41,9 @@ import com.wecloud.im.biz.module.message.service.ImClientService;
import
com.wecloud.im.core.common.api.ApiCode
;
import
com.wecloud.im.core.common.api.ApiResult
;
import
com.wecloud.im.core.common.controller.BaseController
;
import
com.wecloud.im.core.shiro.jwt.JwtToken
;
import
com.wecloud.im.core.shiro.util.JwtUtil
;
import
com.wecloud.im.core.validator.groups.Add
;
import
com.wecloud.im.security.jwt.JwtToken
;
import
com.wecloud.im.security.util.JwtUtil
;
import
com.wecloud.im.server.cache.UserStateCacheManager
;
/**
...
...
im-biz/src/main/java/com/wecloud/im/biz/module/message/controller/ImFriendController.java
View file @
3e2b90a7
...
...
@@ -41,7 +41,7 @@ import com.wecloud.im.core.common.exception.BusinessException;
import
com.wecloud.im.core.log.annotation.OperationLog
;
import
com.wecloud.im.core.log.enums.OperationLogType
;
import
com.wecloud.im.core.pagination.Paging
;
import
com.wecloud.im.
core.shiro
.util.SecurityUtils
;
import
com.wecloud.im.
security
.util.SecurityUtils
;
/**
* @author lixiaozhong
...
...
@@ -66,15 +66,15 @@ public class ImFriendController extends BaseController {
@ApiOperation
(
value
=
"查询好友信息,只有自己的好友才查得到"
)
public
ApiResult
<
ImFriendApplyDto
>
getFriendInfo
(
@RequestBody
ImFriendBaseParam
param
)
{
log
.
info
(
"查询好友信息入参 {}"
,
JSON
.
toJSONString
(
param
));
if
(
param
==
null
)
{
if
(
param
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
}
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
if
(
currentClient
==
null
)
{
if
(
currentClient
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
CLIENT_NOT_FOUNT
,
null
);
}
ImClient
friendClient
=
imClientService
.
getCacheImClient
(
currentClient
.
getFkAppid
(),
param
.
getFriendClientId
());
if
(
friendClient
==
null
)
{
if
(
friendClient
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
CLIENT_NOT_FOUNT
,
null
);
}
ImFriendApplyDto
friendInfo
=
imFriendService
.
getFriendInfo
(
currentClient
.
getClientId
(),
friendClient
.
getClientId
());
...
...
@@ -88,13 +88,13 @@ public class ImFriendController extends BaseController {
@ApiOperation
(
value
=
"申请添加好友"
)
public
ApiResult
<
Boolean
>
applyFriend
(
@RequestBody
ImFriendApplyParam
param
)
{
log
.
info
(
"申请添加好友入参 {}"
,
JSON
.
toJSONString
(
param
));
if
(
param
==
null
)
{
if
(
param
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
}
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
if
(
currentClient
==
null
)
{
if
(
currentClient
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
CLIENT_NOT_FOUNT
,
null
);
}
ImClient
friendClient
=
imClientService
.
getCacheImClient
(
currentClient
.
getFkAppid
(),
param
.
getFriendClientId
());
...
...
@@ -203,11 +203,11 @@ public class ImFriendController extends BaseController {
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
}
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
if
(
currentClient
==
null
)
{
if
(
currentClient
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
CLIENT_NOT_FOUNT
,
null
);
}
ImClient
friendClient
=
imClientService
.
getCacheImClient
(
currentClient
.
getFkAppid
(),
param
.
getFriendClientId
());
if
(
friendClient
==
null
)
{
if
(
friendClient
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
CLIENT_NOT_FOUNT
,
null
);
}
...
...
@@ -279,7 +279,7 @@ public class ImFriendController extends BaseController {
public
ApiResult
<
Paging
<
ImFriendBaseDto
>>
getImFriendPageList
(
@RequestBody
ImFriendPageParam
pageParam
)
{
log
.
info
(
"好友分页列表入参 {}"
,
JSON
.
toJSONString
(
pageParam
));
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
if
(
currentClient
==
null
)
{
if
(
currentClient
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
CLIENT_NOT_FOUNT
,
null
);
}
...
...
@@ -296,10 +296,10 @@ public class ImFriendController extends BaseController {
public
ApiResult
<
Boolean
>
batchCreateRecommend
(
@RequestBody
ImCreateRecommendParam
param
)
{
log
.
info
(
"批量创建好友推荐入参 {}"
,
JSON
.
toJSONString
(
param
));
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
if
(
currentClient
==
null
)
{
if
(
currentClient
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
CLIENT_NOT_FOUNT
,
null
);
}
if
(
CollectionUtils
.
isEmpty
(
param
.
getRecommendFriends
()))
{
if
(
CollectionUtils
.
isEmpty
(
param
.
getRecommendFriends
()))
{
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
}
for
(
ImFriendRecommendDto
p
:
param
.
getRecommendFriends
())
{
...
...
@@ -320,7 +320,7 @@ public class ImFriendController extends BaseController {
public
ApiResult
<
Paging
<
ImFriendRecommendDto
>>
getImFriendRecommendPageList
(
@RequestBody
ImFriendPageParam
pageParam
)
{
log
.
info
(
"好友推荐分页列表入参 {}"
,
JSON
.
toJSONString
(
pageParam
));
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
if
(
currentClient
==
null
)
{
if
(
currentClient
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
CLIENT_NOT_FOUNT
,
null
);
}
Paging
<
ImFriendRecommendDto
>
res
=
imFriendService
.
getImFriendRecommendPageList
(
currentClient
.
getId
(),
pageParam
);
...
...
@@ -336,7 +336,7 @@ public class ImFriendController extends BaseController {
public
ApiResult
<
Boolean
>
batchDeleteRecommend
(
@RequestBody
ImDeleteRecommendParam
param
)
{
log
.
info
(
"删除好友推荐入参 {}"
,
JSON
.
toJSONString
(
param
));
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
if
(
currentClient
==
null
)
{
if
(
currentClient
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
CLIENT_NOT_FOUNT
,
null
);
}
imFriendService
.
batchDeleteRecommend
(
currentClient
,
param
.
getFriendClientIds
());
...
...
im-biz/src/main/java/com/wecloud/im/biz/module/message/controller/param/ChatSettingParam.java
View file @
3e2b90a7
package
com
.
wecloud
.
im
.
biz
.
module
.
message
.
controller
.
param
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* 聊天设置入参
...
...
@@ -8,8 +9,8 @@ import io.swagger.annotations.ApiModelProperty;
* @Date 2022年04月26日 11:52
* @Version 1.0
*/
@Data
public
class
ChatSettingParam
{
@Data
public
class
ChatSettingParam
{
@ApiModelProperty
(
"客户端id"
)
String
clientId
;
...
...
im-biz/src/main/java/com/wecloud/im/biz/module/message/entity/ImApplication.java
View file @
3e2b90a7
...
...
@@ -13,7 +13,7 @@ import javax.validation.constraints.NotNull;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.wecloud.im.core.common.entity.BaseEntity
;
import
com.wecloud.im.
core.shiro
.signature.Application
;
import
com.wecloud.im.
security
.signature.Application
;
/**
* 第三方应用表
...
...
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/ImFriendService.java
View file @
3e2b90a7
...
...
@@ -41,8 +41,8 @@ import com.wecloud.im.core.common.exception.BusinessException;
import
com.wecloud.im.core.common.service.impl.BaseServiceImpl
;
import
com.wecloud.im.core.pagination.PageInfo
;
import
com.wecloud.im.core.pagination.Paging
;
import
com.wecloud.im.core.shiro.util.SecurityUtils
;
import
com.wecloud.im.core.util.SnowflakeUtil
;
import
com.wecloud.im.security.util.SecurityUtils
;
/**
* @Description 好友关系处理逻辑
...
...
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/impl/ImApplicationServiceImpl.java
View file @
3e2b90a7
...
...
@@ -21,8 +21,8 @@ import com.wecloud.im.biz.module.message.service.ImApplicationService;
import
com.wecloud.im.core.common.service.impl.BaseServiceImpl
;
import
com.wecloud.im.core.pagination.PageInfo
;
import
com.wecloud.im.core.pagination.Paging
;
import
com.wecloud.im.
core.shiro
.signature.Application
;
import
com.wecloud.im.
core.shiro
.signature.ApplicationService
;
import
com.wecloud.im.
security
.signature.Application
;
import
com.wecloud.im.
security
.signature.ApplicationService
;
/**
* 第三方应用表 服务实现类
...
...
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/impl/ImCallbackServiceImpl.java
View file @
3e2b90a7
...
...
@@ -34,7 +34,7 @@ import com.wecloud.im.biz.module.message.service.ImCallbackService;
import
com.wecloud.im.biz.module.message.service.ImClientService
;
import
com.wecloud.im.biz.module.message.service.ImConversationMembersService
;
import
com.wecloud.im.biz.module.message.service.ImConversationService
;
import
com.wecloud.im.
core.shiro
.signature.SignUtils
;
import
com.wecloud.im.
security
.signature.SignUtils
;
import
com.wecloud.im.server.enums.MsgTypeEnum
;
/**
...
...
@@ -229,16 +229,4 @@ public class ImCallbackServiceImpl implements ImCallbackService {
headers
.
add
(
"WECLOUD-IM-SIGNATURE"
,
signature
);
return
headers
;
}
public
static
void
main
(
String
[]
args
)
{
// 计算 Signature (数据签名)
String
appKey
=
"QizKVHcILRWp6Td2"
;
String
appSecret
=
"287d04828099fb7de871e9dda845fa8b6b2302faf2ab3457"
;
String
nonce
=
NanoId
.
randomNanoId
();
String
date
=
DateUtil
.
formatHttpDate
(
new
Date
());
String
signature
=
SignUtils
.
buildSignature
(
appKey
,
appSecret
,
nonce
,
date
);
System
.
out
.
println
(
"nonce = "
+
nonce
);
System
.
out
.
println
(
"date = "
+
date
);
System
.
out
.
println
(
"signature = "
+
signature
);
}
}
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/impl/ImClientBlacklistServiceImpl.java
View file @
3e2b90a7
...
...
@@ -24,8 +24,8 @@ import com.wecloud.im.core.common.exception.BusinessException;
import
com.wecloud.im.core.common.service.impl.BaseServiceImpl
;
import
com.wecloud.im.core.pagination.PageInfo
;
import
com.wecloud.im.core.pagination.Paging
;
import
com.wecloud.im.core.shiro.util.SecurityUtils
;
import
com.wecloud.im.core.util.SnowflakeUtil
;
import
com.wecloud.im.security.util.SecurityUtils
;
/**
* 黑名单 服务实现类
...
...
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/impl/ImClientLoginServiceImpl.java
View file @
3e2b90a7
...
...
@@ -25,23 +25,17 @@ import com.wecloud.im.biz.module.message.service.ImClientLoginService;
import
com.wecloud.im.biz.module.message.service.ImClientService
;
import
com.wecloud.im.core.common.api.ApiCode
;
import
com.wecloud.im.core.common.api.ApiResult
;
import
com.wecloud.im.core.properties.JwtProperties
;
import
com.wecloud.im.core.shiro.cache.AppLoginRedisService
;
import
com.wecloud.im.core.shiro.jwt.JwtToken
;
import
com.wecloud.im.core.shiro.util.JwtUtil
;
import
com.wecloud.im.core.shiro.util.SecurityUtils
;
import
com.wecloud.im.core.util.SnowflakeUtil
;
import
com.wecloud.im.security.cache.AppLoginRedisService
;
import
com.wecloud.im.security.jwt.JwtToken
;
import
com.wecloud.im.security.properties.JwtProperties
;
import
com.wecloud.im.security.util.JwtUtil
;
import
com.wecloud.im.security.util.SecurityUtils
;
@Service
@Slf4j
public
class
ImClientLoginServiceImpl
implements
ImClientLoginService
{
// @Autowired
// private RedisUtils redisUtils;
// @Autowired
// private StringRedisTemplate redisTemplate;
private
static
JwtProperties
jwtProperties
;
@Autowired
private
ImApplicationService
imApplicationService
;
...
...
@@ -114,7 +108,8 @@ public class ImClientLoginServiceImpl implements ImClientLoginService {
// 保存redis
// redisTemplate.opsForValue().set("client:" + imApplication.getAppKey() + ":" + imTokenVerify.getClientId(), generateToken);
JwtToken
jwtToken
=
JwtToken
.
build
(
generateToken
,
secret
,
jwtProperties
.
getExpireSecond
(),
imClient
.
getClientId
(),
imTokenVerify
.
getAppKey
(),
imTokenVerify
.
getPlatform
());
JwtToken
jwtToken
=
JwtToken
.
build
(
generateToken
,
secret
,
jwtProperties
.
getExpireSecond
(),
imClient
.
getId
(),
imClient
.
getClientId
(),
imApplication
.
getId
(),
imTokenVerify
.
getAppKey
(),
imTokenVerify
.
getPlatform
());
appLoginRedisService
.
cacheLoginInfo
(
jwtToken
);
TokenVo
tokenVo
=
new
TokenVo
();
...
...
@@ -163,8 +158,9 @@ public class ImClientLoginServiceImpl implements ImClientLoginService {
// 生成token
String
generateToken
=
JwtUtil
.
generateToken
(
clientId
+
""
,
appKey
,
appSecret
,
Duration
.
ofDays
(
99999
),
deviceType
);
JwtToken
jwtToken
=
JwtToken
.
build
(
generateToken
,
appSecret
,
jwtProperties
.
getExpireSecond
(),
clientId
+
""
,
appKey
,
deviceType
);
JwtToken
jwtToken
=
JwtToken
.
build
(
generateToken
,
appSecret
,
jwtProperties
.
getExpireSecond
(),
client
.
getId
(),
clientId
+
""
,
appId
,
appKey
,
deviceType
);
appLoginRedisService
.
cacheLoginInfo
(
jwtToken
);
TokenVo
tokenVo
=
new
TokenVo
();
...
...
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/impl/ImClientServiceImpl.java
View file @
3e2b90a7
...
...
@@ -58,10 +58,10 @@ import com.wecloud.im.core.common.exception.BusinessException;
import
com.wecloud.im.core.common.service.impl.BaseServiceImpl
;
import
com.wecloud.im.core.pagination.PageInfo
;
import
com.wecloud.im.core.pagination.Paging
;
import
com.wecloud.im.core.shiro.jwt.JwtToken
;
import
com.wecloud.im.core.shiro.util.JwtUtil
;
import
com.wecloud.im.core.shiro.util.SecurityUtils
;
import
com.wecloud.im.core.util.SnowflakeUtil
;
import
com.wecloud.im.security.jwt.JwtToken
;
import
com.wecloud.im.security.util.JwtUtil
;
import
com.wecloud.im.security.util.SecurityUtils
;
import
com.wecloud.im.server.utils.RedisUtils
;
import
com.wecloud.netty.dispatch.extend.ActionRequest
;
import
com.wecloud.netty.dispatch.util.ActionRequestHolder
;
...
...
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/impl/ImConversationMembersServiceImpl.java
View file @
3e2b90a7
...
...
@@ -48,8 +48,8 @@ import com.wecloud.im.core.common.exception.BusinessException;
import
com.wecloud.im.core.common.service.impl.BaseServiceImpl
;
import
com.wecloud.im.core.pagination.PageInfo
;
import
com.wecloud.im.core.pagination.Paging
;
import
com.wecloud.im.core.shiro.util.SecurityUtils
;
import
com.wecloud.im.core.util.JsonUtils
;
import
com.wecloud.im.security.util.SecurityUtils
;
import
com.wecloud.im.server.enums.MsgTypeEnum
;
import
com.wecloud.im.server.enums.WsResponseCmdEnum
;
import
com.wecloud.im.server.model.WsResponse
;
...
...
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/impl/ImConversationServiceImpl.java
View file @
3e2b90a7
...
...
@@ -91,9 +91,9 @@ import com.wecloud.im.core.common.exception.BusinessException;
import
com.wecloud.im.core.common.service.impl.BaseServiceImpl
;
import
com.wecloud.im.core.pagination.PageInfo
;
import
com.wecloud.im.core.pagination.Paging
;
import
com.wecloud.im.core.shiro.util.SecurityUtils
;
import
com.wecloud.im.core.util.JsonUtils
;
import
com.wecloud.im.core.util.SnowflakeUtil
;
import
com.wecloud.im.security.util.SecurityUtils
;
import
com.wecloud.im.server.enums.MsgTypeEnum
;
import
com.wecloud.im.server.enums.WsResponseCmdEnum
;
import
com.wecloud.im.server.utils.RedisUtils
;
...
...
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/impl/ImGroupServiceImpl.java
View file @
3e2b90a7
...
...
@@ -39,9 +39,9 @@ import com.wecloud.im.biz.module.message.service.ImConversationService;
import
com.wecloud.im.biz.module.message.service.ImGroupService
;
import
com.wecloud.im.biz.module.message.service.ImMessageService
;
import
com.wecloud.im.core.common.exception.BusinessException
;
import
com.wecloud.im.core.shiro.util.SecurityUtils
;
import
com.wecloud.im.core.util.JsonUtils
;
import
com.wecloud.im.core.util.SnowflakeUtil
;
import
com.wecloud.im.security.util.SecurityUtils
;
import
com.wecloud.im.server.enums.MsgTypeEnum
;
import
com.wecloud.im.server.enums.WsResponseCmdEnum
;
import
com.wecloud.imserver.client.model.enums.DeviceTypeEnum
;
...
...
im-biz/src/main/java/com/wecloud/im/biz/module/message/service/impl/ImMessageServiceImpl.java
View file @
3e2b90a7
...
...
@@ -77,9 +77,9 @@ import com.wecloud.im.core.common.exception.BusinessException;
import
com.wecloud.im.core.common.service.impl.BaseServiceImpl
;
import
com.wecloud.im.core.pagination.PageInfo
;
import
com.wecloud.im.core.pagination.Paging
;
import
com.wecloud.im.core.shiro.util.SecurityUtils
;
import
com.wecloud.im.core.util.JsonUtils
;
import
com.wecloud.im.core.util.SnowflakeUtil
;
import
com.wecloud.im.security.util.SecurityUtils
;
import
com.wecloud.im.server.enums.MsgTypeEnum
;
import
com.wecloud.im.server.enums.WsResponseCmdEnum
;
import
com.wecloud.im.server.model.WsResponse
;
...
...
@@ -351,7 +351,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
ImClient
imClientSender
=
contextService
.
getImClientIfNotNullOrThrow
();
ImApplication
imApplication
=
contextService
.
getImApplicationIfNotNullOrThrow
(
imClientSender
.
getFkAppid
());
// todo 单向撤回、双向撤回开关可配置
B
oolean
deleteOther
=
true
;
b
oolean
deleteOther
=
true
;
List
<
ImMessage
>
imMessageList
=
this
.
listByIds
(
param
.
getMsgIds
());
if
(
CollectionUtils
.
isEmpty
(
imMessageList
))
{
throw
new
BusinessException
(
"查无消息"
);
...
...
@@ -521,6 +521,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
return
new
Paging
<>(
iPage
);
}
@Override
public
Paging
<
OfflineMsgDto
>
getHistoryMsgConversationIdNew
(
ImHistoryMessagePageParam
param
)
{
Page
<
ImMessage
>
page
=
new
PageInfo
<>(
param
,
OrderItem
.
desc
(
getLambdaColumn
(
ImMessage:
:
getCreateTime
)));
...
...
im-common/im-common-log/pom.xml
View file @
3e2b90a7
...
...
@@ -29,6 +29,10 @@
<groupId>
com.wecloud
</groupId>
<artifactId>
im-common-core
</artifactId>
</dependency>
<dependency>
<groupId>
com.wecloud
</groupId>
<artifactId>
im-common-security
</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
...
...
im-common/im-common-log/src/main/java/com/wecloud/im/log/aop/BaseLogAop.java
View file @
3e2b90a7
...
...
@@ -53,10 +53,6 @@ import com.wecloud.im.core.ip.service.IpAddressService;
import
com.wecloud.im.core.log.annotation.Module
;
import
com.wecloud.im.core.log.annotation.OperationLog
;
import
com.wecloud.im.core.log.annotation.OperationLogIgnore
;
import
com.wecloud.im.core.shiro.service.LoginToken
;
import
com.wecloud.im.core.shiro.service.LoginUsername
;
import
com.wecloud.im.core.shiro.util.JwtTokenUtil
;
import
com.wecloud.im.core.shiro.util.JwtUtil
;
import
com.wecloud.im.core.util.AnsiUtil
;
import
com.wecloud.im.core.util.ClientInfoUtil
;
import
com.wecloud.im.core.util.DateUtil
;
...
...
@@ -70,6 +66,10 @@ import com.wecloud.im.log.entity.SysOperationLog;
import
com.wecloud.im.log.properties.SpringBootPlusAopProperties
;
import
com.wecloud.im.log.service.SysLoginLogService
;
import
com.wecloud.im.log.service.SysOperationLogService
;
import
com.wecloud.im.security.service.LoginToken
;
import
com.wecloud.im.security.service.LoginUsername
;
import
com.wecloud.im.security.util.JwtTokenUtil
;
import
com.wecloud.im.security.util.JwtUtil
;
/**
* <p>
...
...
im-common/im-common-security/src/main/java/com/wecloud/im/security/cache/impl/AppLoginRedisServiceImpl.java
View file @
3e2b90a7
...
...
@@ -13,9 +13,9 @@ import org.springframework.stereotype.Service;
import
com.wecloud.im.core.constant.ClientLoginRedisKey
;
import
com.wecloud.im.core.constant.CommonRedisKey
;
import
com.wecloud.im.core.properties.JwtProperties
;
import
com.wecloud.im.security.cache.AppLoginRedisService
;
import
com.wecloud.im.security.jwt.JwtToken
;
import
com.wecloud.im.security.properties.JwtProperties
;
import
com.wecloud.im.security.vo.LoginUserRedisVo
;
import
com.wecloud.im.security.vo.LoginUserVo
;
...
...
im-common/im-common-security/src/main/java/com/wecloud/im/security/jwt/JwtToken.java
View file @
3e2b90a7
...
...
@@ -29,11 +29,21 @@ public class JwtToken implements HostAuthenticationToken {
private
String
host
;
/**
* client id
*/
private
Long
fkClientId
;
/**
* 登录clientId
*/
private
String
clientId
;
/**
* appId
*/
private
Long
appId
;
/**
* app
*/
private
String
appKey
;
...
...
@@ -68,12 +78,15 @@ public class JwtToken implements HostAuthenticationToken {
*/
private
Integer
platform
;
public
static
JwtToken
build
(
String
token
,
String
salt
,
long
expireSecond
,
String
clientId
,
String
appKey
,
Integer
platform
)
{
public
static
JwtToken
build
(
String
token
,
String
salt
,
long
expireSecond
,
Long
fkClientId
,
String
clientId
,
Long
appId
,
String
appKey
,
Integer
platform
)
{
DecodedJWT
decodedJwt
=
JwtUtil
.
getJwtInfo
(
token
);
Date
createDate
=
decodedJwt
.
getIssuedAt
();
Date
expireDate
=
decodedJwt
.
getExpiresAt
();
JwtToken
jwtToken
=
new
JwtToken
();
jwtToken
.
setClientId
(
clientId
);
jwtToken
.
setFkClientId
(
fkClientId
);
jwtToken
.
setAppId
(
appId
);
jwtToken
.
setAppKey
(
appKey
);
jwtToken
.
setToken
(
token
);
jwtToken
.
setHost
(
IpUtil
.
getRequestIp
());
...
...
im-common/im-common-security/src/main/java/com/wecloud/im/security/jwt/SecurityFilter.java
View file @
3e2b90a7
...
...
@@ -113,7 +113,8 @@ public class SecurityFilter extends AuthenticatingFilter {
if
(
jwtToken
==
null
)
{
throw
new
AuthenticationException
(
"Redis Token不存在,token:"
+
token
);
}
return
JwtToken
.
build
(
token
,
jwtToken
.
getSalt
(),
jwtToken
.
getExpireSecond
(),
jwtToken
.
getClientId
(),
jwtToken
.
getAppKey
(),
jwtToken
.
getPlatform
());
return
JwtToken
.
build
(
token
,
jwtToken
.
getSalt
(),
jwtToken
.
getExpireSecond
(),
jwtToken
.
getFkClientId
(),
jwtToken
.
getClientId
(),
jwtToken
.
getAppId
(),
jwtToken
.
getAppKey
(),
jwtToken
.
getPlatform
());
}
...
...
im-common/im-common-security/src/main/java/com/wecloud/im/security/util/JwtTokenUtil.java
View file @
3e2b90a7
...
...
@@ -7,8 +7,8 @@ import javax.servlet.http.HttpServletRequest;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Component
;
import
com.wecloud.im.core.properties.JwtProperties
;
import
com.wecloud.im.core.util.HttpServletRequestUtil
;
import
com.wecloud.im.security.properties.JwtProperties
;
/**
* JwtToken工具类
...
...
im-common/im-common-security/src/main/java/com/wecloud/im/security/util/SaltUtil.java
View file @
3e2b90a7
...
...
@@ -4,7 +4,8 @@ import org.apache.commons.codec.digest.DigestUtils;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.shiro.crypto.SecureRandomNumberGenerator
;
import
com.wecloud.im.core.properties.JwtProperties
;
import
com.wecloud.im.security.properties.JwtProperties
;
/**
* 盐值包装工具类
...
...
im-server/pom.xml
View file @
3e2b90a7
...
...
@@ -48,6 +48,10 @@
<groupId>
com.wecloud
</groupId>
<artifactId>
im-common-core
</artifactId>
</dependency>
<dependency>
<groupId>
com.wecloud
</groupId>
<artifactId>
im-common-security
</artifactId>
</dependency>
</dependencies>
<properties>
...
...
@@ -55,4 +59,4 @@
<maven.compiler.target>
8
</maven.compiler.target>
</properties>
</project>
\ No newline at end of file
</project>
im-server/src/main/java/com/wecloud/im/server/handler/NettyApiRequest.java
View file @
3e2b90a7
...
...
@@ -23,18 +23,14 @@ import com.auth0.jwt.interfaces.DecodedJWT;
import
com.wecloud.im.core.common.api.ApiCode
;
import
com.wecloud.im.core.common.api.ApiResult
;
import
com.wecloud.im.core.constant.CommonConstant
;
import
com.wecloud.im.core.shiro.jwt.JwtToken
;
import
com.wecloud.im.core.shiro.service.ShiroLoginService
;
import
com.wecloud.im.core.shiro.util.JwtUtil
;
import
com.wecloud.im.core.util.JsonUtils
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.event.ClientOnlineStatusChangeEvent
;
import
com.wecloud.im.security.jwt.JwtToken
;
import
com.wecloud.im.security.service.ShiroLoginService
;
import
com.wecloud.im.security.util.JwtUtil
;
import
com.wecloud.im.server.event.ChannelStatusChangeEvent
;
import
com.wecloud.im.server.manager.ChannelManager
;
import
com.wecloud.im.server.model.WsConstants
;
import
com.wecloud.im.server.utils.FullHttpRequestUtils
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.ImClientService
;
/**
* @Description 聊天模块 http请求处理
...
...
@@ -55,12 +51,6 @@ public class NettyApiRequest {
private
WsReadHandler
appImReadHandler
;
@Autowired
private
ImClientService
imClientService
;
@Autowired
private
ImApplicationService
imApplicationService
;
@Autowired
private
ApplicationEventPublisher
eventPublisher
;
/**
...
...
@@ -146,31 +136,21 @@ public class NettyApiRequest {
// 添加长连接handler
ctx
.
pipeline
().
addLast
(
"appImHandler"
,
appImReadHandler
);
ImApplication
app
=
imApplicationService
.
getCacheAppByAppKey
(
appKey
);
if
(
app
==
null
)
{
log
.
warn
(
"根据appKey: {} 查找不到 imApplication!"
,
appKey
);
return
;
}
ImClient
client
=
imClientService
.
getCacheImClient
(
app
.
getId
(),
outClientId
);
// 设置属性值 userid - channel
ctx
.
channel
().
attr
(
ChannelManager
.
CLIENT_ID
).
set
(
client
.
ge
tId
());
ctx
.
channel
().
attr
(
ChannelManager
.
CLIENT_ID
).
set
(
jwtToken
.
getFkClien
tId
());
ctx
.
channel
().
attr
(
ChannelManager
.
PLATFORM
).
set
(
jwtToken
.
getPlatform
());
ctx
.
channel
().
attr
(
ChannelManager
.
APPLICATION_ID
).
set
(
app
.
get
Id
());
// 读空闲的计数=0
ctx
.
channel
().
attr
(
ChannelManager
.
APPLICATION_ID
).
set
(
jwtToken
.
getApp
Id
());
// 读空闲的计数=0
ctx
.
channel
().
attr
(
ChannelManager
.
READ_IDLE_TIMES
).
set
(
0
);
// 读空闲的计数=0
// 保存用户上下文对象
appUserChannelsService
.
online
(
client
.
ge
tId
(),
jwtToken
.
getPlatform
(),
(
NioSocketChannel
)
ctx
.
channel
());
appUserChannelsService
.
online
(
jwtToken
.
getFkClien
tId
(),
jwtToken
.
getPlatform
(),
(
NioSocketChannel
)
ctx
.
channel
());
// 发布客户端在线状态变化-上线事件
Long
appId
=
app
.
getId
();
String
clientId
=
client
.
getClientId
();
Long
appId
=
jwtToken
.
getAppId
();
Integer
platform
=
jwtToken
.
getPlatform
();
long
time
=
System
.
currentTimeMillis
();
String
clientIp
=
ctx
.
channel
().
remoteAddress
().
toString
();
ClientOnlineStatusChangeEvent
clientOnlineStatusChangeEvent
=
new
ClientOnlineStatusChangeEvent
(
appId
,
client
.
getId
(),
1
,
platform
,
time
,
clientIp
);
ChannelStatusChangeEvent
clientOnlineStatusChangeEvent
=
new
ChannelStatusChangeEvent
(
appId
,
jwtToken
.
getFkClientId
(),
1
,
platform
,
time
,
clientIp
);
eventPublisher
.
publishEvent
(
clientOnlineStatusChangeEvent
);
//移除当前api处理handler, 不再参与长连接处理
ctx
.
pipeline
().
remove
(
"SingleHttpRequestHandler"
);
...
...
im-server/src/main/java/com/wecloud/im/server/handler/WsReadHandler.java
View file @
3e2b90a7
...
...
@@ -75,7 +75,6 @@ public class WsReadHandler extends SimpleChannelInboundHandler<TextWebSocketFram
log
.
info
(
"收到心跳应用Pong,clientId:"
+
clientId
);
return
;
}
// AbstractImCmdStrategy.process(clientId, ctx, data);
generalMessageHandler
.
doMessage
(
clientId
,
ctx
,
data
);
...
...
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