Commit 45ba90b0 by 罗长华

1、修复返回null消息的bug

2、action请求返回reqId
3、参数名统一为data 删除requestParam
parent 89a22df1
package com.wecloud.dispatch.general; package com.wecloud.dispatch.general;
import com.wecloud.dispatch.common.BaseRequest;
import com.wecloud.dispatch.extend.ActionMessage;
import com.wecloud.dispatch.extend.ArgumentBox;
import com.wecloud.dispatch.extend.impl.DefaultArgumentBox;
import com.wecloud.dispatch.general.config.GeneralActionDispatcher;
import com.wecloud.dispatch.general.extend.ActionMessageResolver;
import com.wecloud.im.exception.VerificationCodeException;
import com.wecloud.im.ws.model.WsResponse;
import com.wecloud.im.ws.sender.ChannelSender;
import com.wecloud.utils.JsonUtils;
import io.geekidea.springbootplus.framework.common.api.ApiCode; import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.exception.BusinessException; import io.geekidea.springbootplus.framework.common.exception.BusinessException;
import io.geekidea.springbootplus.framework.common.exception.DaoException; import io.geekidea.springbootplus.framework.common.exception.DaoException;
import io.geekidea.springbootplus.framework.common.exception.SpringBootPlusException; import io.geekidea.springbootplus.framework.common.exception.SpringBootPlusException;
...@@ -20,14 +8,20 @@ import io.netty.channel.ChannelHandlerContext; ...@@ -20,14 +8,20 @@ import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.socket.nio.NioSocketChannel; import io.netty.channel.socket.nio.NioSocketChannel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; 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 org.springframework.web.servlet.HandlerExecutionChain;
import org.springframework.web.servlet.ModelAndView; import com.wecloud.dispatch.common.BaseRequest;
import com.wecloud.dispatch.extend.ActionMessage;
import com.wecloud.dispatch.extend.ArgumentBox;
import com.wecloud.dispatch.extend.impl.DefaultArgumentBox;
import com.wecloud.dispatch.general.config.GeneralActionDispatcher;
import com.wecloud.dispatch.general.extend.ActionMessageResolver;
import com.wecloud.im.exception.VerificationCodeException;
import com.wecloud.im.ws.model.WsResponse;
import com.wecloud.im.ws.sender.ChannelSender;
import com.wecloud.utils.JsonUtils;
/** /**
...@@ -100,7 +94,8 @@ public class GeneralMessageHandler { ...@@ -100,7 +94,8 @@ public class GeneralMessageHandler {
res = WsResponse.result(ApiCode.SYSTEM_EXCEPTION); res = WsResponse.result(ApiCode.SYSTEM_EXCEPTION);
} }
} }
if (res != null) {
channelSender.sendMsgLocal((NioSocketChannel) am.getSenderChannel(), res); channelSender.sendMsgLocal((NioSocketChannel) am.getSenderChannel(), res);
}
} }
} }
...@@ -19,6 +19,10 @@ public class ActionRequestHolder { ...@@ -19,6 +19,10 @@ public class ActionRequestHolder {
return THREAD_LOCAL.get(); return THREAD_LOCAL.get();
} }
public static String getReqId() {
return getActionRequest().getData().getReqId();
}
/** /**
* 设置请求信息到当前线程中 * 设置请求信息到当前线程中
* *
......
...@@ -4,18 +4,13 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging; ...@@ -4,18 +4,13 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog; import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType; import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
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 org.springframework.web.bind.annotation.RequestParam;
import com.wecloud.dispatch.annotation.ActionMapping; import com.wecloud.dispatch.annotation.ActionMapping;
import com.wecloud.im.param.ImClientBlacklistPageParam; import com.wecloud.im.param.ImClientBlacklistPageParam;
...@@ -23,7 +18,6 @@ import com.wecloud.im.param.ImClientBlacklistQueryVo; ...@@ -23,7 +18,6 @@ import com.wecloud.im.param.ImClientBlacklistQueryVo;
import com.wecloud.im.param.add.ImClientBlacklistUpdate; import com.wecloud.im.param.add.ImClientBlacklistUpdate;
import com.wecloud.im.service.ImClientBlacklistService; import com.wecloud.im.service.ImClientBlacklistService;
import com.wecloud.im.ws.model.WsResponse; import com.wecloud.im.ws.model.WsResponse;
import com.wecloud.im.ws.model.request.PushVO;
/** /**
* ws 黑名单 * ws 黑名单
...@@ -45,8 +39,8 @@ public class BlacklistAction { ...@@ -45,8 +39,8 @@ public class BlacklistAction {
*/ */
@ActionMapping("/add") @ActionMapping("/add")
@ApiOperation(value = "拉入黑名单") @ApiOperation(value = "拉入黑名单")
public WsResponse<Boolean> addImClientBlacklist(@RequestParam(value = "data") ImClientBlacklistUpdate clientBlacklistUpdate) { public WsResponse<Map<String, Boolean>> addImClientBlacklist(ImClientBlacklistUpdate data) {
imClientBlacklistService.addImClientBlacklist(clientBlacklistUpdate); imClientBlacklistService.addImClientBlacklist(data);
return WsResponse.ok(); return WsResponse.ok();
} }
...@@ -56,20 +50,21 @@ public class BlacklistAction { ...@@ -56,20 +50,21 @@ public class BlacklistAction {
*/ */
@ActionMapping("/delete") @ActionMapping("/delete")
@ApiOperation(value = "移出黑名单") @ApiOperation(value = "移出黑名单")
public WsResponse<Boolean> deleteImClientBlacklist(@RequestParam(value = "data") ImClientBlacklistUpdate clientBlacklistUpdate) { public WsResponse<Map<String, Boolean>> deleteImClientBlacklist(ImClientBlacklistUpdate data) {
imClientBlacklistService.removeImClientBlacklist(clientBlacklistUpdate); imClientBlacklistService.removeImClientBlacklist(data);
return WsResponse.ok(); return WsResponse.ok();
} }
/** /**
* 黑名单分页列表 * 黑名单分页列表
* @return
*/ */
@ActionMapping("/getPageList") @ActionMapping("/getPageList")
@OperationLog(name = "黑名单分页列表", type = OperationLogType.PAGE) @OperationLog(name = "黑名单分页列表", type = OperationLogType.PAGE)
@ApiOperation(value = "黑名单分页列表") @ApiOperation(value = "黑名单分页列表")
public WsResponse<Paging<ImClientBlacklistQueryVo>> getImClientBlacklistPageList(@RequestParam(value = "data") ImClientBlacklistPageParam clientBlacklistUpdate) { public WsResponse<Paging<ImClientBlacklistQueryVo>> getImClientBlacklistPageList(ImClientBlacklistPageParam data) {
Paging<ImClientBlacklistQueryVo> blacklist = Paging<ImClientBlacklistQueryVo> blacklist =
imClientBlacklistService.getImClientBlacklistPageList(clientBlacklistUpdate); imClientBlacklistService.getImClientBlacklistPageList(data);
return WsResponse.ok(blacklist); return WsResponse.ok(blacklist);
} }
} }
...@@ -9,7 +9,6 @@ import java.util.List; ...@@ -9,7 +9,6 @@ import java.util.List;
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 org.springframework.web.bind.annotation.RequestParam;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wecloud.dispatch.annotation.ActionMapping; import com.wecloud.dispatch.annotation.ActionMapping;
...@@ -69,8 +68,8 @@ public class ClientAction { ...@@ -69,8 +68,8 @@ public class ClientAction {
@ActionMapping("/infoList") @ActionMapping("/infoList")
@ApiOperation(value = "根据id获取Client的头像昵称") @ApiOperation(value = "根据id获取Client的头像昵称")
public WsResponse<List<GetInfoListVo>> getInfoList(@RequestParam(value = "data") GetClientInfoParam getClientInfoParam) throws Exception { public WsResponse<List<GetInfoListVo>> getInfoList(GetClientInfoParam data) throws Exception {
return WsResponse.ok(imClientService.getInfoList(getClientInfoParam)); return WsResponse.ok(imClientService.getInfoList(data));
} }
/** /**
...@@ -78,34 +77,34 @@ public class ClientAction { ...@@ -78,34 +77,34 @@ public class ClientAction {
*/ */
@ActionMapping("/clientInfo") @ActionMapping("/clientInfo")
@ApiOperation(value = "查询用户信息 用户可能是好友、陌生人、被拉黑名单的人") @ApiOperation(value = "查询用户信息 用户可能是好友、陌生人、被拉黑名单的人")
public WsResponse<ClientInfoVo> getClientInfo(@RequestParam(value = "data") ClientInfoParam clientInfoParam) { public WsResponse<ClientInfoVo> getClientInfo(ClientInfoParam data) {
ClientInfoVo clientInfoVo = imClientService.getClientInfo(clientInfoParam); ClientInfoVo clientInfoVo = imClientService.getClientInfo(data);
return WsResponse.ok(clientInfoVo); return WsResponse.ok(clientInfoVo);
} }
@ActionMapping("/updateHeadAndNickname") @ActionMapping("/updateHeadAndNickname")
@ApiOperation(value = "添加或修改头像和昵称") @ApiOperation(value = "添加或修改头像和昵称")
public WsResponse<Boolean> updateHeadAndNickname(@RequestParam(value = "data") ImClientHeadPortraitAndNicknameUpdate clientHeadPortraitAndNicknameUpdate) throws Exception { public WsResponse<Boolean> updateHeadAndNickname(ImClientHeadPortraitAndNicknameUpdate data) throws Exception {
log.info("添加或修改头像和昵称入参 {}", JSON.toJSONString(clientHeadPortraitAndNicknameUpdate)); log.info("添加或修改头像和昵称入参 {}", JSON.toJSONString(data));
boolean flag = imClientService.updateHeadAndNickname(clientHeadPortraitAndNicknameUpdate); boolean flag = imClientService.updateHeadAndNickname(data);
return WsResponse.ok(flag); return WsResponse.ok(flag);
} }
@ActionMapping("/updateHeadPortrait") @ActionMapping("/updateHeadPortrait")
@ApiOperation(value = "添加或修改头像") @ApiOperation(value = "添加或修改头像")
public WsResponse<Boolean> updateHeadPortrait(@RequestParam(value = "data") ImClientHeadPortraitAdd clientHeadPortraitAdd) throws Exception { public WsResponse<Boolean> updateHeadPortrait(ImClientHeadPortraitAdd data) throws Exception {
log.info("添加或修改头像入参 {}", JSON.toJSONString(clientHeadPortraitAdd)); log.info("添加或修改头像入参 {}", JSON.toJSONString(data));
boolean flag = imClientService.updateHeadPortrait(clientHeadPortraitAdd); boolean flag = imClientService.updateHeadPortrait(data);
return WsResponse.ok(flag); return WsResponse.ok(flag);
} }
@ActionMapping("/updateNickname") @ActionMapping("/updateNickname")
@ApiOperation(value = "添加或修改主昵称") @ApiOperation(value = "添加或修改主昵称")
public WsResponse<Boolean> updateNickname(@RequestParam(value = "data") ImClientNicknameAdd clientNicknameAdd) throws Exception { public WsResponse<Boolean> updateNickname(ImClientNicknameAdd data) throws Exception {
log.info("添加或修改主昵称入参 {}", JSON.toJSONString(clientNicknameAdd)); log.info("添加或修改主昵称入参 {}", JSON.toJSONString(data));
boolean flag = imClientService.updateNickname(clientNicknameAdd); boolean flag = imClientService.updateNickname(data);
return WsResponse.ok(flag); return WsResponse.ok(flag);
} }
...@@ -118,9 +117,9 @@ public class ClientAction { ...@@ -118,9 +117,9 @@ public class ClientAction {
*/ */
@ActionMapping("/logout") @ActionMapping("/logout")
@ApiOperation(value = "退出登陆 清除推送token等") @ApiOperation(value = "退出登陆 清除推送token等")
public WsResponse<Boolean> logout(@RequestParam(value = "data") LogoutParam param) { public WsResponse<Boolean> logout(LogoutParam data) {
log.info("退出登陆入参 {}", JSON.toJSONString(param)); log.info("退出登陆入参 {}", JSON.toJSONString(data));
boolean flag = imClientService.logout(param); boolean flag = imClientService.logout(data);
return WsResponse.ok(flag); return WsResponse.ok(flag);
} }
...@@ -132,13 +131,13 @@ public class ClientAction { ...@@ -132,13 +131,13 @@ public class ClientAction {
@ActionMapping("/onlineStatus") @ActionMapping("/onlineStatus")
@ApiOperation(value = "获取用户在线状态(批量)") @ApiOperation(value = "获取用户在线状态(批量)")
public WsResponse<List<ImOnlineStatusVo>> getOnlineStatus( public WsResponse<List<ImOnlineStatusVo>> getOnlineStatus(
@RequestParam(value = "data") GetOnlineStatusParam getOnlineStatusParam) { GetOnlineStatusParam data) {
// shiro线程中获取当前token // shiro线程中获取当前token
ImClient imClient = contextService.getImClientIfNotNullOrThrow(); ImClient imClient = contextService.getImClientIfNotNullOrThrow();
ImApplication imApplication = contextService.getImApplicationIfNotNullOrThrow(imClient.getFkAppid()); ImApplication imApplication = contextService.getImApplicationIfNotNullOrThrow(imClient.getFkAppid());
ArrayList<ImOnlineStatusVo> imOnlineStatusVos = new ArrayList<>(); List<ImOnlineStatusVo> imOnlineStatusVos = new ArrayList<>();
for (String clientId : getOnlineStatusParam.getClientIds()) { for (String clientId : data.getClientIds()) {
ImOnlineStatusVo imOnlineStatusVo = new ImOnlineStatusVo(); ImOnlineStatusVo imOnlineStatusVo = new ImOnlineStatusVo();
// todo 需要改成批量 // todo 需要改成批量
......
...@@ -5,11 +5,11 @@ import io.swagger.annotations.ApiOperation; ...@@ -5,11 +5,11 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.List; import java.util.List;
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 org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestParam;
import com.wecloud.dispatch.annotation.ActionMapping; import com.wecloud.dispatch.annotation.ActionMapping;
import com.wecloud.im.param.ImConvMemeClientRemarkNameParam; import com.wecloud.im.param.ImConvMemeClientRemarkNameParam;
...@@ -34,11 +34,12 @@ public class ConversationMembersAction { ...@@ -34,11 +34,12 @@ public class ConversationMembersAction {
/** /**
* 添加或修改会话成员备注 * 添加或修改会话成员备注
* @return
*/ */
@ActionMapping("/updateClientRemarkName") @ActionMapping("/updateClientRemarkName")
@ApiOperation(value = "添加或修改会话成员备注", notes = "权限:目前只有client成员自己有权限操作") @ApiOperation(value = "添加或修改会话成员备注", notes = "权限:目前只有client成员自己有权限操作")
public WsResponse<Boolean> saveOrUpdateClientRemarkName(@RequestParam(value = "data") ImConvMemeClientRemarkNameParam convMemeClientRemarkNameParam) throws Exception { public WsResponse<Map<String, Boolean>> saveOrUpdateClientRemarkName(ImConvMemeClientRemarkNameParam data) throws Exception {
imConversationMembersService.saveOrUpdateClientRemarkName(convMemeClientRemarkNameParam); imConversationMembersService.saveOrUpdateClientRemarkName(data);
return WsResponse.ok(); return WsResponse.ok();
} }
...@@ -48,8 +49,8 @@ public class ConversationMembersAction { ...@@ -48,8 +49,8 @@ public class ConversationMembersAction {
*/ */
@ActionMapping("/updateAttr") @ActionMapping("/updateAttr")
@ApiOperation(value = "添加或修改会话成员拓展字段", notes = "权限:目前只有client成员自己有权限操作") @ApiOperation(value = "添加或修改会话成员拓展字段", notes = "权限:目前只有client成员自己有权限操作")
public WsResponse<Boolean> saveOrUpdateAttr(@RequestParam(value = "data") ImConversationMemAttrUpdate conversationMemAttrUpdate) throws Exception { public WsResponse<Map<String, Boolean>> saveOrUpdateAttr(ImConversationMemAttrUpdate data) throws Exception {
boolean r = imConversationMembersService.saveOrUpdateAttr(conversationMemAttrUpdate); boolean r = imConversationMembersService.saveOrUpdateAttr(data);
if (r) { if (r) {
return WsResponse.ok(); return WsResponse.ok();
} else { } else {
...@@ -63,7 +64,7 @@ public class ConversationMembersAction { ...@@ -63,7 +64,7 @@ public class ConversationMembersAction {
*/ */
@ActionMapping("/getList") @ActionMapping("/getList")
@ApiOperation(value = "获取会话中成员表列表") @ApiOperation(value = "获取会话中成员表列表")
public WsResponse<List<ConversationMemberVo>> getImConversationMembersList(@RequestParam(value = "data") @Validated ListConversationMembersParam listConversationMembersParam) throws Exception { public WsResponse<List<ConversationMemberVo>> getImConversationMembersList(@Validated ListConversationMembersParam data) throws Exception {
return WsResponse.ok(imConversationMembersService.getImConversationMembersList(listConversationMembersParam)); return WsResponse.ok(imConversationMembersService.getImConversationMembersList(data));
} }
} }
package com.wecloud.im.action; package com.wecloud.im.action;
import com.wecloud.dispatch.annotation.ActionMapping;
import com.wecloud.im.param.ImMsgReceivedStatusUpdate;
import com.wecloud.im.param.MsgReadStatusUpdateParam;
import com.wecloud.im.param.UpdateMsgReadStatusByConversationParam;
import com.wecloud.im.service.ImInboxService;
import com.wecloud.im.ws.model.WsResponse;
import io.geekidea.springbootplus.framework.common.api.ApiCode; import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.Map;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam; import com.wecloud.dispatch.annotation.ActionMapping;
import com.wecloud.im.param.ImMsgReceivedStatusUpdate;
import com.wecloud.im.param.MsgReadStatusUpdateParam;
import com.wecloud.im.param.UpdateMsgReadStatusByConversationParam;
import com.wecloud.im.service.ImInboxService;
import com.wecloud.im.ws.model.WsResponse;
/** /**
* @Author luozh * @Author luozh
...@@ -36,8 +38,8 @@ public class InboxAction { ...@@ -36,8 +38,8 @@ public class InboxAction {
*/ */
@ActionMapping("/msgReceivedUpdate") @ActionMapping("/msgReceivedUpdate")
@ApiOperation(value = "消息修改为已接收状态") @ApiOperation(value = "消息修改为已接收状态")
public WsResponse<Boolean> updateImMsgReceived(@RequestParam(value = "data") @Validated ImMsgReceivedStatusUpdate imMsgReceivedUpdate) throws Exception { public WsResponse<Map<String, Boolean>> updateImMsgReceived(@Validated ImMsgReceivedStatusUpdate data) throws Exception {
imInboxService.updateImMsgReceived(imMsgReceivedUpdate); imInboxService.updateImMsgReceived(data);
return WsResponse.ok(); return WsResponse.ok();
} }
...@@ -46,11 +48,11 @@ public class InboxAction { ...@@ -46,11 +48,11 @@ public class InboxAction {
*/ */
@ActionMapping("/msgReadUpdate") @ActionMapping("/msgReadUpdate")
@ApiOperation(value = "消息修改为已读状态") @ApiOperation(value = "消息修改为已读状态")
public WsResponse<Boolean> updateInMsgReadUpdate(@RequestParam(value = "data") MsgReadStatusUpdateParam msgReadStatusUpdateParam) throws Exception { public WsResponse<Map<String, Boolean>> updateInMsgReadUpdate(MsgReadStatusUpdateParam data) throws Exception {
if (CollectionUtils.isEmpty(msgReadStatusUpdateParam.getMsgIds())) { if (CollectionUtils.isEmpty(data.getMsgIds())) {
return WsResponse.fail(ApiCode.PARAMETER_EXCEPTION); return WsResponse.fail(ApiCode.PARAMETER_EXCEPTION);
} }
imInboxService.updateImMsgRead(msgReadStatusUpdateParam); imInboxService.updateImMsgRead(data);
return WsResponse.ok(); return WsResponse.ok();
} }
...@@ -59,10 +61,10 @@ public class InboxAction { ...@@ -59,10 +61,10 @@ public class InboxAction {
*/ */
@ActionMapping("/updateMsgReadStatusByConversation") @ActionMapping("/updateMsgReadStatusByConversation")
@ApiOperation(value = "会话消息修改为已读状态") @ApiOperation(value = "会话消息修改为已读状态")
public WsResponse<Boolean> updateMsgReadStatusByConversation(@RequestParam(value = "data") UpdateMsgReadStatusByConversationParam param) throws Exception { public WsResponse<Boolean> updateMsgReadStatusByConversation(UpdateMsgReadStatusByConversationParam data) throws Exception {
if (param.getConversationId() == null) { if (data.getConversationId() == null) {
return WsResponse.fail(ApiCode.PARAMETER_EXCEPTION); return WsResponse.fail(ApiCode.PARAMETER_EXCEPTION);
} }
return WsResponse.ok(imInboxService.updateMsgReadStatusByConversation(param)); return WsResponse.ok(imInboxService.updateMsgReadStatusByConversation(data));
} }
} }
package com.wecloud.im.action; package com.wecloud.im.action;
import com.alibaba.fastjson.JSON;
import com.wecloud.dispatch.annotation.ActionMapping;
import com.wecloud.im.param.*;
import com.wecloud.im.ws.model.WsResponse;
import com.wecloud.multimeet.service.MultiMeetService;
import io.geekidea.springbootplus.framework.common.api.ApiCode; import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.Map;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestParam;
import com.alibaba.fastjson.JSON;
import com.wecloud.dispatch.annotation.ActionMapping;
import com.wecloud.im.param.AgreeToMultiMeetParam;
import com.wecloud.im.param.HeartbeatMultiMeetParam;
import com.wecloud.im.param.InviteToMultiMeetParam;
import com.wecloud.im.param.LeaveFromMultiMeetParam;
import com.wecloud.im.param.NotAnsweredMultiMeetParam;
import com.wecloud.im.param.RejectToMultiMeetParam;
import com.wecloud.im.ws.model.WsResponse;
import com.wecloud.multimeet.service.MultiMeetService;
@Slf4j @Slf4j
@Component @Component
...@@ -26,54 +34,55 @@ public class MultiMeetAction { ...@@ -26,54 +34,55 @@ public class MultiMeetAction {
/** /**
* 邀请客户端加入 * 邀请客户端加入
* @return
*/ */
@ActionMapping("/invite") @ActionMapping("/invite")
@ApiOperation(value = "邀请加入多人音视频会议", notes = "邀请加入多人音视频会议") @ApiOperation(value = "邀请加入多人音视频会议", notes = "邀请加入多人音视频会议")
public WsResponse<Boolean> invite(@RequestParam(value = "data") @Validated InviteToMultiMeetParam param) { public WsResponse<Map<String, Boolean>> invite(@Validated InviteToMultiMeetParam data) {
log.info("邀请加入多人音视频会议入参 {}", JSON.toJSONString(param)); log.info("邀请加入多人音视频会议入参 {}", JSON.toJSONString(data));
if (CollectionUtils.isEmpty(param.getToClients())) { if (CollectionUtils.isEmpty(data.getToClients())) {
return WsResponse.fail(ApiCode.PARAMETER_EXCEPTION); return WsResponse.fail(ApiCode.PARAMETER_EXCEPTION);
} }
multiMeetService.invite(param); multiMeetService.invite(data);
return WsResponse.ok(); return WsResponse.ok();
} }
@ActionMapping("/reject") @ActionMapping("/reject")
@ApiOperation(value = "拒接进入会议", notes = "拒接进入会议") @ApiOperation(value = "拒接进入会议", notes = "拒接进入会议")
public WsResponse<Boolean> reject(@RequestParam(value = "data") RejectToMultiMeetParam param) { public WsResponse<Map<String, Boolean>> reject(RejectToMultiMeetParam data) {
log.info("拒绝加入多人音视频会议入参 {}", JSON.toJSONString(param)); log.info("拒绝加入多人音视频会议入参 {}", JSON.toJSONString(data));
multiMeetService.reject(param); multiMeetService.reject(data);
return WsResponse.ok(); return WsResponse.ok();
} }
@ActionMapping("/agree") @ActionMapping("/agree")
@ApiOperation(value = "同意进入会议", notes = "同意进入会议") @ApiOperation(value = "同意进入会议", notes = "同意进入会议")
public WsResponse<Boolean> agree(@RequestParam(value = "data") AgreeToMultiMeetParam param) { public WsResponse<Map<String, Boolean>> agree(AgreeToMultiMeetParam data) {
log.info("同意进入多人音视频会议入参 {}", JSON.toJSONString(param)); log.info("同意进入多人音视频会议入参 {}", JSON.toJSONString(data));
multiMeetService.agree(param); multiMeetService.agree(data);
return WsResponse.ok(); return WsResponse.ok();
} }
@ActionMapping("/leave") @ActionMapping("/leave")
@ApiOperation(value = "主动挂断(离开会议)", notes = "主动挂断(离开会议)") @ApiOperation(value = "主动挂断(离开会议)", notes = "主动挂断(离开会议)")
public WsResponse<Boolean> leave(@RequestParam(value = "data") LeaveFromMultiMeetParam param) { public WsResponse<Map<String, Boolean>> leave(LeaveFromMultiMeetParam data) {
log.info("主动挂断多人音视频会议入参 {}", JSON.toJSONString(param)); log.info("主动挂断多人音视频会议入参 {}", JSON.toJSONString(data));
multiMeetService.leave(param); multiMeetService.leave(data);
return WsResponse.ok(); return WsResponse.ok();
} }
@ActionMapping("/notAnswered") @ActionMapping("/notAnswered")
@ApiOperation(value = "未接听", notes = "未接听") @ApiOperation(value = "未接听", notes = "未接听")
public WsResponse<Boolean> notAnswered(@RequestParam(value = "data") NotAnsweredMultiMeetParam param) { public WsResponse<Map<String, Boolean>> notAnswered(NotAnsweredMultiMeetParam data) {
log.info("多人音视频会议未接听入参 {}", JSON.toJSONString(param)); log.info("多人音视频会议未接听入参 {}", JSON.toJSONString(data));
multiMeetService.notAnswered(param); multiMeetService.notAnswered(data);
return WsResponse.ok(); return WsResponse.ok();
} }
@ActionMapping("/heartbeat") @ActionMapping("/heartbeat")
@ApiOperation(value = "发送心跳", notes = "发送心跳") @ApiOperation(value = "发送心跳", notes = "发送心跳")
public WsResponse<Boolean> heartbeat(@RequestParam(value = "data") HeartbeatMultiMeetParam param) { public WsResponse<Map<String, Boolean>> heartbeat(HeartbeatMultiMeetParam data) {
multiMeetService.heartbeat(param); multiMeetService.heartbeat(data);
return WsResponse.ok(); return WsResponse.ok();
} }
} }
package com.wecloud.im.action; package com.wecloud.im.action;
import com.wecloud.dispatch.annotation.ActionMapping;
import com.wecloud.im.enums.CallTypeEnum;
import com.wecloud.im.param.rtc.*;
import com.wecloud.im.ws.model.WsResponse;
import com.wecloud.rtc.service.RtcService;
import io.geekidea.springbootplus.framework.common.api.ApiCode; import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum; import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.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 org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam; import com.wecloud.dispatch.annotation.ActionMapping;
import com.wecloud.im.enums.CallTypeEnum;
import com.wecloud.im.param.rtc.CandidateForwardParam;
import com.wecloud.im.param.rtc.CreateRtcChannelParam;
import com.wecloud.im.param.rtc.CreateRtcChannelResult;
import com.wecloud.im.param.rtc.JoinRtcChannelParam;
import com.wecloud.im.param.rtc.LeaveRtcChannelParam;
import com.wecloud.im.param.rtc.RejectRtcChannelParam;
import com.wecloud.im.param.rtc.SdpForwardParam;
import com.wecloud.im.ws.model.WsResponse;
import com.wecloud.rtc.service.RtcService;
@Slf4j @Slf4j
@Component @Component
...@@ -29,46 +37,46 @@ public class RtcAction { ...@@ -29,46 +37,46 @@ public class RtcAction {
*/ */
@ActionMapping("/createAndCall") @ActionMapping("/createAndCall")
@ApiOperation(value = "创建频道,并邀请客户端加入", notes = "创建频道,并邀请客户端加入") @ApiOperation(value = "创建频道,并邀请客户端加入", notes = "创建频道,并邀请客户端加入")
public WsResponse<CreateRtcChannelResult> createAndCall(@RequestParam(value = "data") CreateRtcChannelParam createRtcChannelParam) { public WsResponse<CreateRtcChannelResult> createAndCall(CreateRtcChannelParam data) {
if (BaseEnum.valueOf(CallTypeEnum.class, createRtcChannelParam.getCallType()) == null) { if (BaseEnum.valueOf(CallTypeEnum.class, data.getCallType()) == null) {
return WsResponse.fail(ApiCode.PARAMETER_EXCEPTION); return WsResponse.fail(ApiCode.PARAMETER_EXCEPTION);
} }
return WsResponse.ok(rtcService.createAndCall(createRtcChannelParam)); return WsResponse.ok(rtcService.createAndCall(data));
} }
@ActionMapping("/join") @ActionMapping("/join")
@ApiOperation(value = "同意进入频道", notes = "") @ApiOperation(value = "同意进入频道", notes = "")
public WsResponse<Boolean> join(@RequestParam(value = "data") JoinRtcChannelParam joinRtcChannelParam) { public WsResponse<Map<String, Boolean>> join(JoinRtcChannelParam data) {
rtcService.join(joinRtcChannelParam); rtcService.join(data);
return WsResponse.ok(); return WsResponse.ok();
} }
@ActionMapping("/reject") @ActionMapping("/reject")
@ApiOperation(value = "拒接进入频道", notes = "") @ApiOperation(value = "拒接进入频道", notes = "")
public WsResponse<Boolean> reject(@RequestParam(value = "data") RejectRtcChannelParam rejectRtcChannelParam) { public WsResponse<Map<String, Boolean>> reject(RejectRtcChannelParam data) {
rtcService.reject(rejectRtcChannelParam); rtcService.reject(data);
return WsResponse.ok(); return WsResponse.ok();
} }
@ActionMapping("/leave") @ActionMapping("/leave")
@ApiOperation(value = "主动挂断(离开频道)", notes = "") @ApiOperation(value = "主动挂断(离开频道)", notes = "")
public WsResponse<Boolean> leave(@RequestParam(value = "data") LeaveRtcChannelParam leaveRtcChannelParam) { public WsResponse<Map<String, Boolean>> leave(LeaveRtcChannelParam data) {
rtcService.leave(leaveRtcChannelParam); rtcService.leave(data);
return WsResponse.ok(); return WsResponse.ok();
} }
@ActionMapping("/sdpForward") @ActionMapping("/sdpForward")
@ApiOperation(value = "SDP数据转发", notes = "") @ApiOperation(value = "SDP数据转发", notes = "")
public WsResponse<Boolean> sdpForward(@RequestParam(value = "data") SdpForwardParam sdpForwardParam) { public WsResponse<Map<String, Boolean>> sdpForward(SdpForwardParam data) {
rtcService.sdpForward(sdpForwardParam); rtcService.sdpForward(data);
return WsResponse.ok(); return WsResponse.ok();
} }
@ActionMapping("/candidateForward") @ActionMapping("/candidateForward")
@ApiOperation(value = "candidate候选者数据转发", notes = "") @ApiOperation(value = "candidate候选者数据转发", notes = "")
public WsResponse<Boolean> candidateForward(@RequestParam(value = "data") CandidateForwardParam candidateForwardParam) { public WsResponse<Map<String, Boolean>> candidateForward(CandidateForwardParam data) {
rtcService.candidateForward(candidateForwardParam); rtcService.candidateForward(data);
return WsResponse.ok(); return WsResponse.ok();
} }
} }
package com.wecloud.im.ws.model; package com.wecloud.im.ws.model;
import com.wecloud.im.ws.enums.WsResponseCmdEnum;
import io.geekidea.springbootplus.framework.common.api.ApiCode; import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.config.il8n.I18nMessageUtil; import io.geekidea.springbootplus.framework.config.il8n.I18nMessageUtil;
import io.geekidea.springbootplus.framework.config.il8n.LanguageEnum; import io.geekidea.springbootplus.framework.config.il8n.LanguageEnum;
...@@ -9,6 +8,11 @@ import lombok.experimental.Accessors; ...@@ -9,6 +8,11 @@ import lombok.experimental.Accessors;
import java.io.IOException; import java.io.IOException;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collections;
import java.util.Map;
import com.wecloud.dispatch.util.ActionRequestHolder;
import com.wecloud.im.ws.enums.WsResponseCmdEnum;
/** /**
* @Description websocket服务端响应消息和下方消息的封装对象 * @Description websocket服务端响应消息和下方消息的封装对象
...@@ -67,20 +71,20 @@ public class WsResponse<T> implements Serializable { ...@@ -67,20 +71,20 @@ public class WsResponse<T> implements Serializable {
message = success; message = success;
} }
WsResponse<T> response = new WsResponse<>(); WsResponse<T> response = new WsResponse<>();
response.setCmd(cmd).setCode(apiCode.getCode()).setMsg(message).setData(data); response.setCmd(cmd).setCode(apiCode.getCode()).setMsg(message).setData(data).setReqId(ActionRequestHolder.getReqId());
return response; return response;
} }
public static WsResponse<Boolean> ok() { public static WsResponse<Map<String, Boolean>> ok() {
return ok(true); return ok(Collections.emptyMap());
} }
public static <T> WsResponse<T> ok(T data) { public static <T> WsResponse<T> ok(T data) {
return result(ApiCode.SUCCESS, data); return result(ApiCode.SUCCESS, data);
} }
public static WsResponse<Boolean> fail() { public static WsResponse<Map<String, Boolean>> fail() {
return fail(""); return ok(Collections.emptyMap());
} }
public static WsResponse<Boolean> fail(String message) { public static WsResponse<Boolean> fail(String message) {
......
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