유저 접속상태 추가
킥처리시 reason 추가 유저 킥 처리
This commit is contained in:
@@ -19,10 +19,10 @@ public class MessageHandlerService {
|
||||
this.rabbitMqService = rabbitMqService;
|
||||
}
|
||||
|
||||
public void sendUserKickMessage(String userGuid, String serverName){
|
||||
public void sendUserKickMessage(String userGuid, String serverName, String reason){
|
||||
var user_kick_builder = ServerMessage.MOS2GS_NTF_USER_KICK.newBuilder();
|
||||
user_kick_builder.setUserGuid(userGuid);
|
||||
user_kick_builder.setKickReasonMsg("");
|
||||
user_kick_builder.setKickReasonMsg(String.format("backoffice %s", reason));
|
||||
user_kick_builder.setLogoutReasonType(LogoutReasonType.LogoutReasonType_None);
|
||||
|
||||
rabbitMqService.SendMessage(user_kick_builder.build(), serverName);
|
||||
|
||||
@@ -30,6 +30,11 @@ public class UsersController {
|
||||
@RequestBody UsersRequest requestBody){
|
||||
return ResponseEntity.ok().body( usersService.changeAdminLevel(requestBody));
|
||||
}
|
||||
@PutMapping("/user-kick")
|
||||
public ResponseEntity<UsersResponse> userKick(
|
||||
@RequestBody UsersRequest requestBody){
|
||||
return ResponseEntity.ok().body( usersService.userKick(requestBody));
|
||||
}
|
||||
@GetMapping("/find-users")
|
||||
public ResponseEntity<UsersResponse> findUsers(
|
||||
@RequestParam Map<String, String> requestParams){
|
||||
|
||||
@@ -62,7 +62,7 @@ public class ItemsService {
|
||||
var itemCount = itemDeleteRequest.getItemCount();
|
||||
|
||||
//UserKick
|
||||
userGameSessionService.kickUserSession(userGuid);
|
||||
userGameSessionService.kickUserSession(userGuid, "item delete");
|
||||
//ItemDelete
|
||||
dynamoDBQueryServiceBase.deleteUserItem(userGuid, itemGuid);
|
||||
|
||||
|
||||
@@ -26,15 +26,20 @@ public class UserGameSessionService {
|
||||
this.messageHandlerService = messageHandlerService;
|
||||
}
|
||||
|
||||
public boolean userSession(String userGuid){
|
||||
var loginSession = redisUserInfoService.getUserLoginSessionInfo(userGuid);
|
||||
|
||||
public void kickUserSession(String userGuid){
|
||||
return loginSession != null;
|
||||
}
|
||||
|
||||
public void kickUserSession(String userGuid, String reason){
|
||||
|
||||
var loginSession = redisUserInfoService.getUserLoginSessionInfo(userGuid);
|
||||
|
||||
//게임이 접속중 이면 kick 하고 2초 대기
|
||||
if(null != loginSession ){
|
||||
var serverName = loginSession.getCurrentServer();
|
||||
messageHandlerService.sendUserKickMessage(userGuid, serverName);
|
||||
messageHandlerService.sendUserKickMessage(userGuid, serverName, reason);
|
||||
|
||||
//여기서 2초 정도 대기(게임 메모리 정리를 위해)
|
||||
try{
|
||||
|
||||
@@ -89,6 +89,23 @@ public class UsersService {
|
||||
|
||||
}
|
||||
|
||||
// 유저 킥
|
||||
public UsersResponse userKick(UsersRequest usersRequest){
|
||||
String guid = usersRequest.getGuid();
|
||||
String adminUser = CommonUtils.getAdmin().getEmail();
|
||||
|
||||
userGameSessionService.kickUserSession(guid, String.format("admin %s kick out", adminUser));
|
||||
|
||||
return UsersResponse.builder()
|
||||
.resultData(UsersResponse.ResultData.builder()
|
||||
.message(SuccessCode.SUCCESS.getMessage())
|
||||
.build())
|
||||
.status(CommonCode.SUCCESS.getHttpStatus())
|
||||
.result(CommonCode.SUCCESS.getResult())
|
||||
.build();
|
||||
|
||||
}
|
||||
|
||||
// 유정 정보 조회 닉네임,GUID,Account ID
|
||||
public UsersResponse findUsers(Map requestParam){
|
||||
|
||||
@@ -105,6 +122,7 @@ public class UsersService {
|
||||
.result(CommonCode.SUCCESS.getResult())
|
||||
.build();
|
||||
}
|
||||
|
||||
public UsersResponse getBasicInfo(String guid){
|
||||
|
||||
String account_id = dynamoDBService.getGuidByAccountId(guid);
|
||||
@@ -114,12 +132,14 @@ public class UsersService {
|
||||
// charInfo
|
||||
Map<String, Object> charInfo = dynamoDBService.getCharInfo(guid);
|
||||
|
||||
boolean userSession = userGameSessionService.userSession(guid);
|
||||
|
||||
return UsersResponse.builder()
|
||||
.resultData(
|
||||
UsersResponse.ResultData.builder()
|
||||
.charInfo((UsersResponse.CharInfo) charInfo.get("charInfo"))
|
||||
.userInfo((UsersResponse.UserInfo) userInfo.get("userInfo"))
|
||||
.userSession(userSession)
|
||||
.build()
|
||||
)
|
||||
.status(CommonCode.SUCCESS.getHttpStatus())
|
||||
@@ -227,7 +247,7 @@ public class UsersService {
|
||||
int current_cnt = Integer.parseInt(requestParams.get("current_cnt"));
|
||||
int update_cnt = Integer.parseInt(requestParams.get("cnt"));
|
||||
|
||||
userGameSessionService.kickUserSession(guid);
|
||||
userGameSessionService.kickUserSession(guid, "Item delete");
|
||||
if(update_cnt >= current_cnt){
|
||||
String attrib = dynamoDBService.deleteItem(guid, item_guid);
|
||||
if(!attrib.isEmpty()){
|
||||
@@ -278,7 +298,7 @@ public class UsersService {
|
||||
String mail_guid = requestParams.get("mail_guid");
|
||||
String type = requestParams.get("type");
|
||||
|
||||
userGameSessionService.kickUserSession(guid);
|
||||
userGameSessionService.kickUserSession(guid, "delete mail");
|
||||
String attrib = dynamoDBService.deleteMail(type, guid, mail_guid);
|
||||
if(!attrib.isEmpty()){
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
@@ -296,7 +316,7 @@ public class UsersService {
|
||||
}
|
||||
|
||||
public UsersResponse deleteMailItem(MailRequest.DeleteMailItem deleteMailItem){
|
||||
userGameSessionService.kickUserSession(deleteMailItem.getGuid());
|
||||
userGameSessionService.kickUserSession(deleteMailItem.getGuid(), "delete mail item");
|
||||
JSONObject json = dynamoDBService.updateMailItem(deleteMailItem.getType(), deleteMailItem.getGuid(),
|
||||
deleteMailItem.getMailGuid(), deleteMailItem.getItemId(), deleteMailItem.getParrentCount(), deleteMailItem.getCount());
|
||||
if(!json.isEmpty()){
|
||||
|
||||
@@ -261,7 +261,7 @@ public class DynamicScheduler {
|
||||
log.error("blackListJob blackListSchedule timeOut : {}", blockUser);
|
||||
} else if(!nowDate.isBefore(blockUser.getStartDt())) {
|
||||
// 시작시간 도달 - INPROGRESS 처리
|
||||
userGameSessionService.kickUserSession(blockUser.getGuid());
|
||||
userGameSessionService.kickUserSession(blockUser.getGuid(), "user block");
|
||||
blackListService.updateScheduleBlockUser(blockUser, BlackList.STATUSTYPE.INPROGRESS);
|
||||
blackListService.updateBlackListStatus(blockUser.getId(), BlackList.STATUSTYPE.INPROGRESS);
|
||||
log.info("blackListJob blackListSchedule block start : {}", blockUser);
|
||||
|
||||
Reference in New Issue
Block a user