|
@@ -19,7 +19,6 @@ import com.zanxiang.game.module.mybatis.entity.KfRoomMsg;
|
|
|
import com.zanxiang.game.module.mybatis.entity.KfSessionUser;
|
|
|
import com.zanxiang.module.redis.service.IDistributedLockComponent;
|
|
|
import com.zanxiang.module.util.JsonUtil;
|
|
|
-import com.zanxiang.module.util.bean.BeanUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.logging.log4j.util.Strings;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -30,7 +29,10 @@ import reactor.util.function.Tuple2;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.*;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
/**
|
|
@@ -122,6 +124,18 @@ public class KfMsgWebsocketHandler implements WebSocketHandler {
|
|
|
log.error("结束会话, kfUserId : {}, param : {}", SecurityUtil.getUserId(), JsonUtil.toString(param));
|
|
|
kfFinishSession(session, webSocketMsgType, gameId, param.getRoomId());
|
|
|
break;
|
|
|
+ case WEBSOCKET_MSG_GET_USER:
|
|
|
+ log.error("获取玩家信息, kfUserId : {}, openId : {}", SecurityUtil.getUserId(), param.getOpenId());
|
|
|
+ getUser(session, param);
|
|
|
+ break;
|
|
|
+ case WEBSOCKET_MSG_GET_ROLE_LIST:
|
|
|
+ log.error("获取玩家角色列表, kfUserId : {}, openId : {}", SecurityUtil.getUserId(), param.getOpenId());
|
|
|
+ getRoleList(session, param);
|
|
|
+ break;
|
|
|
+ case WEBSOCKET_MSG_GET_ORDER_LIST:
|
|
|
+ log.error("获取玩家订单列表, kfUserId : {}, openId : {}", SecurityUtil.getUserId(), param.getOpenId());
|
|
|
+ getOrderList(session, param);
|
|
|
+ break;
|
|
|
case WEBSOCKET_MSG_QUICK_REPLY:
|
|
|
// 快捷回复,可以添加对应的处理逻辑
|
|
|
break;
|
|
@@ -160,6 +174,49 @@ public class KfMsgWebsocketHandler implements WebSocketHandler {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ private void getUser(WebSocketSession session, KfWebSocketMsgParam param) {
|
|
|
+ if (Strings.isBlank(param.getOpenId())) {
|
|
|
+ this.sendMessage(session, KfWebSocketMsgDTO.fail(param.getWebSocketMsgType(),
|
|
|
+ "获取玩家信息参数错误, openId不可为空, param : " + JsonUtil.toString(param)));
|
|
|
+ }
|
|
|
+ KfWebSocketMsgDTO.UserBean userBean = kfRoomService.getUserBean(param.getOpenId());
|
|
|
+ this.sendMessage(session, KfWebSocketMsgDTO.builder()
|
|
|
+ .webSocketMsgType(param.getWebSocketMsgType())
|
|
|
+ .kfUserId(SecurityUtil.getUserId())
|
|
|
+ .user(userBean)
|
|
|
+ .build());
|
|
|
+ }
|
|
|
+
|
|
|
+ private void getRoleList(WebSocketSession session, KfWebSocketMsgParam param) {
|
|
|
+ if (Strings.isBlank(param.getOpenId())) {
|
|
|
+ this.sendMessage(session, KfWebSocketMsgDTO.fail(param.getWebSocketMsgType(),
|
|
|
+ "获取玩家角色列表参数错误, openId不可为空, param : " + JsonUtil.toString(param)));
|
|
|
+ }
|
|
|
+ Tuple2<KfWebSocketMsgDTO.PageBean, List<KfWebSocketMsgDTO.GameRoleBean>> tuple2 = kfRoomService
|
|
|
+ .getRoleBeanList(param.getOpenId(), param.getPage());
|
|
|
+ this.sendMessage(session, KfWebSocketMsgDTO.builder()
|
|
|
+ .webSocketMsgType(param.getWebSocketMsgType())
|
|
|
+ .kfUserId(SecurityUtil.getUserId())
|
|
|
+ .page(tuple2.getT1())
|
|
|
+ .roleList(tuple2.getT2())
|
|
|
+ .build());
|
|
|
+ }
|
|
|
+
|
|
|
+ private void getOrderList(WebSocketSession session, KfWebSocketMsgParam param) {
|
|
|
+ if (Strings.isBlank(param.getOpenId())) {
|
|
|
+ this.sendMessage(session, KfWebSocketMsgDTO.fail(param.getWebSocketMsgType(),
|
|
|
+ "获取玩家订单列表参数错误, openId不可为空, param : " + JsonUtil.toString(param)));
|
|
|
+ }
|
|
|
+ Tuple2<KfWebSocketMsgDTO.PageBean, List<KfWebSocketMsgDTO.OrderBean>> tuple2 = kfRoomService
|
|
|
+ .getOrderBeanList(param.getOpenId(), param.getPage());
|
|
|
+ this.sendMessage(session, KfWebSocketMsgDTO.builder()
|
|
|
+ .webSocketMsgType(param.getWebSocketMsgType())
|
|
|
+ .kfUserId(SecurityUtil.getUserId())
|
|
|
+ .page(tuple2.getT1())
|
|
|
+ .orderList(tuple2.getT2())
|
|
|
+ .build());
|
|
|
+ }
|
|
|
+
|
|
|
private void kfSendMsg(WebSocketSession session, KfWebSocketMsgParam param) {
|
|
|
if (param.getRoomId() == null) {
|
|
|
this.sendMessage(session, KfWebSocketMsgDTO.fail(param.getWebSocketMsgType(), "参数错误,roomId为空"));
|
|
@@ -208,28 +265,10 @@ public class KfMsgWebsocketHandler implements WebSocketHandler {
|
|
|
return;
|
|
|
}
|
|
|
//发送成功, 消息入库
|
|
|
- kfRoomMsgService.save(this.transform(param.getGameId(), kfRoom, msgContent));
|
|
|
+ kfRoomMsgService.sendMsgSave(param.getGameId(), kfRoom, msgContent);
|
|
|
this.sendMessage(session, KfWebSocketMsgDTO.ok(param.getWebSocketMsgType()));
|
|
|
}
|
|
|
|
|
|
- private KfRoomMsg transform(Long gameId, KfRoom kfRoom, KfWebSocketMsgParam.MsgContentBean msgContent) {
|
|
|
- return KfRoomMsg.builder()
|
|
|
- .msgId(UUID.randomUUID().toString().replace("-", ""))
|
|
|
- .msgType(msgContent.getMsgType().getValue())
|
|
|
- .gameId(gameId)
|
|
|
- .openId(kfRoom.getOpenId())
|
|
|
- .userId(kfRoom.getUserId())
|
|
|
- .kfUserId(kfRoom.getKfUserId())
|
|
|
- .readStatus(Boolean.TRUE)
|
|
|
- .roomId(kfRoom.getId())
|
|
|
- .msgOwner(KfRoomMsgOwnerEnum.KF_MSG_OWNER_KF.getValue())
|
|
|
- .content(JsonUtil.toString(BeanUtil.copy(msgContent, KfWebSocketMsgDTO.MsgContentBean.class)))
|
|
|
- .source(JsonUtil.toString(msgContent))
|
|
|
- .createTime(LocalDateTime.now())
|
|
|
- .updateTime(LocalDateTime.now())
|
|
|
- .build();
|
|
|
- }
|
|
|
-
|
|
|
private void kfFinishSession(WebSocketSession session, KfWebSocketMsgEnum webSocketMsgType, Long gameId, Long roomId) {
|
|
|
//房间在线状态更新
|
|
|
kfRoomService.update(new LambdaUpdateWrapper<KfRoom>()
|