battleEvent dynamoDB 저장 처리
This commit is contained in:
@@ -9,6 +9,7 @@ import com.caliverse.admin.domain.entity.metadata.MetaBattleConfigData;
|
||||
import com.caliverse.admin.domain.entity.metadata.MetaBattleRewardData;
|
||||
import com.caliverse.admin.domain.request.BattleEventRequest;
|
||||
import com.caliverse.admin.domain.response.BattleEventResponse;
|
||||
import com.caliverse.admin.dynamodb.service.DynamodbBattleEventService;
|
||||
import com.caliverse.admin.global.common.code.CommonCode;
|
||||
import com.caliverse.admin.global.common.code.ErrorCode;
|
||||
import com.caliverse.admin.global.common.code.SuccessCode;
|
||||
@@ -37,6 +38,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
@Slf4j
|
||||
public class BattleEventService {
|
||||
|
||||
private final DynamodbBattleEventService dynamodbBattleEventService;
|
||||
|
||||
private final BattleMapper battleMapper;
|
||||
private final MetaDataHandler metaDataHandler;
|
||||
private final HistoryService historyService;
|
||||
@@ -149,7 +152,7 @@ public class BattleEventService {
|
||||
CommonUtils.getClientIp()
|
||||
);
|
||||
|
||||
// dynamodbLandAuctionService.insertLandAuctionRegistryWithActivity(landRequest);
|
||||
dynamodbBattleEventService.insertBattleEvent(battleEventRequest);
|
||||
|
||||
return BattleEventResponse.builder()
|
||||
.status(CommonCode.SUCCESS.getHttpStatus())
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.caliverse.admin.dynamodb.domain.atrrib;
|
||||
|
||||
import com.caliverse.admin.dynamodb.entity.EDayOfWeekType;
|
||||
import com.caliverse.admin.dynamodb.entity.EOncePeriodRangeType;
|
||||
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.HashSet;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString(callSuper = true)
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@NoArgsConstructor
|
||||
@DynamoDbBean
|
||||
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
|
||||
public class BattleEventAttrib extends DynamoDBAttribBase {
|
||||
|
||||
@JsonProperty("event_id")
|
||||
private long eventId;
|
||||
|
||||
@JsonProperty("is_active")
|
||||
private boolean isActive;
|
||||
|
||||
@JsonProperty("start_day")
|
||||
private String startDay;
|
||||
|
||||
@JsonProperty("start_hour")
|
||||
private Integer startHour;
|
||||
|
||||
@JsonProperty("start_min")
|
||||
private Integer startMin;
|
||||
|
||||
@JsonProperty("end_date")
|
||||
private String endDate;
|
||||
|
||||
@JsonProperty("instance_id")
|
||||
private Integer instanceId;
|
||||
|
||||
@JsonProperty("once_period_type")
|
||||
private EOncePeriodRangeType oncePeriodType;
|
||||
|
||||
@JsonProperty("day_of_week_type")
|
||||
private HashSet<EDayOfWeekType> dayOfWeekType;
|
||||
|
||||
@JsonProperty("ffa_config_data_id")
|
||||
private Integer configDataId;
|
||||
|
||||
@JsonProperty("ffa_reward_group_id")
|
||||
private Integer rewardGroupId;
|
||||
|
||||
@JsonProperty("ffa_hot_time")
|
||||
private Integer hotTime;
|
||||
|
||||
@JsonProperty("round_count")
|
||||
private Integer roundCount;
|
||||
|
||||
}
|
||||
@@ -10,20 +10,20 @@ import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;
|
||||
@NoArgsConstructor
|
||||
@DynamoDbBean
|
||||
public class BattleEventDoc extends DynamoDBDocBase {
|
||||
private String systemMetaMailAttrib;
|
||||
private String battleEventAttrib;
|
||||
|
||||
public String getAttribFieldName() {
|
||||
return "SystemMetaMailAttrib";
|
||||
return "BattleEventAttrib";
|
||||
}
|
||||
|
||||
@DynamoDbAttribute("SystemMetaMailAttrib")
|
||||
@JsonProperty("SystemMetaMailAttrib")
|
||||
@DynamoDbAttribute("BattleEventAttrib")
|
||||
@JsonProperty("BattleEventAttrib")
|
||||
public String getAttribValue() {
|
||||
return systemMetaMailAttrib;
|
||||
return battleEventAttrib;
|
||||
}
|
||||
|
||||
public void setAttribValue(String value) {
|
||||
this.systemMetaMailAttrib = value;
|
||||
this.battleEventAttrib = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.caliverse.admin.dynamodb.entity;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public enum EDayOfWeekType {
|
||||
|
||||
Sunday(0), // 일요일
|
||||
Monday(1), // 월요일
|
||||
Tuesday(2), // 화요일
|
||||
Wednesday(3), // 수요일
|
||||
Thursday(4), // 목요일
|
||||
Friday(5), // 금요일
|
||||
Saturday(6), // 토요일
|
||||
None(99);
|
||||
|
||||
private final int value;
|
||||
|
||||
EDayOfWeekType(int value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.caliverse.admin.dynamodb.entity;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public enum EOncePeriodRangeType {
|
||||
|
||||
NONE(0),
|
||||
Nolimit(1),
|
||||
Daily(2),
|
||||
Weekly(3),
|
||||
Monthly(4);
|
||||
|
||||
private final int value;
|
||||
|
||||
EOncePeriodRangeType(int value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.caliverse.admin.dynamodb.repository;
|
||||
|
||||
import com.caliverse.admin.domain.request.BattleEventRequest;
|
||||
import com.caliverse.admin.dynamodb.domain.doc.BattleEventDoc;
|
||||
|
||||
public interface BattleEventRepository extends DynamoDBRepository<BattleEventDoc> {
|
||||
void insert(BattleEventRequest battleEventRequest);
|
||||
}
|
||||
@@ -0,0 +1,109 @@
|
||||
package com.caliverse.admin.dynamodb.repository.Impl;
|
||||
|
||||
import com.caliverse.admin.domain.entity.BattleEvent;
|
||||
import com.caliverse.admin.domain.entity.HISTORYTYPE;
|
||||
import com.caliverse.admin.domain.request.BattleEventRequest;
|
||||
import com.caliverse.admin.dynamodb.domain.atrrib.BattleEventAttrib;
|
||||
import com.caliverse.admin.dynamodb.domain.doc.BattleEventDoc;
|
||||
import com.caliverse.admin.dynamodb.entity.EDayOfWeekType;
|
||||
import com.caliverse.admin.dynamodb.entity.EOncePeriodRangeType;
|
||||
import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository;
|
||||
import com.caliverse.admin.dynamodb.repository.BattleEventRepository;
|
||||
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.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.HashSet;
|
||||
|
||||
import static com.caliverse.admin.global.common.utils.CommonUtils.convertUTCDate;
|
||||
import static com.caliverse.admin.global.common.utils.DateUtils.stringToISODateTime;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class BattleEventRepositoryImpl extends BaseDynamoDBRepository<BattleEventDoc> implements BattleEventRepository {
|
||||
public BattleEventRepositoryImpl(DynamoDBOperations operations, DynamodbHistoryLogService dynamodbHistoryLogService, ObjectMapper objectMapper) {
|
||||
super(operations, BattleEventDoc.class, dynamodbHistoryLogService, objectMapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insert(BattleEventRequest battleEventRequest) {
|
||||
LocalDateTime nowDate = LocalDateTime.now();
|
||||
LocalDateTime start_dt = battleEventRequest.getEventStartDt();
|
||||
BattleEvent.BATTLE_REPEAT_TYPE repeatType = battleEventRequest.getRepeatType();
|
||||
|
||||
EOncePeriodRangeType oncePeriodRangeType = getOncePeriodRangeType(repeatType);
|
||||
EDayOfWeekType dayOfWeekType = getDayOfWeekType(repeatType);
|
||||
|
||||
HashSet<EDayOfWeekType> hDayOfWeekType = new HashSet<>();
|
||||
hDayOfWeekType.add(dayOfWeekType);
|
||||
|
||||
try {
|
||||
BattleEventAttrib attrib = new BattleEventAttrib();
|
||||
attrib.setAttribType(DynamoDBConstants.ATTRIB_BATTLE_EVENT);
|
||||
attrib.setEventId(battleEventRequest.getId());
|
||||
attrib.setStartDay(stringToISODateTime(start_dt.toLocalDate().atStartOfDay()));
|
||||
attrib.setStartHour(start_dt.getHour());
|
||||
attrib.setStartMin(start_dt.getMinute());
|
||||
attrib.setEndDate(stringToISODateTime(battleEventRequest.getEventEndDt()));
|
||||
attrib.setInstanceId(battleEventRequest.getInstanceId());
|
||||
attrib.setOncePeriodType(oncePeriodRangeType);
|
||||
attrib.setDayOfWeekType(hDayOfWeekType);
|
||||
attrib.setConfigDataId(battleEventRequest.getConfigId());
|
||||
attrib.setRewardGroupId(battleEventRequest.getRewardGroupId());
|
||||
attrib.setHotTime(battleEventRequest.getHotTime());
|
||||
attrib.setRoundCount(battleEventRequest.getRoundCount());
|
||||
|
||||
BattleEventDoc doc = new BattleEventDoc();
|
||||
doc.setPK(DynamoDBConstants.PK_KEY_BATTLE_EVENT);
|
||||
doc.setSK(String.valueOf(battleEventRequest.getId()));
|
||||
doc.setDocType(DynamoDBConstants.DOC_BATTLE_EVENT);
|
||||
doc.setAttribValue(objectMapper.writeValueAsString(attrib));
|
||||
doc.setCreatedDateTime(convertUTCDate(nowDate));
|
||||
doc.setUpdatedDateTime(convertUTCDate(nowDate));
|
||||
doc.setDeletedDateTime(DynamoDBConstants.MIN_DATE);
|
||||
doc.setRestoredDateTime(DynamoDBConstants.MIN_DATE);
|
||||
|
||||
save(doc);
|
||||
|
||||
dynamodbHistoryLogService.insertHistoryLog(
|
||||
HISTORYTYPE.BATTLE_EVENT_ADD,
|
||||
HISTORYTYPE.BATTLE_EVENT_ADD.name(),
|
||||
doc,
|
||||
CommonUtils.getAdmin().getEmail(),
|
||||
CommonUtils.getClientIp()
|
||||
);
|
||||
}catch (Exception e){
|
||||
log.error("insert Error: {}", e.getMessage());
|
||||
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private EOncePeriodRangeType getOncePeriodRangeType(BattleEvent.BATTLE_REPEAT_TYPE repeatType) {
|
||||
return switch (repeatType) {
|
||||
case DAY -> EOncePeriodRangeType.Daily;
|
||||
case SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY -> EOncePeriodRangeType.Weekly;
|
||||
default -> EOncePeriodRangeType.NONE;
|
||||
};
|
||||
}
|
||||
|
||||
private EDayOfWeekType getDayOfWeekType(BattleEvent.BATTLE_REPEAT_TYPE repeatType) {
|
||||
return switch (repeatType) {
|
||||
case SUNDAY -> EDayOfWeekType.Sunday;
|
||||
case MONDAY -> EDayOfWeekType.Monday;
|
||||
case TUESDAY -> EDayOfWeekType.Tuesday;
|
||||
case WEDNESDAY -> EDayOfWeekType.Wednesday;
|
||||
case THURSDAY -> EDayOfWeekType.Thursday;
|
||||
case FRIDAY -> EDayOfWeekType.Friday;
|
||||
case SATURDAY -> EDayOfWeekType.Saturday;
|
||||
default -> EDayOfWeekType.None;
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.caliverse.admin.dynamodb.service;
|
||||
|
||||
import com.caliverse.admin.domain.request.BattleEventRequest;
|
||||
import com.caliverse.admin.dynamodb.repository.BattleEventRepository;
|
||||
import com.caliverse.admin.global.common.annotation.DynamoDBTransaction;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class DynamodbBattleEventService {
|
||||
private final BattleEventRepository battleEventRepository;
|
||||
|
||||
@DynamoDBTransaction
|
||||
public void insertBattleEvent(BattleEventRequest battleEventRequest) {
|
||||
battleEventRepository.insert(battleEventRequest);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -17,6 +17,8 @@ public class DynamoDBConstants {
|
||||
public static final String PK_KEY_OWNED_LAND = "owned_land#";
|
||||
public static final String PK_KEY_BUILDING = "building#";
|
||||
public static final String PK_KEY_OWNED_BUILDING = "owned_building#";
|
||||
public static final String PK_KEY_BATTLE_EVENT = "management_battle_event#global";
|
||||
|
||||
//SK
|
||||
|
||||
//Attribute
|
||||
@@ -26,6 +28,7 @@ public class DynamoDBConstants {
|
||||
public static final String ATTRIB_LANDAUCTION_ACTIVE = "LandAuctionActivityAttrib";
|
||||
public static final String ATTRIB_LANDAUCTION_HIGHEST_USER = "LandAuctionHighestBidUserAttrib";
|
||||
public static final String ATTRIB_USER_NICKNAME_REGISTRY = "UserNicknameRegistryAttrib";
|
||||
public static final String ATTRIB_BATTLE_EVENT = "BattleEventAttrib";
|
||||
|
||||
//DOC
|
||||
public static final String DOC_SYSTEMMAIL = "SystemMetaMailDoc";
|
||||
@@ -33,6 +36,7 @@ public class DynamoDBConstants {
|
||||
public static final String DOC_LANDAUCTION_ACTIVE = "LandAuctionActivityDoc";
|
||||
public static final String DOC_LANDAUCTION_HIGHEST_USER = "LandAuctionHighestBidUserDoc";
|
||||
public static final String DOC_USER_NICKNAME_REGISTRY = "UserNicknameRegistryDoc";
|
||||
public static final String DOC_BATTLE_EVENT = "BattleEventDoc";
|
||||
|
||||
//SCHEMA
|
||||
public static final String SCHEMA_UPDATE_TIME = "UpdatedDateTime";
|
||||
|
||||
Reference in New Issue
Block a user