이용자 제재 스케줄 처리 수정

This commit is contained in:
2025-02-17 15:15:17 +09:00
parent 889455a379
commit 0b5c300fb1
3 changed files with 48 additions and 24 deletions

View File

@@ -98,7 +98,7 @@ public class BlackListService {
BlackList blackList = new BlackList();
blackList.setGuid(item);
//gameDB에서 닉네임, isWhiteUser, isBlackUser 조회
String nickName = dynamoDBService.getGuidByName(item);
String nickName = dynamodbUserService.getGuidByName(item);
if(nickName != ""){
blackList.setNickname(nickName);
}
@@ -191,7 +191,7 @@ public class BlackListService {
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_EXIT_ERROR.getMessage());
}
blackListRequest.setGuid(item.getGuid());
blackListRequest.setNickname(dynamoDBService.getGuidByName(item.getGuid()));
blackListRequest.setNickname(dynamodbUserService.getGuidByName(item.getGuid()));
blackListMapper.postBlackList(blackListRequest);
logger.info("postBlackList insertBlackList: {}",blackListRequest);
}
@@ -226,14 +226,14 @@ public class BlackListService {
JSONObject jsonObject = new JSONObject();
jsonObject.put("guid",blackList.getGuid());
jsonObject.put("name","");
//todo 닉네임을 dynamoDB에서 조회해와야 됨
map.put("content",jsonObject.toString());
historyMapper.saveLog(map);
//dynamoDB char# 테이블에 isBlackUser : false 값을 insert
// dynamoDBService.insertUpdateData(blackList.getGuid(),"isBlackUser", false);
logger.info("deleteBlackList delete: {}",map);
if(blackList.getStatus().equals(BlackList.STATUSTYPE.INPROGRESS))
dynamoDBService.updateBlockUserEnd(blackList.getGuid());
dynamodbUserService.updateBlockUser(BlackList.STATUSTYPE.EXPIRATION, blackList);
}
);

View File

@@ -179,32 +179,56 @@ public class DynamicScheduler {
List<BlackList> blackList = blackListService.getScheduleBlackList();
try{
LocalDateTime nowDate = LocalDateTime.now();
blackList.forEach(blockUser -> {
LocalDateTime nowDate = LocalDateTime.now();
LocalDateTime startTime = blockUser.getStartDt();
LocalDateTime endTime = blockUser.getEndDt();
BlackList.STATUSTYPE status = blockUser.getStatus();
// 이미 지난시간이면 fail 처리
if(nowDate.isAfter(endTime) && blockUser.getStatus().equals(BlackList.STATUSTYPE.WAIT)){
blackListService.updateBlackListStatus(blockUser.getId(), BlackList.STATUSTYPE.FAIL);
log.error("blackListJob blackListSchedule timeOut : {}", blockUser);
return;
// WAIT 상태 처리
if(status == BlackList.STATUSTYPE.WAIT) {
if(nowDate.isAfter(blockUser.getEndDt())) {
// 만료시간 초과 - FAIL 처리
blackListService.updateBlackListStatus(blockUser.getId(), BlackList.STATUSTYPE.FAIL);
log.error("blackListJob blackListSchedule timeOut : {}", blockUser);
} else if(!nowDate.isBefore(blockUser.getStartDt())) {
// 시작시간 도달 - INPROGRESS 처리
userGameSessionService.kickUserSession(blockUser.getGuid());
blackListService.updateScheduleBlockUser(blockUser, BlackList.STATUSTYPE.INPROGRESS);
blackListService.updateBlackListStatus(blockUser.getId(), BlackList.STATUSTYPE.INPROGRESS);
log.info("blackListJob blackListSchedule block start : {}", blockUser);
}
}
// 시작시간 지났으면 정지 처리
if(!nowDate.isBefore(startTime) && blockUser.getStatus().equals(BlackList.STATUSTYPE.WAIT)){
// user kick 처리
userGameSessionService.kickUserSession(blockUser.getGuid());
blackListService.updateScheduleBlockUser(blockUser, BlackList.STATUSTYPE.INPROGRESS);
blackListService.updateBlackListStatus(blockUser.getId(), BlackList.STATUSTYPE.INPROGRESS);
log.info("blackListJob blackListSchedule block start : {}", blockUser);
}
if(!nowDate.isBefore(endTime) && blockUser.getStatus().equals(BlackList.STATUSTYPE.INPROGRESS)){
// INPROGRESS 상태 처리
else if(status == BlackList.STATUSTYPE.INPROGRESS && !nowDate.isBefore(blockUser.getEndDt())) {
// 만료시간 도달 - EXPIRATION 처리
blackListService.updateScheduleBlockUser(blockUser, BlackList.STATUSTYPE.EXPIRATION);
blackListService.updateBlackListStatus(blockUser.getId(), BlackList.STATUSTYPE.EXPIRATION);
log.info("blackListJob blackListSchedule block end : {}", blockUser);
}
// LocalDateTime startTime = blockUser.getStartDt();
// LocalDateTime endTime = blockUser.getEndDt();
//
// // 상태가 대기중이고 만료시간이 지났으면 실패 처리
// if(nowDate.isAfter(endTime) && blockUser.getStatus().equals(BlackList.STATUSTYPE.WAIT)){
// blackListService.updateBlackListStatus(blockUser.getId(), BlackList.STATUSTYPE.FAIL);
// log.error("blackListJob blackListSchedule timeOut : {}", blockUser);
// return;
// }
//
// // 상태가 대기중이고 시작시간 지났으면 유저제재 처리
// if(!nowDate.isBefore(startTime) && blockUser.getStatus().equals(BlackList.STATUSTYPE.WAIT)){
// // user kick 처리
// userGameSessionService.kickUserSession(blockUser.getGuid());
// blackListService.updateScheduleBlockUser(blockUser, BlackList.STATUSTYPE.INPROGRESS);
// blackListService.updateBlackListStatus(blockUser.getId(), BlackList.STATUSTYPE.INPROGRESS);
// log.info("blackListJob blackListSchedule block start : {}", blockUser);
// }
//
// // 상태가 제재중이고 만료시간 지났으면 상태 종료 처리
// if(!nowDate.isBefore(endTime) && blockUser.getStatus().equals(BlackList.STATUSTYPE.INPROGRESS)){
// blackListService.updateScheduleBlockUser(blockUser, BlackList.STATUSTYPE.EXPIRATION);
// blackListService.updateBlackListStatus(blockUser.getId(), BlackList.STATUSTYPE.EXPIRATION);
// log.info("blackListJob blackListSchedule block end : {}", blockUser);
// }
});
}catch (Exception e){
log.error("blackListSchedule Exception: {}", e.getMessage());

View File

@@ -157,7 +157,7 @@
</select>
<select id="getCountByGuid" parameterType="java.lang.String" resultType="java.lang.Integer">
SELECT COUNT(*) FROM black_list WHERE guid = #{guid} and STATUS &lt;&gt; 'EXPIRATION' AND deleted = 0
SELECT COUNT(*) FROM black_list WHERE guid = #{guid} and STATUS in ('INPROGRESS','WAIT') AND deleted = 0
</select>
<insert id="postBlackList" parameterType="com.caliverse.admin.domain.request.BlackListRequest">