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.entity.metadata.MetaBattleRewardData;
|
||||||
import com.caliverse.admin.domain.request.BattleEventRequest;
|
import com.caliverse.admin.domain.request.BattleEventRequest;
|
||||||
import com.caliverse.admin.domain.response.BattleEventResponse;
|
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.CommonCode;
|
||||||
import com.caliverse.admin.global.common.code.ErrorCode;
|
import com.caliverse.admin.global.common.code.ErrorCode;
|
||||||
import com.caliverse.admin.global.common.code.SuccessCode;
|
import com.caliverse.admin.global.common.code.SuccessCode;
|
||||||
@@ -37,6 +38,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class BattleEventService {
|
public class BattleEventService {
|
||||||
|
|
||||||
|
private final DynamodbBattleEventService dynamodbBattleEventService;
|
||||||
|
|
||||||
private final BattleMapper battleMapper;
|
private final BattleMapper battleMapper;
|
||||||
private final MetaDataHandler metaDataHandler;
|
private final MetaDataHandler metaDataHandler;
|
||||||
private final HistoryService historyService;
|
private final HistoryService historyService;
|
||||||
@@ -149,7 +152,7 @@ public class BattleEventService {
|
|||||||
CommonUtils.getClientIp()
|
CommonUtils.getClientIp()
|
||||||
);
|
);
|
||||||
|
|
||||||
// dynamodbLandAuctionService.insertLandAuctionRegistryWithActivity(landRequest);
|
dynamodbBattleEventService.insertBattleEvent(battleEventRequest);
|
||||||
|
|
||||||
return BattleEventResponse.builder()
|
return BattleEventResponse.builder()
|
||||||
.status(CommonCode.SUCCESS.getHttpStatus())
|
.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
|
@NoArgsConstructor
|
||||||
@DynamoDbBean
|
@DynamoDbBean
|
||||||
public class BattleEventDoc extends DynamoDBDocBase {
|
public class BattleEventDoc extends DynamoDBDocBase {
|
||||||
private String systemMetaMailAttrib;
|
private String battleEventAttrib;
|
||||||
|
|
||||||
public String getAttribFieldName() {
|
public String getAttribFieldName() {
|
||||||
return "SystemMetaMailAttrib";
|
return "BattleEventAttrib";
|
||||||
}
|
}
|
||||||
|
|
||||||
@DynamoDbAttribute("SystemMetaMailAttrib")
|
@DynamoDbAttribute("BattleEventAttrib")
|
||||||
@JsonProperty("SystemMetaMailAttrib")
|
@JsonProperty("BattleEventAttrib")
|
||||||
public String getAttribValue() {
|
public String getAttribValue() {
|
||||||
return systemMetaMailAttrib;
|
return battleEventAttrib;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAttribValue(String value) {
|
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_OWNED_LAND = "owned_land#";
|
||||||
public static final String PK_KEY_BUILDING = "building#";
|
public static final String PK_KEY_BUILDING = "building#";
|
||||||
public static final String PK_KEY_OWNED_BUILDING = "owned_building#";
|
public static final String PK_KEY_OWNED_BUILDING = "owned_building#";
|
||||||
|
public static final String PK_KEY_BATTLE_EVENT = "management_battle_event#global";
|
||||||
|
|
||||||
//SK
|
//SK
|
||||||
|
|
||||||
//Attribute
|
//Attribute
|
||||||
@@ -26,6 +28,7 @@ public class DynamoDBConstants {
|
|||||||
public static final String ATTRIB_LANDAUCTION_ACTIVE = "LandAuctionActivityAttrib";
|
public static final String ATTRIB_LANDAUCTION_ACTIVE = "LandAuctionActivityAttrib";
|
||||||
public static final String ATTRIB_LANDAUCTION_HIGHEST_USER = "LandAuctionHighestBidUserAttrib";
|
public static final String ATTRIB_LANDAUCTION_HIGHEST_USER = "LandAuctionHighestBidUserAttrib";
|
||||||
public static final String ATTRIB_USER_NICKNAME_REGISTRY = "UserNicknameRegistryAttrib";
|
public static final String ATTRIB_USER_NICKNAME_REGISTRY = "UserNicknameRegistryAttrib";
|
||||||
|
public static final String ATTRIB_BATTLE_EVENT = "BattleEventAttrib";
|
||||||
|
|
||||||
//DOC
|
//DOC
|
||||||
public static final String DOC_SYSTEMMAIL = "SystemMetaMailDoc";
|
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_ACTIVE = "LandAuctionActivityDoc";
|
||||||
public static final String DOC_LANDAUCTION_HIGHEST_USER = "LandAuctionHighestBidUserDoc";
|
public static final String DOC_LANDAUCTION_HIGHEST_USER = "LandAuctionHighestBidUserDoc";
|
||||||
public static final String DOC_USER_NICKNAME_REGISTRY = "UserNicknameRegistryDoc";
|
public static final String DOC_USER_NICKNAME_REGISTRY = "UserNicknameRegistryDoc";
|
||||||
|
public static final String DOC_BATTLE_EVENT = "BattleEventDoc";
|
||||||
|
|
||||||
//SCHEMA
|
//SCHEMA
|
||||||
public static final String SCHEMA_UPDATE_TIME = "UpdatedDateTime";
|
public static final String SCHEMA_UPDATE_TIME = "UpdatedDateTime";
|
||||||
|
|||||||
Reference in New Issue
Block a user