dynamodb nickname 추가

This commit is contained in:
2025-02-15 03:57:25 +09:00
parent c10228f31c
commit 889455a379
9 changed files with 180 additions and 12 deletions

View File

@@ -0,0 +1,26 @@
package com.caliverse.admin.dynamodb.domain.atrrib;
import com.caliverse.admin.dynamodb.entity.EOwnerEntityType;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.*;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;
@Getter
@Setter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@DynamoDbBean
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class NicknameAttrib extends DynamoDBAttribBase {
private String nickname;
@JsonProperty("owner_guid")
private String ownerGuid;
@JsonProperty("owner_entity_type")
private EOwnerEntityType ownerEntityType;
}

View File

@@ -0,0 +1,29 @@
package com.caliverse.admin.dynamodb.domain.doc;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbAttribute;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@DynamoDbBean
public class NicknameDoc extends DynamoDBDocBase {
private String nicknameAttrib;
public String getAttribFieldName() {
return "NicknameAttrib";
}
@DynamoDbAttribute("NicknameAttrib")
@JsonProperty("NicknameAttrib")
public String getAttribValue() {
return nicknameAttrib;
}
public void setAttribValue(String value) {
this.nicknameAttrib = value;
}
}

View File

@@ -0,0 +1,26 @@
package com.caliverse.admin.dynamodb.entity;
import com.caliverse.admin.domain.entity.common.ValueEnum;
public enum EOwnerEntityType implements ValueEnum {
None(0),
User(1),
Character(2),
UgcNpc(3),
Myhome(4),
Land(5),
Building(6),
;
private final int value;
EOwnerEntityType(int value) {
this.value = value;
}
@Override
public int getValue() {
return value;
}
}

View File

@@ -0,0 +1,41 @@
package com.caliverse.admin.dynamodb.repository.Impl;
import com.caliverse.admin.dynamodb.domain.atrrib.NicknameAttrib;
import com.caliverse.admin.dynamodb.domain.doc.NicknameDoc;
import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository;
import com.caliverse.admin.dynamodb.repository.NicknameRepository;
import com.caliverse.admin.dynamodb.service.DynamoDBOperations;
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.history.service.DynamodbHistoryLogService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import software.amazon.awssdk.enhanced.dynamodb.Key;
@Component
@Slf4j
public class NicknameRepositoryImpl extends BaseDynamoDBRepository<NicknameDoc> implements NicknameRepository {
public NicknameRepositoryImpl(DynamoDBOperations operations, DynamodbHistoryLogService dynamodbHistoryLogService, ObjectMapper objectMapper) {
super(operations, NicknameDoc.class, dynamodbHistoryLogService, objectMapper);
}
@Override
public NicknameAttrib findUser(String guid) {
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_NICKNAME + guid)
.sortValue(DynamoDBConstants.EMPTY)
.build();
NicknameDoc doc = findById(key);
try {
return objectMapper.readValue(doc.getAttribValue(), NicknameAttrib.class);
} catch (JsonProcessingException e) {
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
}
}

View File

