Commit 3e2b90a7 by Shadow

修复报错

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