유저 닉네임 변경 처리
This commit is contained in:
@@ -57,7 +57,10 @@ public enum HISTORYTYPE {
|
||||
MENU_BANNER_DELETE("메뉴 배너 삭제"),
|
||||
ITEM_UPDATE("아이템 수정"),
|
||||
ITEM_DELETE("아이템 삭제"),
|
||||
USER_ADMIN_AUTH_UPDATE("유저 관리자 권한 수정")
|
||||
USER_ADMIN_AUTH_UPDATE("유저 관리자 권한 수정"),
|
||||
NICKNAME_REGISTRY_DELETE("닉네임 레지스트리 삭제"),
|
||||
NICKNAME_REGISTRY_ADD("닉네임 레지스트리 등록"),
|
||||
NICKNAME_UPDATE("닉네임 수정")
|
||||
;
|
||||
private String historyType;
|
||||
HISTORYTYPE(String type) {
|
||||
|
||||
@@ -56,7 +56,6 @@ public class UsersService {
|
||||
private final DynamodbUserService dynamodbUserService;
|
||||
private final DynamodbItemService dynamodbItemService;
|
||||
|
||||
//metadataHandler 어떻게 가져와야 되는가
|
||||
@Autowired
|
||||
private MetaDataHandler metaDataHandler;
|
||||
|
||||
@@ -69,17 +68,11 @@ public class UsersService {
|
||||
//신규 닉네임 유효성 체크
|
||||
ErrorCode check = CommonUtils.isValidNickname(newNickname);
|
||||
if(!check.equals(ErrorCode.SUCCESS)){
|
||||
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), check.getMessage() );
|
||||
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), check.toString() );
|
||||
}
|
||||
|
||||
String isGuid = dynamodbUserService.getNameByGuid(newNickname);
|
||||
|
||||
if(!isGuid.isEmpty()){
|
||||
//변경 닉네임이 존재합니다. 다시 시도해주세요.
|
||||
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.NICKNAME_EXIT_ERROR.getMessage() );
|
||||
}else{
|
||||
dynamoDBService.updateNickname(guid,nickname,newNickname);
|
||||
}
|
||||
userGameSessionService.kickUserSession(guid, String.format("%s User Nickname Changes", nickname));
|
||||
dynamodbUserService.changesNickname(guid, nickname, newNickname);
|
||||
|
||||
return UsersResponse.builder()
|
||||
.resultData(UsersResponse.ResultData.builder()
|
||||
@@ -133,14 +126,23 @@ public class UsersService {
|
||||
// Map<String,String> res = dynamoDBService.findUsersBykey(searchType, searchKey);
|
||||
Map<String,String> resultMap = new HashMap<>();
|
||||
if(searchType.equals(SEARCHTYPE.NAME.name())){
|
||||
resultMap.put("guid", dynamodbUserService.getNameByGuid(searchKey.toLowerCase())); //nickname은 무조건 소문자
|
||||
resultMap.put("nickname", searchKey);
|
||||
String name_guid = dynamodbUserService.getNameByGuid(searchKey.toLowerCase());
|
||||
if(!name_guid.isEmpty()){
|
||||
resultMap.put("guid", name_guid); //nickname은 무조건 소문자
|
||||
resultMap.put("nickname", searchKey);
|
||||
}
|
||||
}else if(searchType.equals(SEARCHTYPE.GUID.name())){
|
||||
resultMap.put("guid", searchKey);
|
||||
resultMap.put("nickname", dynamodbUserService.getGuidByName(searchKey));
|
||||
String guid_name = dynamodbUserService.getGuidByName(searchKey);
|
||||
if(!guid_name.isEmpty()){
|
||||
resultMap.put("guid", searchKey);
|
||||
resultMap.put("nickname", guid_name);
|
||||
}
|
||||
}else if(searchType.equals(SEARCHTYPE.ACCOUNT.name())){
|
||||
resultMap.put("guid", dynamodbUserService.getAccountIdByGuid(searchKey));
|
||||
resultMap.put("nickname", dynamodbUserService.getAccountIdByName(searchKey));
|
||||
String account_guid = dynamodbUserService.getAccountIdByGuid(searchKey);
|
||||
if(!account_guid.isEmpty()){
|
||||
resultMap.put("guid", account_guid);
|
||||
resultMap.put("nickname", dynamodbUserService.getAccountIdByName(searchKey));
|
||||
}
|
||||
}
|
||||
|
||||
return UsersResponse.builder()
|
||||
|
||||
@@ -97,6 +97,8 @@ public class LandAuctionRegistryRepositoryImpl extends BaseDynamoDBRepository<La
|
||||
registry.setDeletedDateTime(DynamoDBConstants.MIN_DATE);
|
||||
registry.setRestoredDateTime(DynamoDBConstants.MIN_DATE);
|
||||
|
||||
save(registry);
|
||||
|
||||
log.info("LandAuctionRegistryDoc Insert Success: {}", objectMapper.writeValueAsString(registry));
|
||||
|
||||
dynamodbHistoryLogService.insertHistoryLog(
|
||||
@@ -105,7 +107,6 @@ public class LandAuctionRegistryRepositoryImpl extends BaseDynamoDBRepository<La
|
||||
registry
|
||||
);
|
||||
|
||||
save(registry);
|
||||
}catch (Exception e){
|
||||
log.error("Insert LandAuctionRegistry Error: {}", e.getMessage());
|
||||
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package com.caliverse.admin.dynamodb.repository.Impl;
|
||||
|
||||
import com.caliverse.admin.domain.entity.HISTORYTYPE;
|
||||
import com.caliverse.admin.dynamodb.domain.atrrib.NicknameAttrib;
|
||||
import com.caliverse.admin.dynamodb.domain.atrrib.UserNicknameRegistryAttrib;
|
||||
import com.caliverse.admin.dynamodb.domain.doc.NicknameDoc;
|
||||
import com.caliverse.admin.dynamodb.domain.doc.UserNicknameRegistryDoc;
|
||||
import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository;
|
||||
import com.caliverse.admin.dynamodb.repository.NicknameRepository;
|
||||
import com.caliverse.admin.dynamodb.service.DynamoDBOperations;
|
||||
@@ -9,6 +12,7 @@ import com.caliverse.admin.global.common.code.CommonCode;
|
||||
import com.caliverse.admin.global.common.code.ErrorCode;
|
||||
import com.caliverse.admin.global.common.constants.DynamoDBConstants;
|
||||
import com.caliverse.admin.global.common.exception.RestApiException;
|
||||
import com.caliverse.admin.global.common.utils.CommonUtils;
|
||||
import com.caliverse.admin.history.service.DynamodbHistoryLogService;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
@@ -16,6 +20,8 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
import software.amazon.awssdk.enhanced.dynamodb.Key;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class NicknameRepositoryImpl extends BaseDynamoDBRepository<NicknameDoc> implements NicknameRepository {
|
||||
@@ -40,4 +46,40 @@ public class NicknameRepositoryImpl extends BaseDynamoDBRepository<NicknameDoc>
|
||||
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateNickname(String guid, String newNickname) {
|
||||
Key key = Key.builder()
|
||||
.partitionValue(DynamoDBConstants.PK_KEY_NICKNAME + guid)
|
||||
.sortValue(DynamoDBConstants.EMPTY)
|
||||
.build();
|
||||
|
||||
try {
|
||||
NicknameDoc beforeDoc = findById(key);
|
||||
|
||||
if (beforeDoc != null) {
|
||||
NicknameDoc afterDoc = deepCopy(beforeDoc, NicknameDoc.class);
|
||||
|
||||
NicknameAttrib attrib = CommonUtils.stringByObject(afterDoc.getAttribValue(), NicknameAttrib.class);
|
||||
attrib.setNickname(newNickname);
|
||||
|
||||
afterDoc.setAttribValue(CommonUtils.objectByString(attrib));
|
||||
afterDoc.setUpdatedDateTime(CommonUtils.convertUTCDate(LocalDateTime.now()));
|
||||
|
||||
update(afterDoc);
|
||||
|
||||
log.info("NicknameDoc Update Success: {}", objectMapper.writeValueAsString(afterDoc));
|
||||
|
||||
dynamodbHistoryLogService.updateHistoryLog(
|
||||
HISTORYTYPE.NICKNAME_UPDATE,
|
||||
HISTORYTYPE.NICKNAME_UPDATE.name(),
|
||||
beforeDoc,
|
||||
afterDoc
|
||||
);
|
||||
}
|
||||
}catch (Exception e){
|
||||
log.error("Update Nickname Error: {}", e.getMessage());
|
||||
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package com.caliverse.admin.dynamodb.repository.Impl;
|
||||
|
||||
import com.caliverse.admin.domain.entity.HISTORYTYPE;
|
||||
import com.caliverse.admin.dynamodb.domain.atrrib.AccountBaseAttrib;
|
||||
import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionRegistryAttrib;
|
||||
import com.caliverse.admin.dynamodb.domain.atrrib.UserNicknameRegistryAttrib;
|
||||
import com.caliverse.admin.dynamodb.domain.doc.LandAuctionRegistryDoc;
|
||||
import com.caliverse.admin.dynamodb.domain.doc.UserNicknameRegistryDoc;
|
||||
import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository;
|
||||
import com.caliverse.admin.dynamodb.repository.UserNicknameRegistryRepository;
|
||||
@@ -19,6 +22,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
import software.amazon.awssdk.enhanced.dynamodb.Key;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -89,4 +93,63 @@ public class UserNicknameRegistryRepositoryImpl extends BaseDynamoDBRepository<U
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteNickname(String nickname) {
|
||||
Key key = Key.builder()
|
||||
.partitionValue(DynamoDBConstants.PK_KEY_USER_NICKNAME_REGISTRY)
|
||||
.sortValue(nickname.toLowerCase())
|
||||
.build();
|
||||
|
||||
try {
|
||||
UserNicknameRegistryDoc beforeDoc = findById(key);
|
||||
|
||||
if (beforeDoc != null) {
|
||||
delete(key);
|
||||
|
||||
log.info("UserNicknameRegistryDoc Delete Success: {}", objectMapper.writeValueAsString(beforeDoc));
|
||||
|
||||
dynamodbHistoryLogService.deleteHistoryLog(
|
||||
HISTORYTYPE.NICKNAME_REGISTRY_DELETE,
|
||||
HISTORYTYPE.NICKNAME_REGISTRY_DELETE.name(),
|
||||
beforeDoc
|
||||
);
|
||||
}
|
||||
}catch (Exception e){
|
||||
log.error("Delete UserNicknameRegistry Error: {}", e.getMessage());
|
||||
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertChangesNickname(UserNicknameRegistryDoc beforeDoc, String newNickname) {
|
||||
LocalDateTime nowDate = LocalDateTime.now();
|
||||
|
||||
try {
|
||||
if (beforeDoc != null) {
|
||||
UserNicknameRegistryDoc afterDoc = deepCopy(beforeDoc, UserNicknameRegistryDoc.class);
|
||||
|
||||
UserNicknameRegistryAttrib attrib = CommonUtils.stringByObject(afterDoc.getAttribValue(), UserNicknameRegistryAttrib.class);
|
||||
attrib.setNickname(newNickname.toLowerCase());
|
||||
|
||||
afterDoc.setSK(newNickname.toLowerCase());
|
||||
afterDoc.setAttribValue(CommonUtils.objectByString(attrib));
|
||||
afterDoc.setCreatedDateTime(CommonUtils.convertUTCDate(nowDate));
|
||||
afterDoc.setUpdatedDateTime(CommonUtils.convertUTCDate(nowDate));
|
||||
|
||||
save(afterDoc);
|
||||
|
||||
log.info("UserNicknameRegistryDoc Insert Success: {}", objectMapper.writeValueAsString(afterDoc));
|
||||
|
||||
dynamodbHistoryLogService.insertHistoryLog(
|
||||
HISTORYTYPE.NICKNAME_REGISTRY_ADD,
|
||||
HISTORYTYPE.NICKNAME_REGISTRY_ADD.name(),
|
||||
afterDoc
|
||||
);
|
||||
}
|
||||
}catch (Exception e){
|
||||
log.error("Insert UserNicknameRegistry Error: {}", e.getMessage());
|
||||
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,4 +5,5 @@ import com.caliverse.admin.dynamodb.domain.doc.NicknameDoc;
|
||||
|
||||
public interface NicknameRepository extends DynamoDBRepository<NicknameDoc> {
|
||||
NicknameAttrib findUser(String guid);
|
||||
void updateNickname(String guid, String newNickname);
|
||||
}
|
||||
|
||||
@@ -10,4 +10,6 @@ public interface UserNicknameRegistryRepository extends DynamoDBRepository<UserN
|
||||
UserNicknameRegistryAttrib findUser(String nickname);
|
||||
List<String> findAllNicknameByGuid();
|
||||
List<UserNicknameRegistryAttrib> findAllAttrib();
|
||||
void deleteNickname(String nickname);
|
||||
void insertChangesNickname(UserNicknameRegistryDoc beforeDoc, String newNickname);
|
||||
}
|
||||
|
||||
@@ -2,13 +2,19 @@ package com.caliverse.admin.dynamodb.service;
|
||||
|
||||
import com.caliverse.admin.domain.entity.BlackList;
|
||||
import com.caliverse.admin.dynamodb.domain.atrrib.*;
|
||||
import com.caliverse.admin.dynamodb.domain.doc.UserNicknameRegistryDoc;
|
||||
import com.caliverse.admin.dynamodb.entity.EAuthAdminLevelType;
|
||||
import com.caliverse.admin.dynamodb.repository.*;
|
||||
import com.caliverse.admin.global.common.annotation.DynamoDBTransaction;
|
||||
import com.caliverse.admin.global.common.code.CommonCode;
|
||||
import com.caliverse.admin.global.common.code.ErrorCode;
|
||||
import com.caliverse.admin.global.common.constants.DynamoDBConstants;
|
||||
import com.caliverse.admin.global.common.exception.RestApiException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import software.amazon.awssdk.enhanced.dynamodb.Key;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@@ -124,4 +130,26 @@ public class DynamodbUserService {
|
||||
return moneyRepository.findAttrib(guid);
|
||||
}
|
||||
|
||||
@DynamoDBTransaction
|
||||
public void changesNickname(String guid, String oldNickname, String newNickname){
|
||||
UserNicknameRegistryAttrib newNicknameAttrib = userNicknameRegistryRepository.findUser(newNickname.toLowerCase());
|
||||
if(newNicknameAttrib != null){
|
||||
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.NICKNAME_EXIT_ERROR.toString());
|
||||
}
|
||||
|
||||
Key key = Key.builder()
|
||||
.partitionValue(DynamoDBConstants.PK_KEY_USER_NICKNAME_REGISTRY)
|
||||
.sortValue(oldNickname.toLowerCase())
|
||||
.build();
|
||||
UserNicknameRegistryDoc beforeDoc = userNicknameRegistryRepository.findById(key);
|
||||
if(beforeDoc == null){
|
||||
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_NOT_USER.toString());
|
||||
}
|
||||
|
||||
userNicknameRegistryRepository.deleteNickname(oldNickname);
|
||||
userNicknameRegistryRepository.insertChangesNickname(beforeDoc, newNickname);
|
||||
|
||||
nicknameRepository.updateNickname(guid, newNickname);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ public class DynamoDBTransactionAspect {
|
||||
} catch (Exception e) {
|
||||
log.error("DynamoDB operation error: {}", e.getMessage());
|
||||
throw new RestApiException(CommonCode.ERROR.getHttpStatus(),
|
||||
ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
|
||||
e.getMessage().isEmpty() ? ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage() : e.getMessage());
|
||||
} finally {
|
||||
// 트랜잭션 컨텍스트 정리
|
||||
DynamoDBTransactionContext.clear();
|
||||
|
||||
@@ -99,7 +99,7 @@ public class RedisUserInfoService {
|
||||
allChannels.addAll(channels_c);
|
||||
|
||||
String server_name = allChannels.stream().findFirst().get();
|
||||
log.info("noticeJob DynamicScheduler.getFirstChannel serverList : {}", allChannels);
|
||||
log.info("getFirstChannel serverList : {}", allChannels);
|
||||
return server_name;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user