MailJson 타입으로 추가생성

This commit is contained in:
2025-04-10 11:55:30 +09:00
parent 2c719227b4
commit 4e0304899c
13 changed files with 477 additions and 50 deletions

View File

@@ -10,9 +10,11 @@ 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.atrrib.MailJsonAttrib;
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.global.common.utils.DynamodbUtil;
import com.caliverse.admin.redis.service.RedisUserInfoService;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
@@ -296,31 +298,57 @@ public class UsersService {
mailPageResult.getItems().forEach(doc -> {
try {
MailAttrib attrib = objectMapper.readValue(doc.getAttribValue(), MailAttrib.class);
// MailAttrib attrib = objectMapper.readValue(doc.getAttribValue(), MailAttrib.class);
MailAttrib attrib = doc.getAttribValue();
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);
});
if(attrib == null){
MailJsonAttrib mailJsonAttrib = dynamodbService.getMailJsonAttrib(doc.getPK(),doc.getSK());
mailJsonAttrib.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);
UsersResponse.Mail mail = UsersResponse.Mail.builder()
.mailGuid(mailJsonAttrib.getMailGuid())
.title(mailJsonAttrib.getTitle())
.content(mailJsonAttrib.getText())
.senderNickname(mailJsonAttrib.getSenderNickName())
.receiveNickname(mailJsonAttrib.getReceiverNickName())
.status(mailJsonAttrib.isRead())
.isSystemMail(mailJsonAttrib.isSystemMail())
.isGetItem(mailJsonAttrib.isGetItem())
.createDt(mailJsonAttrib.getCreateTime())
.mailItemList(itemList)
.build();
mailList.add(mail);
}else{
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(Boolean.parseBoolean(attrib.getIsRead()))
.isSystemMail(Boolean.parseBoolean(attrib.getIsSystemMail()))
.isGetItem(Boolean.parseBoolean(attrib.getIsGetItem()))
.createDt(attrib.getCreateTime())
.mailItemList(itemList)
.build();
mailList.add(mail);
}
} catch (Exception e) {
log.error(e.getMessage());
return;

View File

@@ -1,5 +1,6 @@
package com.caliverse.admin.dynamodb.domain.atrrib;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
@@ -17,4 +18,7 @@ public abstract class DynamoDBAttribBase {
//객체일때는 사용안하고 Json으로 Attrib이 생성될때만 사용(상속 안받는걸로)
@JsonProperty("attrib_type")
private String attribType;
@JsonIgnore
private transient boolean isSaveToJson = true;
}

View File

@@ -5,27 +5,26 @@ 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.DynamoDbAttribute;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;
import java.util.List;
@Getter
@Setter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@DynamoDbBean
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class MailAttrib extends DynamoDBAttribBase{
public class MailAttrib{
@JsonProperty("mail_guid")
private String mailGuid;
@JsonProperty("is_read")
private boolean isRead;
private String isRead;
@JsonProperty("is_get_item")
private boolean isGetItem;
private String isGetItem;
@JsonProperty("is_system_mail")
private boolean isSystemMail;
private String isSystemMail;
@JsonProperty("sender_nickname")
private String senderNickName;
@@ -44,11 +43,80 @@ public class MailAttrib extends DynamoDBAttribBase{
@JsonProperty("expire_time")
private String expireTime;
@JsonProperty("is_text_by_meta_data")
private boolean isTextByMetaData;
private String isTextByMetaData;
@JsonProperty("item_list")
private List<MailItem> itemList;
private List<MailItemAttrib> itemList;
@JsonProperty("package_order_id")
private String packageOrderId;
@JsonProperty("contents_arguments")
private List<String> contentsArguments;
@DynamoDbAttribute("mail_guid")
public String getMailGuid() {
return mailGuid;
}
@DynamoDbAttribute("is_read")
public String getIsRead() {
return isRead;
}
@DynamoDbAttribute("is_get_item")
public String getIsGetItem() {
return isGetItem;
}
@DynamoDbAttribute("is_system_mail")
public String getIsSystemMail() {
return isSystemMail;
}
@DynamoDbAttribute("sender_nickname")
public String getSenderNickName() {
return senderNickName;
}
@DynamoDbAttribute("sender_guid")
public String getSenderGuid() {
return senderGuid;
}
@DynamoDbAttribute("receiver_nickname")
public String getReceiverNickName() {
return receiverNickName;
}
@DynamoDbAttribute("receiver_guid")
public String getReceiverGuid() {
return receiverGuid;
}
@DynamoDbAttribute("title")
public String getTitle() {
return title;
}
@DynamoDbAttribute("text")
public String getText() {
return text;
}
@DynamoDbAttribute("create_time")
public String getCreateTime() {
return createTime;
}
@DynamoDbAttribute("expire_time")
public String getExpireTime() {
return expireTime;
}
@DynamoDbAttribute("is_text_by_meta_data")
public String getIsTextByMetaData() {
return isTextByMetaData;
}
@DynamoDbAttribute("item_list")
public List<MailItemAttrib> getItemList() {
return itemList;
}
@DynamoDbAttribute("package_order_id")
public String getPackageOrderId() {
return packageOrderId;
}
@DynamoDbAttribute("contents_arguments")
public List<String> getContentsArguments() {
return contentsArguments;
}
}

View File

@@ -0,0 +1,42 @@
package com.caliverse.admin.dynamodb.domain.atrrib;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbAttribute;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@DynamoDbBean
public class MailItemAttrib {
@JsonProperty("ItemId")
private Integer itemId;
@JsonProperty("Count")
private Double count;
@JsonProperty("ProductId")
private Integer productId;
@JsonProperty("isRepeatProduct")
private String isRepeatProduct;
@DynamoDbAttribute("ItemId")
public Integer getItemId() {
return itemId;
}
@DynamoDbAttribute("Count")
public Double getCount() {
return count;
}
@DynamoDbAttribute("ProductId")
public Integer getProductId() {
return productId;
}
@DynamoDbAttribute("bid_start_price")
public String getBidStartPrice() {
return isRepeatProduct;
}
}

View File

@@ -0,0 +1,54 @@
package com.caliverse.admin.dynamodb.domain.atrrib;
import com.caliverse.admin.dynamodb.entity.MailItem;
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;
import java.util.List;
@Getter
@Setter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@DynamoDbBean
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class MailJsonAttrib extends DynamoDBAttribBase{
@JsonProperty("mail_guid")
private String mailGuid;
@JsonProperty("is_read")
private boolean isRead;
@JsonProperty("is_get_item")
private boolean isGetItem;
@JsonProperty("is_system_mail")
private boolean isSystemMail;
@JsonProperty("sender_nickname")
private String senderNickName;
@JsonProperty("sender_guid")
private String senderGuid;
@JsonProperty("receiver_nickname")
private String receiverNickName;
@JsonProperty("receiver_guid")
private String receiverGuid;
private String title;
private String text;
@JsonProperty("create_time")
private String createTime;
@JsonProperty("expire_time")
private String expireTime;
@JsonProperty("is_text_by_meta_data")
private boolean isTextByMetaData;
@JsonProperty("item_list")
private List<MailItem> itemList;
@JsonProperty("package_order_id")
private String packageOrderId;
@JsonProperty("contents_arguments")
private List<String> contentsArguments;
}

View File

@@ -1,9 +1,9 @@
package com.caliverse.admin.dynamodb.domain.doc;
import com.caliverse.admin.dynamodb.domain.atrrib.MailAttrib;
import com.caliverse.admin.global.common.constants.DynamoDBConstants;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbAttribute;
@@ -13,7 +13,7 @@ import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;
@NoArgsConstructor
@DynamoDbBean
public class MailDoc extends DynamoDBDocBase {
private String mailAttrib;
private MailAttrib mailAttrib;
@Setter
private long ttl;
@@ -23,7 +23,7 @@ public class MailDoc extends DynamoDBDocBase {
@DynamoDbAttribute(DynamoDBConstants.ATTRIB_MAIL)
@JsonProperty(DynamoDBConstants.ATTRIB_MAIL)
public String getAttribValue() {
public MailAttrib getAttribValue() {
return mailAttrib;
}
@@ -33,7 +33,7 @@ public class MailDoc extends DynamoDBDocBase {
return ttl;
}
public void setAttribValue(String value) {
public void setAttribValue(MailAttrib value) {
this.mailAttrib = value;
}
}

View File

@@ -0,0 +1,39 @@
package com.caliverse.admin.dynamodb.domain.doc;
import com.caliverse.admin.global.common.constants.DynamoDBConstants;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.Setter;
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 MailJsonDoc extends DynamoDBDocBase {
private String mailAttrib;
@Setter
private long ttl;
public String getAttribFieldName() {
return DynamoDBConstants.ATTRIB_MAIL;
}
@DynamoDbAttribute(DynamoDBConstants.ATTRIB_MAIL)
@JsonProperty(DynamoDBConstants.ATTRIB_MAIL)
public String getAttribValue() {
return mailAttrib;
}
@DynamoDbAttribute("TTL")
@JsonProperty("TTL")
public long getTtl() {
return ttl;
}
public void setAttribValue(String value) {
this.mailAttrib = value;
}
}

View File

@@ -5,11 +5,13 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@DynamoDbBean
public class MailItem {
@JsonProperty("ItemId")
private Integer itemId;

View File

@@ -0,0 +1,144 @@
package com.caliverse.admin.dynamodb.repository.Impl;
import com.caliverse.admin.domain.entity.HISTORYTYPE;
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.dynamodb.domain.atrrib.MailJsonAttrib;
import com.caliverse.admin.dynamodb.domain.doc.MailDoc;
import com.caliverse.admin.dynamodb.domain.doc.MailJsonDoc;
import com.caliverse.admin.dynamodb.dto.PageResult;
import com.caliverse.admin.dynamodb.entity.MailItem;
import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository;
import com.caliverse.admin.dynamodb.repository.MailJsonRepository;
import com.caliverse.admin.dynamodb.repository.MailRepository;
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.global.common.utils.CommonUtils;
import com.caliverse.admin.global.common.utils.DateUtils;
import com.caliverse.admin.history.service.DynamodbHistoryLogService;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import static com.caliverse.admin.global.common.utils.CommonUtils.convertUTCDate;
@Component
@Slf4j
public class MailJsonRepositoryImpl extends BaseDynamoDBRepository<MailJsonDoc> implements MailJsonRepository {
public MailJsonRepositoryImpl(DynamoDBOperations operations, DynamodbHistoryLogService dynamodbHistoryLogService, ObjectMapper objectMapper) {
super(operations, MailJsonDoc.class, dynamodbHistoryLogService, objectMapper);
}
@Override
public void insertRecvSystemMail(String userGuid, String nickname, List<MailItem> mailItems, MetaSystemMailData systemMailData, List<String> arguments) {
try {
LocalDateTime nowDate = LocalDateTime.now();
LocalDateTime maxDate = DateUtils.getMaxTime();
String expireTime = DateUtils.stringToISODateTimeMillisNano(maxDate);
String pk = DynamoDBConstants.PK_KEY_RECV_MAIL + userGuid;
String sk = String.format("%s-%s", DateUtils.getMailDateFormat(nowDate), CommonUtils.getCreateGuId().replace("-",""));
MailJsonAttrib attrib = new MailJsonAttrib();
attrib.setMailGuid(sk);
attrib.setRead(false);
attrib.setGetItem(false);
attrib.setSystemMail(true);
attrib.setSenderNickName(systemMailData.getSender());
attrib.setSenderGuid("");
attrib.setReceiverNickName(nickname);
attrib.setReceiverGuid(userGuid);
attrib.setTitle(systemMailData.getMailTitle());
attrib.setText(systemMailData.getMailDesc());
attrib.setExpireTime(expireTime);
attrib.setCreateTime(DateUtils.stringToISODateTimeMillisNano(nowDate));
attrib.setTextByMetaData(true);
attrib.setItemList(mailItems);
attrib.setPackageOrderId("");
attrib.setContentsArguments(arguments);
MailJsonDoc doc = new MailJsonDoc();
doc.setPK(pk);
doc.setSK(sk);
doc.setDocType(DynamoDBConstants.DOC_Mail);
doc.setAttribValue(objectMapper.writeValueAsString(attrib));
doc.setCreatedDateTime(convertUTCDate(nowDate));
doc.setUpdatedDateTime(convertUTCDate(nowDate));
doc.setDeletedDateTime(DynamoDBConstants.MIN_DATE);
doc.setRestoredDateTime(DynamoDBConstants.MIN_DATE);
doc.setTtl(DateUtils.dateToISOUnixTime(maxDate));
save(doc);
log.info("MailDoc Recv Insert Success: {}", objectMapper.writeValueAsString(doc));
dynamodbHistoryLogService.insertHistoryLog(
HISTORYTYPE.LAND_OWNER_CHANGE_MAIL,
HISTORYTYPE.LAND_OWNER_CHANGE_MAIL.name(),
doc
);
}catch (Exception e){
log.error("insert Error: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
}
@Override
public void insertSentMail(Mail mail) {
}
@Override
public List<MailJsonDoc> getMailList(String type, String userGuid, String sortKeyPrefix) {
String pk;
if(type.equals(SEARCHTYPE.SEND.name())){
pk = DynamoDBConstants.PK_KEY_RECV_MAIL + userGuid;
}else{
pk = DynamoDBConstants.PK_KEY_SENT_MAIL + userGuid;
}
List<MailJsonDoc> mailList = findByPrefix(pk, sortKeyPrefix);
return mailList;
}
@Override
public PageResult<MailJsonDoc> getMailListWithPaging(
SEARCHTYPE type,
String userGuid,
String sortKeyPrefix,
String filterAttributeName,
String filterAttributeValue,
Map<String, AttributeValue> exclusiveStartKey,
boolean sortIndex
) {
String pk;
if(type.equals(SEARCHTYPE.SEND)){
pk = DynamoDBConstants.PK_KEY_SENT_MAIL + userGuid;
} else {
pk = DynamoDBConstants.PK_KEY_RECV_MAIL + userGuid;
}
return findByPaging(
pk,
sortKeyPrefix,
filterAttributeName,
filterAttributeValue,
exclusiveStartKey,
sortIndex
);
}
}

View File

@@ -5,6 +5,7 @@ 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.dynamodb.domain.atrrib.MailAttrib;
import com.caliverse.admin.dynamodb.domain.atrrib.MailItemAttrib;
import com.caliverse.admin.dynamodb.domain.doc.MailDoc;
import com.caliverse.admin.dynamodb.dto.PageResult;
import com.caliverse.admin.dynamodb.entity.MailItem;
@@ -13,6 +14,7 @@ import com.caliverse.admin.dynamodb.repository.MailRepository;
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.CommonConstants;
import com.caliverse.admin.global.common.constants.DynamoDBConstants;
import com.caliverse.admin.global.common.exception.RestApiException;
import com.caliverse.admin.global.common.utils.CommonUtils;
@@ -37,7 +39,7 @@ public class MailRepositoryImpl extends BaseDynamoDBRepository<MailDoc> implemen
}
@Override
public void insertRecvSystemMail(String userGuid, String nickname, List<MailItem> mailItems, MetaSystemMailData systemMailData, List<String> arguments) {
public void insertRecvSystemMail(String userGuid, String nickname, List<MailItemAttrib> mailItems, MetaSystemMailData systemMailData, List<String> arguments) {
try {
LocalDateTime nowDate = LocalDateTime.now();
LocalDateTime maxDate = DateUtils.getMaxTime();
@@ -48,11 +50,10 @@ public class MailRepositoryImpl extends BaseDynamoDBRepository<MailDoc> implemen
String sk = String.format("%s-%s", DateUtils.getMailDateFormat(nowDate), CommonUtils.getCreateGuId().replace("-",""));
MailAttrib attrib = new MailAttrib();
attrib.setAttribType(DynamoDBConstants.ATTRIB_MAIL);
attrib.setMailGuid(sk);
attrib.setRead(false);
attrib.setGetItem(false);
attrib.setSystemMail(true);
attrib.setIsRead(CommonConstants.FALSE);
attrib.setIsGetItem(CommonConstants.FALSE);
attrib.setIsSystemMail(CommonConstants.TRUE);
attrib.setSenderNickName(systemMailData.getSender());
attrib.setSenderGuid("");
attrib.setReceiverNickName(nickname);
@@ -61,7 +62,7 @@ public class MailRepositoryImpl extends BaseDynamoDBRepository<MailDoc> implemen
attrib.setText(systemMailData.getMailDesc());
attrib.setExpireTime(expireTime);
attrib.setCreateTime(DateUtils.stringToISODateTimeMillisNano(nowDate));
attrib.setTextByMetaData(true);
attrib.setIsTextByMetaData(CommonConstants.TRUE);
attrib.setItemList(mailItems);
attrib.setPackageOrderId("");
attrib.setContentsArguments(arguments);
@@ -70,7 +71,7 @@ public class MailRepositoryImpl extends BaseDynamoDBRepository<MailDoc> implemen
doc.setPK(pk);
doc.setSK(sk);
doc.setDocType(DynamoDBConstants.DOC_Mail);
doc.setAttribValue(objectMapper.writeValueAsString(attrib));
doc.setAttribValue(attrib);
doc.setCreatedDateTime(convertUTCDate(nowDate));
doc.setUpdatedDateTime(convertUTCDate(nowDate));
doc.setDeletedDateTime(DynamoDBConstants.MIN_DATE);

View File

@@ -0,0 +1,28 @@
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.dynamodb.domain.doc.MailDoc;
import com.caliverse.admin.dynamodb.domain.doc.MailJsonDoc;
import com.caliverse.admin.dynamodb.dto.PageResult;
import com.caliverse.admin.dynamodb.entity.MailItem;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
import java.util.List;
import java.util.Map;
public interface MailJsonRepository extends DynamoDBRepository<MailJsonDoc> {
void insertRecvSystemMail(String userGuid, String nickname, List<MailItem> mailItems, MetaSystemMailData systemMailData, List<String> arguments);
void insertSentMail(Mail mail);
List<MailJsonDoc> getMailList(String type, String userGuid, String sortKeyPrefix);
PageResult<MailJsonDoc> getMailListWithPaging(
SEARCHTYPE type,
String userGuid,
String sortKeyPrefix,
String filterAttributeName,
String filterAttributeValue,
Map<String, AttributeValue> exclusiveStartKey,
boolean sortIndex
);
}

View File

@@ -4,6 +4,7 @@ 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.atrrib.MailItemAttrib;
import com.caliverse.admin.dynamodb.domain.doc.MailDoc;
import com.caliverse.admin.dynamodb.dto.PageResult;
import com.caliverse.admin.dynamodb.entity.MailItem;
@@ -13,7 +14,7 @@ import java.util.List;
import java.util.Map;
public interface MailRepository extends DynamoDBRepository<MailDoc> {
void insertRecvSystemMail(String userGuid, String nickname, List<MailItem> mailItems, MetaSystemMailData systemMailData, List<String> arguments);
void insertRecvSystemMail(String userGuid, String nickname, List<MailItemAttrib> mailItems, MetaSystemMailData systemMailData, List<String> arguments);
void insertSentMail(Mail mail);
List<MailDoc> getMailList(String type, String userGuid, String sortKeyPrefix);
PageResult<MailDoc> getMailListWithPaging(

View File

@@ -7,16 +7,16 @@ 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;
import com.caliverse.admin.dynamodb.domain.atrrib.MailItemAttrib;
import com.caliverse.admin.dynamodb.domain.atrrib.MailJsonAttrib;
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.domain.doc.MailJsonDoc;
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;
import com.caliverse.admin.dynamodb.repository.SystemMetaMailRepository;
import com.caliverse.admin.dynamodb.repository.UserNicknameRegistryRepository;
import com.caliverse.admin.dynamodb.repository.*;
import com.caliverse.admin.global.common.annotation.DynamoDBTransaction;
import com.caliverse.admin.global.common.constants.AdminConstants;
import com.caliverse.admin.global.common.constants.CommonConstants;
@@ -29,6 +29,7 @@ import com.fasterxml.jackson.databind.node.ArrayNode;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import software.amazon.awssdk.enhanced.dynamodb.Key;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
import java.time.LocalDateTime;
@@ -46,6 +47,7 @@ public class DynamodbService {
private final MoneyRepository moneyRepository;
private final SystemMetaMailRepository systemMetaMailRepository;
private final MailRepository mailRepository;
private final MailJsonRepository mailJsonRepository;
private final IndicatorsMoneyService moneyService;
@@ -87,12 +89,12 @@ public class DynamodbService {
String guid = landRequest.getUserGuid();
String nickname = landRequest.getUserName();
List<MailItem> items = new ArrayList<>();
items.add(MailItem.builder()
List<MailItemAttrib> items = new ArrayList<>();
items.add(MailItemAttrib.builder()
.itemId(landData.getLinkedItem())
.count(1.0)
.productId(0)
.isRepeatProduct(false)
.isRepeatProduct(CommonConstants.FALSE)
.build()
);
@@ -109,4 +111,18 @@ public class DynamodbService {
PageResult<MailDoc> mailList = mailRepository.getMailListWithPaging(type, guid, sortKey, filterName, filterValue, pagingKey, sortIndex);
return mailList;
}
public MailJsonAttrib getMailJsonAttrib(String pk, String sk){
try {
Key key = Key.builder()
.partitionValue(pk)
.sortValue(sk)
.build();
MailJsonDoc mailDoc = mailJsonRepository.findById(key);
return mapper.readValue(mailDoc.getAttribValue(), MailJsonAttrib.class);
}catch (Exception e){
log.error(e.getMessage());
}
return null;
}
}