@@ -1,11 +1,15 @@
package com.caliverse.admin.dynamodb.repository.Impl;
import com.caliverse.admin.dynamodb.domain.atrrib.AccountBaseAttrib;
import com.caliverse.admin.dynamodb.domain.atrrib.UserNicknameRegistryAttrib;
import com.caliverse.admin.dynamodb.domain.doc.UserNicknameRegistryDoc;
import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository;
import com.caliverse.admin.dynamodb.repository.UserNicknameRegistryRepository;
import com.caliverse.admin.dynamodb.service.DynamoDBOperations;
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.history.service.DynamodbHistoryLogService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
@@ -25,6 +29,20 @@ public class UserNicknameRegistryRepositoryImpl extends BaseDynamoDBRepository<U
super(operations, UserNicknameRegistryDoc.class, dynamodbHistoryLogService, objectMapper);
}
@Override
public UserNicknameRegistryAttrib findUser(String nickname) {
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_USER_NICKNAME_REGISTRY)
.build();
UserNicknameRegistryDoc doc = findById(key);
try {
return objectMapper.readValue(doc.getAttribValue(), UserNicknameRegistryAttrib.class);
} catch (JsonProcessingException e) {
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
}
@Override
public List<String> findAllNicknameByGuid() {
Key key = Key.builder()

View File

@@ -0,0 +1,8 @@
package com.caliverse.admin.dynamodb.repository;
import com.caliverse.admin.dynamodb.domain.atrrib.NicknameAttrib;
import com.caliverse.admin.dynamodb.domain.doc.NicknameDoc;
public interface NicknameRepository extends DynamoDBRepository<NicknameDoc> {
NicknameAttrib findUser(String guid);
}

View File

@@ -1,11 +1,13 @@
package com.caliverse.admin.dynamodb.repository;
import com.caliverse.admin.dynamodb.domain.atrrib.UserBaseAttrib;
import com.caliverse.admin.dynamodb.domain.atrrib.UserNicknameRegistryAttrib;
import com.caliverse.admin.dynamodb.domain.doc.UserNicknameRegistryDoc;
import java.util.List;
public interface UserNicknameRegistryRepository extends DynamoDBRepository<UserNicknameRegistryDoc> {
UserNicknameRegistryAttrib findUser(String nickname);
List<String> findAllNicknameByGuid();
List<UserNicknameRegistryAttrib> findAllAttrib();
}

View File

@@ -1,9 +1,13 @@
package com.caliverse.admin.dynamodb.service;
import com.caliverse.admin.domain.entity.BlackList;
import com.caliverse.admin.dynamodb.domain.atrrib.NicknameAttrib;
import com.caliverse.admin.dynamodb.domain.atrrib.UserBaseAttrib;
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.exception.RestApiException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
@@ -17,27 +21,20 @@ import org.springframework.stereotype.Service;
public class DynamodbUserService {
private final AccountBaseRepository accountBaseRepository;
private final UserBaseRepository userBaseRepository;
private final UserNicknameRegistryRepository registryRepository;
private final NicknameRepository nicknameRepository;
private final ObjectMapper mapper = new ObjectMapper();
public boolean isBlockUser(String account_id){
public boolean isBlockUser(String guid){
String account_id = getGuidByAccountId(guid);
return accountBaseRepository.isBlockUser(account_id);
}
@DynamoDBTransaction
public void updateBlockUser(BlackList.STATUSTYPE status, BlackList blackList){
String guid = blackList.getGuid();
UserBaseAttrib userBaseAttrib = userBaseRepository.findUser(guid);
if(userBaseAttrib == null){
try {
log.error("updateBlockUser UserBase Null blackList: {}", mapper.writeValueAsString(blackList));
}catch (JsonProcessingException e){
log.error("updateBlockUser BlackList JsonProcessingException");
}
return;
}
String account_id = userBaseAttrib.getAccountId();
String account_id = getGuidByAccountId(guid);
if(status.equals(BlackList.STATUSTYPE.INPROGRESS)){
accountBaseRepository.updateBlockUserStart(account_id, blackList);
@@ -47,4 +44,24 @@ public class DynamodbUserService {
}
}
public String getGuidByName(String guid){
NicknameAttrib nicknameAttrib = nicknameRepository.findUser(guid);
if(nicknameAttrib == null){
log.error("getGuidByName Nickname Null guid: {}", guid);
return "";
}
return nicknameAttrib.getNickname();
}
public String getGuidByAccountId(String guid){
UserBaseAttrib userBaseAttrib = userBaseRepository.findUser(guid);
if(userBaseAttrib == null){
log.error("getGuidByAccountId UserBase Null guid: {}", guid);
return "";
}
return userBaseAttrib.getAccountId();
}
}

View File

@@ -20,6 +20,7 @@ public class DynamoDBConstants {
public static final String PK_KEY_BATTLE_EVENT = "management_battle_event#global";
public static final String PK_KEY_ACCOUNT_BASE = "account_base#";
public static final String PK_KEY_USER_BASE = "user_base#";
public static final String PK_KEY_NICKNAME = "nickname#";
//SK