dynamodb 우편 추가
This commit is contained in:
@@ -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 MailAttrib 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;
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
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.Getter;
|
||||
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 MailDoc 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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,11 +7,11 @@ import lombok.Data;
|
||||
@Data
|
||||
@Builder
|
||||
public class MailItem {
|
||||
@JsonProperty("itemId")
|
||||
@JsonProperty("ItemId")
|
||||
private Integer itemId;
|
||||
@JsonProperty("count")
|
||||
@JsonProperty("Count")
|
||||
private Double count;
|
||||
@JsonProperty("productId")
|
||||
@JsonProperty("ProductId")
|
||||
private Integer productId;
|
||||
@JsonProperty("isRepeatProduct")
|
||||
private boolean isRepeatProduct;
|
||||
|
||||
@@ -62,7 +62,7 @@ public class BuildingRepositoryImpl extends BaseDynamoDBRepository<BuildingDoc>
|
||||
|
||||
BuildingAttrib attrib = new BuildingAttrib();
|
||||
attrib.setAttribType(DynamoDBConstants.ATTRIB_BUILDING);
|
||||
attrib.setBuildingName(landRequest.getBuildingName());
|
||||
attrib.setBuildingName("");
|
||||
attrib.setBuildingMetaId(building_id);
|
||||
attrib.setDescription("");
|
||||
attrib.setOwnerUserGuid(guid);
|
||||
|
||||
@@ -60,7 +60,7 @@ public class LandRepositoryImpl extends BaseDynamoDBRepository<LandDoc> implemen
|
||||
|
||||
LandAttrib attrib = new LandAttrib();
|
||||
attrib.setAttribType(DynamoDBConstants.ATTRIB_LAND);
|
||||
attrib.setLandName(landRequest.getLandName());
|
||||
attrib.setLandName("");
|
||||
attrib.setLandMetaId(land_id);
|
||||
attrib.setDescription("");
|
||||
attrib.setOwnerUserGuid(guid);
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
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.metadata.MetaSystemMailData;
|
||||
import com.caliverse.admin.dynamodb.domain.atrrib.MailAttrib;
|
||||
import com.caliverse.admin.dynamodb.domain.doc.MailDoc;
|
||||
import com.caliverse.admin.dynamodb.entity.MailItem;
|
||||
import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository;
|
||||
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 java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import static com.caliverse.admin.global.common.utils.CommonUtils.convertUTCDate;
|
||||
import static com.caliverse.admin.global.common.utils.DynamodbUtil.createMailItems;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class MailRepositoryImpl extends BaseDynamoDBRepository<MailDoc> implements MailRepository {
|
||||
public MailRepositoryImpl(DynamoDBOperations operations, DynamodbHistoryLogService dynamodbHistoryLogService, ObjectMapper objectMapper) {
|
||||
super(operations, MailDoc.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());
|
||||
|
||||
MailAttrib attrib = new MailAttrib();
|
||||
attrib.setAttribType(DynamoDBConstants.ATTRIB_MAIL);
|
||||
attrib.setMailGuid(sk);
|
||||
attrib.setRead(false);
|
||||
attrib.setGetItem(false);
|
||||
attrib.setSystemMail(true);
|
||||
attrib.setSenderNickName(systemMailData.getSender());
|
||||
attrib.setSenderGuid("");
|
||||
attrib.setReceiverNickName(nickname);
|
||||
attrib.setReceiverGuid(nickname);
|
||||
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);
|
||||
|
||||
MailDoc doc = new MailDoc();
|
||||
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,
|
||||
CommonUtils.getAdmin() == null ? "" : CommonUtils.getAdmin().getEmail(),
|
||||
CommonUtils.getClientIp() == null ? "" : CommonUtils.getClientIp()
|
||||
);
|
||||
|
||||
}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) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.caliverse.admin.dynamodb.repository;
|
||||
|
||||
import com.caliverse.admin.domain.entity.Mail;
|
||||
import com.caliverse.admin.domain.entity.metadata.MetaSystemMailData;
|
||||
import com.caliverse.admin.domain.request.MailRequest;
|
||||
import com.caliverse.admin.dynamodb.domain.doc.MailDoc;
|
||||
import com.caliverse.admin.dynamodb.entity.MailItem;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface MailRepository extends DynamoDBRepository<MailDoc> {
|
||||
void insertRecvSystemMail(String userGuid, String nickname, List<MailItem> mailItems, MetaSystemMailData systemMailData, List<String> arguments);
|
||||
void insertSentMail(Mail mail);
|
||||
}
|
||||
@@ -45,7 +45,7 @@ public class DynamodbLandService {
|
||||
int buildingId = landRequest.getBuildingId();
|
||||
String guid = landRequest.getUserGuid();
|
||||
|
||||
log.info("ChangesLandOwner land: {}, guid: {}", landId, guid);
|
||||
log.info("ChangesLandOwner land: {}, building: {}, guid: {}", landId, buildingId ,guid);
|
||||
|
||||
LandAttrib landAttrib = landRepository.findLandAttrib(landId);
|
||||
if(landAttrib == null){
|
||||
@@ -60,11 +60,11 @@ public class DynamodbLandService {
|
||||
BuildingAttrib buildingAttrib = buildingRepository.findBuildingAttrib(buildingId);
|
||||
if(buildingAttrib == null){
|
||||
buildingRepository.insertBuilding(landRequest);
|
||||
ownedBuildingRepository.insert(guid, landId);
|
||||
ownedBuildingRepository.insert(guid, buildingId);
|
||||
}else{
|
||||
ownedBuildingRepository.delete(buildingAttrib.getOwnerUserGuid(), landId);
|
||||
ownedBuildingRepository.delete(buildingAttrib.getOwnerUserGuid(), buildingId);
|
||||
buildingRepository.updateBuilding(landRequest);
|
||||
ownedBuildingRepository.insert(guid, landId);
|
||||
ownedBuildingRepository.insert(guid, buildingId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,22 @@
|
||||
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.Item;
|
||||
import com.caliverse.admin.domain.entity.Message;
|
||||
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.MoneyAttrib;
|
||||
import com.caliverse.admin.dynamodb.domain.atrrib.UserNicknameRegistryAttrib;
|
||||
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.global.common.annotation.DynamoDBTransaction;
|
||||
import com.caliverse.admin.global.common.constants.AdminConstants;
|
||||
import com.caliverse.admin.global.common.constants.CommonConstants;
|
||||
import com.caliverse.admin.global.common.constants.DynamoDBConstants;
|
||||
import com.caliverse.admin.logs.Indicatordomain.StartEndTime;
|
||||
import com.caliverse.admin.logs.logservice.LogServiceHelper;
|
||||
import com.caliverse.admin.logs.logservice.indicators.IndicatorsMoneyService;
|
||||
@@ -21,6 +27,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@@ -31,10 +38,12 @@ public class DynamodbService {
|
||||
private final UserNicknameRegistryRepository userNicknameRegistryRepository;
|
||||
private final MoneyRepository moneyRepository;
|
||||
private final SystemMetaMailRepository systemMetaMailRepository;
|
||||
private final MailRepository mailRepository;
|
||||
|
||||
private final IndicatorsMoneyService moneyService;
|
||||
|
||||
private final ObjectMapper mapper = new ObjectMapper();
|
||||
private final MetaDataHandler metaDataHandler;
|
||||
|
||||
public void saveUserMoney(){
|
||||
try {
|
||||
@@ -58,4 +67,28 @@ public class DynamodbService {
|
||||
public void insertSystemMail(Event event){
|
||||
systemMetaMailRepository.insert(event);
|
||||
}
|
||||
|
||||
@DynamoDBTransaction
|
||||
public void insertLandChangesMail(LandRequest landRequest){
|
||||
MetaSystemMailData systemMailData = metaDataHandler.getMetaSystemMailListData().stream()
|
||||
.filter(data -> data.getKey().equals(CommonConstants.SYSTEM_MAIL_LAND_TRANS_KEY)).findFirst().orElse(null);
|
||||
MetaLandData landData = metaDataHandler.getMetaLandData(landRequest.getLandId());
|
||||
|
||||
List<String> arguments = new ArrayList<>();
|
||||
arguments.add(landRequest.getUserName());
|
||||
arguments.add(landData.getLandName());
|
||||
|
||||
String guid = landRequest.getUserGuid();
|
||||
String nickname = landRequest.getUserName();
|
||||
List<MailItem> items = new ArrayList<>();
|
||||
items.add(MailItem.builder()
|
||||
.itemId(landData.getLinkedItem())
|
||||
.count(1.0)
|
||||
.productId(0)
|
||||
.isRepeatProduct(false)
|
||||
.build()
|
||||
);
|
||||
|
||||
mailRepository.insertRecvSystemMail(guid, nickname, items, systemMailData, arguments);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user