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