dynamodb 페이징 처리

This commit is contained in:
2025-04-02 19:01:28 +09:00
parent c764dcbaf1
commit 4b61af8909
15 changed files with 264 additions and 7 deletions

View File

@@ -4,16 +4,23 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import com.caliverse.admin.domain.entity.FriendRequest;
import com.caliverse.admin.domain.entity.HISTORYTYPE;
import com.caliverse.admin.domain.request.MailRequest;
import com.caliverse.admin.dynamodb.domain.atrrib.MailAttrib;
import com.caliverse.admin.dynamodb.domain.doc.MailDoc;
import com.caliverse.admin.dynamodb.dto.PageResult;
import com.caliverse.admin.dynamodb.service.DynamodbService;
import com.caliverse.admin.redis.service.RedisUserInfoService;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import com.caliverse.admin.domain.datacomponent.MetaDataHandler;
@@ -34,6 +41,7 @@ public class UsersService {
private static final Logger logger = LoggerFactory.getLogger(UsersService.class);
private final DynamoDBService dynamoDBService;
private final DynamodbService dynamodbService;
private final HistoryService historyService;
private final UserGameSessionService userGameSessionService;
private final RedisUserInfoService redisUserInfoService;
@@ -41,6 +49,9 @@ public class UsersService {
//metadataHandler 어떻게 가져와야 되는가
@Autowired
private MetaDataHandler metaDataHandler;
@Qualifier("objectMapper")
@Autowired
private ObjectMapper objectMapper;
// 닉네임 변경
public UsersResponse changeNickname(UsersRequest usersRequest){
@@ -279,12 +290,52 @@ public class UsersService {
}
public UsersResponse getMail(String guid, String type){
// List<UsersResponse.Mail> mailList = dynamoDBService.getMail(guid, type);
PageResult<MailDoc> mailPageResult = dynamodbService.getMail(type, guid, "", "", "", null, false);
List<UsersResponse.Mail> mailList = new ArrayList<>();
List<UsersResponse.Mail> mailList = dynamoDBService.getMail(guid, type);;
mailPageResult.getItems().forEach(doc -> {
try {
MailAttrib attrib = objectMapper.readValue(doc.getAttribValue(), MailAttrib.class);
List<UsersResponse.MailItem> itemList = new ArrayList<>();
attrib.getItemList().forEach(item -> {
UsersResponse.MailItem mailItem = new UsersResponse.MailItem();
mailItem.setItemId(CommonUtils.objectToString(item.getItemId()));
mailItem.setCount(item.getCount());
String item_nm = metaDataHandler.getMetaItemNameData(item.getItemId());
mailItem.setItemName(metaDataHandler.getTextStringData(item_nm));
itemList.add(mailItem);
});
UsersResponse.Mail mail = UsersResponse.Mail.builder()
.mailGuid(attrib.getMailGuid())
.title(attrib.getTitle())
.content(attrib.getText())
.senderNickname(attrib.getSenderNickName())
.receiveNickname(attrib.getReceiverNickName())
.status(attrib.isRead())
.isSystemMail(attrib.isSystemMail())
.isGetItem(attrib.isGetItem())
.createDt(attrib.getCreateTime())
.mailItemList(itemList)
.build();
mailList.add(mail);
} catch (Exception e) {
log.error(e.getMessage());
return;
}
});
return UsersResponse.builder()
.resultData(
UsersResponse.ResultData.builder()
.mailList(mailList)
.pageKey(mailPageResult.getLastEvaluatedKey().entrySet().stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
entry -> entry.getValue().s()
))
)
.build()
)
.status(CommonCode.SUCCESS.getHttpStatus())