dynamodb 페이징 처리 추가

우편 조회 페이징 방식 수정
This commit is contained in:
2025-04-03 14:14:35 +09:00
parent 27320c44f8
commit 86d880e5c4
9 changed files with 55 additions and 16 deletions

View File

@@ -71,11 +71,11 @@ public class UsersController {
return ResponseEntity.ok().body(usersService.deleteInventoryItem(requestParams));
}
//todo
@GetMapping("/mail")
@PostMapping("/mail")
public ResponseEntity<UsersResponse> getMail(
@RequestParam("guid") String guid, @RequestParam("type") String type){
return ResponseEntity.ok().body( usersService.getMail(guid,type));
@RequestBody UsersRequest requestBody){
return ResponseEntity.ok().body( usersService.getMail(requestBody));
}
@DeleteMapping("/mail/delete")
public ResponseEntity<UsersResponse> deleteMail(
@@ -94,25 +94,25 @@ public class UsersController {
@RequestParam("guid") String guid){
return ResponseEntity.ok().body( usersService.getMyhome(guid));
}
//todo
@GetMapping("/friendlist")
public ResponseEntity<UsersResponse> getFriendList(
@RequestParam("guid") String guid){
return ResponseEntity.ok().body( usersService.getFriendList(guid));
}
//todo
@GetMapping("/tattoo")
public ResponseEntity<UsersResponse> getTattoo(
@RequestParam("guid") String guid){
return ResponseEntity.ok().body( usersService.getTattoo(guid));
}
//todo
@GetMapping("/quest")
public ResponseEntity<UsersResponse> getQuest(
@RequestParam("guid") String guid){
return ResponseEntity.ok().body( usersService.getQuest(guid));
}
//todo
/*@GetMapping("/claim")
public ResponseEntity<UsersResponse> getClaim(
@RequestParam("guid") String guid){

View File

@@ -1,6 +1,8 @@
package com.caliverse.admin.domain.request;
import com.caliverse.admin.domain.entity.SEARCHTYPE;
import com.caliverse.admin.domain.entity.WhiteList;
import com.caliverse.admin.dynamodb.entity.KeyParam;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;
@@ -19,4 +21,9 @@ public class UsersRequest {
private String newNickname;
@JsonProperty("admin_level")
private String adminLevel;
@JsonProperty("mail_type")
private SEARCHTYPE mailType;
@JsonProperty("page_key")
private KeyParam pageKey;
}

View File

@@ -289,9 +289,9 @@ public class UsersService {
}
}
public UsersResponse getMail(String guid, String type){
public UsersResponse getMail(UsersRequest usersRequest){
// List<UsersResponse.Mail> mailList = dynamoDBService.getMail(guid, type);
PageResult<MailDoc> mailPageResult = dynamodbService.getMail(type, guid, "", "", "", null, false);
PageResult<MailDoc> mailPageResult = dynamodbService.getMail(usersRequest.getMailType(), usersRequest.getGuid(), "", "", "", usersRequest.getPageKey(), false);
List<UsersResponse.Mail> mailList = new ArrayList<>();
mailPageResult.getItems().forEach(doc -> {
@@ -330,7 +330,9 @@ public class UsersService {
.resultData(
UsersResponse.ResultData.builder()
.mailList(mailList)
.pageKey(mailPageResult.getLastEvaluatedKey().entrySet().stream()
.pageKey(mailPageResult.getLastEvaluatedKey() == null ?
null :
mailPageResult.getLastEvaluatedKey().entrySet().stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
entry -> entry.getValue().s()

View File

@@ -0,0 +1,18 @@
package com.caliverse.admin.dynamodb.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class KeyParam {
@JsonProperty("PK")
private String pk;
@JsonProperty("SK")
private String sk;
}

View File

@@ -115,7 +115,7 @@ public class MailRepositoryImpl extends BaseDynamoDBRepository<MailDoc> implemen
@Override
public PageResult<MailDoc> getMailListWithPaging(
String type,
SEARCHTYPE type,
String userGuid,
String sortKeyPrefix,
String filterAttributeName,
@@ -125,7 +125,7 @@ public class MailRepositoryImpl extends BaseDynamoDBRepository<MailDoc> implemen
) {
String pk;
if(type.equals(SEARCHTYPE.SEND.name())){
if(type.equals(SEARCHTYPE.SEND)){
pk = DynamoDBConstants.PK_KEY_SENT_MAIL + userGuid;
} else {
pk = DynamoDBConstants.PK_KEY_RECV_MAIL + userGuid;

View File

@@ -1,6 +1,7 @@
package com.caliverse.admin.dynamodb.repository;
import com.caliverse.admin.domain.entity.Mail;
import com.caliverse.admin.domain.entity.SEARCHTYPE;
import com.caliverse.admin.domain.entity.metadata.MetaSystemMailData;
import com.caliverse.admin.domain.request.MailRequest;
import com.caliverse.admin.dynamodb.domain.doc.MailDoc;
@@ -16,7 +17,7 @@ public interface MailRepository extends DynamoDBRepository<MailDoc> {
void insertSentMail(Mail mail);
List<MailDoc> getMailList(String type, String userGuid, String sortKeyPrefix);
PageResult<MailDoc> getMailListWithPaging(
String type,
SEARCHTYPE type,
String userGuid,
String sortKeyPrefix,
String filterAttributeName,

View File

@@ -3,6 +3,7 @@ package com.caliverse.admin.dynamodb.service;
import com.caliverse.admin.Indicators.entity.MoneyLogInfo;
import com.caliverse.admin.domain.datacomponent.MetaDataHandler;
import com.caliverse.admin.domain.entity.Event;
import com.caliverse.admin.domain.entity.SEARCHTYPE;
import com.caliverse.admin.domain.entity.metadata.MetaLandData;
import com.caliverse.admin.domain.entity.metadata.MetaSystemMailData;
import com.caliverse.admin.domain.request.LandRequest;
@@ -10,6 +11,7 @@ import com.caliverse.admin.dynamodb.domain.atrrib.MoneyAttrib;
import com.caliverse.admin.dynamodb.domain.atrrib.UserNicknameRegistryAttrib;
import com.caliverse.admin.dynamodb.domain.doc.MailDoc;
import com.caliverse.admin.dynamodb.dto.PageResult;
import com.caliverse.admin.dynamodb.entity.KeyParam;
import com.caliverse.admin.dynamodb.entity.MailItem;
import com.caliverse.admin.dynamodb.repository.MailRepository;
import com.caliverse.admin.dynamodb.repository.MoneyRepository;
@@ -31,6 +33,7 @@ import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -96,7 +99,13 @@ public class DynamodbService {
mailRepository.insertRecvSystemMail(guid, nickname, items, systemMailData, arguments);
}
public PageResult<MailDoc> getMail(String type, String guid, String sortKey, String filterName, String filterValue, Map<String, AttributeValue> pagingKey, boolean sortIndex){
public PageResult<MailDoc> getMail(SEARCHTYPE type, String guid, String sortKey, String filterName, String filterValue, KeyParam pageKey, boolean sortIndex){
Map<String, AttributeValue> pagingKey = null;
if(pageKey != null){
pagingKey = new HashMap<>();
pagingKey.put(DynamoDBConstants.PK_KEY_NAME, AttributeValue.builder().s(pageKey.getPk()).build());
pagingKey.put(DynamoDBConstants.SK_KEY_NAME, AttributeValue.builder().s(pageKey.getSk()).build());
}
PageResult<MailDoc> mailList = mailRepository.getMailListWithPaging(type, guid, sortKey, filterName, filterValue, pagingKey, sortIndex);
return mailList;
}

View File

@@ -15,7 +15,7 @@ public class CommonConstants {
public static final String LAND_AUCTION = "auction";
public static final String LAND_EVENT = "event";
public static final String SYSTEM_MAIL_LAND_TRANS_KEY = "LandTrans";
public static final int DYNAMODB_PAGING_SIZE = 20;
public static final int DYNAMODB_PAGING_SIZE = 30;
public static final String FORMAT_DATE_ISO_DATETIME_MILLIS = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
public static final String FORMAT_DATE_ISO_DATETIME_MILLIS_NANO = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'";

View File

@@ -6,6 +6,7 @@ public class DynamoDBConstants {
public static final String CONSUMED_WRITE_CAPACITY = "ConsumedWriteCapacityUnits";
//PK
public static final String PK_KEY_NAME = "PK";
public static final String PK_KEY_CALIUM = "calium#storage";
public static final String PK_KEY_SYSTEM_MAIL = "management_system_meta_mail#global";
public static final String PK_KEY_LAND_AUCTION_REGISTRY = "land_auction_registry#global";
@@ -27,6 +28,7 @@ public class DynamoDBConstants {
public static final String PK_KEY_SENT_MAIL = "sent_mail#";
//SK
public static final String SK_KEY_NAME = "SK";
//Attribute
public static final String ATTRIB_CALIUM = "CaliumStorageAttrib";