first commit

This commit is contained in:
hujun
2026-03-20 12:50:41 +08:00
commit 24fce055fd
88 changed files with 7655 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
package com.xuezhanmaster.ws.service;
import com.xuezhanmaster.game.event.GameEvent;
import com.xuezhanmaster.ws.dto.PrivateActionMessage;
import com.xuezhanmaster.ws.dto.PrivateTeachingMessage;
import com.xuezhanmaster.ws.dto.PublicGameMessage;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class GameMessagePublisher {
private final SimpMessagingTemplate messagingTemplate;
public GameMessagePublisher(SimpMessagingTemplate messagingTemplate) {
this.messagingTemplate = messagingTemplate;
}
public void publishPublicEvent(GameEvent event) {
messagingTemplate.convertAndSend(
"/topic/games/" + event.gameId() + "/events",
new PublicGameMessage(
event.gameId(),
event.eventType().name(),
event.seatNo(),
event.payload(),
event.createdAt()
)
);
}
public void publishPrivateActionRequired(String gameId, String userId, List<String> availableActions, int currentSeatNo) {
messagingTemplate.convertAndSend(
"/topic/users/" + userId + "/actions",
new PrivateActionMessage(gameId, userId, availableActions, currentSeatNo)
);
}
public void publishPrivateTeaching(String gameId, String userId, String teachingMode, String recommendedAction, String explanation) {
messagingTemplate.convertAndSend(
"/topic/users/" + userId + "/teaching",
new PrivateTeachingMessage(gameId, userId, teachingMode, recommendedAction, explanation)
);
}
}