Commit bfeaf214 by Shadow

im-common项目迁移,引入新依赖

parent ddb7c473
...@@ -32,6 +32,12 @@ ...@@ -32,6 +32,12 @@
<version>2.11.3</version> <version>2.11.3</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
......
...@@ -22,75 +22,41 @@ ...@@ -22,75 +22,41 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.wecloud</groupId> <groupId>com.wecloud</groupId>
<artifactId>im-common-core</artifactId> <artifactId>can-common-core</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.wecloud</groupId> <groupId>com.wecloud</groupId>
<artifactId>im-common-log</artifactId> <artifactId>can-common-log</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.wecloud</groupId> <groupId>com.wecloud</groupId>
<artifactId>im-common-security</artifactId> <artifactId>can-common-security</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.wecloud</groupId> <groupId>com.wecloud</groupId>
<artifactId>im-server</artifactId> <artifactId>can-common-swagger</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.wecloud</groupId> <groupId>com.wecloud</groupId>
<artifactId>im-common-web</artifactId> <artifactId>can-common-datasource</artifactId>
</dependency>
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>6.4.0</version>
</dependency> </dependency>
<!-- netty-->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-codec</artifactId>
<version>4.1.25.Final</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport</artifactId>
<version>4.1.25.Final</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport-native-epoll</artifactId>
<version>4.1.25.Final</version>
<classifier>linux-x86_64</classifier>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-codec-http</artifactId>
<version>4.1.25.Final</version>
</dependency>
<dependency> <dependency>
<groupId>io.netty</groupId> <groupId>com.wecloud</groupId>
<artifactId>netty-handler</artifactId> <artifactId>im-server</artifactId>
<version>4.1.25.Final</version> <version>2.0</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport-udt</artifactId>
<version>4.1.25.Final</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.netty</groupId> <groupId>com.google.firebase</groupId>
<artifactId>netty-transport-sctp</artifactId> <artifactId>firebase-admin</artifactId>
<version>4.1.25.Final</version> <version>6.4.0</version>
</dependency> </dependency>
<!-- netty-->
<!-- fastbootWeixin的核心依赖 --> <!-- fastbootWeixin的核心依赖 -->
<dependency> <dependency>
...@@ -166,18 +132,14 @@ ...@@ -166,18 +132,14 @@
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId> <groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-api</artifactId> <artifactId>nacos-api</artifactId>
<version>1.4.1</version> <version>1.4.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.wecloud</groupId> <groupId>cn.hutool</groupId>
<artifactId>im-common-swagger</artifactId> <artifactId>hutool-crypto</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>
......
...@@ -13,8 +13,8 @@ import org.springframework.scheduling.annotation.EnableAsync; ...@@ -13,8 +13,8 @@ import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;
import com.wecloud.can.core.util.PrintApplicationInfo;
import com.wecloud.im.biz.core.rocketmq.annotation.EnableRocketMq; import com.wecloud.im.biz.core.rocketmq.annotation.EnableRocketMq;
import com.wecloud.im.core.util.PrintApplicationInfo;
/** /**
* 项目启动入口 * 项目启动入口
......
...@@ -9,13 +9,13 @@ import java.util.Map; ...@@ -9,13 +9,13 @@ import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.log.annotation.OperationLog;
import com.wecloud.can.log.enums.OperationLogType;
import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistPageParam; import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistPageParam;
import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistQueryVo; import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistQueryVo;
import com.wecloud.im.biz.module.message.controller.param.add.ImClientBlacklistUpdate; import com.wecloud.im.biz.module.message.controller.param.add.ImClientBlacklistUpdate;
import com.wecloud.im.biz.module.message.service.ImClientBlacklistService; import com.wecloud.im.biz.module.message.service.ImClientBlacklistService;
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.server.model.WsResponse; import com.wecloud.im.server.model.WsResponse;
import com.wecloud.netty.dispatch.annotation.ActionMapping; import com.wecloud.netty.dispatch.annotation.ActionMapping;
......
...@@ -14,6 +14,7 @@ import org.springframework.stereotype.Component; ...@@ -14,6 +14,7 @@ import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.im.biz.module.message.controller.param.ChatRoomMemberPageParam; import com.wecloud.im.biz.module.message.controller.param.ChatRoomMemberPageParam;
import com.wecloud.im.biz.module.message.controller.param.DisbandConversationParam; import com.wecloud.im.biz.module.message.controller.param.DisbandConversationParam;
import com.wecloud.im.biz.module.message.controller.param.ExitChatRoomParam; import com.wecloud.im.biz.module.message.controller.param.ExitChatRoomParam;
...@@ -36,7 +37,6 @@ import com.wecloud.im.biz.module.message.controller.vo.ChatRoomMemberVo; ...@@ -36,7 +37,6 @@ import com.wecloud.im.biz.module.message.controller.vo.ChatRoomMemberVo;
import com.wecloud.im.biz.module.message.controller.vo.ConversationVo; import com.wecloud.im.biz.module.message.controller.vo.ConversationVo;
import com.wecloud.im.biz.module.message.controller.vo.ImConversationCreateVo; import com.wecloud.im.biz.module.message.controller.vo.ImConversationCreateVo;
import com.wecloud.im.biz.module.message.service.ImConversationService; import com.wecloud.im.biz.module.message.service.ImConversationService;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.server.model.WsResponse; import com.wecloud.im.server.model.WsResponse;
import com.wecloud.netty.dispatch.annotation.ActionMapping; import com.wecloud.netty.dispatch.annotation.ActionMapping;
......
...@@ -13,11 +13,11 @@ import org.springframework.stereotype.Component; ...@@ -13,11 +13,11 @@ import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.im.biz.module.message.controller.param.ImMsgReceivedStatusUpdate; import com.wecloud.im.biz.module.message.controller.param.ImMsgReceivedStatusUpdate;
import com.wecloud.im.biz.module.message.controller.param.MsgReadStatusUpdateParam; import com.wecloud.im.biz.module.message.controller.param.MsgReadStatusUpdateParam;
import com.wecloud.im.biz.module.message.controller.param.UpdateMsgReadStatusByConversationParam; import com.wecloud.im.biz.module.message.controller.param.UpdateMsgReadStatusByConversationParam;
import com.wecloud.im.biz.module.message.service.ImInboxService; import com.wecloud.im.biz.module.message.service.ImInboxService;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.server.model.WsResponse; import com.wecloud.im.server.model.WsResponse;
import com.wecloud.netty.dispatch.annotation.ActionMapping; import com.wecloud.netty.dispatch.annotation.ActionMapping;
......
...@@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.im.biz.module.message.controller.param.GetReadersParam; import com.wecloud.im.biz.module.message.controller.param.GetReadersParam;
import com.wecloud.im.biz.module.message.controller.param.ImHistoryMessagePageParam; import com.wecloud.im.biz.module.message.controller.param.ImHistoryMessagePageParam;
import com.wecloud.im.biz.module.message.controller.param.MsgDeleteParam; import com.wecloud.im.biz.module.message.controller.param.MsgDeleteParam;
...@@ -19,7 +20,6 @@ import com.wecloud.im.biz.module.message.controller.param.add.ImMsgUpdate; ...@@ -19,7 +20,6 @@ import com.wecloud.im.biz.module.message.controller.param.add.ImMsgUpdate;
import com.wecloud.im.biz.module.message.controller.vo.OfflineMsgDto; import com.wecloud.im.biz.module.message.controller.vo.OfflineMsgDto;
import com.wecloud.im.biz.module.message.controller.vo.ReaderList; import com.wecloud.im.biz.module.message.controller.vo.ReaderList;
import com.wecloud.im.biz.module.message.service.ImMessageService; import com.wecloud.im.biz.module.message.service.ImMessageService;
import com.wecloud.im.core.pagination.Paging;
import com.wecloud.im.server.model.WsResponse; import com.wecloud.im.server.model.WsResponse;
import com.wecloud.netty.dispatch.annotation.ActionMapping; import com.wecloud.netty.dispatch.annotation.ActionMapping;
......
...@@ -12,6 +12,7 @@ import org.springframework.stereotype.Component; ...@@ -12,6 +12,7 @@ import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.im.biz.module.message.controller.param.AgreeToMultiMeetParam; import com.wecloud.im.biz.module.message.controller.param.AgreeToMultiMeetParam;
import com.wecloud.im.biz.module.message.controller.param.HeartbeatMultiMeetParam; import com.wecloud.im.biz.module.message.controller.param.HeartbeatMultiMeetParam;
import com.wecloud.im.biz.module.message.controller.param.InviteToMultiMeetParam; import com.wecloud.im.biz.module.message.controller.param.InviteToMultiMeetParam;
...@@ -19,7 +20,6 @@ import com.wecloud.im.biz.module.message.controller.param.LeaveFromMultiMeetPara ...@@ -19,7 +20,6 @@ import com.wecloud.im.biz.module.message.controller.param.LeaveFromMultiMeetPara
import com.wecloud.im.biz.module.message.controller.param.NotAnsweredMultiMeetParam; import com.wecloud.im.biz.module.message.controller.param.NotAnsweredMultiMeetParam;
import com.wecloud.im.biz.module.message.controller.param.RejectToMultiMeetParam; import com.wecloud.im.biz.module.message.controller.param.RejectToMultiMeetParam;
import com.wecloud.im.biz.module.multimeet.service.MultiMeetService; import com.wecloud.im.biz.module.multimeet.service.MultiMeetService;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.server.model.WsResponse; import com.wecloud.im.server.model.WsResponse;
import com.wecloud.netty.dispatch.annotation.ActionMapping; import com.wecloud.netty.dispatch.annotation.ActionMapping;
......
...@@ -24,6 +24,10 @@ import com.alibaba.fastjson.JSONObject; ...@@ -24,6 +24,10 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.core.util.JsonUtils;
import com.wecloud.can.core.util.SnowflakeUtil;
import com.wecloud.im.biz.core.rocketmq.component.MqSender; import com.wecloud.im.biz.core.rocketmq.component.MqSender;
import com.wecloud.im.biz.enums.ChatTypeEnum; import com.wecloud.im.biz.enums.ChatTypeEnum;
import com.wecloud.im.biz.enums.FriendStateEnum; import com.wecloud.im.biz.enums.FriendStateEnum;
...@@ -48,10 +52,6 @@ import com.wecloud.im.biz.module.message.service.ImConversationService; ...@@ -48,10 +52,6 @@ import com.wecloud.im.biz.module.message.service.ImConversationService;
import com.wecloud.im.biz.module.message.service.ImFriendService; import com.wecloud.im.biz.module.message.service.ImFriendService;
import com.wecloud.im.biz.module.message.service.ImInboxService; import com.wecloud.im.biz.module.message.service.ImInboxService;
import com.wecloud.im.biz.module.message.service.ImMessageService; import com.wecloud.im.biz.module.message.service.ImMessageService;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.util.JsonUtils;
import com.wecloud.im.core.util.SnowflakeUtil;
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;
...@@ -389,7 +389,7 @@ public class NormalChatAction { ...@@ -389,7 +389,7 @@ public class NormalChatAction {
// 没有配置 认为不是vip // 没有配置 认为不是vip
} }
} }
int sendCount = long sendCount =
imMessageService.count(Wrappers.<ImMessage>lambdaQuery().eq(ImMessage::getFkConversationId, imMessageService.count(Wrappers.<ImMessage>lambdaQuery().eq(ImMessage::getFkConversationId,
conversationId).eq(ImMessage::getSender, imClientSender.getId()).between(ImMessage::getCreateTime, getStartTime(), getEndTime())); conversationId).eq(ImMessage::getSender, imClientSender.getId()).between(ImMessage::getCreateTime, getStartTime(), getEndTime()));
if (!isVip) { if (!isVip) {
......
...@@ -10,6 +10,8 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -10,6 +10,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wecloud.can.core.base.enums.BaseEnum;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.im.biz.enums.CallTypeEnum; import com.wecloud.im.biz.enums.CallTypeEnum;
import com.wecloud.im.biz.module.message.controller.param.rtc.CandidateForwardParam; import com.wecloud.im.biz.module.message.controller.param.rtc.CandidateForwardParam;
import com.wecloud.im.biz.module.message.controller.param.rtc.CreateRtcChannelParam; import com.wecloud.im.biz.module.message.controller.param.rtc.CreateRtcChannelParam;
...@@ -19,8 +21,6 @@ import com.wecloud.im.biz.module.message.controller.param.rtc.LeaveRtcChannelPar ...@@ -19,8 +21,6 @@ import com.wecloud.im.biz.module.message.controller.param.rtc.LeaveRtcChannelPar
import com.wecloud.im.biz.module.message.controller.param.rtc.RejectRtcChannelParam; import com.wecloud.im.biz.module.message.controller.param.rtc.RejectRtcChannelParam;
import com.wecloud.im.biz.module.message.controller.param.rtc.SdpForwardParam; import com.wecloud.im.biz.module.message.controller.param.rtc.SdpForwardParam;
import com.wecloud.im.biz.module.rtc.service.RtcService; import com.wecloud.im.biz.module.rtc.service.RtcService;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.enums.BaseEnum;
import com.wecloud.im.server.model.WsResponse; import com.wecloud.im.server.model.WsResponse;
import com.wecloud.netty.dispatch.annotation.ActionMapping; import com.wecloud.netty.dispatch.annotation.ActionMapping;
......
...@@ -10,9 +10,9 @@ import org.aspectj.lang.annotation.Aspect; ...@@ -10,9 +10,9 @@ import org.aspectj.lang.annotation.Aspect;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.wecloud.im.log.aop.BaseLogAop; import com.wecloud.can.log.aop.BaseLogAop;
import com.wecloud.im.log.bean.OperationLogInfo; import com.wecloud.can.log.bean.OperationLogInfo;
import com.wecloud.im.log.bean.RequestInfo; import com.wecloud.can.log.bean.RequestInfo;
/** /**
* <p> * <p>
......
...@@ -6,11 +6,11 @@ import java.util.Date; ...@@ -6,11 +6,11 @@ import java.util.Date;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.module.message.entity.ImClient; import com.wecloud.im.biz.module.message.entity.ImClient;
import com.wecloud.im.biz.module.message.entity.ImMessage; import com.wecloud.im.biz.module.message.entity.ImMessage;
import com.wecloud.im.biz.module.message.entity.ImMessageOnlineSend; import com.wecloud.im.biz.module.message.entity.ImMessageOnlineSend;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
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;
import com.wecloud.im.server.sender.ChannelSender; import com.wecloud.im.server.sender.ChannelSender;
......
...@@ -2,11 +2,11 @@ package com.wecloud.im.biz.core.post; ...@@ -2,11 +2,11 @@ package com.wecloud.im.biz.core.post;
import java.util.Date; import java.util.Date;
import com.wecloud.can.core.util.SnowflakeUtil;
import com.wecloud.im.biz.module.message.entity.ImApplication; import com.wecloud.im.biz.module.message.entity.ImApplication;
import com.wecloud.im.biz.module.message.entity.ImClient; import com.wecloud.im.biz.module.message.entity.ImClient;
import com.wecloud.im.biz.module.message.entity.ImConversation; import com.wecloud.im.biz.module.message.entity.ImConversation;
import com.wecloud.im.biz.module.message.entity.ImMessage; import com.wecloud.im.biz.module.message.entity.ImMessage;
import com.wecloud.im.core.util.SnowflakeUtil;
import com.wecloud.im.server.enums.MsgTypeEnum; import com.wecloud.im.server.enums.MsgTypeEnum;
/** /**
......
...@@ -23,15 +23,13 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -23,15 +23,13 @@ import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.auth0.jwt.exceptions.JWTDecodeException; import com.auth0.jwt.exceptions.JWTDecodeException;
import com.wecloud.im.core.bean.RequestDetail; import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.im.core.common.api.ApiCode; import com.wecloud.can.core.exception.BusinessException;
import com.wecloud.im.core.common.api.ApiResult; import com.wecloud.can.core.exception.DaoException;
import com.wecloud.im.core.common.exception.BusinessException; import com.wecloud.can.core.exception.SpringBootPlusException;
import com.wecloud.im.core.common.exception.DaoException; import com.wecloud.can.core.exception.SysLoginException;
import com.wecloud.im.core.common.exception.SpringBootPlusException; import com.wecloud.can.core.exception.VerificationCodeException;
import com.wecloud.im.core.exception.SysLoginException; import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.core.exception.VerificationCodeException;
import com.wecloud.im.core.util.RequestDetailThreadLocal;
/** /**
* 全局异常处理器, 封装错误response * 全局异常处理器, 封装错误response
...@@ -227,10 +225,10 @@ public class GlobalExceptionHandler { ...@@ -227,10 +225,10 @@ public class GlobalExceptionHandler {
* 打印请求详情 * 打印请求详情
*/ */
private void printRequestDetail() { private void printRequestDetail() {
RequestDetail requestDetail = RequestDetailThreadLocal.getRequestDetail(); // RequestDetail requestDetail = RequestDetailThreadLocal.getRequestDetail();
if (requestDetail != null) { // if (requestDetail != null) {
log.error("异常来源:ip: {}, path: {}", requestDetail.getIp(), requestDetail.getPath()); // log.error("异常来源:ip: {}, path: {}", requestDetail.getIp(), requestDetail.getPath());
} // }
} }
/** /**
......
package com.wecloud.im.biz.enums; package com.wecloud.im.biz.enums;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* @Author wenzhida * @Author wenzhida
......
package com.wecloud.im.biz.enums; package com.wecloud.im.biz.enums;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* @Description 会话类型 * @Description 会话类型
......
package com.wecloud.im.biz.enums; package com.wecloud.im.biz.enums;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* @Author wenzhida * @Author wenzhida
......
package com.wecloud.im.biz.enums; package com.wecloud.im.biz.enums;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* @Description 服务器下发事件的枚举 * @Description 服务器下发事件的枚举
......
...@@ -3,7 +3,7 @@ package com.wecloud.im.biz.enums; ...@@ -3,7 +3,7 @@ package com.wecloud.im.biz.enums;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* 好友关系 1:待确定,2:已确认,3:已拒绝,4:已删除 * 好友关系 1:待确定,2:已确认,3:已拒绝,4:已删除
......
package com.wecloud.im.biz.enums; package com.wecloud.im.biz.enums;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* @Author wenzhida * @Author wenzhida
......
package com.wecloud.im.biz.enums; package com.wecloud.im.biz.enums;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* 层级枚举 * 层级枚举
......
package com.wecloud.im.biz.enums; package com.wecloud.im.biz.enums;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* @Author wenzhida * @Author wenzhida
......
package com.wecloud.im.biz.enums; package com.wecloud.im.biz.enums;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* @Author wenzhida * @Author wenzhida
......
package com.wecloud.im.biz.enums; package com.wecloud.im.biz.enums;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* @Author wenzhida * @Author wenzhida
......
package com.wecloud.im.biz.enums; package com.wecloud.im.biz.enums;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* @Author wenzhida * @Author wenzhida
......
package com.wecloud.im.biz.enums; package com.wecloud.im.biz.enums;
import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.annotation.JsonValue;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* @Author wenzhida * @Author wenzhida
......
package com.wecloud.im.biz.enums; package com.wecloud.im.biz.enums;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* @Author Future * @Author Future
......
package com.wecloud.im.biz.enums; package com.wecloud.im.biz.enums;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* @Author wenzhida * @Author wenzhida
......
package com.wecloud.im.biz.enums; package com.wecloud.im.biz.enums;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* @Author Future * @Author Future
......
...@@ -3,7 +3,7 @@ package com.wecloud.im.biz.enums; ...@@ -3,7 +3,7 @@ package com.wecloud.im.biz.enums;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* 审核状态,0审核中,1审核通过,2审核未通过 * 审核状态,0审核中,1审核通过,2审核未通过
......
...@@ -3,7 +3,7 @@ package com.wecloud.im.biz.enums; ...@@ -3,7 +3,7 @@ package com.wecloud.im.biz.enums;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* 启用禁用状态枚举 * 启用禁用状态枚举
......
...@@ -3,7 +3,7 @@ package com.wecloud.im.biz.enums; ...@@ -3,7 +3,7 @@ package com.wecloud.im.biz.enums;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* 付款状态,0-未付款,1-用户已付款,待审核,2-用户已付款,审核通过,3-退款中,99-已退款 * 付款状态,0-未付款,1-用户已付款,待审核,2-用户已付款,审核通过,3-退款中,99-已退款
......
package com.wecloud.im.biz.enums; package com.wecloud.im.biz.enums;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -12,14 +12,14 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -12,14 +12,14 @@ 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.RestController; import org.springframework.web.bind.annotation.RestController;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.externalaccess.param.FriendDto; import com.wecloud.im.biz.externalaccess.param.FriendDto;
import com.wecloud.im.biz.externalaccess.service.FriendService; import com.wecloud.im.biz.externalaccess.service.FriendService;
import com.wecloud.im.biz.module.message.entity.ImClient; import com.wecloud.im.biz.module.message.entity.ImClient;
import com.wecloud.im.biz.module.message.param.ImFriendBaseParam; import com.wecloud.im.biz.module.message.param.ImFriendBaseParam;
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.ApiResult;
import com.wecloud.im.core.common.controller.BaseController;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -12,9 +12,9 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -12,9 +12,9 @@ import org.springframework.web.bind.annotation.RestController;
import cn.hutool.crypto.digest.MD5; import cn.hutool.crypto.digest.MD5;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.externalaccess.param.MultiMeetSignGetParam; import com.wecloud.im.biz.externalaccess.param.MultiMeetSignGetParam;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.common.controller.BaseController;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -12,6 +12,9 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -12,6 +12,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.externalaccess.param.ChangePhoneParam; import com.wecloud.im.biz.externalaccess.param.ChangePhoneParam;
import com.wecloud.im.biz.externalaccess.param.CheckPhoneParam; import com.wecloud.im.biz.externalaccess.param.CheckPhoneParam;
import com.wecloud.im.biz.externalaccess.param.FindUserParam; import com.wecloud.im.biz.externalaccess.param.FindUserParam;
...@@ -28,9 +31,6 @@ import com.wecloud.im.biz.externalaccess.param.UserBaseDto; ...@@ -28,9 +31,6 @@ import com.wecloud.im.biz.externalaccess.param.UserBaseDto;
import com.wecloud.im.biz.externalaccess.param.UserLoginParam; import com.wecloud.im.biz.externalaccess.param.UserLoginParam;
import com.wecloud.im.biz.externalaccess.param.UserRegisterParam; import com.wecloud.im.biz.externalaccess.param.UserRegisterParam;
import com.wecloud.im.biz.externalaccess.service.UserService; import com.wecloud.im.biz.externalaccess.service.UserService;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.common.controller.BaseController;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -18,6 +18,12 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -18,6 +18,12 @@ import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.can.core.base.enums.BaseEnum;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.exception.BusinessException;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.core.util.RandomUtil;
import com.wecloud.im.biz.constant.RedisKeyPrefixConstant; import com.wecloud.im.biz.constant.RedisKeyPrefixConstant;
import com.wecloud.im.biz.enums.VerifySceneEnum; import com.wecloud.im.biz.enums.VerifySceneEnum;
import com.wecloud.im.biz.externalaccess.entity.User; import com.wecloud.im.biz.externalaccess.entity.User;
...@@ -25,12 +31,6 @@ import com.wecloud.im.biz.externalaccess.param.SendVerifyCodeParam; ...@@ -25,12 +31,6 @@ import com.wecloud.im.biz.externalaccess.param.SendVerifyCodeParam;
import com.wecloud.im.biz.externalaccess.service.UserService; import com.wecloud.im.biz.externalaccess.service.UserService;
import com.wecloud.im.biz.externalaccess.sms.constant.SmsConstants; import com.wecloud.im.biz.externalaccess.sms.constant.SmsConstants;
import com.wecloud.im.biz.externalaccess.sms.sender.HwSmsSender; import com.wecloud.im.biz.externalaccess.sms.sender.HwSmsSender;
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.common.enums.BaseEnum;
import com.wecloud.im.core.common.exception.BusinessException;
import com.wecloud.im.core.util.RandomUtil;
import com.wecloud.im.server.utils.RedisUtils; import com.wecloud.im.server.utils.RedisUtils;
/** /**
......
...@@ -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.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -12,6 +12,9 @@ import org.springframework.stereotype.Service; ...@@ -12,6 +12,9 @@ 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.can.core.exception.BusinessException;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.impl.BaseServiceImpl;
import com.wecloud.im.biz.externalaccess.entity.User; import com.wecloud.im.biz.externalaccess.entity.User;
import com.wecloud.im.biz.externalaccess.mapper.UserMapper; import com.wecloud.im.biz.externalaccess.mapper.UserMapper;
import com.wecloud.im.biz.externalaccess.param.FriendDto; import com.wecloud.im.biz.externalaccess.param.FriendDto;
...@@ -22,9 +25,6 @@ import com.wecloud.im.biz.module.message.param.ImFriendBaseParam; ...@@ -22,9 +25,6 @@ import com.wecloud.im.biz.module.message.param.ImFriendBaseParam;
import com.wecloud.im.biz.module.message.param.ImFriendPageParam; import com.wecloud.im.biz.module.message.param.ImFriendPageParam;
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.ImFriendService; import com.wecloud.im.biz.module.message.service.ImFriendService;
import com.wecloud.im.core.common.exception.BusinessException;
import com.wecloud.im.core.common.service.impl.BaseServiceImpl;
import com.wecloud.im.core.pagination.Paging;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -9,6 +9,11 @@ import org.springframework.stereotype.Service; ...@@ -9,6 +9,11 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wecloud.can.core.exception.BusinessException;
import com.wecloud.can.core.util.AesUtil;
import com.wecloud.can.core.util.RandomUtil;
import com.wecloud.can.core.util.SnowflakeUtil;
import com.wecloud.can.datasource.mybatisplus.service.impl.BaseServiceImpl;
import com.wecloud.im.biz.constant.NumberConstant; import com.wecloud.im.biz.constant.NumberConstant;
import com.wecloud.im.biz.constant.RedisKeyPrefixConstant; import com.wecloud.im.biz.constant.RedisKeyPrefixConstant;
import com.wecloud.im.biz.enums.FriendStateEnum; import com.wecloud.im.biz.enums.FriendStateEnum;
...@@ -41,11 +46,6 @@ import com.wecloud.im.biz.module.message.service.ImClientBlacklistService; ...@@ -41,11 +46,6 @@ import com.wecloud.im.biz.module.message.service.ImClientBlacklistService;
import com.wecloud.im.biz.module.message.service.ImClientDeviceService; import com.wecloud.im.biz.module.message.service.ImClientDeviceService;
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.ImFriendService; import com.wecloud.im.biz.module.message.service.ImFriendService;
import com.wecloud.im.core.common.exception.BusinessException;
import com.wecloud.im.core.common.service.impl.BaseServiceImpl;
import com.wecloud.im.core.util.AesUtil;
import com.wecloud.im.core.util.RandomUtil;
import com.wecloud.im.core.util.SnowflakeUtil;
import com.wecloud.im.server.utils.RedisUtils; import com.wecloud.im.server.utils.RedisUtils;
/** /**
......
...@@ -13,6 +13,10 @@ import java.util.Map; ...@@ -13,6 +13,10 @@ import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.core.util.JsonUtils;
import com.wecloud.can.core.util.SnowflakeUtil;
import com.wecloud.im.biz.module.chatroom.cache.ChatRoomCacheManager; import com.wecloud.im.biz.module.chatroom.cache.ChatRoomCacheManager;
import com.wecloud.im.biz.module.message.controller.param.ChatContentVo; import com.wecloud.im.biz.module.message.controller.param.ChatContentVo;
import com.wecloud.im.biz.module.message.controller.param.ImConversationQueryVo; import com.wecloud.im.biz.module.message.controller.param.ImConversationQueryVo;
...@@ -23,10 +27,6 @@ import com.wecloud.im.biz.module.message.entity.ImMessageOnlineSend; ...@@ -23,10 +27,6 @@ import com.wecloud.im.biz.module.message.entity.ImMessageOnlineSend;
import com.wecloud.im.biz.module.message.service.ImApplicationService; import com.wecloud.im.biz.module.message.service.ImApplicationService;
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.ImConversationService; import com.wecloud.im.biz.module.message.service.ImConversationService;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.util.JsonUtils;
import com.wecloud.im.core.util.SnowflakeUtil;
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;
import com.wecloud.im.server.sender.ChannelSender; import com.wecloud.im.server.sender.ChannelSender;
......
...@@ -12,7 +12,7 @@ import javax.annotation.Resource; ...@@ -12,7 +12,7 @@ import javax.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.wecloud.im.core.util.GetIpUtils; import com.wecloud.can.core.util.GetIpUtils;
import com.wecloud.im.server.utils.RedisUtils; import com.wecloud.im.server.utils.RedisUtils;
/** /**
......
//package com.wecloud.im.controller; //package com.wecloud.im.controller;
// //
//import com.wecloud.im.core.common.api.ApiResult; //import com.wecloud.can.core.util.ApiResult;
//import com.wecloud.im.core.log.annotation.OperationLog; //import com.wecloud.can.log.annotation.OperationLog;
//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;
......
...@@ -6,13 +6,13 @@ ...@@ -6,13 +6,13 @@
//import com.wecloud.im.param.add.ImApplicationAdd; //import com.wecloud.im.param.add.ImApplicationAdd;
//import com.wecloud.im.service.ImApplicationService; //import com.wecloud.im.service.ImApplicationService;
//import com.wecloud.im.server.utils.RSAGenerator; //import com.wecloud.im.server.utils.RSAGenerator;
//import com.wecloud.im.core.common.api.ApiResult; //import com.wecloud.can.core.util.ApiResult;
//import com.wecloud.im.core.common.controller.BaseController; //import com.wecloud.can.core.base.controller.BaseController;
//import com.wecloud.im.core.core.pagination.Paging; //import com.wecloud.can.core.core.pagination.Paging;
//import com.wecloud.im.core.core.validator.groups.Add; //import com.wecloud.can.core.core.validator.groups.Add;
//import com.wecloud.im.core.core.validator.groups.Update; //import com.wecloud.can.core.core.validator.groups.Update;
//import com.wecloud.im.core.log.annotation.OperationLog; //import com.wecloud.can.log.annotation.OperationLog;
//import com.wecloud.im.core.log.enums.OperationLogType; //import com.wecloud.can.log.enums.OperationLogType;
//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;
......
...@@ -11,16 +11,16 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -11,16 +11,16 @@ 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.RestController; import org.springframework.web.bind.annotation.RestController;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.core.validator.groups.Add;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.log.annotation.OperationLog;
import com.wecloud.can.log.enums.OperationLogType;
import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistPageParam; import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistPageParam;
import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistQueryVo; import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistQueryVo;
import com.wecloud.im.biz.module.message.controller.param.add.ImClientBlacklistUpdate; import com.wecloud.im.biz.module.message.controller.param.add.ImClientBlacklistUpdate;
import com.wecloud.im.biz.module.message.service.ImClientBlacklistService; import com.wecloud.im.biz.module.message.service.ImClientBlacklistService;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.common.controller.BaseController;
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.validator.groups.Add;
/** /**
* 黑名单 控制器 * 黑名单 控制器
......
...@@ -17,6 +17,12 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -17,6 +17,12 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.core.validator.groups.Add;
import com.wecloud.can.security.jwt.JwtToken;
import com.wecloud.can.security.util.JwtUtil;
import com.wecloud.im.biz.module.message.controller.param.ClientInfoParam; import com.wecloud.im.biz.module.message.controller.param.ClientInfoParam;
import com.wecloud.im.biz.module.message.controller.param.ClientRelationVo; import com.wecloud.im.biz.module.message.controller.param.ClientRelationVo;
import com.wecloud.im.biz.module.message.controller.param.GetClientInfoParam; import com.wecloud.im.biz.module.message.controller.param.GetClientInfoParam;
...@@ -38,12 +44,6 @@ import com.wecloud.im.biz.module.message.entity.ImApplication; ...@@ -38,12 +44,6 @@ import com.wecloud.im.biz.module.message.entity.ImApplication;
import com.wecloud.im.biz.module.message.entity.ImClient; import com.wecloud.im.biz.module.message.entity.ImClient;
import com.wecloud.im.biz.module.message.service.ImApplicationService; import com.wecloud.im.biz.module.message.service.ImApplicationService;
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.ApiResult;
import com.wecloud.im.core.common.controller.BaseController;
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;
/** /**
......
...@@ -15,6 +15,9 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -15,6 +15,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.module.message.controller.param.ChatRoomMemberPageParam; import com.wecloud.im.biz.module.message.controller.param.ChatRoomMemberPageParam;
import com.wecloud.im.biz.module.message.controller.param.DisbandConversationParam; import com.wecloud.im.biz.module.message.controller.param.DisbandConversationParam;
import com.wecloud.im.biz.module.message.controller.param.ExitChatRoomParam; import com.wecloud.im.biz.module.message.controller.param.ExitChatRoomParam;
...@@ -38,9 +41,6 @@ import com.wecloud.im.biz.module.message.controller.vo.ConversationVo; ...@@ -38,9 +41,6 @@ import com.wecloud.im.biz.module.message.controller.vo.ConversationVo;
import com.wecloud.im.biz.module.message.controller.vo.ImConversationCreateVo; import com.wecloud.im.biz.module.message.controller.vo.ImConversationCreateVo;
import com.wecloud.im.biz.module.message.entity.ImConversation; import com.wecloud.im.biz.module.message.entity.ImConversation;
import com.wecloud.im.biz.module.message.service.ImConversationService; import com.wecloud.im.biz.module.message.service.ImConversationService;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.common.controller.BaseController;
/** /**
* 会话表 控制器 * 会话表 控制器
......
...@@ -14,6 +14,10 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -14,6 +14,10 @@ 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.RestController; import org.springframework.web.bind.annotation.RestController;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.exception.BusinessException;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.module.message.controller.param.ChatSettingParam; import com.wecloud.im.biz.module.message.controller.param.ChatSettingParam;
import com.wecloud.im.biz.module.message.controller.param.ImConvMemeClientRemarkNameParam; import com.wecloud.im.biz.module.message.controller.param.ImConvMemeClientRemarkNameParam;
import com.wecloud.im.biz.module.message.controller.param.ListConversationMembersParam; import com.wecloud.im.biz.module.message.controller.param.ListConversationMembersParam;
...@@ -21,10 +25,6 @@ import com.wecloud.im.biz.module.message.controller.param.add.ImConversationMemA ...@@ -21,10 +25,6 @@ import com.wecloud.im.biz.module.message.controller.param.add.ImConversationMemA
import com.wecloud.im.biz.module.message.controller.vo.ConversationMemberVo; import com.wecloud.im.biz.module.message.controller.vo.ConversationMemberVo;
import com.wecloud.im.biz.module.message.param.ImFriendApplyParam; import com.wecloud.im.biz.module.message.param.ImFriendApplyParam;
import com.wecloud.im.biz.module.message.service.ImConversationMembersService; import com.wecloud.im.biz.module.message.service.ImConversationMembersService;
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.common.exception.BusinessException;
/** /**
* 会话成员表 控制器 * 会话成员表 控制器
......
...@@ -17,6 +17,15 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -17,6 +17,15 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.can.core.base.enums.BaseEnum;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.exception.BusinessException;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.log.annotation.OperationLog;
import com.wecloud.can.log.enums.OperationLogType;
import com.wecloud.can.security.util.SecurityUtils;
import com.wecloud.im.biz.enums.FriendStateEnum; import com.wecloud.im.biz.enums.FriendStateEnum;
import com.wecloud.im.biz.module.message.entity.ImClient; import com.wecloud.im.biz.module.message.entity.ImClient;
import com.wecloud.im.biz.module.message.param.FriendRemarkParam; import com.wecloud.im.biz.module.message.param.FriendRemarkParam;
...@@ -33,15 +42,6 @@ import com.wecloud.im.biz.module.message.param.ImFriendRecommendDto; ...@@ -33,15 +42,6 @@ import com.wecloud.im.biz.module.message.param.ImFriendRecommendDto;
import com.wecloud.im.biz.module.message.param.UnfriendParam; import com.wecloud.im.biz.module.message.param.UnfriendParam;
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.ImFriendService; import com.wecloud.im.biz.module.message.service.ImFriendService;
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.common.enums.BaseEnum;
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.security.util.SecurityUtils;
/** /**
* @author lixiaozhong * @author lixiaozhong
......
...@@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.module.message.controller.param.GroupOwnerTransferParam; import com.wecloud.im.biz.module.message.controller.param.GroupOwnerTransferParam;
import com.wecloud.im.biz.module.message.controller.param.ModifyGroupAdminParam; import com.wecloud.im.biz.module.message.controller.param.ModifyGroupAdminParam;
import com.wecloud.im.biz.module.message.controller.param.group.CreateGroupParam; import com.wecloud.im.biz.module.message.controller.param.group.CreateGroupParam;
...@@ -25,7 +26,6 @@ import com.wecloud.im.biz.module.message.controller.param.group.LeaveGroupParam; ...@@ -25,7 +26,6 @@ import com.wecloud.im.biz.module.message.controller.param.group.LeaveGroupParam;
import com.wecloud.im.biz.module.message.controller.param.group.ListGroupMembersParam; import com.wecloud.im.biz.module.message.controller.param.group.ListGroupMembersParam;
import com.wecloud.im.biz.module.message.controller.param.group.MutedMembersParam; import com.wecloud.im.biz.module.message.controller.param.group.MutedMembersParam;
import com.wecloud.im.biz.module.message.service.ImGroupService; import com.wecloud.im.biz.module.message.service.ImGroupService;
import com.wecloud.im.core.common.api.ApiResult;
/** /**
* 群聊接口 * 群聊接口
......
...@@ -13,13 +13,13 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -13,13 +13,13 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.module.message.controller.param.ImMsgReceivedStatusUpdate; import com.wecloud.im.biz.module.message.controller.param.ImMsgReceivedStatusUpdate;
import com.wecloud.im.biz.module.message.controller.param.MsgReadStatusUpdateParam; import com.wecloud.im.biz.module.message.controller.param.MsgReadStatusUpdateParam;
import com.wecloud.im.biz.module.message.controller.param.UpdateMsgReadStatusByConversationParam; import com.wecloud.im.biz.module.message.controller.param.UpdateMsgReadStatusByConversationParam;
import com.wecloud.im.biz.module.message.service.ImInboxService; import com.wecloud.im.biz.module.message.service.ImInboxService;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.common.controller.BaseController;
/** /**
* 消息收件箱表 控制器 * 消息收件箱表 控制器
......
//package com.wecloud.im.controller; //package com.wecloud.im.controller;
// //
//import com.wecloud.im.service.ImIosApnsService; //import com.wecloud.im.service.ImIosApnsService;
//import com.wecloud.im.core.common.controller.BaseController; //import com.wecloud.can.core.base.controller.BaseController;
//import io.swagger.annotations.Api; //import io.swagger.annotations.Api;
//import lombok.extern.slf4j.Slf4j; //import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
......
...@@ -14,6 +14,12 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -14,6 +14,12 @@ 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.RestController; import org.springframework.web.bind.annotation.RestController;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.log.annotation.OperationLog;
import com.wecloud.can.log.enums.OperationLogType;
import com.wecloud.im.biz.module.message.controller.param.GetReadersParam; import com.wecloud.im.biz.module.message.controller.param.GetReadersParam;
import com.wecloud.im.biz.module.message.controller.param.GroupChatMessageParam; import com.wecloud.im.biz.module.message.controller.param.GroupChatMessageParam;
import com.wecloud.im.biz.module.message.controller.param.GroupChatStatusMessageParam; import com.wecloud.im.biz.module.message.controller.param.GroupChatStatusMessageParam;
...@@ -28,12 +34,6 @@ import com.wecloud.im.biz.module.message.controller.vo.ImMessageOfflineListVo; ...@@ -28,12 +34,6 @@ import com.wecloud.im.biz.module.message.controller.vo.ImMessageOfflineListVo;
import com.wecloud.im.biz.module.message.controller.vo.OfflineMsgDto; import com.wecloud.im.biz.module.message.controller.vo.OfflineMsgDto;
import com.wecloud.im.biz.module.message.controller.vo.ReaderList; import com.wecloud.im.biz.module.message.controller.vo.ReaderList;
import com.wecloud.im.biz.module.message.service.ImMessageService; import com.wecloud.im.biz.module.message.service.ImMessageService;
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.log.annotation.OperationLog;
import com.wecloud.im.core.log.enums.OperationLogType;
import com.wecloud.im.core.pagination.Paging;
/** /**
* 消息存储表 控制器 * 消息存储表 控制器
......
...@@ -13,6 +13,9 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -13,6 +13,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.module.message.controller.param.AgreeToMultiMeetParam; import com.wecloud.im.biz.module.message.controller.param.AgreeToMultiMeetParam;
import com.wecloud.im.biz.module.message.controller.param.HeartbeatMultiMeetParam; import com.wecloud.im.biz.module.message.controller.param.HeartbeatMultiMeetParam;
import com.wecloud.im.biz.module.message.controller.param.InviteToMultiMeetParam; import com.wecloud.im.biz.module.message.controller.param.InviteToMultiMeetParam;
...@@ -20,9 +23,6 @@ import com.wecloud.im.biz.module.message.controller.param.LeaveFromMultiMeetPara ...@@ -20,9 +23,6 @@ import com.wecloud.im.biz.module.message.controller.param.LeaveFromMultiMeetPara
import com.wecloud.im.biz.module.message.controller.param.NotAnsweredMultiMeetParam; import com.wecloud.im.biz.module.message.controller.param.NotAnsweredMultiMeetParam;
import com.wecloud.im.biz.module.message.controller.param.RejectToMultiMeetParam; import com.wecloud.im.biz.module.message.controller.param.RejectToMultiMeetParam;
import com.wecloud.im.biz.module.multimeet.service.MultiMeetService; import com.wecloud.im.biz.module.multimeet.service.MultiMeetService;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.common.controller.BaseController;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -10,6 +10,10 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -10,6 +10,10 @@ 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.RestController; import org.springframework.web.bind.annotation.RestController;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.can.core.base.enums.BaseEnum;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.enums.CallTypeEnum; import com.wecloud.im.biz.enums.CallTypeEnum;
import com.wecloud.im.biz.module.message.controller.param.rtc.CandidateForwardParam; import com.wecloud.im.biz.module.message.controller.param.rtc.CandidateForwardParam;
import com.wecloud.im.biz.module.message.controller.param.rtc.CreateRtcChannelParam; import com.wecloud.im.biz.module.message.controller.param.rtc.CreateRtcChannelParam;
...@@ -19,10 +23,6 @@ import com.wecloud.im.biz.module.message.controller.param.rtc.LeaveRtcChannelPar ...@@ -19,10 +23,6 @@ import com.wecloud.im.biz.module.message.controller.param.rtc.LeaveRtcChannelPar
import com.wecloud.im.biz.module.message.controller.param.rtc.RejectRtcChannelParam; import com.wecloud.im.biz.module.message.controller.param.rtc.RejectRtcChannelParam;
import com.wecloud.im.biz.module.message.controller.param.rtc.SdpForwardParam; import com.wecloud.im.biz.module.message.controller.param.rtc.SdpForwardParam;
import com.wecloud.im.biz.module.rtc.service.RtcService; import com.wecloud.im.biz.module.rtc.service.RtcService;
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.common.enums.BaseEnum;
/** /**
* 音视频通话 控制器 * 音视频通话 控制器
......
...@@ -12,11 +12,11 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -12,11 +12,11 @@ import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.module.message.controller.param.rtc.SingleRtcRecordParam; import com.wecloud.im.biz.module.message.controller.param.rtc.SingleRtcRecordParam;
import com.wecloud.im.biz.module.message.entity.ImRtcRecord; import com.wecloud.im.biz.module.message.entity.ImRtcRecord;
import com.wecloud.im.biz.module.message.service.ImRtcRecordService; import com.wecloud.im.biz.module.message.service.ImRtcRecordService;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.common.controller.BaseController;
/** /**
* @author nanqianhao * @author nanqianhao
......
...@@ -12,9 +12,9 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -12,9 +12,9 @@ import org.springframework.web.bind.annotation.RestController;
import cn.hutool.crypto.digest.MD5; import cn.hutool.crypto.digest.MD5;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.im.biz.module.message.controller.param.GetSignParam; import com.wecloud.im.biz.module.message.controller.param.GetSignParam;
import com.wecloud.im.biz.module.message.service.ImClientLoginService; import com.wecloud.im.biz.module.message.service.ImClientLoginService;
import com.wecloud.im.core.common.controller.BaseController;
/** /**
* sign 控制器 * sign 控制器
......
...@@ -11,12 +11,12 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -11,12 +11,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.alibaba.nacos.api.exception.NacosException; import com.alibaba.nacos.api.exception.NacosException;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.module.message.controller.param.ClientLoginParam; import com.wecloud.im.biz.module.message.controller.param.ClientLoginParam;
import com.wecloud.im.biz.module.message.controller.param.ImTokenVerify; import com.wecloud.im.biz.module.message.controller.param.ImTokenVerify;
import com.wecloud.im.biz.module.message.controller.vo.TokenVo; import com.wecloud.im.biz.module.message.controller.vo.TokenVo;
import com.wecloud.im.biz.module.message.service.ImClientLoginService; import com.wecloud.im.biz.module.message.service.ImClientLoginService;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.common.controller.BaseController;
/** /**
* token 控制器 * token 控制器
......
...@@ -2,7 +2,7 @@ package com.wecloud.im.biz.module.message.controller.param; ...@@ -2,7 +2,7 @@ package com.wecloud.im.biz.module.message.controller.param;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import com.wecloud.im.core.util.JsonUtils; import com.wecloud.can.core.util.JsonUtils;
import com.wecloud.im.server.model.request.PushVO; import com.wecloud.im.server.model.request.PushVO;
import com.wecloud.netty.dispatch.common.BaseRequest; import com.wecloud.netty.dispatch.common.BaseRequest;
......
...@@ -2,7 +2,7 @@ package com.wecloud.im.biz.module.message.controller.param; ...@@ -2,7 +2,7 @@ package com.wecloud.im.biz.module.message.controller.param;
import com.baomidou.mybatisplus.annotation.EnumValue; import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.annotation.JsonValue;
import com.wecloud.im.core.common.enums.BaseEnum; import com.wecloud.can.core.base.enums.BaseEnum;
/** /**
* *
......
...@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel; ...@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -6,7 +6,7 @@ import lombok.Data; ...@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -7,7 +7,7 @@ import lombok.Setter; ...@@ -7,7 +7,7 @@ import lombok.Setter;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -5,7 +5,7 @@ import lombok.Data; ...@@ -5,7 +5,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.pagination.BasePageOrderParam; import com.wecloud.can.datasource.mybatisplus.pagination.BasePageOrderParam;
/** /**
* <pre> * <pre>
......
...@@ -5,7 +5,7 @@ import lombok.Data; ...@@ -5,7 +5,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.pagination.BasePageOrderParam; import com.wecloud.can.datasource.mybatisplus.pagination.BasePageOrderParam;
/** /**
* <pre> * <pre>
......
...@@ -5,7 +5,7 @@ import lombok.Data; ...@@ -5,7 +5,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.pagination.BasePageOrderParam; import com.wecloud.can.datasource.mybatisplus.pagination.BasePageOrderParam;
/** /**
* <pre> * <pre>
......
...@@ -8,7 +8,7 @@ import lombok.experimental.Accessors; ...@@ -8,7 +8,7 @@ import lombok.experimental.Accessors;
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.can.core.base.entity.BaseEntity;
/** /**
* 终端表 * 终端表
......
...@@ -5,7 +5,7 @@ import lombok.Data; ...@@ -5,7 +5,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.pagination.BasePageOrderParam; import com.wecloud.can.datasource.mybatisplus.pagination.BasePageOrderParam;
/** /**
* <pre> * <pre>
......
...@@ -5,7 +5,7 @@ import lombok.Data; ...@@ -5,7 +5,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.pagination.BasePageOrderParam; import com.wecloud.can.datasource.mybatisplus.pagination.BasePageOrderParam;
/** /**
* <pre> * <pre>
......
...@@ -6,7 +6,7 @@ import lombok.Data; ...@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.pagination.BasePageOrderParam; import com.wecloud.can.datasource.mybatisplus.pagination.BasePageOrderParam;
/** /**
* <pre> * <pre>
......
...@@ -5,7 +5,7 @@ import lombok.Data; ...@@ -5,7 +5,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.pagination.BasePageOrderParam; import com.wecloud.can.datasource.mybatisplus.pagination.BasePageOrderParam;
/** /**
* <pre> * <pre>
......
...@@ -5,7 +5,7 @@ import lombok.Data; ...@@ -5,7 +5,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.pagination.BasePageOrderParam; import com.wecloud.can.datasource.mybatisplus.pagination.BasePageOrderParam;
/** /**
* <pre> * <pre>
......
...@@ -5,7 +5,7 @@ import lombok.Data; ...@@ -5,7 +5,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.pagination.BasePageOrderParam; import com.wecloud.can.datasource.mybatisplus.pagination.BasePageOrderParam;
/** /**
* <pre> * <pre>
......
...@@ -10,7 +10,7 @@ import java.util.List; ...@@ -10,7 +10,7 @@ import java.util.List;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* ImMsgReadUpdate * ImMsgReadUpdate
......
...@@ -6,7 +6,7 @@ import lombok.Data; ...@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -6,7 +6,7 @@ import lombok.Data; ...@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -6,8 +6,8 @@ import lombok.Data; ...@@ -6,8 +6,8 @@ import lombok.Data;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import com.wecloud.can.core.base.entity.BaseEntity;
import com.wecloud.im.biz.enums.DeviceTypeEnum; import com.wecloud.im.biz.enums.DeviceTypeEnum;
import com.wecloud.im.core.common.entity.BaseEntity;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode; ...@@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode;
import java.util.List; import java.util.List;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -8,7 +8,7 @@ import lombok.experimental.Accessors; ...@@ -8,7 +8,7 @@ import lombok.experimental.Accessors;
import java.util.List; import java.util.List;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* ImMsgReadUpdate * ImMsgReadUpdate
......
...@@ -9,7 +9,7 @@ import java.util.List; ...@@ -9,7 +9,7 @@ import java.util.List;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -7,8 +7,8 @@ import lombok.EqualsAndHashCode; ...@@ -7,8 +7,8 @@ import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import com.wecloud.can.core.base.entity.BaseEntity;
import com.wecloud.im.biz.enums.MutedEnum; import com.wecloud.im.biz.enums.MutedEnum;
import com.wecloud.im.core.common.entity.BaseEntity;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -9,7 +9,7 @@ import java.util.List; ...@@ -9,7 +9,7 @@ import java.util.List;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -8,7 +8,7 @@ import lombok.experimental.Accessors; ...@@ -8,7 +8,7 @@ import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -6,8 +6,8 @@ import lombok.Data; ...@@ -6,8 +6,8 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.can.core.base.entity.BaseEntity;
import com.wecloud.im.biz.enums.DeviceTypeEnum; import com.wecloud.im.biz.enums.DeviceTypeEnum;
import com.wecloud.im.core.common.entity.BaseEntity;
/** /**
* 添加或修改推送设备信息 * 添加或修改推送设备信息
......
...@@ -12,7 +12,7 @@ import javax.validation.constraints.NotNull; ...@@ -12,7 +12,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.can.core.base.entity.BaseEntity;
/** /**
* 第三方应用表 * 第三方应用表
......
...@@ -6,7 +6,7 @@ import lombok.Data; ...@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* 黑名单 * 黑名单
......
...@@ -6,7 +6,7 @@ import lombok.Data; ...@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* 添加或修改推送设备信息 * 添加或修改推送设备信息
......
...@@ -8,7 +8,7 @@ import lombok.experimental.Accessors; ...@@ -8,7 +8,7 @@ import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* 添加或修改推送设备信息 * 添加或修改推送设备信息
......
...@@ -6,7 +6,7 @@ import lombok.Data; ...@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* @author wei * @author wei
......
...@@ -6,7 +6,7 @@ import lombok.Data; ...@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* 添加或修改推送设备信息 * 添加或修改推送设备信息
......
...@@ -6,7 +6,7 @@ import lombok.Data; ...@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -8,8 +8,8 @@ import lombok.experimental.Accessors; ...@@ -8,8 +8,8 @@ import lombok.experimental.Accessors;
import java.util.List; import java.util.List;
import com.wecloud.can.core.base.entity.BaseEntity;
import com.wecloud.im.biz.enums.JoinConversationTypeEnum; import com.wecloud.im.biz.enums.JoinConversationTypeEnum;
import com.wecloud.im.core.common.entity.BaseEntity;
/** /**
* @author wei * @author wei
......
...@@ -6,7 +6,7 @@ import lombok.Data; ...@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* 会话表 * 会话表
......
...@@ -11,8 +11,8 @@ import java.util.Map; ...@@ -11,8 +11,8 @@ import java.util.Map;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import com.wecloud.can.core.base.entity.BaseEntity;
import com.wecloud.im.biz.enums.ChatTypeEnum; import com.wecloud.im.biz.enums.ChatTypeEnum;
import com.wecloud.im.core.common.entity.BaseEntity;
/** /**
* 会话表 * 会话表
......
...@@ -8,7 +8,7 @@ import lombok.experimental.Accessors; ...@@ -8,7 +8,7 @@ import lombok.experimental.Accessors;
import java.util.List; import java.util.List;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* 修改是否单向隐藏会话 * 修改是否单向隐藏会话
......
...@@ -8,7 +8,7 @@ import lombok.experimental.Accessors; ...@@ -8,7 +8,7 @@ import lombok.experimental.Accessors;
import java.util.HashMap; import java.util.HashMap;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* 会话表 * 会话表
......
...@@ -6,7 +6,7 @@ import lombok.Data; ...@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* 会话表 * 会话表
......
...@@ -6,7 +6,7 @@ import lombok.Data; ...@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
import com.wecloud.im.server.model.request.PushVO; import com.wecloud.im.server.model.request.PushVO;
/** /**
......
...@@ -8,7 +8,7 @@ import lombok.experimental.Accessors; ...@@ -8,7 +8,7 @@ import lombok.experimental.Accessors;
import java.util.HashMap; import java.util.HashMap;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* 自定义透传内容 * 自定义透传内容
......
...@@ -8,7 +8,7 @@ import lombok.experimental.Accessors; ...@@ -8,7 +8,7 @@ import lombok.experimental.Accessors;
import java.util.HashMap; import java.util.HashMap;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* 修改消息 * 修改消息
......
...@@ -14,16 +14,16 @@ import org.springframework.web.bind.annotation.RequestHeader; ...@@ -14,16 +14,16 @@ import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.log.annotation.OperationLog;
import com.wecloud.can.log.enums.OperationLogType;
import com.wecloud.im.biz.module.message.controller.param.ApiImConversationMembersPageParam; import com.wecloud.im.biz.module.message.controller.param.ApiImConversationMembersPageParam;
import com.wecloud.im.biz.module.message.controller.param.ApiImConversationMembersQueryVo; import com.wecloud.im.biz.module.message.controller.param.ApiImConversationMembersQueryVo;
import com.wecloud.im.biz.module.message.entity.ImApplication; import com.wecloud.im.biz.module.message.entity.ImApplication;
import com.wecloud.im.biz.module.message.service.ImApplicationService; import com.wecloud.im.biz.module.message.service.ImApplicationService;
import com.wecloud.im.biz.module.message.service.ImConversationMembersService; import com.wecloud.im.biz.module.message.service.ImConversationMembersService;
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.log.annotation.OperationLog;
import com.wecloud.im.core.log.enums.OperationLogType;
/** /**
* 会话成员表 控制器 * 会话成员表 控制器
......
...@@ -11,13 +11,13 @@ import org.springframework.web.bind.annotation.RequestHeader; ...@@ -11,13 +11,13 @@ import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.module.message.controller.param.add.ImMsgSendToOnlineClient; import com.wecloud.im.biz.module.message.controller.param.add.ImMsgSendToOnlineClient;
import com.wecloud.im.biz.module.message.entity.ImApplication; import com.wecloud.im.biz.module.message.entity.ImApplication;
import com.wecloud.im.biz.module.message.service.ImApplicationService; import com.wecloud.im.biz.module.message.service.ImApplicationService;
import com.wecloud.im.biz.module.message.service.ImMessageService; import com.wecloud.im.biz.module.message.service.ImMessageService;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.common.controller.BaseController;
/** /**
* 消息存储表 控制器 * 消息存储表 控制器
......
...@@ -6,7 +6,7 @@ import lombok.Data; ...@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* 会话表 * 会话表
......
...@@ -6,7 +6,7 @@ import lombok.Data; ...@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* 在线状态 * 在线状态
......
...@@ -8,7 +8,7 @@ import lombok.experimental.Accessors; ...@@ -8,7 +8,7 @@ import lombok.experimental.Accessors;
import java.util.Date; import java.util.Date;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* 消息在线推送 * 消息在线推送
......
...@@ -12,8 +12,8 @@ import javax.validation.constraints.NotNull; ...@@ -12,8 +12,8 @@ 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.can.core.base.entity.BaseEntity;
import com.wecloud.im.security.signature.Application; import com.wecloud.can.security.signature.Application;
/** /**
* 第三方应用表 * 第三方应用表
......
...@@ -12,7 +12,7 @@ import javax.validation.constraints.NotNull; ...@@ -12,7 +12,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.can.core.base.entity.BaseEntity;
/** /**
* 终端表 * 终端表
......
...@@ -12,7 +12,7 @@ import javax.validation.constraints.NotNull; ...@@ -12,7 +12,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.can.core.base.entity.BaseEntity;
/** /**
* 黑名单 * 黑名单
......
...@@ -12,7 +12,7 @@ import javax.validation.constraints.NotNull; ...@@ -12,7 +12,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.can.core.base.entity.BaseEntity;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -13,9 +13,9 @@ import javax.validation.constraints.NotNull; ...@@ -13,9 +13,9 @@ import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.wecloud.can.core.base.entity.BaseEntity;
import com.wecloud.im.biz.enums.ChatTypeEnum; import com.wecloud.im.biz.enums.ChatTypeEnum;
import com.wecloud.im.biz.enums.MutedEnum; import com.wecloud.im.biz.enums.MutedEnum;
import com.wecloud.im.core.common.entity.BaseEntity;
/** /**
* 会话表 * 会话表
......
...@@ -13,9 +13,9 @@ import javax.validation.constraints.NotNull; ...@@ -13,9 +13,9 @@ import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.wecloud.can.core.base.entity.BaseEntity;
import com.wecloud.im.biz.enums.GroupRoleEnum; import com.wecloud.im.biz.enums.GroupRoleEnum;
import com.wecloud.im.biz.enums.MutedEnum; import com.wecloud.im.biz.enums.MutedEnum;
import com.wecloud.im.core.common.entity.BaseEntity;
/** /**
* 会话成员表 * 会话成员表
......
...@@ -12,8 +12,8 @@ import javax.validation.constraints.NotNull; ...@@ -12,8 +12,8 @@ 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.can.core.base.entity.BaseEntity;
import com.wecloud.im.biz.enums.FriendStateEnum; import com.wecloud.im.biz.enums.FriendStateEnum;
import com.wecloud.im.core.common.entity.BaseEntity;
/** /**
* @author lixiaozhong * @author lixiaozhong
......
...@@ -12,7 +12,7 @@ import javax.validation.constraints.NotNull; ...@@ -12,7 +12,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.can.core.base.entity.BaseEntity;
/** /**
* @author lixiaozhong * @author lixiaozhong
......
...@@ -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.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* 消息收件箱表 * 消息收件箱表
......
...@@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull; ...@@ -10,7 +10,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.can.core.base.entity.BaseEntity;
/** /**
* apns配置表 * apns配置表
......
...@@ -12,7 +12,7 @@ import javax.validation.constraints.NotNull; ...@@ -12,7 +12,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.can.core.base.entity.BaseEntity;
/** /**
* 消息存储表 * 消息存储表
......
...@@ -10,7 +10,7 @@ import java.util.Date; ...@@ -10,7 +10,7 @@ import java.util.Date;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* 消息在线推送 * 消息在线推送
......
...@@ -12,8 +12,8 @@ import javax.validation.constraints.NotNull; ...@@ -12,8 +12,8 @@ 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.can.core.base.entity.BaseEntity;
import com.wecloud.im.biz.enums.MultiRtcRoomStateEnum; import com.wecloud.im.biz.enums.MultiRtcRoomStateEnum;
import com.wecloud.im.core.common.entity.BaseEntity;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -12,8 +12,8 @@ import javax.validation.constraints.NotNull; ...@@ -12,8 +12,8 @@ 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.can.core.base.entity.BaseEntity;
import com.wecloud.im.biz.enums.MultiRtcMemberStateEnum; import com.wecloud.im.biz.enums.MultiRtcMemberStateEnum;
import com.wecloud.im.core.common.entity.BaseEntity;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -12,8 +12,8 @@ import javax.validation.constraints.NotNull; ...@@ -12,8 +12,8 @@ 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.can.core.base.entity.BaseEntity;
import com.wecloud.im.biz.enums.RtcStateEnum; import com.wecloud.im.biz.enums.RtcStateEnum;
import com.wecloud.im.core.common.entity.BaseEntity;
/** /**
* @Author Future * @Author Future
......
...@@ -5,7 +5,7 @@ import lombok.Data; ...@@ -5,7 +5,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.pagination.BasePageOrderParam; import com.wecloud.can.datasource.mybatisplus.pagination.BasePageOrderParam;
/** /**
* @Description 好友分页 * @Description 好友分页
......
...@@ -3,14 +3,14 @@ package com.wecloud.im.biz.module.message.service; ...@@ -3,14 +3,14 @@ package com.wecloud.im.biz.module.message.service;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.core.rocketmq.component.MqSender; import com.wecloud.im.biz.core.rocketmq.component.MqSender;
import com.wecloud.im.biz.enums.EventResponseSubCmdEnum; import com.wecloud.im.biz.enums.EventResponseSubCmdEnum;
import com.wecloud.im.biz.module.message.entity.ImApplication; import com.wecloud.im.biz.module.message.entity.ImApplication;
import com.wecloud.im.biz.module.message.entity.ImClient; import com.wecloud.im.biz.module.message.entity.ImClient;
import com.wecloud.im.biz.module.message.param.FriendApplyEventDto; import com.wecloud.im.biz.module.message.param.FriendApplyEventDto;
import com.wecloud.im.biz.module.message.param.FriendApproveEventDto; import com.wecloud.im.biz.module.message.param.FriendApproveEventDto;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
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;
import com.wecloud.im.server.model.request.PushVO; import com.wecloud.im.server.model.request.PushVO;
......
package com.wecloud.im.biz.module.message.service; package com.wecloud.im.biz.module.message.service;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.controller.param.ImApplicationPageParam; import com.wecloud.im.biz.module.message.controller.param.ImApplicationPageParam;
import com.wecloud.im.biz.module.message.controller.param.ImApplicationQueryVo; import com.wecloud.im.biz.module.message.controller.param.ImApplicationQueryVo;
import com.wecloud.im.biz.module.message.entity.ImApplication; import com.wecloud.im.biz.module.message.entity.ImApplication;
import com.wecloud.im.core.common.service.BaseService;
import com.wecloud.im.core.pagination.Paging;
/** /**
* 第三方应用表 服务类 * 第三方应用表 服务类
......
package com.wecloud.im.biz.module.message.service; package com.wecloud.im.biz.module.message.service;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistPageParam; import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistPageParam;
import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistQueryVo; import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistQueryVo;
import com.wecloud.im.biz.module.message.controller.param.add.ImClientBlacklistUpdate; import com.wecloud.im.biz.module.message.controller.param.add.ImClientBlacklistUpdate;
import com.wecloud.im.biz.module.message.entity.ImClientBlacklist; import com.wecloud.im.biz.module.message.entity.ImClientBlacklist;
import com.wecloud.im.core.common.service.BaseService;
import com.wecloud.im.core.pagination.Paging;
/** /**
* 黑名单 服务类 * 黑名单 服务类
......
package com.wecloud.im.biz.module.message.service; package com.wecloud.im.biz.module.message.service;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.entity.ImClientDevice; import com.wecloud.im.biz.module.message.entity.ImClientDevice;
import com.wecloud.im.core.common.service.BaseService;
/** /**
* @Author wenzhida * @Author wenzhida
......
package com.wecloud.im.biz.module.message.service; package com.wecloud.im.biz.module.message.service;
import com.alibaba.nacos.api.exception.NacosException; import com.alibaba.nacos.api.exception.NacosException;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.module.message.controller.param.ImTokenVerify; import com.wecloud.im.biz.module.message.controller.param.ImTokenVerify;
import com.wecloud.im.biz.module.message.controller.vo.TokenVo; import com.wecloud.im.biz.module.message.controller.vo.TokenVo;
import com.wecloud.im.core.common.api.ApiResult;
/** /**
* 终端表 服务类 * 终端表 服务类
......
...@@ -3,6 +3,8 @@ package com.wecloud.im.biz.module.message.service; ...@@ -3,6 +3,8 @@ package com.wecloud.im.biz.module.message.service;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.controller.param.ClientInfoParam; import com.wecloud.im.biz.module.message.controller.param.ClientInfoParam;
import com.wecloud.im.biz.module.message.controller.param.ClientRelationVo; import com.wecloud.im.biz.module.message.controller.param.ClientRelationVo;
import com.wecloud.im.biz.module.message.controller.param.GetClientInfoParam; import com.wecloud.im.biz.module.message.controller.param.GetClientInfoParam;
...@@ -21,8 +23,6 @@ import com.wecloud.im.biz.module.message.controller.vo.ClientInfoVo; ...@@ -21,8 +23,6 @@ import com.wecloud.im.biz.module.message.controller.vo.ClientInfoVo;
import com.wecloud.im.biz.module.message.controller.vo.GetInfoListVo; import com.wecloud.im.biz.module.message.controller.vo.GetInfoListVo;
import com.wecloud.im.biz.module.message.controller.vo.MyInfoVo; import com.wecloud.im.biz.module.message.controller.vo.MyInfoVo;
import com.wecloud.im.biz.module.message.entity.ImClient; import com.wecloud.im.biz.module.message.entity.ImClient;
import com.wecloud.im.core.common.service.BaseService;
import com.wecloud.im.core.pagination.Paging;
/** /**
* 终端表 服务类 * 终端表 服务类
......
...@@ -4,6 +4,9 @@ import java.util.List; ...@@ -4,6 +4,9 @@ import java.util.List;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.controller.param.ApiImConversationMembersPageParam; import com.wecloud.im.biz.module.message.controller.param.ApiImConversationMembersPageParam;
import com.wecloud.im.biz.module.message.controller.param.ApiImConversationMembersQueryVo; import com.wecloud.im.biz.module.message.controller.param.ApiImConversationMembersQueryVo;
import com.wecloud.im.biz.module.message.controller.param.ChatSettingParam; import com.wecloud.im.biz.module.message.controller.param.ChatSettingParam;
...@@ -17,9 +20,6 @@ import com.wecloud.im.biz.module.message.controller.vo.ConversationMemberVo; ...@@ -17,9 +20,6 @@ import com.wecloud.im.biz.module.message.controller.vo.ConversationMemberVo;
import com.wecloud.im.biz.module.message.entity.ImApplication; import com.wecloud.im.biz.module.message.entity.ImApplication;
import com.wecloud.im.biz.module.message.entity.ImConversationMembers; import com.wecloud.im.biz.module.message.entity.ImConversationMembers;
import com.wecloud.im.biz.module.message.param.ImFriendApplyParam; import com.wecloud.im.biz.module.message.param.ImFriendApplyParam;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.common.service.BaseService;
import com.wecloud.im.core.pagination.Paging;
/** /**
* 会话成员表 服务类 * 会话成员表 服务类
......
...@@ -4,6 +4,9 @@ import java.util.Collection; ...@@ -4,6 +4,9 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.controller.param.ChatRoomMemberPageParam; import com.wecloud.im.biz.module.message.controller.param.ChatRoomMemberPageParam;
import com.wecloud.im.biz.module.message.controller.param.DisbandConversationParam; import com.wecloud.im.biz.module.message.controller.param.DisbandConversationParam;
import com.wecloud.im.biz.module.message.controller.param.ExitChatRoomParam; import com.wecloud.im.biz.module.message.controller.param.ExitChatRoomParam;
...@@ -32,9 +35,6 @@ import com.wecloud.im.biz.module.message.entity.ImClient; ...@@ -32,9 +35,6 @@ import com.wecloud.im.biz.module.message.entity.ImClient;
import com.wecloud.im.biz.module.message.entity.ImConversation; import com.wecloud.im.biz.module.message.entity.ImConversation;
import com.wecloud.im.biz.module.message.entity.ImConversationMembers; import com.wecloud.im.biz.module.message.entity.ImConversationMembers;
import com.wecloud.im.biz.module.message.entity.ImMessage; import com.wecloud.im.biz.module.message.entity.ImMessage;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.common.service.BaseService;
import com.wecloud.im.core.pagination.Paging;
/** /**
* 会话表 服务类 * 会话表 服务类
......
...@@ -20,6 +20,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -20,6 +20,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.can.core.exception.BusinessException;
import com.wecloud.can.core.util.SnowflakeUtil;
import com.wecloud.can.datasource.mybatisplus.pagination.PageInfo;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.impl.BaseServiceImpl;
import com.wecloud.can.security.util.SecurityUtils;
import com.wecloud.im.biz.enums.ChatTypeEnum; import com.wecloud.im.biz.enums.ChatTypeEnum;
import com.wecloud.im.biz.enums.FriendStateEnum; import com.wecloud.im.biz.enums.FriendStateEnum;
import com.wecloud.im.biz.module.message.controller.param.ImClientSimpleDto; import com.wecloud.im.biz.module.message.controller.param.ImClientSimpleDto;
...@@ -37,12 +43,6 @@ import com.wecloud.im.biz.module.message.param.ImFriendBaseDto; ...@@ -37,12 +43,6 @@ import com.wecloud.im.biz.module.message.param.ImFriendBaseDto;
import com.wecloud.im.biz.module.message.param.ImFriendPageParam; import com.wecloud.im.biz.module.message.param.ImFriendPageParam;
import com.wecloud.im.biz.module.message.param.ImFriendRecommendDto; import com.wecloud.im.biz.module.message.param.ImFriendRecommendDto;
import com.wecloud.im.biz.module.message.param.UnfriendParam; import com.wecloud.im.biz.module.message.param.UnfriendParam;
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.util.SnowflakeUtil;
import com.wecloud.im.security.util.SecurityUtils;
/** /**
* @Description 好友关系处理逻辑 * @Description 好友关系处理逻辑
......
package com.wecloud.im.biz.module.message.service; package com.wecloud.im.biz.module.message.service;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.controller.param.ImMsgReceivedStatusUpdate; import com.wecloud.im.biz.module.message.controller.param.ImMsgReceivedStatusUpdate;
import com.wecloud.im.biz.module.message.controller.param.MsgReadStatusUpdateParam; import com.wecloud.im.biz.module.message.controller.param.MsgReadStatusUpdateParam;
import com.wecloud.im.biz.module.message.controller.param.UpdateMsgReadStatusByConversationParam; import com.wecloud.im.biz.module.message.controller.param.UpdateMsgReadStatusByConversationParam;
import com.wecloud.im.biz.module.message.entity.ImInbox; import com.wecloud.im.biz.module.message.entity.ImInbox;
import com.wecloud.im.core.common.service.BaseService;
/** /**
* 消息收件箱表 服务类 * 消息收件箱表 服务类
......
package com.wecloud.im.biz.module.message.service; package com.wecloud.im.biz.module.message.service;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.controller.param.ImIosApnsQueryVo; import com.wecloud.im.biz.module.message.controller.param.ImIosApnsQueryVo;
import com.wecloud.im.biz.module.message.entity.ImIosApns; import com.wecloud.im.biz.module.message.entity.ImIosApns;
import com.wecloud.im.core.common.service.BaseService;
/** /**
* apns配置表 服务类 * apns配置表 服务类
......
...@@ -4,6 +4,9 @@ import java.util.List; ...@@ -4,6 +4,9 @@ import java.util.List;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.controller.param.ChatContentVo; import com.wecloud.im.biz.module.message.controller.param.ChatContentVo;
import com.wecloud.im.biz.module.message.controller.param.GetReadersParam; import com.wecloud.im.biz.module.message.controller.param.GetReadersParam;
import com.wecloud.im.biz.module.message.controller.param.GroupChatMessageParam; import com.wecloud.im.biz.module.message.controller.param.GroupChatMessageParam;
...@@ -23,9 +26,6 @@ import com.wecloud.im.biz.module.message.controller.vo.ReaderList; ...@@ -23,9 +26,6 @@ import com.wecloud.im.biz.module.message.controller.vo.ReaderList;
import com.wecloud.im.biz.module.message.entity.ImApplication; import com.wecloud.im.biz.module.message.entity.ImApplication;
import com.wecloud.im.biz.module.message.entity.ImClient; import com.wecloud.im.biz.module.message.entity.ImClient;
import com.wecloud.im.biz.module.message.entity.ImMessage; import com.wecloud.im.biz.module.message.entity.ImMessage;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.common.service.BaseService;
import com.wecloud.im.core.pagination.Paging;
import com.wecloud.im.server.model.request.ReceiveDataVO; import com.wecloud.im.server.model.request.ReceiveDataVO;
import com.wecloud.im.server.model.request.ReceiveVO; import com.wecloud.im.server.model.request.ReceiveVO;
......
package com.wecloud.im.biz.module.message.service; package com.wecloud.im.biz.module.message.service;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.entity.ImMultiRtcRoomMember; import com.wecloud.im.biz.module.message.entity.ImMultiRtcRoomMember;
import com.wecloud.im.core.common.service.BaseService;
/** /**
* @Author wenzhida * @Author wenzhida
......
package com.wecloud.im.biz.module.message.service; package com.wecloud.im.biz.module.message.service;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.entity.ImMultiRtcRoom; import com.wecloud.im.biz.module.message.entity.ImMultiRtcRoom;
import com.wecloud.im.core.common.service.BaseService;
/** /**
* @Author wenzhida * @Author wenzhida
......
package com.wecloud.im.biz.module.message.service; package com.wecloud.im.biz.module.message.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.enums.SingleRtcOperateTypeEnum; import com.wecloud.im.biz.enums.SingleRtcOperateTypeEnum;
import com.wecloud.im.biz.module.message.controller.param.rtc.CreateRtcChannelParam; import com.wecloud.im.biz.module.message.controller.param.rtc.CreateRtcChannelParam;
import com.wecloud.im.biz.module.message.controller.param.rtc.SingleRtcRecordParam; import com.wecloud.im.biz.module.message.controller.param.rtc.SingleRtcRecordParam;
import com.wecloud.im.biz.module.message.entity.ImClient; import com.wecloud.im.biz.module.message.entity.ImClient;
import com.wecloud.im.biz.module.message.entity.ImRtcRecord; import com.wecloud.im.biz.module.message.entity.ImRtcRecord;
import com.wecloud.im.core.common.service.BaseService;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -4,12 +4,12 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -4,12 +4,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.wecloud.can.core.exception.BusinessException;
import com.wecloud.im.biz.module.message.entity.ImApplication; import com.wecloud.im.biz.module.message.entity.ImApplication;
import com.wecloud.im.biz.module.message.entity.ImClient; import com.wecloud.im.biz.module.message.entity.ImClient;
import com.wecloud.im.biz.module.message.service.ContextService; import com.wecloud.im.biz.module.message.service.ContextService;
import com.wecloud.im.biz.module.message.service.ImApplicationService; import com.wecloud.im.biz.module.message.service.ImApplicationService;
import com.wecloud.im.biz.module.message.service.ImClientService; import com.wecloud.im.biz.module.message.service.ImClientService;
import com.wecloud.im.core.common.exception.BusinessException;
/** /**
* 请求上下文服务 impl * 请求上下文服务 impl
......
...@@ -13,16 +13,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ...@@ -13,16 +13,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.can.datasource.mybatisplus.pagination.PageInfo;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.impl.BaseServiceImpl;
import com.wecloud.can.security.signature.Application;
import com.wecloud.can.security.signature.ApplicationService;
import com.wecloud.im.biz.module.message.controller.param.ImApplicationPageParam; import com.wecloud.im.biz.module.message.controller.param.ImApplicationPageParam;
import com.wecloud.im.biz.module.message.controller.param.ImApplicationQueryVo; import com.wecloud.im.biz.module.message.controller.param.ImApplicationQueryVo;
import com.wecloud.im.biz.module.message.entity.ImApplication; import com.wecloud.im.biz.module.message.entity.ImApplication;
import com.wecloud.im.biz.module.message.mapper.ImApplicationMapper; import com.wecloud.im.biz.module.message.mapper.ImApplicationMapper;
import com.wecloud.im.biz.module.message.service.ImApplicationService; 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.security.signature.Application;
import com.wecloud.im.security.signature.ApplicationService;
/** /**
* 第三方应用表 服务实现类 * 第三方应用表 服务实现类
......
...@@ -22,6 +22,7 @@ import cn.hutool.core.lang.id.NanoId; ...@@ -22,6 +22,7 @@ import cn.hutool.core.lang.id.NanoId;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.wecloud.can.security.signature.SignUtils;
import com.wecloud.im.biz.enums.ChatTypeEnum; import com.wecloud.im.biz.enums.ChatTypeEnum;
import com.wecloud.im.biz.module.message.controller.param.ClientOnlineStatusChangeDto; import com.wecloud.im.biz.module.message.controller.param.ClientOnlineStatusChangeDto;
import com.wecloud.im.biz.module.message.entity.ImApplication; import com.wecloud.im.biz.module.message.entity.ImApplication;
...@@ -34,7 +35,6 @@ import com.wecloud.im.biz.module.message.service.ImCallbackService; ...@@ -34,7 +35,6 @@ 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.security.signature.SignUtils;
import com.wecloud.im.server.enums.MsgTypeEnum; import com.wecloud.im.server.enums.MsgTypeEnum;
/** /**
......
...@@ -11,6 +11,12 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -11,6 +11,12 @@ import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.can.core.exception.BusinessException;
import com.wecloud.can.core.util.SnowflakeUtil;
import com.wecloud.can.datasource.mybatisplus.pagination.PageInfo;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.impl.BaseServiceImpl;
import com.wecloud.can.security.util.SecurityUtils;
import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistPageParam; import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistPageParam;
import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistQueryVo; import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistQueryVo;
import com.wecloud.im.biz.module.message.controller.param.add.ImClientBlacklistUpdate; import com.wecloud.im.biz.module.message.controller.param.add.ImClientBlacklistUpdate;
...@@ -20,12 +26,6 @@ import com.wecloud.im.biz.module.message.mapper.ImClientBlacklistMapper; ...@@ -20,12 +26,6 @@ import com.wecloud.im.biz.module.message.mapper.ImClientBlacklistMapper;
import com.wecloud.im.biz.module.message.service.ContextService; import com.wecloud.im.biz.module.message.service.ContextService;
import com.wecloud.im.biz.module.message.service.ImClientBlacklistService; import com.wecloud.im.biz.module.message.service.ImClientBlacklistService;
import com.wecloud.im.biz.module.message.service.ImClientService; import com.wecloud.im.biz.module.message.service.ImClientService;
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.util.SnowflakeUtil;
import com.wecloud.im.security.util.SecurityUtils;
/** /**
* 黑名单 服务实现类 * 黑名单 服务实现类
......
...@@ -6,10 +6,10 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -6,10 +6,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.wecloud.can.datasource.mybatisplus.service.impl.BaseServiceImpl;
import com.wecloud.im.biz.module.message.entity.ImClientDevice; import com.wecloud.im.biz.module.message.entity.ImClientDevice;
import com.wecloud.im.biz.module.message.mapper.ImClientDeviceMapper; import com.wecloud.im.biz.module.message.mapper.ImClientDeviceMapper;
import com.wecloud.im.biz.module.message.service.ImClientDeviceService; import com.wecloud.im.biz.module.message.service.ImClientDeviceService;
import com.wecloud.im.core.common.service.impl.BaseServiceImpl;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -13,6 +13,14 @@ import cn.hutool.crypto.digest.MD5; ...@@ -13,6 +13,14 @@ import cn.hutool.crypto.digest.MD5;
import com.alibaba.nacos.api.exception.NacosException; import com.alibaba.nacos.api.exception.NacosException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.core.util.SnowflakeUtil;
import com.wecloud.can.security.cache.AppLoginRedisService;
import com.wecloud.can.security.jwt.JwtToken;
import com.wecloud.can.security.properties.JwtProperties;
import com.wecloud.can.security.util.JwtUtil;
import com.wecloud.can.security.util.SecurityUtils;
import com.wecloud.im.biz.core.balance.WsInstance; import com.wecloud.im.biz.core.balance.WsInstance;
import com.wecloud.im.biz.module.message.controller.param.ImTokenVerify; import com.wecloud.im.biz.module.message.controller.param.ImTokenVerify;
import com.wecloud.im.biz.module.message.controller.vo.TokenVo; import com.wecloud.im.biz.module.message.controller.vo.TokenVo;
...@@ -23,14 +31,6 @@ import com.wecloud.im.biz.module.message.service.ImApplicationService; ...@@ -23,14 +31,6 @@ import com.wecloud.im.biz.module.message.service.ImApplicationService;
import com.wecloud.im.biz.module.message.service.ImClientDeviceService; import com.wecloud.im.biz.module.message.service.ImClientDeviceService;
import com.wecloud.im.biz.module.message.service.ImClientLoginService; 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.ApiResult;
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
......
...@@ -24,6 +24,14 @@ import com.baomidou.mybatisplus.core.metadata.OrderItem; ...@@ -24,6 +24,14 @@ import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.wecloud.can.core.exception.BusinessException;
import com.wecloud.can.core.util.SnowflakeUtil;
import com.wecloud.can.datasource.mybatisplus.pagination.PageInfo;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.impl.BaseServiceImpl;
import com.wecloud.can.security.jwt.JwtToken;
import com.wecloud.can.security.util.JwtUtil;
import com.wecloud.can.security.util.SecurityUtils;
import com.wecloud.im.biz.enums.FriendStateEnum; import com.wecloud.im.biz.enums.FriendStateEnum;
import com.wecloud.im.biz.enums.RelationEnum; import com.wecloud.im.biz.enums.RelationEnum;
import com.wecloud.im.biz.module.message.controller.param.ClientInfoParam; import com.wecloud.im.biz.module.message.controller.param.ClientInfoParam;
...@@ -54,14 +62,6 @@ import com.wecloud.im.biz.module.message.service.ImClientBlacklistService; ...@@ -54,14 +62,6 @@ import com.wecloud.im.biz.module.message.service.ImClientBlacklistService;
import com.wecloud.im.biz.module.message.service.ImClientDeviceService; import com.wecloud.im.biz.module.message.service.ImClientDeviceService;
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.ImFriendService; import com.wecloud.im.biz.module.message.service.ImFriendService;
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.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;
......
...@@ -18,6 +18,14 @@ import com.baomidou.mybatisplus.core.metadata.OrderItem; ...@@ -18,6 +18,14 @@ import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.exception.BusinessException;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.core.util.JsonUtils;
import com.wecloud.can.datasource.mybatisplus.pagination.PageInfo;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.impl.BaseServiceImpl;
import com.wecloud.can.security.util.SecurityUtils;
import com.wecloud.im.biz.module.message.controller.param.ApiImConversationMembersPageParam; import com.wecloud.im.biz.module.message.controller.param.ApiImConversationMembersPageParam;
import com.wecloud.im.biz.module.message.controller.param.ApiImConversationMembersQueryVo; import com.wecloud.im.biz.module.message.controller.param.ApiImConversationMembersQueryVo;
import com.wecloud.im.biz.module.message.controller.param.ChatSettingParam; import com.wecloud.im.biz.module.message.controller.param.ChatSettingParam;
...@@ -42,14 +50,6 @@ import com.wecloud.im.biz.module.message.service.ImClientService; ...@@ -42,14 +50,6 @@ 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.biz.module.message.service.ImFriendService; import com.wecloud.im.biz.module.message.service.ImFriendService;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
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.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;
......
...@@ -33,6 +33,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -33,6 +33,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chanjx.utils.StringUtils; import com.chanjx.utils.StringUtils;
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.can.core.base.enums.BaseEnum;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.exception.BusinessException;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.core.util.JsonUtils;
import com.wecloud.can.core.util.SnowflakeUtil;
import com.wecloud.can.datasource.mybatisplus.pagination.PageInfo;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.impl.BaseServiceImpl;
import com.wecloud.can.security.util.SecurityUtils;
import com.wecloud.im.biz.core.post.Couriers; import com.wecloud.im.biz.core.post.Couriers;
import com.wecloud.im.biz.core.post.MessageBuilder; import com.wecloud.im.biz.core.post.MessageBuilder;
import com.wecloud.im.biz.enums.ChatTypeEnum; import com.wecloud.im.biz.enums.ChatTypeEnum;
...@@ -84,16 +94,6 @@ import com.wecloud.im.biz.module.message.service.ImConversationMembersService; ...@@ -84,16 +94,6 @@ 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.biz.module.message.service.ImFriendService; import com.wecloud.im.biz.module.message.service.ImFriendService;
import com.wecloud.im.biz.module.message.service.ImMessageService; import com.wecloud.im.biz.module.message.service.ImMessageService;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.common.enums.BaseEnum;
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.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.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;
......
...@@ -16,6 +16,10 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -16,6 +16,10 @@ import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.wecloud.can.core.exception.BusinessException;
import com.wecloud.can.core.util.JsonUtils;
import com.wecloud.can.core.util.SnowflakeUtil;
import com.wecloud.can.security.util.SecurityUtils;
import com.wecloud.im.biz.core.post.Couriers; import com.wecloud.im.biz.core.post.Couriers;
import com.wecloud.im.biz.core.post.MessageBuilder; import com.wecloud.im.biz.core.post.MessageBuilder;
import com.wecloud.im.biz.enums.ChatTypeEnum; import com.wecloud.im.biz.enums.ChatTypeEnum;
...@@ -38,10 +42,6 @@ import com.wecloud.im.biz.module.message.service.ImConversationMembersService; ...@@ -38,10 +42,6 @@ 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.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.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.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;
......
...@@ -15,6 +15,9 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -15,6 +15,9 @@ import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.datasource.mybatisplus.service.impl.BaseServiceImpl;
import com.wecloud.im.biz.enums.ReadMsgStatusEnum; import com.wecloud.im.biz.enums.ReadMsgStatusEnum;
import com.wecloud.im.biz.module.message.controller.param.ImMsgReceivedStatusUpdate; import com.wecloud.im.biz.module.message.controller.param.ImMsgReceivedStatusUpdate;
import com.wecloud.im.biz.module.message.controller.param.MsgReadStatusUpdateParam; import com.wecloud.im.biz.module.message.controller.param.MsgReadStatusUpdateParam;
...@@ -31,9 +34,6 @@ import com.wecloud.im.biz.module.message.service.ImClientService; ...@@ -31,9 +34,6 @@ 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.ImInboxService; import com.wecloud.im.biz.module.message.service.ImInboxService;
import com.wecloud.im.biz.module.message.service.ImMessageService; import com.wecloud.im.biz.module.message.service.ImMessageService;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.common.service.impl.BaseServiceImpl;
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;
......
...@@ -8,11 +8,11 @@ import org.springframework.stereotype.Service; ...@@ -8,11 +8,11 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wecloud.can.datasource.mybatisplus.service.impl.BaseServiceImpl;
import com.wecloud.im.biz.module.message.controller.param.ImIosApnsQueryVo; import com.wecloud.im.biz.module.message.controller.param.ImIosApnsQueryVo;
import com.wecloud.im.biz.module.message.entity.ImIosApns; import com.wecloud.im.biz.module.message.entity.ImIosApns;
import com.wecloud.im.biz.module.message.mapper.ImIosApnsMapper; import com.wecloud.im.biz.module.message.mapper.ImIosApnsMapper;
import com.wecloud.im.biz.module.message.service.ImIosApnsService; import com.wecloud.im.biz.module.message.service.ImIosApnsService;
import com.wecloud.im.core.common.service.impl.BaseServiceImpl;
/** /**
* apns配置表 服务实现类 * apns配置表 服务实现类
......
...@@ -31,6 +31,15 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; ...@@ -31,6 +31,15 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.can.core.enums.ApiCode;
import com.wecloud.can.core.exception.BusinessException;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.core.util.JsonUtils;
import com.wecloud.can.core.util.SnowflakeUtil;
import com.wecloud.can.datasource.mybatisplus.pagination.PageInfo;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.impl.BaseServiceImpl;
import com.wecloud.can.security.util.SecurityUtils;
import com.wecloud.im.biz.core.rocketmq.component.MqSender; import com.wecloud.im.biz.core.rocketmq.component.MqSender;
import com.wecloud.im.biz.enums.ChatTypeEnum; import com.wecloud.im.biz.enums.ChatTypeEnum;
import com.wecloud.im.biz.event.ClientSendMessageEvent; import com.wecloud.im.biz.event.ClientSendMessageEvent;
...@@ -71,15 +80,6 @@ import com.wecloud.im.biz.module.message.service.ImConversationService; ...@@ -71,15 +80,6 @@ import com.wecloud.im.biz.module.message.service.ImConversationService;
import com.wecloud.im.biz.module.message.service.ImInboxService; import com.wecloud.im.biz.module.message.service.ImInboxService;
import com.wecloud.im.biz.module.message.service.ImMessageService; import com.wecloud.im.biz.module.message.service.ImMessageService;
import com.wecloud.im.biz.module.thousandchat.service.ThousandChatService; import com.wecloud.im.biz.module.thousandchat.service.ThousandChatService;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
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.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.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;
......
...@@ -8,10 +8,10 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -8,10 +8,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.wecloud.can.datasource.mybatisplus.service.impl.BaseServiceImpl;
import com.wecloud.im.biz.module.message.entity.ImMultiRtcRoomMember; import com.wecloud.im.biz.module.message.entity.ImMultiRtcRoomMember;
import com.wecloud.im.biz.module.message.mapper.ImMultiRtcRoomMemberMapper; import com.wecloud.im.biz.module.message.mapper.ImMultiRtcRoomMemberMapper;
import com.wecloud.im.biz.module.message.service.ImMultiRtcRoomMemberService; import com.wecloud.im.biz.module.message.service.ImMultiRtcRoomMemberService;
import com.wecloud.im.core.common.service.impl.BaseServiceImpl;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -9,10 +9,10 @@ import org.springframework.stereotype.Service; ...@@ -9,10 +9,10 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.wecloud.can.datasource.mybatisplus.service.impl.BaseServiceImpl;
import com.wecloud.im.biz.module.message.entity.ImMultiRtcRoom; import com.wecloud.im.biz.module.message.entity.ImMultiRtcRoom;
import com.wecloud.im.biz.module.message.mapper.ImMultiRtcRoomMapper; import com.wecloud.im.biz.module.message.mapper.ImMultiRtcRoomMapper;
import com.wecloud.im.biz.module.message.service.ImMultiRtcRoomService; import com.wecloud.im.biz.module.message.service.ImMultiRtcRoomService;
import com.wecloud.im.core.common.service.impl.BaseServiceImpl;
/** /**
* @Author wenzhida * @Author wenzhida
......
...@@ -13,6 +13,9 @@ import com.alibaba.fastjson.JSON; ...@@ -13,6 +13,9 @@ import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.can.core.exception.BusinessException;
import com.wecloud.can.core.util.SnowflakeUtil;
import com.wecloud.can.datasource.mybatisplus.service.impl.BaseServiceImpl;
import com.wecloud.im.biz.enums.RtcStateEnum; import com.wecloud.im.biz.enums.RtcStateEnum;
import com.wecloud.im.biz.enums.SingleRtcOperateTypeEnum; import com.wecloud.im.biz.enums.SingleRtcOperateTypeEnum;
import com.wecloud.im.biz.module.message.controller.param.rtc.CreateRtcChannelParam; import com.wecloud.im.biz.module.message.controller.param.rtc.CreateRtcChannelParam;
...@@ -22,9 +25,6 @@ import com.wecloud.im.biz.module.message.entity.ImRtcRecord; ...@@ -22,9 +25,6 @@ import com.wecloud.im.biz.module.message.entity.ImRtcRecord;
import com.wecloud.im.biz.module.message.mapper.ImRtcRecordMapper; import com.wecloud.im.biz.module.message.mapper.ImRtcRecordMapper;
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.ImRtcRecordService; import com.wecloud.im.biz.module.message.service.ImRtcRecordService;
import com.wecloud.im.core.common.exception.BusinessException;
import com.wecloud.im.core.common.service.impl.BaseServiceImpl;
import com.wecloud.im.core.util.SnowflakeUtil;
/** /**
......
...@@ -15,6 +15,8 @@ import com.alibaba.fastjson.JSON; ...@@ -15,6 +15,8 @@ import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.wecloud.can.core.exception.BusinessException;
import com.wecloud.can.core.util.SnowflakeUtil;
import com.wecloud.im.biz.enums.MultiRtcMemberStateEnum; import com.wecloud.im.biz.enums.MultiRtcMemberStateEnum;
import com.wecloud.im.biz.enums.MultiRtcRoomStateEnum; import com.wecloud.im.biz.enums.MultiRtcRoomStateEnum;
import com.wecloud.im.biz.module.message.controller.param.AgreeToMultiMeetParam; import com.wecloud.im.biz.module.message.controller.param.AgreeToMultiMeetParam;
...@@ -38,8 +40,6 @@ import com.wecloud.im.biz.module.multimeet.entity.response.MultiMeetLeaveRespons ...@@ -38,8 +40,6 @@ import com.wecloud.im.biz.module.multimeet.entity.response.MultiMeetLeaveRespons
import com.wecloud.im.biz.module.multimeet.entity.response.MultiMeetRejectResponse; import com.wecloud.im.biz.module.multimeet.entity.response.MultiMeetRejectResponse;
import com.wecloud.im.biz.module.multimeet.service.MultiMeetService; import com.wecloud.im.biz.module.multimeet.service.MultiMeetService;
import com.wecloud.im.biz.module.multimeet.service.WsMultiMeetWrite; import com.wecloud.im.biz.module.multimeet.service.WsMultiMeetWrite;
import com.wecloud.im.core.common.exception.BusinessException;
import com.wecloud.im.core.util.SnowflakeUtil;
import com.wecloud.im.server.cache.UserStateCacheManager; import com.wecloud.im.server.cache.UserStateCacheManager;
/** /**
......
...@@ -3,14 +3,14 @@ package com.wecloud.im.biz.module.multimeet.service.impl; ...@@ -3,14 +3,14 @@ package com.wecloud.im.biz.module.multimeet.service.impl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.module.multimeet.entity.response.MultiMeetAgreeResponse; import com.wecloud.im.biz.module.multimeet.entity.response.MultiMeetAgreeResponse;
import com.wecloud.im.biz.module.multimeet.entity.response.MultiMeetBusyResponse; import com.wecloud.im.biz.module.multimeet.entity.response.MultiMeetBusyResponse;
import com.wecloud.im.biz.module.multimeet.entity.response.MultiMeetInviteResponse; import com.wecloud.im.biz.module.multimeet.entity.response.MultiMeetInviteResponse;
import com.wecloud.im.biz.module.multimeet.entity.response.MultiMeetLeaveResponse; import com.wecloud.im.biz.module.multimeet.entity.response.MultiMeetLeaveResponse;
import com.wecloud.im.biz.module.multimeet.entity.response.MultiMeetRejectResponse; import com.wecloud.im.biz.module.multimeet.entity.response.MultiMeetRejectResponse;
import com.wecloud.im.biz.module.multimeet.service.WsMultiMeetWrite; import com.wecloud.im.biz.module.multimeet.service.WsMultiMeetWrite;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.server.enums.WsMultiMeetResponseSubCmdEnum; import com.wecloud.im.server.enums.WsMultiMeetResponseSubCmdEnum;
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;
......
...@@ -11,10 +11,10 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -11,10 +11,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.wecloud.can.core.util.JsonUtils;
import com.wecloud.im.biz.module.rtc.entity.redis.RtcChannelInfo; import com.wecloud.im.biz.module.rtc.entity.redis.RtcChannelInfo;
import com.wecloud.im.biz.module.rtc.entity.redis.RtcRedisKey; import com.wecloud.im.biz.module.rtc.entity.redis.RtcRedisKey;
import com.wecloud.im.biz.module.rtc.service.MangerRtcCacheService; import com.wecloud.im.biz.module.rtc.service.MangerRtcCacheService;
import com.wecloud.im.core.util.JsonUtils;
import com.wecloud.im.server.utils.RedisUtils; import com.wecloud.im.server.utils.RedisUtils;
@Service @Service
......
...@@ -10,6 +10,10 @@ import org.springframework.stereotype.Service; ...@@ -10,6 +10,10 @@ import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.exception.BusinessException;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.core.util.SnowflakeUtil;
import com.wecloud.im.biz.enums.SingleRtcOperateTypeEnum; import com.wecloud.im.biz.enums.SingleRtcOperateTypeEnum;
import com.wecloud.im.biz.module.message.controller.param.rtc.CandidateForwardParam; import com.wecloud.im.biz.module.message.controller.param.rtc.CandidateForwardParam;
import com.wecloud.im.biz.module.message.controller.param.rtc.CreateRtcChannelParam; import com.wecloud.im.biz.module.message.controller.param.rtc.CreateRtcChannelParam;
...@@ -34,10 +38,6 @@ import com.wecloud.im.biz.module.rtc.entity.response.RtcSdpForwardResponse; ...@@ -34,10 +38,6 @@ import com.wecloud.im.biz.module.rtc.entity.response.RtcSdpForwardResponse;
import com.wecloud.im.biz.module.rtc.service.MangerRtcCacheService; import com.wecloud.im.biz.module.rtc.service.MangerRtcCacheService;
import com.wecloud.im.biz.module.rtc.service.RtcService; import com.wecloud.im.biz.module.rtc.service.RtcService;
import com.wecloud.im.biz.module.rtc.service.WsRtcWrite; import com.wecloud.im.biz.module.rtc.service.WsRtcWrite;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.common.exception.BusinessException;
import com.wecloud.im.core.util.SnowflakeUtil;
import com.wecloud.im.server.cache.UserStateCacheManager; import com.wecloud.im.server.cache.UserStateCacheManager;
import com.wecloud.im.server.cache.UserStateListener; import com.wecloud.im.server.cache.UserStateListener;
......
...@@ -3,6 +3,8 @@ package com.wecloud.im.biz.module.rtc.service.impl; ...@@ -3,6 +3,8 @@ package com.wecloud.im.biz.module.rtc.service.impl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.module.rtc.entity.response.RtcCallResponse; import com.wecloud.im.biz.module.rtc.entity.response.RtcCallResponse;
import com.wecloud.im.biz.module.rtc.entity.response.RtcCandidateForwardResponse; import com.wecloud.im.biz.module.rtc.entity.response.RtcCandidateForwardResponse;
import com.wecloud.im.biz.module.rtc.entity.response.RtcClientJoinResponse; import com.wecloud.im.biz.module.rtc.entity.response.RtcClientJoinResponse;
...@@ -10,8 +12,6 @@ import com.wecloud.im.biz.module.rtc.entity.response.RtcClientLeaveResponse; ...@@ -10,8 +12,6 @@ import com.wecloud.im.biz.module.rtc.entity.response.RtcClientLeaveResponse;
import com.wecloud.im.biz.module.rtc.entity.response.RtcClientRejectResponse; import com.wecloud.im.biz.module.rtc.entity.response.RtcClientRejectResponse;
import com.wecloud.im.biz.module.rtc.entity.response.RtcSdpForwardResponse; import com.wecloud.im.biz.module.rtc.entity.response.RtcSdpForwardResponse;
import com.wecloud.im.biz.module.rtc.service.WsRtcWrite; import com.wecloud.im.biz.module.rtc.service.WsRtcWrite;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.server.enums.WsResponseCmdEnum; import com.wecloud.im.server.enums.WsResponseCmdEnum;
import com.wecloud.im.server.enums.WsRtcResponseSubCmdEnum; import com.wecloud.im.server.enums.WsRtcResponseSubCmdEnum;
import com.wecloud.im.server.model.WsResponse; import com.wecloud.im.server.model.WsResponse;
......
...@@ -15,6 +15,10 @@ import org.springframework.validation.annotation.Validated; ...@@ -15,6 +15,10 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.core.util.JsonUtils;
import com.wecloud.can.core.util.SnowflakeUtil;
import com.wecloud.im.biz.core.rocketmq.component.MqSender; import com.wecloud.im.biz.core.rocketmq.component.MqSender;
import com.wecloud.im.biz.module.message.controller.param.ChatContentVo; import com.wecloud.im.biz.module.message.controller.param.ChatContentVo;
import com.wecloud.im.biz.module.message.controller.param.ImClientSimpleDto; import com.wecloud.im.biz.module.message.controller.param.ImClientSimpleDto;
...@@ -33,10 +37,6 @@ import com.wecloud.im.biz.module.message.service.ImMessageService; ...@@ -33,10 +37,6 @@ import com.wecloud.im.biz.module.message.service.ImMessageService;
import com.wecloud.im.biz.module.thousandchat.cache.ThousandChatCacheManager; import com.wecloud.im.biz.module.thousandchat.cache.ThousandChatCacheManager;
import com.wecloud.im.biz.module.thousandchat.param.LastestReceivedMsg; import com.wecloud.im.biz.module.thousandchat.param.LastestReceivedMsg;
import com.wecloud.im.biz.module.thousandchat.service.ThousandChatService; import com.wecloud.im.biz.module.thousandchat.service.ThousandChatService;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.util.JsonUtils;
import com.wecloud.im.core.util.SnowflakeUtil;
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;
import com.wecloud.im.server.sender.ChannelSender; import com.wecloud.im.server.sender.ChannelSender;
......
...@@ -11,8 +11,8 @@ import java.util.concurrent.TimeUnit; ...@@ -11,8 +11,8 @@ import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.wecloud.can.core.util.GetIpUtils;
import com.wecloud.im.biz.module.message.service.ImConversationMembersService; import com.wecloud.im.biz.module.message.service.ImConversationMembersService;
import com.wecloud.im.core.util.GetIpUtils;
import com.wecloud.im.server.cache.UserStateListener; import com.wecloud.im.server.cache.UserStateListener;
import com.wecloud.im.server.utils.RedisUtils; import com.wecloud.im.server.utils.RedisUtils;
......
...@@ -7,8 +7,8 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -7,8 +7,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.im.biz.module.thousandchat.service.ThousandChatService; import com.wecloud.im.biz.module.thousandchat.service.ThousandChatService;
import com.wecloud.im.core.common.controller.BaseController;
/** /**
* 万人群消息处理controller * 万人群消息处理controller
......
...@@ -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.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* @author lixiaozhong * @author lixiaozhong
......
...@@ -6,7 +6,7 @@ import lombok.Data; ...@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.wecloud.im.core.common.entity.BaseEntity; import com.wecloud.can.core.base.entity.BaseEntity;
/** /**
* @author lixiaozhong * @author lixiaozhong
......
...@@ -14,6 +14,10 @@ import org.apache.commons.lang3.BooleanUtils; ...@@ -14,6 +14,10 @@ import org.apache.commons.lang3.BooleanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.core.util.SnowflakeUtil;
import com.wecloud.can.datasource.mybatisplus.service.impl.BaseServiceImpl;
import com.wecloud.im.biz.module.message.controller.vo.ImMessageOfflineListVo; import com.wecloud.im.biz.module.message.controller.vo.ImMessageOfflineListVo;
import com.wecloud.im.biz.module.message.controller.vo.OfflineMsgDto; import com.wecloud.im.biz.module.message.controller.vo.OfflineMsgDto;
import com.wecloud.im.biz.module.message.entity.ImClient; import com.wecloud.im.biz.module.message.entity.ImClient;
...@@ -28,10 +32,6 @@ import com.wecloud.im.biz.module.thousandchat.mapper.ImMsgReadLastestMapper; ...@@ -28,10 +32,6 @@ import com.wecloud.im.biz.module.thousandchat.mapper.ImMsgReadLastestMapper;
import com.wecloud.im.biz.module.thousandchat.param.ConversationLastestReadMsg; import com.wecloud.im.biz.module.thousandchat.param.ConversationLastestReadMsg;
import com.wecloud.im.biz.module.thousandchat.param.LastestReceivedMsg; import com.wecloud.im.biz.module.thousandchat.param.LastestReceivedMsg;
import com.wecloud.im.biz.module.thousandchat.param.ThousandOffineMsgDto; import com.wecloud.im.biz.module.thousandchat.param.ThousandOffineMsgDto;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.common.service.impl.BaseServiceImpl;
import com.wecloud.im.core.util.SnowflakeUtil;
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;
......
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>im-common</artifactId>
<groupId>com.wecloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>im-common-datasource</artifactId>
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.3.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.wecloud</groupId>
<artifactId>im-common-bom</artifactId>
<version>1.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
package com.wecloud.im.datasource.mybatisplus;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
/**
* <p>
* MybatisPlus配置
* </p>
*
* @author geekidea
* @since 2018-11-08
*/
@Configuration
public class MybatisPlusConfig {
/**
* mybatis-plus分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
return paginationInterceptor;
}
/**
* mybatios-plus乐观锁插件
*
* @return
*/
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>im-common</artifactId>
<groupId>com.wecloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>im-common-redis</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.wecloud</groupId>
<artifactId>im-common-bom</artifactId>
<version>1.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
package com.wecloud.im.redis.config;
import java.time.Duration;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
/**
* <p>
* Redis Cache配置
* </p>
*
* @author geekidea
* @date 2018-11-08
*/
@Configuration
@EnableCaching
public class RedisCacheConfig extends CachingConfigurerSupport {
@Bean
@Override
public KeyGenerator keyGenerator() {
return (target, method, params) -> {
StringBuffer redisKey = new StringBuffer();
redisKey.append(target.getClass().getName()).append("-");
redisKey.append(method.getName());
if (params.length > 0) {
redisKey.append("-").append(Arrays.deepToString(params));
}
return redisKey.toString();
};
}
@Bean
public CacheManager cacheManager(RedisConnectionFactory factory) {
// 生成一个默认配置,通过config对象即可对缓存进行自定义配置
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
// 设置缓存的默认过期时间,也是使用Duration设置
// 过期时间30分钟
config = config.entryTtl(Duration.ofMinutes(30)).prefixKeysWith("cache");
// 设置一个初始化的缓存空间set集合
// Set<String> cacheNames = new HashSet<>();
// cacheNames.add("expireKey");
// cacheNames.add("my-redis-cache2");
// 对每个缓存空间应用不同的配置
Map<String, RedisCacheConfiguration> configMap = new HashMap<>(10);
configMap.put("expireKey", config);
// 使用自定义的缓存配置初始化一个cacheManager
RedisCacheManager cacheManager = RedisCacheManager.builder(factory)
// 注意这两句的调用顺序,一定要先调用该方法设置初始化的缓存名,再初始化相关的配置
// .initialCacheNames(cacheNames)
.cacheDefaults(config)
.withInitialCacheConfigurations(configMap)
.build();
return cacheManager;
}
}
package com.wecloud.im.redis.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
/**
* <p>
* Redis Template 配置
* </p>
*
* @author geekidea
* @date 2018-11-08
*/
@Configuration
public class RedisTemplateConfig {
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
// 自定义的string序列化器和fastjson序列化器
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// jackson 序列化器
GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
// kv 序列化
redisTemplate.setKeySerializer(stringRedisSerializer);
redisTemplate.setValueSerializer(jsonRedisSerializer);
// hash 序列化
redisTemplate.setHashKeySerializer(stringRedisSerializer);
redisTemplate.setHashValueSerializer(jsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>im-common</artifactId>
<groupId>com.wecloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>im-common-security</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.wecloud</groupId>
<artifactId>im-common-core</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.wecloud</groupId>
<artifactId>im-common-bom</artifactId>
<version>1.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
package com.wecloud.im.security.cache;
import com.wecloud.im.security.jwt.JwtToken;
import com.wecloud.im.security.vo.LoginUserRedisVo;
import com.wecloud.im.security.vo.LoginUserVo;
/**
* 登录信息Redis缓存操作服务
*
* @author geekidea
* @date 2019-09-30
* @since 1.3.0.RELEASE
**/
public interface AppLoginRedisService {
/**
* 缓存登录信息
*
* @param jwtToken
*/
void cacheLoginInfo(JwtToken jwtToken);
/**
* 刷新登录信息
*
* @param oldToken
* @param username
* @param newJwtToken
*/
void refreshLoginInfo(String oldToken, String username, JwtToken newJwtToken);
/**
* 通过用户名,从缓存中获取登录用户LoginSysUserRedisVo
*
* @param username
* @return
*/
LoginUserRedisVo getLoginSysUserRedisVo(String username);
/**
* 获取登录用户对象
*
* @param username
* @return
*/
LoginUserVo getLoginSysUserVo(String username);
/**
* 通过用户名称获取盐值
*
* @param username
* @return
*/
String getSalt(String username);
/**
* 删除对应用户的Redis缓存
*
* @param token
* @param username
*/
void deleteLoginInfo(String token, String username);
/**
* 判断token在redis中是否存在
*
* @param token
* @return
*/
boolean exists(String token);
/**
* 删除用户所有登录缓存
*
* @param username
*/
void deleteUserAllCache(String username);
}
package com.wecloud.im.security.cache.impl;
import java.time.Duration;
import java.util.List;
import java.util.Set;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import com.wecloud.im.core.constant.ClientLoginRedisKey;
import com.wecloud.im.core.constant.CommonRedisKey;
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;
@Service
public class AppLoginRedisServiceImpl implements AppLoginRedisService {
@Autowired
private JwtProperties jwtProperties;
@Autowired
private RedisTemplate redisTemplate;
/**
* key-value: 有过期时间-->token过期时间
* 1. tokenMd5:jwtTokenRedisVo
* 2. username:loginSysUserRedisVo
* 3. username:salt
* hash: 没有过期时间,统计在线的用户信息
* username:num
*/
@Override
public void cacheLoginInfo(JwtToken jwtToken) {
if (jwtToken == null) {
throw new IllegalArgumentException("jwtToken不能为空");
}
// 客户端标识
String client = jwtToken.getAppKey() + jwtToken.getClientId();
// token
String token = jwtToken.getToken();
// 盐值
String salt = jwtToken.getSalt();
// token md5值
String tokenMd5 = DigestUtils.md5Hex(token);
// Redis缓存JWT Token信息
// JwtTokenRedisVo jwtTokenRedisVo = ShiroMapstructConvert.INSTANCE.jwtTokenToJwtTokenRedisVo(jwtToken);
// jwtTokenRedisVo.setUserId(loginSysUserVo.getId());
// 用户客户端信息
// ClientInfo clientInfo = ClientInfoUtil.get(HttpServletRequestUtil.getRequest());
// Redis缓存登录用户信息
// 将LoginSysUserVo对象复制到LoginSysUserRedisVo,使用mapstruct进行对象属性复制
// LoginUserRedisVo loginSysUserRedisVo = LoginSysUserVoConvert.INSTANCE.voToRedisVo(loginSysUserVo);
// loginSysUserRedisVo.setSalt(salt);
// loginSysUserRedisVo.setClientInfo(clientInfo);
// Redis过期时间与JwtToken过期时间一致
Duration expireDuration = Duration.ofSeconds(jwtToken.getExpireSecond());
// 判断是否启用单个用户登录,如果是,这每个用户只有一个有效token
boolean singleLogin = jwtProperties.isSingleLogin();
if (singleLogin) {
deleteUserAllCache(client);
}
// 1. tokenMd5:jwtTokenRedisVo
String loginTokenRedisKey = String.format(CommonRedisKey.LOGIN_TOKEN, tokenMd5);
redisTemplate.opsForValue().set(loginTokenRedisKey, jwtToken, expireDuration);
// 2. username:loginSysUserRedisVo
redisTemplate.opsForValue().set(String.format(ClientLoginRedisKey.LOGIN_USER, client), jwtToken, expireDuration);
// 3. salt hash,方便获取盐值鉴权
redisTemplate.opsForValue().set(String.format(CommonRedisKey.LOGIN_SALT, client), salt, expireDuration);
// 4. login user token
redisTemplate.opsForValue().set(String.format(ClientLoginRedisKey.LOGIN_USER_TOKEN, client, tokenMd5), loginTokenRedisKey, expireDuration);
}
@Override
public void refreshLoginInfo(String oldToken, String username, JwtToken newJwtToken) {
// 获取缓存的登录用户信息
LoginUserRedisVo loginSysUserRedisVo = getLoginSysUserRedisVo(username);
// 删除之前的token信息
deleteLoginInfo(oldToken, username);
// 缓存登录信息
cacheLoginInfo(newJwtToken);
}
@Override
public LoginUserRedisVo getLoginSysUserRedisVo(String username) {
if (StringUtils.isBlank(username)) {
throw new IllegalArgumentException("username不能为空");
}
return (LoginUserRedisVo) redisTemplate.opsForValue().get(String.format(ClientLoginRedisKey.LOGIN_USER, username));
}
@Override
public LoginUserVo getLoginSysUserVo(String username) {
if (StringUtils.isBlank(username)) {
throw new IllegalArgumentException("username不能为空");
}
LoginUserRedisVo userRedisVo = getLoginSysUserRedisVo(username);
return userRedisVo;
}
@Override
public String getSalt(String username) {
if (StringUtils.isBlank(username)) {
throw new IllegalArgumentException("username不能为空");
}
String salt = (String) redisTemplate.opsForValue().get(String.format(CommonRedisKey.LOGIN_SALT, username));
return salt;
}
@Override
public void deleteLoginInfo(String token, String username) {
if (token == null) {
throw new IllegalArgumentException("token不能为空");
}
if (username == null) {
throw new IllegalArgumentException("username不能为空");
}
String tokenMd5 = DigestUtils.md5Hex(token);
// 1. delete tokenMd5
redisTemplate.delete(String.format(CommonRedisKey.LOGIN_TOKEN, tokenMd5));
// 2. delete username
redisTemplate.delete(String.format(ClientLoginRedisKey.LOGIN_USER, username));
// 3. delete salt
redisTemplate.delete(String.format(CommonRedisKey.LOGIN_SALT, username));
// 4. delete user token
redisTemplate.delete(String.format(ClientLoginRedisKey.LOGIN_USER_TOKEN, username, tokenMd5));
}
@Override
public boolean exists(String token) {
if (token == null) {
throw new IllegalArgumentException("token不能为空");
}
String tokenMd5 = DigestUtils.md5Hex(token);
Object object = redisTemplate.opsForValue().get(String.format(CommonRedisKey.LOGIN_TOKEN, tokenMd5));
return object != null;
}
@Override
public void deleteUserAllCache(String client) {
Set<String> userTokenMd5Set = redisTemplate.keys(String.format(ClientLoginRedisKey.LOGIN_USER_ALL_TOKEN, client));
if (CollectionUtils.isEmpty(userTokenMd5Set)) {
return;
}
// 1. 删除登录用户的所有token信息
List<String> tokenMd5List = redisTemplate.opsForValue().multiGet(userTokenMd5Set);
redisTemplate.delete(tokenMd5List);
// 2. 删除登录用户的所有user:token信息
redisTemplate.delete(userTokenMd5Set);
// 3. 删除登录用户信息
redisTemplate.delete(String.format(ClientLoginRedisKey.LOGIN_USER, client));
// 4. 删除登录用户盐值信息
redisTemplate.delete(String.format(CommonRedisKey.LOGIN_SALT, client));
}
}
package com.wecloud.im.security.configure;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.DispatcherType;
import javax.servlet.Filter;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.Authenticator;
import org.apache.shiro.authc.credential.CredentialsMatcher;
import org.apache.shiro.authc.pam.FirstSuccessfulStrategy;
import org.apache.shiro.authc.pam.ModularRealmAuthenticator;
import org.apache.shiro.mgt.DefaultSessionStorageEvaluator;
import org.apache.shiro.mgt.DefaultSubjectDAO;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.mgt.SessionStorageEvaluator;
import org.apache.shiro.realm.Realm;
import org.apache.shiro.spring.LifecycleBeanPostProcessor;
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.apache.shiro.web.mgt.DefaultWebSessionStorageEvaluator;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.DelegatingFilterProxy;
import com.alibaba.fastjson.JSON;
import com.wecloud.im.core.util.IniUtil;
import com.wecloud.im.security.cache.AppLoginRedisService;
import com.wecloud.im.security.exception.ShiroConfigException;
import com.wecloud.im.security.jwt.JwtCredentialsMatcher;
import com.wecloud.im.security.jwt.SecurityFilter;
import com.wecloud.im.security.jwt.realm.JwtRealmAppUser;
import com.wecloud.im.security.properties.JwtProperties;
import com.wecloud.im.security.properties.ShiroPermissionProperties;
import com.wecloud.im.security.properties.ShiroProperties;
import com.wecloud.im.security.service.ShiroLoginService;
import com.wecloud.im.security.signature.ApplicationService;
import com.wecloud.im.security.signature.SignatureAuthRealm;
/**
* Shiro配置
* https://shiro.apache.org/spring.html
* https://shiro.apache.org/spring-boot.html
*
* @author geekidea
* @date 2019-09-27
* @since 1.3.0.RELEASE
**/
@Slf4j
@Configuration
@EnableConfigurationProperties({ShiroProperties.class})
@ConditionalOnProperty(value = {"spring-boot-plus.shiro.enable"}, matchIfMissing = true)
public class ShiroConfig {
/**
* JWT过滤器名称
*/
private static final String JWT_FILTER_NAME = "jwtFilter";
/**
* Shiro过滤器名称
*/
private static final String SHIRO_FILTER_NAME = "shiroFilter";
/**
* anon
*/
private static final String ANON = "anon";
/**
* jwt验证
*
* @return
*/
@Bean
public CredentialsMatcher credentialsMatcher() {
return new JwtCredentialsMatcher();
}
/**
* app的用户及权限数据
*/
@Bean
public JwtRealmAppUser jwtRealmAppUser(AppLoginRedisService appLoginRedisService) {
JwtRealmAppUser jwtRealm = new JwtRealmAppUser(appLoginRedisService);
jwtRealm.setCachingEnabled(false);
jwtRealm.setCredentialsMatcher(credentialsMatcher());
return jwtRealm;
}
/**
* 用户客户端Realm
* @Author luozh
* @Date 2022年04月15日 05:27:00
* @param
* @Return
*/
public SignatureAuthRealm signatureAuthRealm() {
SignatureAuthRealm realm = new SignatureAuthRealm();
return realm;
}
/**
* subject不存储到Session中
*/
@Bean
public SessionStorageEvaluator sessionStorageEvaluator() {
DefaultSessionStorageEvaluator sessionStorageEvaluator = new DefaultWebSessionStorageEvaluator();
sessionStorageEvaluator.setSessionStorageEnabled(false);
return sessionStorageEvaluator;
}
/**
* 设置session存储方式
*
* @return
*/
@Bean
public DefaultSubjectDAO subjectDAO() {
DefaultSubjectDAO defaultSubjectDAO = new DefaultSubjectDAO();
defaultSubjectDAO.setSessionStorageEvaluator(sessionStorageEvaluator());
return defaultSubjectDAO;
}
/**
* 安全管理器配置
*/
@Bean
public SecurityManager securityManager(AppLoginRedisService appLoginRedisService) {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
// 设置多个realms
List<Realm> realms = new ArrayList<>();
// realms.add(jwtRealmSystem(sysLoginRedisService));
realms.add(jwtRealmAppUser(appLoginRedisService));
realms.add(signatureAuthRealm());
// realms.add(jwtRealmMerchant(merchantLoginRedisService));
// 用户数据连接器
securityManager.setRealms(realms);
// 设置session存储方式: 不使用sessionId保存
securityManager.setSubjectDAO(subjectDAO());
SecurityUtils.setSecurityManager(securityManager);
return securityManager;
}
/**
* ShiroFilterFactoryBean过滤器配置
*
* @param securityManager
* @param shiroProperties
* @param jwtProperties
* @return
*/
@Bean(SHIRO_FILTER_NAME)
public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager,
ShiroLoginService shiroLoginService,
ShiroProperties shiroProperties,
JwtProperties jwtProperties,
ApplicationService applicationService
) {
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
// 设置安全管理器
shiroFilterFactoryBean.setSecurityManager(securityManager);
// 设置过滤器
Map<String, Filter> filterMap = getFilterMap(shiroLoginService, applicationService);
shiroFilterFactoryBean.setFilters(filterMap);
// 设置过滤器顺序
Map<String, String> filterChainMap = getFilterChainDefinitionMap(shiroProperties);
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainMap);
return shiroFilterFactoryBean;
}
/**
* 获取filter map
*
* @return
*/
private Map<String, Filter> getFilterMap(ShiroLoginService shiroLoginService, ApplicationService applicationService) {
Map<String, Filter> filterMap = new LinkedHashMap<>();
filterMap.put(JWT_FILTER_NAME, new SecurityFilter(shiroLoginService, applicationService));
return filterMap;
}
/**
* Shiro路径权限配置
*
* @return
*/
private Map<String, String> getFilterChainDefinitionMap(ShiroProperties shiroProperties) {
Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
// 获取排除的路径
List<String[]> anonList = shiroProperties.getAnon();
log.info("anonList:{}", JSON.toJSONString(anonList));
if (CollectionUtils.isNotEmpty(anonList)) {
anonList.forEach(anonArray -> {
if (ArrayUtils.isNotEmpty(anonArray)) {
for (String anonPath : anonArray) {
filterChainDefinitionMap.put(anonPath, ANON);
}
}
});
}
// 获取ini格式配置
String definitions = shiroProperties.getFilterChainDefinitions();
if (StringUtils.isNotBlank(definitions)) {
Map<String, String> section = IniUtil.parseIni(definitions);
log.info("definitions:{}", JSON.toJSONString(section));
for (Map.Entry<String, String> entry : section.entrySet()) {
filterChainDefinitionMap.put(entry.getKey(), entry.getValue());
}
}
// 获取自定义权限路径配置集合
List<ShiroPermissionProperties> permissionConfigs = shiroProperties.getPermission();
log.info("permissionConfigs:{}", JSON.toJSONString(permissionConfigs));
if (CollectionUtils.isNotEmpty(permissionConfigs)) {
for (ShiroPermissionProperties permissionConfig : permissionConfigs) {
String url = permissionConfig.getUrl();
String[] urls = permissionConfig.getUrls();
String permission = permissionConfig.getPermission();
if (StringUtils.isBlank(url) && ArrayUtils.isEmpty(urls)) {
throw new ShiroConfigException("shiro permission config 路径配置不能为空");
}
if (StringUtils.isBlank(permission)) {
throw new ShiroConfigException("shiro permission config permission不能为空");
}
if (StringUtils.isNotBlank(url)) {
filterChainDefinitionMap.put(url, permission);
}
if (ArrayUtils.isNotEmpty(urls)) {
for (String string : urls) {
filterChainDefinitionMap.put(string, permission);
}
}
}
}
// 如果启用shiro,则设置最后一个设置为JWTFilter,否则全部路径放行
if (shiroProperties.isEnable()) {
filterChainDefinitionMap.put("/**", JWT_FILTER_NAME);
} else {
filterChainDefinitionMap.put("/**", ANON);
}
log.info("filterChainMap:{}", JSON.toJSONString(filterChainDefinitionMap));
// 添加默认的filter
Map<String, String> newFilterChainDefinitionMap = addDefaultFilterDefinition(filterChainDefinitionMap);
return newFilterChainDefinitionMap;
}
/**
* 添加默认的filter权限过滤
*
* @param filterChainDefinitionMap
* @return
*/
private Map<String, String> addDefaultFilterDefinition(Map<String, String> filterChainDefinitionMap) {
if (MapUtils.isEmpty(filterChainDefinitionMap)) {
return filterChainDefinitionMap;
}
final Map<String, String> map = new LinkedHashMap<>();
for (Map.Entry<String, String> entry : filterChainDefinitionMap.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
String definition;
String[] strings = value.split(",");
List<String> list = new ArrayList<>();
list.addAll(Arrays.asList(strings));
definition = String.join(",", list);
map.put(key, definition);
}
return map;
}
/**
* ShiroFilter配置
*
* @return
*/
@Bean
public FilterRegistrationBean delegatingFilterProxy() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
DelegatingFilterProxy proxy = new DelegatingFilterProxy();
proxy.setTargetFilterLifecycle(true);
proxy.setTargetBeanName(SHIRO_FILTER_NAME);
filterRegistrationBean.setFilter(proxy);
filterRegistrationBean.setAsyncSupported(true);
filterRegistrationBean.setEnabled(true);
filterRegistrationBean.setDispatcherTypes(DispatcherType.REQUEST, DispatcherType.ASYNC);
return filterRegistrationBean;
}
/**
* 认证模式
*
* @return
*/
@Bean
public Authenticator authenticator() {
ModularRealmAuthenticator authenticator = new ModularRealmAuthenticator();
List<Realm> realms = new ArrayList<>();
authenticator.setRealms(realms);
// 认证策略: 第一个成功
authenticator.setAuthenticationStrategy(new FirstSuccessfulStrategy());
return authenticator;
}
/**
* Enabling Shiro Annotations
*
* @return
*/
@Bean
public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
return new LifecycleBeanPostProcessor();
}
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
return authorizationAttributeSourceAdvisor;
}
}
package com.wecloud.im.security.convert;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.wecloud.im.security.jwt.JwtToken;
import com.wecloud.im.security.vo.JwtTokenRedisVo;
/**
* Shiro包下使用mapstruct对象属性复制转换器
*
* @author geekidea
* @date 2019-09-30
* @since 1.3.0.RELEASE
**/
@Mapper
public interface ShiroMapstructConvert {
ShiroMapstructConvert INSTANCE = Mappers.getMapper(ShiroMapstructConvert.class);
/**
* JwtToken对象转换成JwtTokenRedisVo
*
* @param jwtToken
* @return
*/
JwtTokenRedisVo jwtTokenToJwtTokenRedisVo(JwtToken jwtToken);
}
package com.wecloud.im.security.exception;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.exception.SpringBootPlusException;
/**
* Shiro配置异常
*
* @author geekidea
* @date 2019-09-29
* @since 1.3.0.RELEASE
**/
public class ShiroConfigException extends SpringBootPlusException {
private static final long serialVersionUID = -4573955712491628431L;
public ShiroConfigException(String message) {
super(message);
}
public ShiroConfigException(Integer errorCode, String message) {
super(errorCode, message);
}
public ShiroConfigException(ApiCode apiCode) {
super(apiCode);
}
}
package com.wecloud.im.security.jwt;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.credential.CredentialsMatcher;
import com.wecloud.im.security.util.JwtUtil;
/**
* JWT证书匹配
*
* @author geekidea
* @date 2019-09-30
* @since 1.3.0.RELEASE
**/
@Slf4j
public class JwtCredentialsMatcher implements CredentialsMatcher {
@Override
public boolean doCredentialsMatch(AuthenticationToken authenticationToken, AuthenticationInfo authenticationInfo) {
String token = authenticationToken.getCredentials().toString();
String salt = authenticationInfo.getCredentials().toString();
try {
return JwtUtil.verifyToken(token, salt);
} catch (Exception e) {
log.error("JWT Token CredentialsMatch Exception:" + e.getMessage(), e);
}
return false;
}
}
package com.wecloud.im.security.jwt;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.Date;
import org.apache.shiro.authc.HostAuthenticationToken;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.wecloud.im.core.util.IpUtil;
import com.wecloud.im.security.util.JwtUtil;
/**
* Shiro JwtToken对象
*
* @author geekidea
* @date 2019-09-27
* @since 1.3.0.RELEASE
**/
@Data
@Accessors(chain = true)
public class JwtToken implements HostAuthenticationToken {
private static final long serialVersionUID = 5101247566043093405L;
/**
* 登录ip
*/
private String host;
/**
* client id
*/
private Long fkClientId;
/**
* 登录clientId
*/
private String clientId;
/**
* appId
*/
private Long appId;
/**
* app
*/
private String appKey;
/**
* 登录盐值
*/
private String salt;
/**
* 登录token
*/
private String token;
/**
* 创建时间
*/
private Date createDate;
/**
* 多长时间过期
*/
private long expireSecond;
/**
* 过期日期
*/
private Date expireDate;
private String principal;
private String credentials;
/**
* 1 web, 2 安卓, 3 ios, 4 pc-win, 5 pc-macOs
*/
private 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());
jwtToken.setSalt(salt);
jwtToken.setCreateDate(createDate);
jwtToken.setExpireSecond(expireSecond);
jwtToken.setExpireDate(expireDate);
jwtToken.setPlatform(platform);
return jwtToken;
}
@Override
public Object getPrincipal() {
return token;
}
@Override
public Object getCredentials() {
return token;
}
}
package com.wecloud.im.security.jwt;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.web.filter.authc.AuthenticatingFilter;
import org.apache.shiro.web.servlet.ShiroHttpServletRequest;
import org.apache.shiro.web.util.WebUtils;
import com.wecloud.im.core.common.api.ApiCode;
import com.wecloud.im.core.common.api.ApiResult;
import com.wecloud.im.core.util.HttpServletResponseUtil;
import com.wecloud.im.security.service.ShiroLoginService;
import com.wecloud.im.security.signature.Application;
import com.wecloud.im.security.signature.ApplicationService;
import com.wecloud.im.security.signature.SignatureAuthToken;
import com.wecloud.im.security.signature.SignatureChecker;
import com.wecloud.im.security.util.JwtTokenUtil;
import com.wecloud.im.security.util.JwtUtil;
/**
* Shiro JWT授权过滤器
*
* @author geekidea
* @date 2019-09-27
* @since 1.3.0.RELEASE
**/
@Slf4j
public class SecurityFilter extends AuthenticatingFilter {
private final ShiroLoginService shiroLoginService;
private static final String AUTHORIZATION = "Authorization";
private ApplicationService applicationService;
public SecurityFilter(ShiroLoginService shiroLoginService, ApplicationService applicationService) {
this.shiroLoginService = shiroLoginService;
this.applicationService = applicationService;
}
/**
* 将JWT Token包装成AuthenticationToken
* 从http请求头中取得token,并从redis中取出token相关信息
*
* @param servletRequest
* @param servletResponse
* @return
* @throws Exception
*/
@Override
protected AuthenticationToken createToken(ServletRequest servletRequest, ServletResponse servletResponse) {
// 从请求头中取出x-im-from
ShiroHttpServletRequest ShiroHttpServletRequest = (ShiroHttpServletRequest) servletRequest;
HttpServletRequest request =
(HttpServletRequest) ShiroHttpServletRequest.getRequest();
String from = request.getHeader("x-im-from");
if ("server".equals(from)) {
// 服务端发起的请求,校验签名
String authorization = request.getHeader(AUTHORIZATION);
if (StringUtils.isBlank(authorization)) {
throw new AuthenticationException("token不能为空");
}
// 校验Signature是否完整 合规
if (!authorization.startsWith("WECLOUD-IM AppKey")) {
throw new AuthenticationException("token错误");
}
if (!authorization.contains(", Signature:")) {
throw new AuthenticationException("token 未包含签名信息");
}
String appKey = getAppKeyFromAuthorization(authorization);
String clientSignature = getSignatureFromAuthorization(authorization);
// 校验通过 获取并校验Application信息
Application application = applicationService.getApplication(appKey);
if (application == null) {
throw new AuthenticationException("application does not exist");
}
if (!application.isActive()) {
throw new AuthenticationException("application is unavailable");
}
Long appId = application.getId();
String appSecret = application.getAppSecret();
SignatureChecker.check(request, clientSignature, appSecret);
// 构建SignatureAuthToken
return new SignatureAuthToken(appKey, appId);
} else {
// 客户端发起的请求,校验token
// 从http请求头中取得token
String token = JwtTokenUtil.getToken();
if (StringUtils.isBlank(token)) {
throw new AuthenticationException("token不能为空");
}
if (JwtUtil.isExpired(token)) {
throw new AuthenticationException("JWT Token已过期,token:" + token);
}
// 从redis 获取jwt数据
JwtToken jwtToken = shiroLoginService.getJwtTokenForRedis(token);
if (jwtToken == null) {
throw new AuthenticationException("Redis Token不存在,token:" + token);
}
return JwtToken.build(token, jwtToken.getSalt(), jwtToken.getExpireSecond(),
jwtToken.getFkClientId(), jwtToken.getClientId(), jwtToken.getAppId(), jwtToken.getAppKey(), jwtToken.getPlatform());
}
}
/**
* 访问失败处理
*
* @param request
* @param response
* @return
* @throws Exception
*/
@Override
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
log.error("访问被拒绝。。。");
HttpServletRequest httpServletRequest = WebUtils.toHttp(request);
HttpServletResponse httpServletResponse = WebUtils.toHttp(response);
// 返回401
httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// 设置响应码为401或者直接输出消息
String url = httpServletRequest.getRequestURI();
log.error("onAccessDenied url:{}", url);
ApiResult<Boolean> apiResult = ApiResult.fail(ApiCode.UNAUTHORIZED);
HttpServletResponseUtil.printJson(httpServletResponse, apiResult);
return false;
}
/**
* 执行登陆认证
* 判断是否允许访问
*
* @param request
* @param response
* @param mappedValue
* @return
*/
@Override
protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
String url = WebUtils.toHttp(request).getRequestURI();
log.info("isAccessAllowed url:{}", url);
if (this.isLoginRequest(request, response)) {
return true;
}
boolean allowed = false;
try {
allowed = executeLogin(request, response);
} catch (IllegalStateException e) { //not found any token
log.error("Token不能为空", e);
} catch (Exception e) {
log.error("访问错误", e);
}
return allowed || super.isPermissive(mappedValue);
}
/**
* 登录成功处理
*
* @param token
* @param subject
* @param request
* @param response
* @return
* @throws Exception
*/
@Override
protected boolean onLoginSuccess(AuthenticationToken token, Subject subject, ServletRequest request, ServletResponse response) throws Exception {
String url = WebUtils.toHttp(request).getRequestURI();
log.info("鉴权成功,token:{},url:{}", token, url);
if (token instanceof JwtToken) {
// 刷新token
JwtToken jwtToken = (JwtToken) token;
HttpServletResponse httpServletResponse = WebUtils.toHttp(response);
}
// shiroLoginService.refreshToken(jwtToken, httpServletResponse);
return true;
}
/**
* 登录失败处理
*
* @param token
* @param e
* @param request
* @param response
* @return
*/
@Override
protected boolean onLoginFailure(AuthenticationToken token, AuthenticationException e, ServletRequest request, ServletResponse response) {
log.error("登录失败,token:" + token + ",error:" + e.getMessage(), e);
return false;
}
private String getAppKeyFromAuthorization(String authorization) {
// 处理token
String[] tokenInfo = authorization.split(",");
// appkey 格式是固定的,直接替换
return tokenInfo[0].replace("WECLOUD-IM AppKey:", "").trim();
}
private String getSignatureFromAuthorization(String authorization) {
// 处理token
String[] tokenInfo = authorization.split(",");
// 客户端传入的签名信息
return tokenInfo[1].replace("Signature:", "").trim();
}
}
package com.wecloud.im.security.jwt.realm;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.SetUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import com.wecloud.im.security.cache.AppLoginRedisService;
import com.wecloud.im.security.jwt.JwtToken;
/**
* Shiro 授权认证 - app 用户
*
* @author geekidea
* @date 2019-09-27
* @since 1.3.0.RELEASE
**/
@Slf4j
public class JwtRealmAppUser extends AuthorizingRealm {
private final AppLoginRedisService appLoginRedisService;
public JwtRealmAppUser(AppLoginRedisService appLoginRedisService) {
this.appLoginRedisService = appLoginRedisService;
}
@Override
public boolean supports(AuthenticationToken token) {
return token != null && token instanceof JwtToken;
}
/**
* 授权认证,设置角色/权限信息
*
* @param principalCollection
* @return
*/
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
log.info("doGetAuthorizationInfo principalCollection...");
// 设置角色/权限信息
JwtToken jwtToken = (JwtToken) principalCollection.getPrimaryPrincipal();
// if (!jwtToken.getType().equals(LoginClientTypeEnum.APP.getType())) {
// return null;
// }
/*
// 获取username
String username = jwtToken.getUsername();
// 获取登录用户角色权限信息
LoginSysUserRedisVo loginSysUserRedisVo = appLoginRedisService.getLoginSysUserRedisVo(username);
SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
// 设置角色
authorizationInfo.setRoles(SetUtils.hashSet(loginSysUserRedisVo.getRoleCode()));
// 设置权限
authorizationInfo.setStringPermissions(loginSysUserRedisVo.getPermissionCodes());*/
SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
// 设置角色
authorizationInfo.setRoles(SetUtils.hashSet("client:all"));
return authorizationInfo;
}
/**
* 登录认证
*
* @param authenticationToken
* @return
* @throws AuthenticationException
*/
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
log.info("doGetAuthenticationInfo authenticationToken...");
// 校验token
JwtToken jwtToken = (JwtToken) authenticationToken;
if (jwtToken == null) {
throw new AuthenticationException("jwtToken不能为空");
}
String salt = jwtToken.getSalt();
if (StringUtils.isBlank(salt)) {
throw new AuthenticationException("salt不能为空");
}
return new SimpleAuthenticationInfo(
jwtToken,
salt,
getName()
);
}
}
package com.wecloud.im.security.jwt.realm;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 客户端类型
*/
@Getter
@AllArgsConstructor
public enum LoginClientTypeEnum {
// app
APP("app"),
// 平台
SYSTEM("sys"),
// 商户
MERCHANT("mer");
private final String type;
}
package com.wecloud.im.security.properties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import com.wecloud.im.core.constant.CommonConstant;
/**
* JWT属性配置
*
* @author geekidea
* @date 2019-05-22
**/
@Data
@Component
@ConfigurationProperties(prefix = "spring-boot-plus.jwt")
public class JwtProperties {
/**
* token名称,默认名称为:token,可自定义
*/
private String tokenName = CommonConstant.JWT_DEFAULT_TOKEN_NAME;
/**
* 密码
*/
private String secret = CommonConstant.JWT_DEFAULT_SECRET;
/**
* 签发人
*/
private String issuer;
/**
* 主题
*/
private String subject;
/**
* 签发的目标
*/
private String audience;
/**
* token失效时间,默认1小时,60*60=3600
*/
private Long expireSecond = CommonConstant.JWT_DEFAULT_EXPIRE_SECOND;
/**
* 是否刷新token,默认为true
*/
private boolean refreshToken = true;
/**
* 刷新token倒计时,默认10分钟,10*60=600
*/
private Integer refreshTokenCountdown;
/**
* redis校验jwt token是否存在
*/
private boolean redisCheck;
/**
* 单用户登录,一个用户只能又一个有效的token
*/
private boolean singleLogin;
/**
* 是否进行盐值校验
*/
private boolean saltCheck;
}
package com.wecloud.im.security.properties;
import lombok.Data;
/**
* Shiro权限配置映射类
*
* @author geekidea
* @date 2019-09-28
**/
@Data
public class ShiroPermissionProperties {
/**
* 路径
*/
private String url;
/**
* 路径数组
*/
private String[] urls;
/**
* 权限
*/
private String permission;
}
package com.wecloud.im.security.properties;
import lombok.Data;
import java.util.List;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
/**
* Shiro配置映射类
*
* @author geekidea
* @date 2019-09-28
**/
@Data
@ConfigurationProperties(prefix = "spring-boot-plus.shiro")
public class ShiroProperties {
/**
* 是否启用
*/
private boolean enable;
/**
* 路径权限配置
*/
private String filterChainDefinitions;
/**
* 设置无需权限路径集合
*/
private List<String[]> anon;
/**
* 权限配置集合
*/
@NestedConfigurationProperty
private List<ShiroPermissionProperties> permission;
}
package com.wecloud.im.security.service;
import java.io.Serializable;
/**
* 获取登录token
*
* @author geekidea
* @date 2020/3/25
**/
public interface LoginToken extends Serializable {
/**
* 获取登录token
*
* @return
*/
String getToken();
}
package com.wecloud.im.security.service;
import java.io.Serializable;
/**
* 获取登录用户名称
*
* @author geekidea
* @date 2020/3/24
**/
public interface LoginUsername extends Serializable {
/**
* 获取用户名
*
* @return
*/
String getUsername();
}
package com.wecloud.im.security.service;
import javax.servlet.http.HttpServletResponse;
import com.wecloud.im.security.jwt.JwtToken;
import com.wecloud.im.security.vo.JwtTokenRedisVo;
/**
* @author geekidea
* @date 2020/3/24
**/
public interface ShiroLoginService {
/**
* 如果(当前时间+倒计时) > 过期时间,则刷新token
* 并更新缓存
* 当前token失效,返回新token
* 当前请求有效,返回状态码:460
* 前端下次使用新token
* 如果token继续发往后台,则提示,此token已失效,请使用新token,不在返回新token,返回状态码:461
*
* @param jwtToken
* @param httpServletResponse
* @throws Exception
*/
void refreshToken(JwtToken jwtToken, HttpServletResponse httpServletResponse) throws Exception;
/**
* 从redis获取token信息
*
* @param token
* @return
*/
JwtTokenRedisVo getTokenInfoForRedis(String token);
/**
* 从redis获取token信息
*/
JwtToken getJwtTokenForRedis(String token);
/**
* 获取盐
*
* @param token
* @return
*/
String getSalt(String token);
}
package com.wecloud.im.security.service.impl;
import lombok.extern.slf4j.Slf4j;
import java.util.Date;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import com.wecloud.im.core.constant.CommonConstant;
import com.wecloud.im.core.constant.CommonRedisKey;
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.service.ShiroLoginService;
import com.wecloud.im.security.util.JwtUtil;
import com.wecloud.im.security.vo.JwtTokenRedisVo;
/**
* Shiro登录服务
*
* @author geekidea
* @date 2020/3/24
**/
@Slf4j
@Service
public class ShiroLoginServiceImpl implements ShiroLoginService {
// @Lazy
// @Autowired
// private SysLoginRedisService sysLoginRedisService;
@Lazy
@Autowired
private AppLoginRedisService appLoginRedisService;
@Lazy
@Autowired
private JwtProperties jwtProperties;
@Lazy
@Autowired
private RedisTemplate redisTemplate;
@Override
public void refreshToken(JwtToken jwtToken, HttpServletResponse httpServletResponse) throws Exception {
if (jwtToken == null) {
return;
}
String token = jwtToken.getToken();
if (StringUtils.isBlank(token)) {
return;
}
// 判断是否刷新token
boolean isRefreshToken = jwtProperties.isRefreshToken();
if (!isRefreshToken) {
return;
}
// 获取过期时间
Date expireDate = JwtUtil.getExpireDate(token);
// 获取倒计时
Integer countdown = jwtProperties.getRefreshTokenCountdown();
// 如果(当前时间+倒计时) > 过期时间,则刷新token
boolean refresh = DateUtils.addSeconds(new Date(), countdown).after(expireDate);
if (!refresh) {
return;
}
// 如果token继续发往后台,则提示,此token已失效,请使用新token,不在返回新token,返回状态码:461
// 如果Redis缓存中没有,JwtToken没有过期,则说明,已经刷新token
boolean exists = appLoginRedisService.exists(token);
if (!exists) {
httpServletResponse.setStatus(CommonConstant.JWT_INVALID_TOKEN_CODE);
throw new AuthenticationException("token已无效,请使用已刷新的token");
}
// String username = jwtToken.getUsername();
String salt = jwtToken.getSalt();
Long expireSecond = jwtProperties.getExpireSecond();
// 生成新token字符串
// String newToken = JwtUtil.generateToken(username, salt, Duration.ofSeconds(expireSecond));
// 生成新JwtToken对象
// JwtToken newJwtToken = JwtToken.build(newToken, username, jwtToken.getUserId(), salt, expireSecond, jwtToken.getType(), null);
// // 更新redis缓存
// sysLoginRedisService.refreshLoginInfo(token, username, newJwtToken);
// log.info("刷新token成功,原token:{},新token:{}", token, newToken);
// // 设置响应头
// // 刷新token
// httpServletResponse.setStatus(CommonConstant.JWT_REFRESH_TOKEN_CODE);
// httpServletResponse.setHeader(JwtTokenUtil.getTokenName(), newToken);
}
@Override
public JwtTokenRedisVo getTokenInfoForRedis(String token) {
Object jwtTokenRedisVo = null;
// 如果开启redis二次校验,或者设置为单个用户token登录,则先在redis中判断token是否存在
if (jwtProperties.isRedisCheck() || jwtProperties.isSingleLogin()) {
String tokenMd5 = DigestUtils.md5Hex(token);
jwtTokenRedisVo = redisTemplate.opsForValue().get(String.format(CommonRedisKey.LOGIN_TOKEN, tokenMd5));
// boolean redisExpired = sysLoginRedisService.exists(token); // 判断是否存在
if (jwtTokenRedisVo == null) {
throw new AuthenticationException("Redis Token不存在,token:" + token);
}
}
return (JwtTokenRedisVo) jwtTokenRedisVo;
}
@Override
public JwtToken getJwtTokenForRedis(String token) {
Object jwtTokenRedisVo = null;
// 如果开启redis二次校验,或者设置为单个用户token登录,则先在redis中判断token是否存在
if (jwtProperties.isRedisCheck() || jwtProperties.isSingleLogin()) {
String tokenMd5 = DigestUtils.md5Hex(token);
jwtTokenRedisVo = redisTemplate.opsForValue().get(String.format(CommonRedisKey.LOGIN_TOKEN, tokenMd5));
// boolean redisExpired = sysLoginRedisService.exists(token); // 判断是否存在
}
return (JwtToken) jwtTokenRedisVo;
}
@Override
public String getSalt(String token) {
String clientId = JwtUtil.getClientId(token);
if (jwtProperties.isSaltCheck()) {
return appLoginRedisService.getSalt(clientId);
} else {
return jwtProperties.getSecret();
}
}
}
package com.wecloud.im.security.signature;
/**
*
* @Author luozh
* @Date 2022年04月15日 19:21
* @Version 1.0
*/
public interface Application {
/**
* 获取id
* @return
*/
Long getId();
/**
* 获取appKey
* @return
*/
String getAppKey();
/**
* 获取AppSecret
* @return
*/
String getAppSecret();
/**
* 客户端是否有效
* @return
*/
Boolean isActive();
}
package com.wecloud.im.security.signature;
/**
*
* @Author luozh
* @Date 2022年04月15日 11:02
* @Version 1.0
*/
public interface ApplicationService {
/**
* 根据appKey获取对应的AppSecret
* @Author luozh
* @Date 2022年04月15日 11:02:53
* @param appKey
* @Return
*/
Application getApplication(String appKey);
}
package com.wecloud.im.security.signature;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.codec.binary.Base64;
public class BinaryUtil {
private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D',
'E', 'F'};
public static String toBase64String(byte[] binaryData) {
return new String(Base64.encodeBase64(binaryData));
}
public static byte[] fromBase64String(String base64String) {
return Base64.decodeBase64(base64String);
}
public static byte[] calculateMd5(byte[] binaryData) {
MessageDigest messageDigest = null;
try {
messageDigest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("MD5 algorithm not found.");
}
messageDigest.update(binaryData);
return messageDigest.digest();
}
public static String encodeMD5(byte[] binaryData) {
byte[] md5Bytes = calculateMd5(binaryData);
int len = md5Bytes.length;
char buf[] = new char[len * 2];
for (int i = 0; i < len; i++) {
buf[i * 2] = HEX_DIGITS[(md5Bytes[i] >>> 4) & 0x0f];
buf[i * 2 + 1] = HEX_DIGITS[md5Bytes[i] & 0x0f];
}
return new String(buf);
}
}
package com.wecloud.im.security.signature;
/**
*
* @Author luozh
* @Date 2022年04月14日 14:55
* @Version 1.0
*/
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
/**
* Used for computing Hmac-SHA256 signature.
*/
public class HmacSHA256Signature {
/* The default encoding. */
private static final String DEFAULT_ENCODING = "UTF-8";
/* Signature method. */
private static final String ALGORITHM = "HmacSHA256";
/* Signature version. */
private static final String VERSION = "1";
private static final Object LOCK = new Object();
/* Prototype of the Mac instance. */
private static Mac macInstance;
public String getAlgorithm() {
return ALGORITHM;
}
public String getVersion() {
return VERSION;
}
public String computeSignature(String key, String data) {
try {
byte[] signData = sign(key.getBytes(DEFAULT_ENCODING), data.getBytes(DEFAULT_ENCODING), macInstance,
LOCK, ALGORITHM);
return BinaryUtil.toBase64String(signData);
} catch (UnsupportedEncodingException ex) {
throw new RuntimeException("Unsupported algorithm: " + DEFAULT_ENCODING, ex);
}
}
protected byte[] sign(byte[] key, byte[] data, Mac macInstance, Object lock, String algorithm) {
try {
// Because Mac.getInstance(String) calls a synchronized method, it
// could block on
// invoked concurrently, so use prototype pattern to improve perf.
if (macInstance == null) {
synchronized (lock) {
if (macInstance == null) {
macInstance = Mac.getInstance(algorithm);
}
}
}
Mac mac;
try {
mac = (Mac) macInstance.clone();
} catch (CloneNotSupportedException e) {
// If it is not clonable, create a new one.
mac = Mac.getInstance(algorithm);
}
mac.init(new SecretKeySpec(key, algorithm));
return mac.doFinal(data);
} catch (NoSuchAlgorithmException ex) {
throw new RuntimeException("Unsupported algorithm: " + algorithm, ex);
} catch (InvalidKeyException ex) {
throw new RuntimeException("Invalid key: " + key, ex);
}
}
}
package com.wecloud.im.security.signature;
import lombok.extern.slf4j.Slf4j;
import java.io.UnsupportedEncodingException;
import java.util.Map;
import java.util.TreeMap;
import cn.hutool.core.lang.Assert;
/**
* 签名工具类
* @Author luozh
* @Date 2022年04月14日 11:32o
* @Version 1.0
*/
@Slf4j
public class SignUtils {
public static final String IM_PREFIX = "x-im-";
public static final String CONTENT_TYPE = "Content-Type";
public static final String DATE = "Date";
public static final String NEW_LINE = "\n";
public static String buildCanonicalString(String method, String resourcePath, Map<String, String> headers) {
StringBuilder canonicalString = new StringBuilder();
canonicalString.append(method).append(NEW_LINE);
TreeMap<String, String> fixedHeadersToSign = new TreeMap<>();
TreeMap<String, String> canonicalizedImHeadersToSign = new TreeMap<>();
if (headers != null) {
for (Map.Entry<String, String> header : headers.entrySet()) {
if (header.getKey() != null) {
String lowerKey = header.getKey().toLowerCase();
if (lowerKey.equals(CONTENT_TYPE.toLowerCase())) {
fixedHeadersToSign.put(lowerKey, header.getValue().trim());
} else if (lowerKey.equals(DATE.toLowerCase())) {
fixedHeadersToSign.put(lowerKey, header.getValue().trim());
} else if (lowerKey.startsWith(IM_PREFIX)) {
canonicalizedImHeadersToSign.put(lowerKey, header.getValue().trim());
}
}
}
}
if (!fixedHeadersToSign.containsKey(CONTENT_TYPE.toLowerCase())) {
fixedHeadersToSign.put(CONTENT_TYPE.toLowerCase(), "");
}
// Append fixed headers to sign to canonical string
for (Map.Entry<String, String> entry : fixedHeadersToSign.entrySet()) {
Object value = entry.getValue();
canonicalString.append(value);
canonicalString.append(NEW_LINE);
}
// Append canonicalized im headers to sign to canonical string
for (Map.Entry<String, String> entry : canonicalizedImHeadersToSign.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
canonicalString.append(key).append(':').append(value).append(NEW_LINE);
}
// Append canonical resource to canonical string
canonicalString.append(buildCanonicalizedResource(resourcePath));
return canonicalString.toString();
}
private static String buildCanonicalizedResource(String resourcePath) {
Assert.isTrue(resourcePath.startsWith("/"), "Resource path should start with slash character");
StringBuilder builder = new StringBuilder();
builder.append(uriEncoding(resourcePath));
return builder.toString();
}
public static String uriEncoding(String uri) {
String result = "";
try {
for (char c : uri.toCharArray()) {
if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')
|| (c >= '0' && c <= '9') || c == '_' || c == '-'
|| c == '~' || c == '.') {
result += c;
} else if (c == '/') {
result += "%2F";
} else {
byte[] b;
b = Character.toString(c).getBytes("utf-8");
for (int i = 0; i < b.length; i++) {
int k = b[i];
if (k < 0) {
k += 256;
}
result += "%" + Integer.toHexString(k).toUpperCase();
}
}
}
} catch (UnsupportedEncodingException e) {
throw new IllegalStateException(e);
}
return result;
}
public static String buildSignature(String secretAccessKey, String httpMethod, String resourcePath, Map<String, String> headers) {
String canonicalString = buildCanonicalString(httpMethod, resourcePath, headers);
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);
}
}
package com.wecloud.im.security.signature;
import org.apache.commons.collections4.SetUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
/**
*
* @Author luozh
* @Date 2022年04月15日 17:21
* @Version 1.0
*/
public class SignatureAuthRealm extends AuthorizingRealm {
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
// 设置角色
authorizationInfo.setRoles(SetUtils.hashSet("client:all"));
return authorizationInfo;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
// 校验token
SignatureAuthToken token = (SignatureAuthToken) authenticationToken;
if (token == null) {
throw new AuthenticationException("token不能为空");
}
return new SimpleAuthenticationInfo(
token,
token.getCredentials(),
getName()
);
}
@Override
public boolean supports(AuthenticationToken token) {
return token instanceof SignatureAuthToken;
}
}
package com.wecloud.im.security.signature;
import lombok.Data;
import org.apache.shiro.authc.HostAuthenticationToken;
import com.wecloud.im.core.util.IpUtil;
/**
*
* @Author luozh
* @Date 2022年04月15日 15:19
* @Version 1.0
*/
@Data
public class SignatureAuthToken implements HostAuthenticationToken {
/**
* 登录ip
*/
private String host;
/**
* appKey
*/
private String appKey;
/**
* appId
*/
private Long appId;
public SignatureAuthToken(String appKey, Long appId) {
this.appKey = appKey;
this.appId = appId;
setHost(IpUtil.getRequestIp());
}
@Override
public Object getPrincipal() {
return appKey;
}
@Override
public Object getCredentials() {
return appKey;
}
}
package com.wecloud.im.security.signature;
import lombok.extern.slf4j.Slf4j;
import java.util.Enumeration;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.shiro.authc.AuthenticationException;
/**
* 签名检验员
* @Author luozh
* @Date 2022年04月14日 17:31
* @Version 1.0
*/
@Slf4j
public class SignatureChecker {
/**
* 时间戳请求最小限制(600s)
* 设置的越小,安全系数越高,但是要注意一定的容错性
*/
private static final long MAX_REQUEST = 10 * 60 * 1000L;
/**
* 签名校验
* @Author luozh
* @Date 2022年04月14日 05:32:32
* @param request 请求信息
* @param clientSignature 签名
* @param appSecret app秘钥
* @Return appKey
*/
public static void check(HttpServletRequest request, String clientSignature, String appSecret) {
// 获取请求头
Map<String, String> headers = getHeaderMap(request);
// resourcePath
String resourcePath = request.getRequestURI();
// request methos
String requestMethod = request.getMethod();
String canonicalString = SignUtils.buildCanonicalString(requestMethod, resourcePath, headers);
log.info("服务端api签名字符串: {}", canonicalString);
log.info("服务端api appSecret: {}", appSecret);
String serverSignature = new HmacSHA256Signature().computeSignature(appSecret, canonicalString);
log.info("服务端api签名结果: {}", serverSignature);
if (!serverSignature.equals(clientSignature)) {
// 返回给用户的response中告诉用户正确的用于验证加密的签名字符串
throw new AuthenticationException("token 错误");
}
}
public static Map<String, String> getHeaderMap(HttpServletRequest servletRequest) {
Map<String, String> headerMap = new LinkedHashMap<>();
Enumeration<String> names = servletRequest.getHeaderNames();
while (names.hasMoreElements()) {
String key = names.nextElement();
headerMap.put(key, servletRequest.getHeader(key));
}
return headerMap;
}
}
package com.wecloud.im.security.util;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import com.wecloud.im.core.util.HttpServletRequestUtil;
import com.wecloud.im.security.properties.JwtProperties;
/**
* JwtToken工具类
*
* @author geekidea
* @date 2019-10-03
* @since 1.3.0.RELEASE
**/
@Slf4j
@Component
public class JwtTokenUtil {
private static String tokenName;
public JwtTokenUtil(JwtProperties jwtProperties) {
tokenName = jwtProperties.getTokenName();
log.info("tokenName:{}", tokenName);
}
/**
* 获取token名称
*
* @return
*/
public static String getTokenName() {
return tokenName;
}
/**
* 从请求头或者请求参数中
*
* @return
*/
public static String getToken() {
return getToken(HttpServletRequestUtil.getRequest());
}
/**
* 从请求头或者请求参数中
*
* @param request
* @return
*/
public static String getToken(HttpServletRequest request) {
if (request == null) {
throw new IllegalArgumentException("request不能为空");
}
// 从请求头中获取token
String token = request.getHeader(tokenName);
if (StringUtils.isBlank(token)) {
// 从请求参数中获取token
token = request.getParameter(tokenName);
}
return token;
}
}
package com.wecloud.im.security.util;
import lombok.extern.slf4j.Slf4j;
import java.time.Duration;
import java.util.Date;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSON;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.wecloud.im.core.constant.CommonConstant;
import com.wecloud.im.core.util.UUIDUtil;
import com.wecloud.im.security.jwt.JwtToken;
import com.wecloud.im.security.properties.JwtProperties;
/**
* JWT工具类
* https://github.com/auth0/java-jwt
*
* @author geekidea
* @date 2019-09-30
* @since 1.3.0.RELEASE
**/
@Slf4j
@Component
public class JwtUtil {
private static JwtProperties jwtProperties;
public JwtUtil(JwtProperties jwtProperties) {
JwtUtil.jwtProperties = jwtProperties;
log.info(JSON.toJSONString(JwtUtil.jwtProperties));
}
/**
* 获取当前JwtToken
*
* @return
*/
public static JwtToken getCurrentJwtToken() {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
return jwtToken;
}
/**
* 生成JWT Token
*
* @param clientId clientId
* @param salt 盐值
* @param expireDuration 过期时间和单位
* @param platform 平台
* @return token
*/
public static String generateToken(String clientId, String appKey, String salt, Duration expireDuration, Integer platform) {
try {
if (StringUtils.isBlank(clientId)) {
log.error("username不能为空");
return null;
}
log.info("clientId:{}", clientId);
// // 如果盐值为空,则使用默认值:666666
// if (StringUtils.isBlank(salt)) {
// salt = jwtProperties.getSecret();
// }
log.info("salt:{}", salt);
// 过期时间,单位:秒
Long expireSecond;
// 默认过期时间为1小时
if (expireDuration == null) {
expireSecond = jwtProperties.getExpireSecond();
} else {
expireSecond = expireDuration.getSeconds();
}
log.info("expireSecond:{}", expireSecond);
Date expireDate = DateUtils.addSeconds(new Date(), expireSecond.intValue());
log.info("expireDate:{}", expireDate);
// 生成token
Algorithm algorithm = Algorithm.HMAC256(salt);
String token = JWT.create()
// CLIENT_ID
.withClaim(CommonConstant.CLIENT_ID, clientId)
// APP_KEY
.withClaim(CommonConstant.APP_KEY, appKey)
.withClaim(CommonConstant.PLATFORM, platform)
// jwt唯一id
.withJWTId(UUIDUtil.getUuid())
// 签发人
.withIssuer(jwtProperties.getIssuer())
// 主题
.withSubject(jwtProperties.getSubject())
// 签发的目标
.withAudience(jwtProperties.getAudience())
// 签名时间
.withIssuedAt(new Date())
// token过期时间
.withExpiresAt(expireDate)
// 签名
.sign(algorithm);
return token;
} catch (Exception e) {
log.error("generateToken exception", e);
}
return null;
}
/**
* 验证token
*
* @param token
* @param salt
* @return
*/
public static boolean verifyToken(String token, String salt) {
try {
Algorithm algorithm = Algorithm.HMAC256(salt);
JWTVerifier verifier = JWT.require(algorithm)
// 签发人
.withIssuer(jwtProperties.getIssuer())
// 主题
.withSubject(jwtProperties.getSubject())
// 签发的目标
.withAudience(jwtProperties.getAudience())
.build();
DecodedJWT jwt = verifier.verify(token);
if (jwt != null) {
return true;
}
} catch (Exception e) {
log.error("Verify Token Exception", e);
}
return false;
}
/**
* 解析token,获取token数据
*
* @param token
* @return
*/
public static DecodedJWT getJwtInfo(String token) {
return JWT.decode(token);
}
/**
* 获取用户名
*
* @param token
* @return
*/
public static String getClientId(String token) {
if (StringUtils.isBlank(token)) {
return null;
}
DecodedJWT decodedJwt = getJwtInfo(token);
if (decodedJwt == null) {
return null;
}
String username = decodedJwt.getClaim(CommonConstant.CLIENT_ID).asString();
return username;
}
/**
* 获取创建时间
*
* @param token
* @return
*/
public static Date getIssuedAt(String token) {
DecodedJWT decodedJwt = getJwtInfo(token);
if (decodedJwt == null) {
return null;
}
return decodedJwt.getIssuedAt();
}
/**
* 获取过期时间
*
* @param token
* @return
*/
public static Date getExpireDate(String token) {
DecodedJWT decodedJwt = getJwtInfo(token);
if (decodedJwt == null) {
return null;
}
return decodedJwt.getExpiresAt();
}
/**
* 判断token是否已过期
*
* @param token
* @return
*/
public static boolean isExpired(String token) {
Date expireDate = getExpireDate(token);
if (expireDate == null) {
return true;
}
return expireDate.before(new Date());
}
}
package com.wecloud.im.security.util;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import com.wecloud.im.security.vo.LoginUserRedisVo;
/**
* 获取登录信息工具类
*
* @author geekidea
* @date 2018-11-08
*/
@Slf4j
@Component
public class LoginUtil {
private static RedisTemplate redisTemplate;
public LoginUtil(RedisTemplate redisTemplate) {
LoginUtil.redisTemplate = redisTemplate;
}
/**
* 获取当前登录用户对象
*
* @return
*/
public static LoginUserRedisVo getLoginSysUserRedisVo() {
// 获取当前登录用户
String token = JwtTokenUtil.getToken();
String username = JwtUtil.getClientId(token);
if (StringUtils.isBlank(username)) {
return null;
}
// return (LoginSysUserRedisVo) redisTemplate.opsForValue().get(String.format(CommonRedisKey.LOGIN_USER, username));
LoginUserRedisVo loginSysUserRedisVo = new LoginUserRedisVo();
loginSysUserRedisVo.setUsername(username);
return loginSysUserRedisVo;
}
/**
* 获取当前登录用户的ID
*
* @return
*/
public static Long getUserId() {
LoginUserRedisVo loginSysUserRedisVo = getLoginSysUserRedisVo();
if (loginSysUserRedisVo == null) {
return null;
}
return loginSysUserRedisVo.getId();
}
/**
* 获取当前登录用户的账号
*
* @return
*/
public static String getUsername() {
LoginUserRedisVo loginSysUserRedisVo = getLoginSysUserRedisVo();
if (loginSysUserRedisVo == null) {
return null;
}
return loginSysUserRedisVo.getUsername();
}
}
package com.wecloud.im.security.util;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.crypto.SecureRandomNumberGenerator;
import com.wecloud.im.security.properties.JwtProperties;
/**
* 盐值包装工具类
*
* @author geekidea
* @date 2019-09-30
* @since 1.3.0.RELEASE
**/
public class SaltUtil {
/**
* 盐值包装
*
* @param secret 配置文件中配置的附加盐值
* @param salt 数据库中保存的盐值
* @return
*/
public static String getSalt(String secret, String salt) {
if (StringUtils.isBlank(secret) && StringUtils.isBlank(salt)) {
return null;
}
// 加密方法
String newSalt = DigestUtils.sha256Hex(secret + salt);
return newSalt;
}
/**
* 生成32位随机盐
*
* @return
*/
public static String generateSalt() {
return new SecureRandomNumberGenerator().nextBytes(16).toHex();
}
/**
* 加工盐值
*
* @param salt
* @param jwtProperties
* @return
*/
public static String getSalt(String salt, JwtProperties jwtProperties) {
String newSalt;
if (jwtProperties.isSaltCheck()) {
// 包装盐值
newSalt = SaltUtil.getSalt(jwtProperties.getSecret(), salt);
} else {
newSalt = jwtProperties.getSecret();
}
return newSalt;
}
}
package com.wecloud.im.security.util;
import com.wecloud.im.security.signature.SignatureAuthToken;
/**
*
* @Author luozh
* @Date 2022年04月15日 19:57
* @Version 1.0
*/
public class SecurityUtils {
/**
* 获取当前签名token
* @Author luozh
* @Date 2022年04月15日 07:53:54
* @param
* @Return 签名token
*/
public static SignatureAuthToken getCurrentSignatureAuthToken() {
return (SignatureAuthToken) org.apache.shiro.SecurityUtils.getSubject().getPrincipal();
}
/**
* 获取当前请求appId
* @Author luozh
* @Date 2022年04月15日 07:58:36
* @param
* @Return
*/
public static Long getCurrentAppId() {
return getCurrentSignatureAuthToken().getAppId();
}
/**
* 获取当前请求appKey
* @Author luozh
* @Date 2022年04月15日 07:58:56
* @param
* @Return
*/
public static String getCurrentAppKey() {
return getCurrentSignatureAuthToken().getAppKey();
}
}
package com.wecloud.im.security.vo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* JwtToken Redis缓存对象
*
* @author geekidea
* @date 2019-09-30
**/
@Data
@Accessors(chain = true)
public class JwtTokenRedisVo implements Serializable {
private static final long serialVersionUID = 1831633309466775223L;
/**
* 登录ip
*/
private String host;
/**
* 登录用户ID
*/
private String clientId;
/**
* app
*/
private String appKey;
/**
* 登录盐值
*/
private String salt;
/**
* 登录token
*/
private String token;
/**
* 创建时间
*/
private Date createDate;
/**
* 多长时间过期,默认一小时
*/
private long expireSecond;
/**
* 过期日期
*/
private Date expireDate;
}
package com.wecloud.im.security.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.wecloud.im.core.common.bean.ClientInfo;
/**
* 登录用户Redis对象,后台使用
*
* @author geekidea
* @date 2019-9-30
**/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
public class LoginUserRedisVo extends LoginUserVo {
private static final long serialVersionUID = -3858850188055605806L;
/**
* 包装后的盐值
*/
private String salt;
/**
* 登录ip
*/
private ClientInfo clientInfo;
}
package com.wecloud.im.security.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* 登录用户对象,响应给前端
* </p>
*
* @author geekidea
* @date 2019-05-15
**/
@Data
@Accessors(chain = true)
public class LoginUserVo implements Serializable {
private static final long serialVersionUID = -1758338570596088158L;
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("用户名")
private String username;
@ApiModelProperty("昵称")
private String nickname;
@ApiModelProperty("状态,0:禁用,1:启用,2:锁定")
private Integer state;
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>im-common</artifactId>
<groupId>com.wecloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>im-common-web</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
</dependency>
<dependency>
<groupId>com.wecloud</groupId>
<artifactId>im-common-core</artifactId>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.wecloud</groupId>
<artifactId>im-common-bom</artifactId>
<version>1.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
package com.wecloud.im.web.config;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
import com.fasterxml.jackson.module.paramnames.ParameterNamesModule;
import com.wecloud.im.core.config.jackson.deserializer.JacksonDoubleDeserializer;
import com.wecloud.im.core.config.jackson.deserializer.JacksonIntegerDeserializer;
import com.wecloud.im.core.constant.DatePattern;
import com.wecloud.im.core.xss.XssJacksonDeserializer;
import com.wecloud.im.core.xss.XssJacksonSerializer;
/**
* @author geekidea
* @author 2018-11-08
*/
@Configuration
public class JacksonConfig implements WebMvcConfigurer {
@Value("${spring-boot-plus.filter.xss.enable}")
private boolean enableXss;
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = jackson2HttpMessageConverter.getObjectMapper();
// objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
// objectMapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);
SimpleModule simpleModule = new SimpleModule();
// Long类型序列化成字符串,避免Long精度丢失
// simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
// simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
// XSS序列化
if (enableXss) {
simpleModule.addSerializer(String.class, new XssJacksonSerializer());
simpleModule.addDeserializer(String.class, new XssJacksonDeserializer());
}
// Date
// simpleModule.addSerializer(Date.class, new JacksonDateSerializer());
// simpleModule.addDeserializer(Date.class, new JacksonDateDeserializer());
// response数据Long型转String simpleModule.addSerializer(Long.class, new JacksonLongSerializer());
simpleModule.addDeserializer(Integer.class, new JacksonIntegerDeserializer());
simpleModule.addDeserializer(Double.class, new JacksonDoubleDeserializer());
// jdk8日期序列化和反序列化设置
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.YYYY_MM_DD_HH_MM_SS)));
javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.YYYY_MM_DD_HH_MM_SS)));
javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DatePattern.YYYY_MM_DD)));
javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DatePattern.YYYY_MM_DD)));
javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.HH_MM_SS)));
javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.HH_MM_SS)));
objectMapper.registerModule(simpleModule).registerModule(javaTimeModule).registerModule(new ParameterNamesModule());
jackson2HttpMessageConverter.setObjectMapper(objectMapper);
//放到第一个
converters.add(0, jackson2HttpMessageConverter);
}
}
package com.wecloud.im.web.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
/**
* @author geekidea
* @date 2018-11-08
*/
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
return new RestTemplate(factory);
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
//单位为ms
factory.setReadTimeout(5000);
//单位为ms
factory.setConnectTimeout(5000);
return factory;
}
}
package com.wecloud.im.web.config;
import lombok.extern.slf4j.Slf4j;
/**
* spring-boot-plus配置
*
* @author geekidea
* @date 2019/8/4
* @since 1.2.0-RELEASE
*/
@Slf4j
public class SpringBootPlusConfig {
}
package com.wecloud.im.web.config;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import com.wecloud.im.web.properties.SpringBootPlusCorsProperties;
/**
* 跨域配置
*
* @author geekidea
* @date 2019/10/14
*/
@Slf4j
@Configuration
@ConditionalOnProperty(value = {"spring-boot-plus.cors.enable"}, matchIfMissing = true)
public class SpringBootPlusCorsConfig {
/**
* CORS跨域设置
*
* @return
*/
@Bean
public FilterRegistrationBean corsFilter(SpringBootPlusCorsProperties corsProperties) {
log.info("corsProperties:{}", corsProperties);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration();
// 跨域配置
corsConfiguration.setAllowedOrigins(corsProperties.getAllowedOrigins());
corsConfiguration.setAllowedHeaders(corsProperties.getAllowedHeaders());
corsConfiguration.setAllowedMethods(corsProperties.getAllowedMethods());
corsConfiguration.setAllowCredentials(corsProperties.isAllowCredentials());
corsConfiguration.setExposedHeaders(corsProperties.getExposedHeaders());
corsConfiguration.setMaxAge(corsConfiguration.getMaxAge());
source.registerCorsConfiguration(corsProperties.getPath(), corsConfiguration);
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
bean.setEnabled(corsProperties.isEnable());
return bean;
}
}
package com.wecloud.im.web.config;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
import javax.annotation.PostConstruct;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.alibaba.fastjson.JSON;
import com.wecloud.im.core.util.IniUtil;
import com.wecloud.im.core.xss.XssFilter;
import com.wecloud.im.web.filter.ChannelFilter;
import com.wecloud.im.web.filter.RequestDetailFilter;
import com.wecloud.im.web.interceptor.DownloadInterceptor;
import com.wecloud.im.web.interceptor.ResourceInterceptor;
import com.wecloud.im.web.interceptor.UploadInterceptor;
import com.wecloud.im.web.properties.SpringBootPlusFilterProperties;
import com.wecloud.im.web.properties.SpringBootPlusInterceptorProperties;
import com.wecloud.im.web.properties.SpringBootPlusProperties;
/**
* WebMvc配置
*
* @author geekidea
* @date 2018-11-08
*/
@Slf4j
@Configuration
public class SpringBootPlusWebMvcConfig implements WebMvcConfigurer {
/**
* spring-boot-plus配置属性
*/
@Autowired
private SpringBootPlusProperties springBootPlusProperties;
/**
* Filter配置
*/
private SpringBootPlusFilterProperties filterConfig;
/**
* 拦截器配置
*/
private SpringBootPlusInterceptorProperties interceptorConfig;
/**
* RequestDetailFilter配置
*
* @return
*/
@Bean
public FilterRegistrationBean requestDetailFilter() {
SpringBootPlusFilterProperties.FilterConfig requestFilterConfig = filterConfig.getRequest();
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new RequestDetailFilter());
filterRegistrationBean.setEnabled(requestFilterConfig.isEnable());
filterRegistrationBean.addUrlPatterns(requestFilterConfig.getUrlPatterns());
filterRegistrationBean.setOrder(requestFilterConfig.getOrder());
filterRegistrationBean.setAsyncSupported(requestFilterConfig.isAsync());
return filterRegistrationBean;
}
/**
* XssFilter配置
*
* @return
*/
@Bean
public FilterRegistrationBean xssFilter() {
SpringBootPlusFilterProperties.FilterConfig xssFilterConfig = filterConfig.getXss();
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new XssFilter());
filterRegistrationBean.setEnabled(xssFilterConfig.isEnable());
filterRegistrationBean.addUrlPatterns(xssFilterConfig.getUrlPatterns());
filterRegistrationBean.setOrder(xssFilterConfig.getOrder());
filterRegistrationBean.setAsyncSupported(xssFilterConfig.isAsync());
return filterRegistrationBean;
}
@Bean
public FilterRegistrationBean repeatedlyReadFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
ChannelFilter repeatedlyReadFilter = new ChannelFilter();
registration.setFilter(repeatedlyReadFilter);
registration.setOrder(3);
registration.addUrlPatterns("/*");
return registration;
}
/**
* 上传拦截器
*
* @return
*/
@Bean
public UploadInterceptor uploadInterceptor() {
return new UploadInterceptor();
}
/**
* 资源拦截器
*
* @return
*/
@Bean
public ResourceInterceptor resourceInterceptor() {
return new ResourceInterceptor();
}
/**
* 下载拦截器
*
* @return
*/
@Bean
public DownloadInterceptor downloadInterceptor() {
return new DownloadInterceptor();
}
@PostConstruct
public void init() {
filterConfig = springBootPlusProperties.getFilter();
interceptorConfig = springBootPlusProperties.getInterceptor();
// 打印SpringBootPlusProperties配置信息
log.info("SpringBootPlusProperties:{}", JSON.toJSONString(springBootPlusProperties));
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 上传拦截器
if (interceptorConfig.getUpload().isEnable()) {
registry.addInterceptor(uploadInterceptor())
.addPathPatterns(interceptorConfig.getUpload().getIncludePaths());
}
// 资源拦截器注册
if (interceptorConfig.getResource().isEnable()) {
registry.addInterceptor(resourceInterceptor())
.addPathPatterns(interceptorConfig.getResource().getIncludePaths());
}
// 下载拦截器注册
if (interceptorConfig.getDownload().isEnable()) {
registry.addInterceptor(downloadInterceptor())
.addPathPatterns(interceptorConfig.getDownload().getIncludePaths());
}
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// 设置项目静态资源访问
String resourceHandlers = springBootPlusProperties.getResourceHandlers();
if (StringUtils.isNotBlank(resourceHandlers)) {
Map<String, String> map = IniUtil.parseIni(resourceHandlers);
for (Map.Entry<String, String> entry : map.entrySet()) {
String pathPatterns = entry.getKey();
String resourceLocations = entry.getValue();
registry.addResourceHandler(pathPatterns)
.addResourceLocations(resourceLocations);
}
}
// 设置上传文件访问路径
registry.addResourceHandler(springBootPlusProperties.getResourceAccessPatterns())
.addResourceLocations("file:" + springBootPlusProperties.getUploadPath());
}
}
package com.wecloud.im.web.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import com.wecloud.im.web.wrapper.RequestWrapper;
/**
*
* @Author luozh
* @Date 2022年04月15日 10:12
* @Version 1.0
*/
@WebFilter(urlPatterns = "/*", filterName = "channelFilter")
public class ChannelFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
ServletRequest requestWrapper = null;
if (servletRequest instanceof HttpServletRequest) {
requestWrapper = new RequestWrapper((HttpServletRequest) servletRequest);
}
if (requestWrapper == null) {
filterChain.doFilter(servletRequest, servletResponse);
} else {
filterChain.doFilter(requestWrapper, servletResponse);
}
}
@Override
public void destroy() {
}
}
package com.wecloud.im.web.filter;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import com.wecloud.im.core.bean.RequestDetail;
import com.wecloud.im.core.util.IpUtil;
import com.wecloud.im.core.util.RequestDetailThreadLocal;
/**
* 请求详情信息Filter
* 此过滤器在shiro过滤器之前调用
*
* @author geekidea
* @date 2020/3/25
**/
@Slf4j
public class RequestDetailFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
log.info("RequestDetailFilter init");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// 设置请求详情信息
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
// 请求IP
String ip = IpUtil.getRequestIp(httpServletRequest);
// 请求路径
String path = httpServletRequest.getRequestURI();
RequestDetail requestDetail = new RequestDetail()
.setIp(ip)
.setPath(path);
// 设置请求详情信息
RequestDetailThreadLocal.setRequestDetail(requestDetail);
chain.doFilter(request, response);
// 释放
RequestDetailThreadLocal.remove();
}
@Override
public void destroy() {
log.info("RequestDetailFilter destroy");
}
}
package com.wecloud.im.web.interceptor;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
/**
* 下载拦截器
*
* @author geekidea
* @date 2019/8/21
*/
@Slf4j
@ConditionalOnProperty(value = {"spring-boot-plus.interceptor.download.enable"}, matchIfMissing = true)
public class DownloadInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 如果访问的不是控制器,则跳出,继续执行下一个拦截器
if (!(handler instanceof HandlerMethod)) {
return true;
}
// 访问路径
String url = request.getRequestURI();
// 访问全路径
String fullUrl = request.getRequestURL().toString();
// 下载拦截器,业务处理代码
log.info("DownloadInterceptor...");
// 访问token,如果需要,可以设置参数,进行鉴权
// String token = request.getParameter(JwtTokenUtil.getTokenName());
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 记录实际下载日志...
}
}
package com.wecloud.im.web.interceptor;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
/**
* 资源拦截器
*
* @author geekidea
* @date 2019/8/20
*/
@Slf4j
@ConditionalOnProperty(value = {"spring-boot-plus.interceptor.resource.enable"}, matchIfMissing = true)
public class ResourceInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 如果访问的控制器,则跳出,继续执行下一个拦截器
if (handler instanceof HandlerMethod) {
return true;
}
// 访问路径
String url = request.getRequestURI();
// 访问全路径
String fullUrl = request.getRequestURL().toString();
// 资源拦截器,业务处理代码
log.info("ResourceInterceptor...");
// 访问token,如果需要,可以设置参数,进行鉴权
// String token = request.getParameter(JwtTokenUtil.getTokenName());
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 记录实际访问图片日志...
}
}
package com.wecloud.im.web.interceptor;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
/**
* 上传拦截器
*
* @author geekidea
* @date 2019/8/22
*/
@Slf4j
@ConditionalOnProperty(value = {"spring-boot-plus.interceptor.upload.enable"}, matchIfMissing = true)
public class UploadInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 如果访问的不是控制器,则跳出,继续执行下一个拦截器
if (!(handler instanceof HandlerMethod)) {
return true;
}
// 访问路径
String url = request.getRequestURI();
// 访问全路径
String fullUrl = request.getRequestURL().toString();
// 上传拦截器,业务处理代码
log.info("UploadInterceptor...");
// 访问token,如果需要,可以设置参数,进行鉴权
// String token = request.getParameter(JwtTokenUtil.getTokenName());
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 记录实际上传日志...
}
}
package com.wecloud.im.web.properties;
import lombok.Data;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.web.cors.CorsConfiguration;
/**
* 跨域属性配置
*
* @author geekidea
* @date 2019-10-09
**/
@Data
@Component
@ConfigurationProperties(prefix = "spring-boot-plus.cors")
public class SpringBootPlusCorsProperties {
/**
* 是否启用跨域,默认启用
*/
private boolean enable = true;
/**
* CORS过滤的路径,默认:/**
*/
private String path = "/**";
/**
* 允许访问的源
*/
private List<String> allowedOrigins = Collections.singletonList(CorsConfiguration.ALL);
/**
* 允许访问的请求头
*/
private List<String> allowedHeaders = Collections.singletonList(CorsConfiguration.ALL);
/**
* 是否允许发送cookie
*/
private boolean allowCredentials = true;
/**
* 允许访问的请求方式
*/
private List<String> allowedMethods = Collections.singletonList(CorsConfiguration.ALL);
/**
* 允许响应的头
*/
private List<String> exposedHeaders = Arrays.asList("token");
/**
* 该响应的有效时间默认为30分钟,在有效时间内,浏览器无须为同一请求再次发起预检请求
*/
private Long maxAge = 1800L;
}
package com.wecloud.im.web.properties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
import org.springframework.stereotype.Component;
/**
* Filter配置属性
*
* @author geekidea
* @date 2019-09-29
**/
@Data
@Component
@ConfigurationProperties(prefix = "spring-boot-plus.filter")
public class SpringBootPlusFilterProperties {
/**
* RequestDetail Filter配置
*/
@NestedConfigurationProperty
private FilterConfig request = new FilterConfig();
/**
* XSS Filter配置
*/
@NestedConfigurationProperty
private FilterConfig xss = new FilterConfig();
@Data
public static class FilterConfig {
/**
* 是否启用
*/
private boolean enable;
/**
* 过滤的路径
*/
private String[] urlPatterns;
/**
* 排序
*/
private int order;
/**
* 是否支持异步
*/
private boolean async;
}
}
package com.wecloud.im.web.properties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
import org.springframework.stereotype.Component;
/**
* spring-boot-plus拦截器配置属性
*
* @author geekidea
* @date 2019/8/5
*/
@Data
@Component
@ConfigurationProperties(prefix = "spring-boot-plus.interceptor")
public class SpringBootPlusInterceptorProperties {
/**
* SpringBootAdmin权限拦截器
*/
private InterceptorConfig springbootadmin = new InterceptorConfig();
/**
* 自定义权限拦截器
*/
@NestedConfigurationProperty
private InterceptorConfig permission = new InterceptorConfig();
/**
* 资源拦截器
*/
@NestedConfigurationProperty
private InterceptorConfig resource = new InterceptorConfig();
/**
* 上传拦截器
*/
@NestedConfigurationProperty
private InterceptorConfig upload = new InterceptorConfig();
/**
* 下载拦截器
*/
@NestedConfigurationProperty
private InterceptorConfig download = new InterceptorConfig();
@Data
public static class InterceptorConfig {
/**
* 是否启用
*/
private boolean enable;
/**
* 包含的路径
*/
private String[] includePaths = new String[]{};
/**
* 排除路径
*/
private String[] excludePaths = new String[]{};
}
}
package com.wecloud.im.web.properties;
import lombok.Data;
import java.util.List;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
import org.springframework.stereotype.Component;
/**
* spring-boot-plus属性配置信息
*
* @author geekidea
* @date 2019-08-04
*/
@Data
@Component
@ConfigurationProperties(prefix = "spring-boot-plus")
public class SpringBootPlusProperties {
/**
* 是否启用ansi控制台输出有颜色的字体,local环境建议开启,服务器环境设置为false
*/
private boolean enableAnsi;
/**
* 项目IP或域名地址
*/
private String serverIp;
/**
* 是否启用验证码
*/
private boolean enableVerifyCode;
/**
* 新建登录用户初始化盐值
*/
private String loginInitSalt;
/**
* 新建登录用户初始化密码
*/
private String loginInitPassword;
/**
* 新建用户初始化头像
*/
private String loginInitHead;
/**
* 实现BaseEnum接口的枚举包
*/
private String[] enumPackages;
/**
* 拦截器配置
*/
@NestedConfigurationProperty
private SpringBootPlusInterceptorProperties interceptor;
/**
* 过滤器配置
*/
@NestedConfigurationProperty
private SpringBootPlusFilterProperties filter;
/**
* 跨域配置
*/
@NestedConfigurationProperty
private SpringBootPlusCorsProperties cors = new SpringBootPlusCorsProperties();
/**
* 上传目录
*/
private String uploadPath;
/**
* 资源访问路径,前端访问
*/
private String resourceAccessPath;
/**
* 资源访问路径,后段配置,资源映射/拦截器使用
*/
private String resourceAccessPatterns;
/**
* 资源访问全路径
*/
private String resourceAccessUrl;
/**
* 允许上传的文件后缀集合
*/
private List<String> allowUploadFileExtensions;
/**
* 允许下载的文件后缀集合
*/
private List<String> allowDownloadFileExtensions;
/**
* 项目静态资源访问配置
*
* @see SpringBootPlusWebMvcConfig addResourceHandlers
*/
private String resourceHandlers;
/**
* Swagger路径
*/
private List<String> swaggerPaths;
}
package com.wecloud.im.web.properties;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* 配置文件属性映射为静态属性
*
* @author geekidea
* @date 2019-10-11
**/
@Slf4j
@Data
@Component
public class SpringBootPlusStaticProperties {
public static String INFO_PROJECT_VERSION = "";
@Value("${info.project-version}")
private String infoProjectVersion;
@PostConstruct
public void init() {
INFO_PROJECT_VERSION = this.infoProjectVersion;
log.info("INFO_PROJECT_VERSION:" + INFO_PROJECT_VERSION);
}
}
package com.wecloud.im.web.wrapper;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
/**
* 对HttpServletRequest进行重写,
* 1、用来接收application/json参数数据类型,即@RequestBody注解标注的参数,解决多次读取问题
* 2、用来解决注解@RequestParam通过POST/PUT/DELETE/PATCH方法传递参数,解决多次读取问题
* 首先看一下springboot控制器三个注解:
* 1、@PathVariable注解是REST风格url获取参数的方式,只能用在GET请求类型,通过getParameter获取参数
* 2、@RequestParam注解支持GET和POST/PUT/DELETE/PATCH方式,Get方式通过getParameter获取参数和post方式通过getInputStream或getReader获取参数
* 3、@RequestBody注解支持POST/PUT/DELETE/PATCH,可以通过getInputStream和getReader获取参数
* @Author luozh
* @Date 2022年04月14日 05:56:57
* @Version 1.0
*/
public class RequestWrapper extends HttpServletRequestWrapper {
private final String body;
public RequestWrapper(HttpServletRequest request) {
super(request);
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = null;
InputStream inputStream = null;
try {
inputStream = request.getInputStream();
if (inputStream != null) {
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
char[] charBuffer = new char[128];
int bytesRead = -1;
while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
stringBuilder.append(charBuffer, 0, bytesRead);
}
} else {
stringBuilder.append("");
}
} catch (IOException ex) {
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
body = stringBuilder.toString();
}
@Override
public ServletInputStream getInputStream() throws IOException {
final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(body.getBytes());
ServletInputStream servletInputStream = new ServletInputStream() {
@Override
public boolean isFinished() {
return false;
}
@Override
public boolean isReady() {
return false;
}
@Override
public void setReadListener(ReadListener readListener) {
}
@Override
public int read() throws IOException {
return byteArrayInputStream.read();
}
};
return servletInputStream;
}
@Override
public BufferedReader getReader() throws IOException {
return new BufferedReader(new InputStreamReader(this.getInputStream()));
}
public String getBody() {
return this.body;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wecloud</groupId>
<artifactId>im-common</artifactId>
<version>1.0-SNAPSHOT</version>
<description>im 公共聚合模块</description>
<packaging>pom</packaging>
<modules>
<module>im-common-bom</module>
<module>im-common-core</module>
<module>im-common-log</module>
<module>im-common-datasource</module>
<module>im-common-redis</module>
<module>im-common-security</module>
<module>im-common-web</module>
<module>im-common-swagger</module>
</modules>
</project>
...@@ -46,12 +46,31 @@ ...@@ -46,12 +46,31 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.wecloud</groupId> <groupId>com.wecloud</groupId>
<artifactId>im-common-core</artifactId> <artifactId>can-common-core</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.wecloud</groupId> <groupId>com.wecloud</groupId>
<artifactId>im-common-security</artifactId> <artifactId>can-common-security</artifactId>
</dependency> </dependency>
<!--服务注册-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
<scope>provided</scope>
</dependency>
</dependencies> </dependencies>
<properties> <properties>
......
...@@ -11,7 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -11,7 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wecloud.im.core.util.GetIpUtils; import com.wecloud.can.core.util.GetIpUtils;
import com.wecloud.im.server.model.redis.ClientChannelInfo; import com.wecloud.im.server.model.redis.ClientChannelInfo;
import com.wecloud.im.server.utils.RedisUtils; import com.wecloud.im.server.utils.RedisUtils;
......
...@@ -18,7 +18,7 @@ import com.alibaba.cloud.nacos.NacosDiscoveryProperties; ...@@ -18,7 +18,7 @@ import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
import com.alibaba.cloud.nacos.NacosServiceManager; import com.alibaba.cloud.nacos.NacosServiceManager;
import com.alibaba.cloud.nacos.discovery.NacosWatch; import com.alibaba.cloud.nacos.discovery.NacosWatch;
import com.alibaba.nacos.api.naming.PreservedMetadataKeys; import com.alibaba.nacos.api.naming.PreservedMetadataKeys;
import com.wecloud.im.core.util.GetIpUtils; import com.wecloud.can.core.util.GetIpUtils;
import static com.wecloud.im.server.model.WsConstants.IP_NETTY_PUBLIC; import static com.wecloud.im.server.model.WsConstants.IP_NETTY_PUBLIC;
......
...@@ -8,12 +8,12 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -8,12 +8,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.Nullable; import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.wecloud.im.core.common.api.ApiCode; import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.im.core.common.exception.BusinessException; import com.wecloud.can.core.exception.BusinessException;
import com.wecloud.im.core.common.exception.DaoException; import com.wecloud.can.core.exception.DaoException;
import com.wecloud.im.core.common.exception.SpringBootPlusException; import com.wecloud.can.core.exception.SpringBootPlusException;
import com.wecloud.im.core.exception.VerificationCodeException; import com.wecloud.can.core.exception.VerificationCodeException;
import com.wecloud.im.core.util.JsonUtils; import com.wecloud.can.core.util.JsonUtils;
import com.wecloud.im.server.model.WsResponse; import com.wecloud.im.server.model.WsResponse;
import com.wecloud.im.server.sender.ChannelSender; import com.wecloud.im.server.sender.ChannelSender;
import com.wecloud.netty.dispatch.common.BaseRequest; import com.wecloud.netty.dispatch.common.BaseRequest;
......
...@@ -20,13 +20,13 @@ import org.springframework.stereotype.Component; ...@@ -20,13 +20,13 @@ import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.auth0.jwt.interfaces.DecodedJWT; import com.auth0.jwt.interfaces.DecodedJWT;
import com.wecloud.im.core.common.api.ApiCode; import com.wecloud.can.core.constant.CommonConstant;
import com.wecloud.im.core.common.api.ApiResult; import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.im.core.constant.CommonConstant; import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.core.util.JsonUtils; import com.wecloud.can.core.util.JsonUtils;
import com.wecloud.im.security.jwt.JwtToken; import com.wecloud.can.security.jwt.JwtToken;
import com.wecloud.im.security.service.ShiroLoginService; import com.wecloud.can.security.service.ShiroLoginService;
import com.wecloud.im.security.util.JwtUtil; import com.wecloud.can.security.util.JwtUtil;
import com.wecloud.im.server.event.ChannelStatusChangeEvent; 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;
......
package com.wecloud.im.server.model; package com.wecloud.im.server.model;
import com.wecloud.im.core.common.api.ApiCode;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
...@@ -8,8 +7,9 @@ import java.io.Serializable; ...@@ -8,8 +7,9 @@ import java.io.Serializable;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import com.wecloud.netty.dispatch.util.ActionRequestHolder; import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.im.server.enums.WsResponseCmdEnum; import com.wecloud.im.server.enums.WsResponseCmdEnum;
import com.wecloud.netty.dispatch.util.ActionRequestHolder;
/** /**
* @Description websocket服务端响应消息和下方消息的封装对象 * @Description websocket服务端响应消息和下方消息的封装对象
......
...@@ -8,7 +8,7 @@ import org.apache.dubbo.config.annotation.DubboService; ...@@ -8,7 +8,7 @@ import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.wecloud.im.core.util.IpUtil; import com.wecloud.can.core.util.IpUtil;
import com.wecloud.im.server.sender.ChannelSender; import com.wecloud.im.server.sender.ChannelSender;
@Slf4j @Slf4j
......
...@@ -18,10 +18,10 @@ import org.springframework.cloud.client.discovery.DiscoveryClient; ...@@ -18,10 +18,10 @@ import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wecloud.im.core.common.api.ApiCode; import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.im.core.common.api.ApiResult; import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.core.util.GetIpUtils; import com.wecloud.can.core.util.GetIpUtils;
import com.wecloud.im.core.util.JsonUtils; import com.wecloud.can.core.util.JsonUtils;
import com.wecloud.im.server.cache.UserStateCacheManager; import com.wecloud.im.server.cache.UserStateCacheManager;
import com.wecloud.im.server.executor.SendMsgThreadPool; import com.wecloud.im.server.executor.SendMsgThreadPool;
import com.wecloud.im.server.manager.ChannelManager; import com.wecloud.im.server.manager.ChannelManager;
......
...@@ -22,8 +22,8 @@ ...@@ -22,8 +22,8 @@
//import com.wecloud.im.server.sender.ChannelSender; //import com.wecloud.im.server.sender.ChannelSender;
//import com.wecloud.im.server.strategy.AbstractImCmdStrategy; //import com.wecloud.im.server.strategy.AbstractImCmdStrategy;
//import com.wecloud.utils.JsonUtils; //import com.wecloud.utils.JsonUtils;
//import com.wecloud.im.core.common.api.ApiCode; //import com.wecloud.can.core.enums.ApiCode;
//import com.wecloud.im.core.common.api.ApiResult; //import com.wecloud.can.core.util.ApiResult;
//import com.wecloud.utils.SnowflakeUtil; //import com.wecloud.utils.SnowflakeUtil;
//import io.netty.channel.ChannelHandlerContext; //import io.netty.channel.ChannelHandlerContext;
//import io.netty.channel.socket.nio.NioSocketChannel; //import io.netty.channel.socket.nio.NioSocketChannel;
......
...@@ -23,8 +23,8 @@ ...@@ -23,8 +23,8 @@
//import com.wecloud.im.server.sender.ChannelSender; //import com.wecloud.im.server.sender.ChannelSender;
//import com.wecloud.im.server.strategy.AbstractImCmdStrategy; //import com.wecloud.im.server.strategy.AbstractImCmdStrategy;
//import com.wecloud.utils.JsonUtils; //import com.wecloud.utils.JsonUtils;
//import com.wecloud.im.core.common.api.ApiCode; //import com.wecloud.can.core.enums.ApiCode;
//import com.wecloud.im.core.common.api.ApiResult; //import com.wecloud.can.core.util.ApiResult;
//import com.wecloud.utils.SnowflakeUtil; //import com.wecloud.utils.SnowflakeUtil;
//import io.netty.channel.ChannelHandlerContext; //import io.netty.channel.ChannelHandlerContext;
//import io.netty.channel.socket.nio.NioSocketChannel; //import io.netty.channel.socket.nio.NioSocketChannel;
......
...@@ -12,15 +12,15 @@ import io.netty.handler.codec.http.HttpResponseStatus; ...@@ -12,15 +12,15 @@ import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.handler.codec.http.HttpVersion; import io.netty.handler.codec.http.HttpVersion;
import io.netty.handler.codec.http.QueryStringDecoder; import io.netty.handler.codec.http.QueryStringDecoder;
import io.netty.util.CharsetUtil; import io.netty.util.CharsetUtil;
import org.apache.http.MethodNotSupportedException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import springfox.documentation.RequestHandler;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.apache.http.MethodNotSupportedException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static io.netty.buffer.Unpooled.copiedBuffer; import static io.netty.buffer.Unpooled.copiedBuffer;
/** /**
...@@ -29,7 +29,7 @@ import static io.netty.buffer.Unpooled.copiedBuffer; ...@@ -29,7 +29,7 @@ import static io.netty.buffer.Unpooled.copiedBuffer;
* @Date 2019-07-19 * @Date 2019-07-19
*/ */
public class FullHttpRequestUtils { public class FullHttpRequestUtils {
private static final Logger logger = LoggerFactory.getLogger(RequestHandler.class); private static final Logger logger = LoggerFactory.getLogger(FullHttpRequestUtils.class);
/** /**
* 参数解析 * 参数解析
......
...@@ -14,7 +14,7 @@ import java.util.Set; ...@@ -14,7 +14,7 @@ import java.util.Set;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import com.wecloud.im.core.util.JsonUtils; import com.wecloud.can.core.util.JsonUtils;
import com.wecloud.im.server.model.WsResponse; import com.wecloud.im.server.model.WsResponse;
import com.wecloud.im.server.model.request.PushVO; import com.wecloud.im.server.model.request.PushVO;
import com.wecloud.netty.dispatch.annotation.ActionMapping; import com.wecloud.netty.dispatch.annotation.ActionMapping;
......
...@@ -14,7 +14,7 @@ import org.springframework.core.MethodParameter; ...@@ -14,7 +14,7 @@ import org.springframework.core.MethodParameter;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import com.wecloud.im.core.util.JsonUtils; import com.wecloud.can.core.util.JsonUtils;
import com.wecloud.netty.dispatch.ActionContext; import com.wecloud.netty.dispatch.ActionContext;
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;
......
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
<modules> <modules>
<module>im-sdk</module> <module>im-sdk</module>
<module>im-server</module> <module>im-server</module>
<module>im-common</module>
<module>im-app</module> <module>im-app</module>
<module>im-biz</module> <module>im-biz</module>
<module>im-biz-client</module> <module>im-biz-client</module>
...@@ -45,7 +44,7 @@ ...@@ -45,7 +44,7 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.wecloud</groupId> <groupId>com.wecloud</groupId>
<artifactId>im-common-bom</artifactId> <artifactId>can-common-bom</artifactId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
<type>pom</type> <type>pom</type>
<scope>import</scope> <scope>import</scope>
......
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