Compare commits

...

49 Commits

Author SHA1 Message Date
eed02de94e 비즈니스로그 멀티 조건 조회 가능하게 수정 2025-04-14 18:06:16 +09:00
d5f28d9dba mongodb timeout 처리 2025-04-14 12:00:04 +09:00
67d0b277de 메모리 초과 처리 2025-04-10 11:55:51 +09:00
4e0304899c MailJson 타입으로 추가생성 2025-04-10 11:55:30 +09:00
2c719227b4 비즈니스로그 조회 수정 2025-04-09 15:48:58 +09:00
a50f703eb0 mongodb 설정 분기 처리
비즈니스로그 조회 수정
2025-04-09 15:48:14 +09:00
a5122cfefc 예전 dynamodb 방식 정리 2025-04-03 18:18:24 +09:00
86d880e5c4 dynamodb 페이징 처리 추가
우편 조회 페이징 방식 수정
2025-04-03 14:14:35 +09:00
27320c44f8 유저조회 페이지 키 추가 2025-04-03 10:52:41 +09:00
b22f0cdb50 유저 킥 사유 추가 2025-04-03 10:52:23 +09:00
4c00b074c4 유저생성 정보
로그인 정보 batch 추가
2025-04-03 10:52:08 +09:00
160df69374 유저생성 정보
로그인 정보 batch 추가
2025-04-03 10:51:49 +09:00
88c061fa65 mongodb 통합 2025-04-03 10:51:05 +09:00
4b61af8909 dynamodb 페이징 처리 2025-04-02 19:01:28 +09:00
c764dcbaf1 mongodb 접속 정보 수정 2025-04-02 19:00:27 +09:00
0973a36fc6 유저 접속상태 추가
킥처리시 reason 추가
유저 킥 처리
2025-04-02 18:18:06 +09:00
0fc081861b 닉네임 소문자 변경 처리 2025-04-01 12:33:56 +09:00
49dab65d25 exception 처리 수정 2025-03-27 13:55:14 +09:00
0fbfdd906b null체크 2025-03-27 13:54:58 +09:00
c5b0cd9b9d log 처리 수정 2025-03-26 15:26:51 +09:00
e0b537bdb5 데이터 초기화 스케줄 처리 추가 2025-03-26 15:26:37 +09:00
68c5f0a5ca 데이터 초기화 API 추가 및 처리 2025-03-26 15:26:23 +09:00
ebbba40054 logAction 수정 2025-03-26 15:25:43 +09:00
f6762671d9 dynamodb 데이터 초기화 처리 2025-03-26 15:25:18 +09:00
927ef6c514 트랜잭션 처리 수정 및 공통정보 2025-03-26 15:24:34 +09:00
51100ecb31 dynamodb prefix 스캔 조회방식 추가 2025-03-26 15:23:23 +09:00
cb948c8a16 재화타입 번호수정 2025-03-26 15:21:47 +09:00
0c20a72173 데이터 초기화 히스토리 추가 2025-03-26 15:21:12 +09:00
b6548a94a7 사용자 권한레벨정보 추가 2025-03-26 15:17:46 +09:00
5b13f0c088 인게임메시지 스케줄조회 상태 추가 2025-03-26 15:16:33 +09:00
a097fd7bb0 dynamodb 우편 생성 수정 2025-03-19 10:58:34 +09:00
1e20e5ddf7 비즈니스 로그 조회 API 및 처리 추가 2025-03-19 10:58:19 +09:00
2cacd7a656 랜드 소유권 변경 예외 처리 추가 2025-03-19 10:57:27 +09:00
160377fe20 랜드 소유권 변경시 우편 발송 2025-03-14 18:23:39 +09:00
e1cb55871b SystemMailMeta 데이터 로드 추가 2025-03-14 18:22:59 +09:00
8b316bd5a3 dynamodb 우편 추가 2025-03-14 18:21:32 +09:00
2a94eb8f65 소유권 변경 스케줄링 2025-03-13 14:44:58 +09:00
f943a94f65 랜드소유권변경 버그 수정 2025-03-13 14:44:16 +09:00
ff7f8744e8 랜드소유권변경 예약 취소 처리 2025-03-13 14:44:03 +09:00
64c6791cc3 스케줄러 구조 리팩토링 2025-03-13 14:42:17 +09:00
3acb92a579 랜드 소유권 변경 처리 2025-03-07 18:31:50 +09:00
c5292fa20f dynamodb 랜드소유정보 2025-03-06 12:03:22 +09:00
ed6e299814 날짜 체크 수정 2025-03-06 11:59:36 +09:00
8dcfc4ed13 전투 이벤트 정렬 수정 2025-03-06 11:58:10 +09:00
4f1a26ca96 랜드 정보 조회 2025-03-06 11:56:53 +09:00
7c103cbba1 proto 업데이트 2025-03-06 11:54:47 +09:00
33691a48f4 랜드 메타정보 추가 2025-03-06 11:54:14 +09:00
2abd4b0067 전투시스템 종료일자 계산 수정 2025-02-25 10:47:33 +09:00
eac4fb8943 전투시스템 상태변경 로그 추가 2025-02-25 10:47:13 +09:00
176 changed files with 19181 additions and 3268 deletions

View File

@@ -14,7 +14,9 @@ public enum StatisticsType {
CAPACITY, CAPACITY,
UGQ_CREATE, UGQ_CREATE,
SERVER_INFO, SERVER_INFO,
MONEY MONEY,
USER_CREATE,
USER_LOGIN
; ;
public static StatisticsType getStatisticsType(String type) { public static StatisticsType getStatisticsType(String type) {

View File

@@ -0,0 +1,26 @@
package com.caliverse.admin.Indicators.entity;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.mongodb.core.mapping.Document;
@Getter
@Setter
@Document(collection = "userCreate")
public class UserCreateLogInfo extends LogInfoBase{
private String logDay;
private String accountId;
private String userGuid;
private String userNickname;
private String createdTime;
public UserCreateLogInfo(String logDay, String accountId, String userGuid, String userNickname, String createdTime) {
super(StatisticsType.USER_CREATE);
this.logDay = logDay;
this.accountId = accountId;
this.userGuid = userGuid;
this.userNickname = userNickname;
this.createdTime = createdTime;
}
}

View File

@@ -0,0 +1,46 @@
package com.caliverse.admin.Indicators.entity;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.mongodb.core.mapping.Document;
import java.util.List;
import java.util.Map;
@Getter
@Setter
@Document(collection = "userLogin")
public class UserLoginLogInfo extends LogInfoBase{
private String logDay;
private String accountId;
private String userGuid;
private String userNickname;
private List<Map<String, Object>> sessions;
private String firstLoginTime;
private String lastLogoutTime;
private Integer loginCount;
private Double totalPlayTime;
public UserLoginLogInfo(String logDay,
String accountId,
String userGuid,
String userNickname,
List<Map<String, Object>> sessions,
String firstLoginTime,
String lastLogoutTime,
Integer loginCount,
Double totalPlayTime)
{
super(StatisticsType.USER_LOGIN);
this.logDay = logDay;
this.accountId = accountId;
this.userGuid = userGuid;
this.userNickname = userNickname;
this.sessions = sessions;
this.firstLoginTime = firstLoginTime;
this.lastLogoutTime = lastLogoutTime;
this.loginCount = loginCount;
this.totalPlayTime = totalPlayTime;
}
}

View File

@@ -0,0 +1,7 @@
package com.caliverse.admin.Indicators.indicatorrepository;
import com.caliverse.admin.Indicators.entity.UserCreateLogInfo;
import org.springframework.data.mongodb.repository.MongoRepository;
public interface IndicatorUserCreateRepository extends MongoRepository<UserCreateLogInfo, String> {
}

View File

@@ -0,0 +1,7 @@
package com.caliverse.admin.Indicators.indicatorrepository;
import com.caliverse.admin.Indicators.entity.UserLoginLogInfo;
import org.springframework.data.mongodb.repository.MongoRepository;
public interface IndicatorUserLoginRepository extends MongoRepository<UserLoginLogInfo, String> {
}

View File

@@ -19,10 +19,10 @@ public class MessageHandlerService {
this.rabbitMqService = rabbitMqService; this.rabbitMqService = rabbitMqService;
} }
public void sendUserKickMessage(String userGuid, String serverName){ public void sendUserKickMessage(String userGuid, String serverName, String reason){
var user_kick_builder = ServerMessage.MOS2GS_NTF_USER_KICK.newBuilder(); var user_kick_builder = ServerMessage.MOS2GS_NTF_USER_KICK.newBuilder();
user_kick_builder.setUserGuid(userGuid); user_kick_builder.setUserGuid(userGuid);
user_kick_builder.setKickReasonMsg(""); user_kick_builder.setKickReasonMsg(String.format("backoffice %s", reason));
user_kick_builder.setLogoutReasonType(LogoutReasonType.LogoutReasonType_None); user_kick_builder.setLogoutReasonType(LogoutReasonType.LogoutReasonType_None);
rabbitMqService.SendMessage(user_kick_builder.build(), serverName); rabbitMqService.SendMessage(user_kick_builder.build(), serverName);

View File

@@ -54,11 +54,15 @@ public class RabbitMqService {
} }
catch (InvalidProtocolBufferException e) { catch (InvalidProtocolBufferException e) {
log.error("InvalidProtocolBufferException message: {}, destServer: {}, e.Message : {}", message.toString(), destServer, e.getMessage()); log.error("InvalidProtocolBufferException message: {}, destServer: {}, e.Message : {}", message.toString(), destServer, e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.EXCEPTION_INVALID_PROTOCOL_BUFFER_EXCEPTION_ERROR.getMessage()); throw new RuntimeException("InvalidProtocolBufferException message: " + message, e);
} }
catch (IOException e) { catch (IOException e) {
log.error("IOException message: {}, destServer: {}, e.Message : {}", message.toString(), destServer, e.getMessage()); log.error("IOException message: {}, destServer: {}, e.Message : {}", message.toString(), destServer, e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.EXCEPTION_IO_EXCEPTION_ERROR.getMessage()); throw new RuntimeException("IOException message: " + message, e);
}
catch (Exception e) {
log.error("Exception message: {}, destServer: {}, e.Message : {}", message.toString(), destServer, e.getMessage());
throw new RuntimeException("Exception message: " + message, e);
} }
} }

View File

@@ -0,0 +1,731 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: Game_Define.proto
package com.caliverse.admin.domain.RabbitMq.message;
/**
* Protobuf type {@code FloorProfitInfo}
*/
public final class FloorProfitInfo extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:FloorProfitInfo)
FloorProfitInfoOrBuilder {
private static final long serialVersionUID = 0L;
// Use FloorProfitInfo.newBuilder() to construct.
private FloorProfitInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
super(builder);
}
private FloorProfitInfo() {
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new FloorProfitInfo();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return com.caliverse.admin.domain.RabbitMq.message.GameDefine.internal_static_FloorProfitInfo_descriptor;
}
@SuppressWarnings({"rawtypes"})
@java.lang.Override
protected com.google.protobuf.MapField internalGetMapField(
int number) {
switch (number) {
case 1:
return internalGetProfits();
default:
throw new RuntimeException(
"Invalid map field number: " + number);
}
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return com.caliverse.admin.domain.RabbitMq.message.GameDefine.internal_static_FloorProfitInfo_fieldAccessorTable
.ensureFieldAccessorsInitialized(
com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo.class, com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo.Builder.class);
}
public static final int PROFITS_FIELD_NUMBER = 1;
private static final class ProfitsDefaultEntryHolder {
static final com.google.protobuf.MapEntry<
java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money> defaultEntry =
com.google.protobuf.MapEntry
.<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money>newDefaultInstance(
com.caliverse.admin.domain.RabbitMq.message.GameDefine.internal_static_FloorProfitInfo_ProfitsEntry_descriptor,
com.google.protobuf.WireFormat.FieldType.INT32,
0,
com.google.protobuf.WireFormat.FieldType.MESSAGE,
com.caliverse.admin.domain.RabbitMq.message.Money.getDefaultInstance());
}
@SuppressWarnings("serial")
private com.google.protobuf.MapField<
java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money> profits_;
private com.google.protobuf.MapField<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money>
internalGetProfits() {
if (profits_ == null) {
return com.google.protobuf.MapField.emptyMapField(
ProfitsDefaultEntryHolder.defaultEntry);
}
return profits_;
}
public int getProfitsCount() {
return internalGetProfits().getMap().size();
}
/**
* <pre>
* &lt;CurrencyType, Money&gt;
* </pre>
*
* <code>map&lt;int32, .Money&gt; profits = 1;</code>
*/
@java.lang.Override
public boolean containsProfits(
int key) {
return internalGetProfits().getMap().containsKey(key);
}
/**
* Use {@link #getProfitsMap()} instead.
*/
@java.lang.Override
@java.lang.Deprecated
public java.util.Map<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money> getProfits() {
return getProfitsMap();
}
/**
* <pre>
* &lt;CurrencyType, Money&gt;
* </pre>
*
* <code>map&lt;int32, .Money&gt; profits = 1;</code>
*/
@java.lang.Override
public java.util.Map<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money> getProfitsMap() {
return internalGetProfits().getMap();
}
/**
* <pre>
* &lt;CurrencyType, Money&gt;
* </pre>
*
* <code>map&lt;int32, .Money&gt; profits = 1;</code>
*/
@java.lang.Override
public /* nullable */
com.caliverse.admin.domain.RabbitMq.message.Money getProfitsOrDefault(
int key,
/* nullable */
com.caliverse.admin.domain.RabbitMq.message.Money defaultValue) {
java.util.Map<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money> map =
internalGetProfits().getMap();
return map.containsKey(key) ? map.get(key) : defaultValue;
}
/**
* <pre>
* &lt;CurrencyType, Money&gt;
* </pre>
*
* <code>map&lt;int32, .Money&gt; profits = 1;</code>
*/
@java.lang.Override
public com.caliverse.admin.domain.RabbitMq.message.Money getProfitsOrThrow(
int key) {
java.util.Map<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money> map =
internalGetProfits().getMap();
if (!map.containsKey(key)) {
throw new java.lang.IllegalArgumentException();
}
return map.get(key);
}
private byte memoizedIsInitialized = -1;
@java.lang.Override
public final boolean isInitialized() {
byte isInitialized = memoizedIsInitialized;
if (isInitialized == 1) return true;
if (isInitialized == 0) return false;
memoizedIsInitialized = 1;
return true;
}
@java.lang.Override
public void writeTo(com.google.protobuf.CodedOutputStream output)
throws java.io.IOException {
com.google.protobuf.GeneratedMessageV3
.serializeIntegerMapTo(
output,
internalGetProfits(),
ProfitsDefaultEntryHolder.defaultEntry,
1);
getUnknownFields().writeTo(output);
}
@java.lang.Override
public int getSerializedSize() {
int size = memoizedSize;
if (size != -1) return size;
size = 0;
for (java.util.Map.Entry<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money> entry
: internalGetProfits().getMap().entrySet()) {
com.google.protobuf.MapEntry<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money>
profits__ = ProfitsDefaultEntryHolder.defaultEntry.newBuilderForType()
.setKey(entry.getKey())
.setValue(entry.getValue())
.build();
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(1, profits__);
}
size += getUnknownFields().getSerializedSize();
memoizedSize = size;
return size;
}
@java.lang.Override
public boolean equals(final java.lang.Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo)) {
return super.equals(obj);
}
com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo other = (com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo) obj;
if (!internalGetProfits().equals(
other.internalGetProfits())) return false;
if (!getUnknownFields().equals(other.getUnknownFields())) return false;
return true;
}
@java.lang.Override
public int hashCode() {
if (memoizedHashCode != 0) {
return memoizedHashCode;
}
int hash = 41;
hash = (19 * hash) + getDescriptor().hashCode();
if (!internalGetProfits().getMap().isEmpty()) {
hash = (37 * hash) + PROFITS_FIELD_NUMBER;
hash = (53 * hash) + internalGetProfits().hashCode();
}
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
return hash;
}
public static com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo parseFrom(
java.nio.ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo parseFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input, extensionRegistry);
}
public static com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo parseDelimitedFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
}
public static com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo parseFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input, extensionRegistry);
}
@java.lang.Override
public Builder newBuilderForType() { return newBuilder(); }
public static Builder newBuilder() {
return DEFAULT_INSTANCE.toBuilder();
}
public static Builder newBuilder(com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo prototype) {
return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
}
@java.lang.Override
public Builder toBuilder() {
return this == DEFAULT_INSTANCE
? new Builder() : new Builder().mergeFrom(this);
}
@java.lang.Override
protected Builder newBuilderForType(
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
Builder builder = new Builder(parent);
return builder;
}
/**
* Protobuf type {@code FloorProfitInfo}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:FloorProfitInfo)
com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfoOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return com.caliverse.admin.domain.RabbitMq.message.GameDefine.internal_static_FloorProfitInfo_descriptor;
}
@SuppressWarnings({"rawtypes"})
protected com.google.protobuf.MapField internalGetMapField(
int number) {
switch (number) {
case 1:
return internalGetProfits();
default:
throw new RuntimeException(
"Invalid map field number: " + number);
}
}
@SuppressWarnings({"rawtypes"})
protected com.google.protobuf.MapField internalGetMutableMapField(
int number) {
switch (number) {
case 1:
return internalGetMutableProfits();
default:
throw new RuntimeException(
"Invalid map field number: " + number);
}
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return com.caliverse.admin.domain.RabbitMq.message.GameDefine.internal_static_FloorProfitInfo_fieldAccessorTable
.ensureFieldAccessorsInitialized(
com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo.class, com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo.Builder.class);
}
// Construct using com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo.newBuilder()
private Builder() {
}
private Builder(
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
super(parent);
}
@java.lang.Override
public Builder clear() {
super.clear();
bitField0_ = 0;
internalGetMutableProfits().clear();
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return com.caliverse.admin.domain.RabbitMq.message.GameDefine.internal_static_FloorProfitInfo_descriptor;
}
@java.lang.Override
public com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo getDefaultInstanceForType() {
return com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo.getDefaultInstance();
}
@java.lang.Override
public com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo build() {
com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo buildPartial() {
com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo result = new com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo(this);
if (bitField0_ != 0) { buildPartial0(result); }
onBuilt();
return result;
}
private void buildPartial0(com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo result) {
int from_bitField0_ = bitField0_;
if (((from_bitField0_ & 0x00000001) != 0)) {
result.profits_ = internalGetProfits();
result.profits_.makeImmutable();
}
}
@java.lang.Override
public Builder clone() {
return super.clone();
}
@java.lang.Override
public Builder setField(
com.google.protobuf.Descriptors.FieldDescriptor field,
java.lang.Object value) {
return super.setField(field, value);
}
@java.lang.Override
public Builder clearField(
com.google.protobuf.Descriptors.FieldDescriptor field) {
return super.clearField(field);
}
@java.lang.Override
public Builder clearOneof(
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
return super.clearOneof(oneof);
}
@java.lang.Override
public Builder setRepeatedField(
com.google.protobuf.Descriptors.FieldDescriptor field,
int index, java.lang.Object value) {
return super.setRepeatedField(field, index, value);
}
@java.lang.Override
public Builder addRepeatedField(
com.google.protobuf.Descriptors.FieldDescriptor field,
java.lang.Object value) {
return super.addRepeatedField(field, value);
}
@java.lang.Override
public Builder mergeFrom(com.google.protobuf.Message other) {
if (other instanceof com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo) {
return mergeFrom((com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo other) {
if (other == com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo.getDefaultInstance()) return this;
internalGetMutableProfits().mergeFrom(
other.internalGetProfits());
bitField0_ |= 0x00000001;
this.mergeUnknownFields(other.getUnknownFields());
onChanged();
return this;
}
@java.lang.Override
public final boolean isInitialized() {
return true;
}
@java.lang.Override
public Builder mergeFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
if (extensionRegistry == null) {
throw new java.lang.NullPointerException();
}
try {
boolean done = false;
while (!done) {
int tag = input.readTag();
switch (tag) {
case 0:
done = true;
break;
case 10: {
com.google.protobuf.MapEntry<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money>
profits__ = input.readMessage(
ProfitsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
internalGetMutableProfits().getMutableMap().put(
profits__.getKey(), profits__.getValue());
bitField0_ |= 0x00000001;
break;
} // case 10
default: {
if (!super.parseUnknownField(input, extensionRegistry, tag)) {
done = true; // was an endgroup tag
}
break;
} // default:
} // switch (tag)
} // while (!done)
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
throw e.unwrapIOException();
} finally {
onChanged();
} // finally
return this;
}
private int bitField0_;
private com.google.protobuf.MapField<
java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money> profits_;
private com.google.protobuf.MapField<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money>
internalGetProfits() {
if (profits_ == null) {
return com.google.protobuf.MapField.emptyMapField(
ProfitsDefaultEntryHolder.defaultEntry);
}
return profits_;
}
private com.google.protobuf.MapField<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money>
internalGetMutableProfits() {
if (profits_ == null) {
profits_ = com.google.protobuf.MapField.newMapField(
ProfitsDefaultEntryHolder.defaultEntry);
}
if (!profits_.isMutable()) {
profits_ = profits_.copy();
}
bitField0_ |= 0x00000001;
onChanged();
return profits_;
}
public int getProfitsCount() {
return internalGetProfits().getMap().size();
}
/**
* <pre>
* &lt;CurrencyType, Money&gt;
* </pre>
*
* <code>map&lt;int32, .Money&gt; profits = 1;</code>
*/
@java.lang.Override
public boolean containsProfits(
int key) {
return internalGetProfits().getMap().containsKey(key);
}
/**
* Use {@link #getProfitsMap()} instead.
*/
@java.lang.Override
@java.lang.Deprecated
public java.util.Map<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money> getProfits() {
return getProfitsMap();
}
/**
* <pre>
* &lt;CurrencyType, Money&gt;
* </pre>
*
* <code>map&lt;int32, .Money&gt; profits = 1;</code>
*/
@java.lang.Override
public java.util.Map<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money> getProfitsMap() {
return internalGetProfits().getMap();
}
/**
* <pre>
* &lt;CurrencyType, Money&gt;
* </pre>
*
* <code>map&lt;int32, .Money&gt; profits = 1;</code>
*/
@java.lang.Override
public /* nullable */
com.caliverse.admin.domain.RabbitMq.message.Money getProfitsOrDefault(
int key,
/* nullable */
com.caliverse.admin.domain.RabbitMq.message.Money defaultValue) {
java.util.Map<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money> map =
internalGetProfits().getMap();
return map.containsKey(key) ? map.get(key) : defaultValue;
}
/**
* <pre>
* &lt;CurrencyType, Money&gt;
* </pre>
*
* <code>map&lt;int32, .Money&gt; profits = 1;</code>
*/
@java.lang.Override
public com.caliverse.admin.domain.RabbitMq.message.Money getProfitsOrThrow(
int key) {
java.util.Map<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money> map =
internalGetProfits().getMap();
if (!map.containsKey(key)) {
throw new java.lang.IllegalArgumentException();
}
return map.get(key);
}
public Builder clearProfits() {
bitField0_ = (bitField0_ & ~0x00000001);
internalGetMutableProfits().getMutableMap()
.clear();
return this;
}
/**
* <pre>
* &lt;CurrencyType, Money&gt;
* </pre>
*
* <code>map&lt;int32, .Money&gt; profits = 1;</code>
*/
public Builder removeProfits(
int key) {
internalGetMutableProfits().getMutableMap()
.remove(key);
return this;
}
/**
* Use alternate mutation accessors instead.
*/
@java.lang.Deprecated
public java.util.Map<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money>
getMutableProfits() {
bitField0_ |= 0x00000001;
return internalGetMutableProfits().getMutableMap();
}
/**
* <pre>
* &lt;CurrencyType, Money&gt;
* </pre>
*
* <code>map&lt;int32, .Money&gt; profits = 1;</code>
*/
public Builder putProfits(
int key,
com.caliverse.admin.domain.RabbitMq.message.Money value) {
if (value == null) { throw new NullPointerException("map value"); }
internalGetMutableProfits().getMutableMap()
.put(key, value);
bitField0_ |= 0x00000001;
return this;
}
/**
* <pre>
* &lt;CurrencyType, Money&gt;
* </pre>
*
* <code>map&lt;int32, .Money&gt; profits = 1;</code>
*/
public Builder putAllProfits(
java.util.Map<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money> values) {
internalGetMutableProfits().getMutableMap()
.putAll(values);
bitField0_ |= 0x00000001;
return this;
}
@java.lang.Override
public final Builder setUnknownFields(
final com.google.protobuf.UnknownFieldSet unknownFields) {
return super.setUnknownFields(unknownFields);
}
@java.lang.Override
public final Builder mergeUnknownFields(
final com.google.protobuf.UnknownFieldSet unknownFields) {
return super.mergeUnknownFields(unknownFields);
}
// @@protoc_insertion_point(builder_scope:FloorProfitInfo)
}
// @@protoc_insertion_point(class_scope:FloorProfitInfo)
private static final com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo();
}
public static com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser<FloorProfitInfo>
PARSER = new com.google.protobuf.AbstractParser<FloorProfitInfo>() {
@java.lang.Override
public FloorProfitInfo parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
Builder builder = newBuilder();
try {
builder.mergeFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
throw e.setUnfinishedMessage(builder.buildPartial());
} catch (com.google.protobuf.UninitializedMessageException e) {
throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
} catch (java.io.IOException e) {
throw new com.google.protobuf.InvalidProtocolBufferException(e)
.setUnfinishedMessage(builder.buildPartial());
}
return builder.buildPartial();
}
};
public static com.google.protobuf.Parser<FloorProfitInfo> parser() {
return PARSER;
}
@java.lang.Override
public com.google.protobuf.Parser<FloorProfitInfo> getParserForType() {
return PARSER;
}
@java.lang.Override
public com.caliverse.admin.domain.RabbitMq.message.FloorProfitInfo getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}

View File

@@ -0,0 +1,63 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: Game_Define.proto
package com.caliverse.admin.domain.RabbitMq.message;
public interface FloorProfitInfoOrBuilder extends
// @@protoc_insertion_point(interface_extends:FloorProfitInfo)
com.google.protobuf.MessageOrBuilder {
/**
* <pre>
* &lt;CurrencyType, Money&gt;
* </pre>
*
* <code>map&lt;int32, .Money&gt; profits = 1;</code>
*/
int getProfitsCount();
/**
* <pre>
* &lt;CurrencyType, Money&gt;
* </pre>
*
* <code>map&lt;int32, .Money&gt; profits = 1;</code>
*/
boolean containsProfits(
int key);
/**
* Use {@link #getProfitsMap()} instead.
*/
@java.lang.Deprecated
java.util.Map<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money>
getProfits();
/**
* <pre>
* &lt;CurrencyType, Money&gt;
* </pre>
*
* <code>map&lt;int32, .Money&gt; profits = 1;</code>
*/
java.util.Map<java.lang.Integer, com.caliverse.admin.domain.RabbitMq.message.Money>
getProfitsMap();
/**
* <pre>
* &lt;CurrencyType, Money&gt;
* </pre>
*
* <code>map&lt;int32, .Money&gt; profits = 1;</code>
*/
/* nullable */
com.caliverse.admin.domain.RabbitMq.message.Money getProfitsOrDefault(
int key,
/* nullable */
com.caliverse.admin.domain.RabbitMq.message.Money defaultValue);
/**
* <pre>
* &lt;CurrencyType, Money&gt;
* </pre>
*
* <code>map&lt;int32, .Money&gt; profits = 1;</code>
*/
com.caliverse.admin.domain.RabbitMq.message.Money getProfitsOrThrow(
int key);
}

View File

@@ -1084,5 +1084,140 @@ public interface ServerMessageOrBuilder extends
*/ */
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.GS2MQS_NTF_BEACON_COMPACT_SYNCOrBuilder getNtfBeaconCompactSyncOrBuilder(); com.caliverse.admin.domain.RabbitMq.message.ServerMessage.GS2MQS_NTF_BEACON_COMPACT_SYNCOrBuilder getNtfBeaconCompactSyncOrBuilder();
/**
* <code>.ServerMessage.OS2GS_REQ_CREATE_CALIUM_CONTENT_STORAGE reqCreateContentStorage = 78;</code>
* @return Whether the reqCreateContentStorage field is set.
*/
boolean hasReqCreateContentStorage();
/**
* <code>.ServerMessage.OS2GS_REQ_CREATE_CALIUM_CONTENT_STORAGE reqCreateContentStorage = 78;</code>
* @return The reqCreateContentStorage.
*/
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.OS2GS_REQ_CREATE_CALIUM_CONTENT_STORAGE getReqCreateContentStorage();
/**
* <code>.ServerMessage.OS2GS_REQ_CREATE_CALIUM_CONTENT_STORAGE reqCreateContentStorage = 78;</code>
*/
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.OS2GS_REQ_CREATE_CALIUM_CONTENT_STORAGEOrBuilder getReqCreateContentStorageOrBuilder();
/**
* <code>.ServerMessage.OS2GS_ACK_CREATE_CALIUM_CONTENT_STORAGE ackCreateContentStorage = 79;</code>
* @return Whether the ackCreateContentStorage field is set.
*/
boolean hasAckCreateContentStorage();
/**
* <code>.ServerMessage.OS2GS_ACK_CREATE_CALIUM_CONTENT_STORAGE ackCreateContentStorage = 79;</code>
* @return The ackCreateContentStorage.
*/
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.OS2GS_ACK_CREATE_CALIUM_CONTENT_STORAGE getAckCreateContentStorage();
/**
* <code>.ServerMessage.OS2GS_ACK_CREATE_CALIUM_CONTENT_STORAGE ackCreateContentStorage = 79;</code>
*/
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.OS2GS_ACK_CREATE_CALIUM_CONTENT_STORAGEOrBuilder getAckCreateContentStorageOrBuilder();
/**
* <code>.ServerMessage.GS2GS_NTF_CHANGE_CALIUM_STORAGE_INFO ntfChangeCaliumStorageInfo = 80;</code>
* @return Whether the ntfChangeCaliumStorageInfo field is set.
*/
boolean hasNtfChangeCaliumStorageInfo();
/**
* <code>.ServerMessage.GS2GS_NTF_CHANGE_CALIUM_STORAGE_INFO ntfChangeCaliumStorageInfo = 80;</code>
* @return The ntfChangeCaliumStorageInfo.
*/
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.GS2GS_NTF_CHANGE_CALIUM_STORAGE_INFO getNtfChangeCaliumStorageInfo();
/**
* <code>.ServerMessage.GS2GS_NTF_CHANGE_CALIUM_STORAGE_INFO ntfChangeCaliumStorageInfo = 80;</code>
*/
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.GS2GS_NTF_CHANGE_CALIUM_STORAGE_INFOOrBuilder getNtfChangeCaliumStorageInfoOrBuilder();
/**
* <code>.ServerMessage.GS2GS_NTF_MODIFY_LAND_INFO ntfModifyLandInfo = 81;</code>
* @return Whether the ntfModifyLandInfo field is set.
*/
boolean hasNtfModifyLandInfo();
/**
* <code>.ServerMessage.GS2GS_NTF_MODIFY_LAND_INFO ntfModifyLandInfo = 81;</code>
* @return The ntfModifyLandInfo.
*/
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.GS2GS_NTF_MODIFY_LAND_INFO getNtfModifyLandInfo();
/**
* <code>.ServerMessage.GS2GS_NTF_MODIFY_LAND_INFO ntfModifyLandInfo = 81;</code>
*/
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.GS2GS_NTF_MODIFY_LAND_INFOOrBuilder getNtfModifyLandInfoOrBuilder();
/**
* <code>.ServerMessage.GS2GS_NTF_MODIFY_BUILDING_INFO ntfModifyBuildingInfo = 82;</code>
* @return Whether the ntfModifyBuildingInfo field is set.
*/
boolean hasNtfModifyBuildingInfo();
/**
* <code>.ServerMessage.GS2GS_NTF_MODIFY_BUILDING_INFO ntfModifyBuildingInfo = 82;</code>
* @return The ntfModifyBuildingInfo.
*/
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.GS2GS_NTF_MODIFY_BUILDING_INFO getNtfModifyBuildingInfo();
/**
* <code>.ServerMessage.GS2GS_NTF_MODIFY_BUILDING_INFO ntfModifyBuildingInfo = 82;</code>
*/
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.GS2GS_NTF_MODIFY_BUILDING_INFOOrBuilder getNtfModifyBuildingInfoOrBuilder();
/**
* <code>.ServerMessage.GS2GS_NTF_MODIFY_BUILDING_PROFIT ntfModifyBuildingProfit = 83;</code>
* @return Whether the ntfModifyBuildingProfit field is set.
*/
boolean hasNtfModifyBuildingProfit();
/**
* <code>.ServerMessage.GS2GS_NTF_MODIFY_BUILDING_PROFIT ntfModifyBuildingProfit = 83;</code>
* @return The ntfModifyBuildingProfit.
*/
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.GS2GS_NTF_MODIFY_BUILDING_PROFIT getNtfModifyBuildingProfit();
/**
* <code>.ServerMessage.GS2GS_NTF_MODIFY_BUILDING_PROFIT ntfModifyBuildingProfit = 83;</code>
*/
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.GS2GS_NTF_MODIFY_BUILDING_PROFITOrBuilder getNtfModifyBuildingProfitOrBuilder();
/**
* <code>.ServerMessage.GS2GS_NTF_LAND_AUCTION_HIGHEST_BIDDER_CHANGE ntfLandAuctionHighestBidderChange = 84;</code>
* @return Whether the ntfLandAuctionHighestBidderChange field is set.
*/
boolean hasNtfLandAuctionHighestBidderChange();
/**
* <code>.ServerMessage.GS2GS_NTF_LAND_AUCTION_HIGHEST_BIDDER_CHANGE ntfLandAuctionHighestBidderChange = 84;</code>
* @return The ntfLandAuctionHighestBidderChange.
*/
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.GS2GS_NTF_LAND_AUCTION_HIGHEST_BIDDER_CHANGE getNtfLandAuctionHighestBidderChange();
/**
* <code>.ServerMessage.GS2GS_NTF_LAND_AUCTION_HIGHEST_BIDDER_CHANGE ntfLandAuctionHighestBidderChange = 84;</code>
*/
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.GS2GS_NTF_LAND_AUCTION_HIGHEST_BIDDER_CHANGEOrBuilder getNtfLandAuctionHighestBidderChangeOrBuilder();
/**
* <code>.ServerMessage.GS2GS_NTF_LAND_AUCTION_WINNING_BID ntfLandAuctionWinningBid = 85;</code>
* @return Whether the ntfLandAuctionWinningBid field is set.
*/
boolean hasNtfLandAuctionWinningBid();
/**
* <code>.ServerMessage.GS2GS_NTF_LAND_AUCTION_WINNING_BID ntfLandAuctionWinningBid = 85;</code>
* @return The ntfLandAuctionWinningBid.
*/
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.GS2GS_NTF_LAND_AUCTION_WINNING_BID getNtfLandAuctionWinningBid();
/**
* <code>.ServerMessage.GS2GS_NTF_LAND_AUCTION_WINNING_BID ntfLandAuctionWinningBid = 85;</code>
*/
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.GS2GS_NTF_LAND_AUCTION_WINNING_BIDOrBuilder getNtfLandAuctionWinningBidOrBuilder();
/**
* <code>.ServerMessage.GS2GS_NTF_LAND_AUCTION_RESERVATION ntfLandAuctionReservation = 86;</code>
* @return Whether the ntfLandAuctionReservation field is set.
*/
boolean hasNtfLandAuctionReservation();
/**
* <code>.ServerMessage.GS2GS_NTF_LAND_AUCTION_RESERVATION ntfLandAuctionReservation = 86;</code>
* @return The ntfLandAuctionReservation.
*/
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.GS2GS_NTF_LAND_AUCTION_RESERVATION getNtfLandAuctionReservation();
/**
* <code>.ServerMessage.GS2GS_NTF_LAND_AUCTION_RESERVATION ntfLandAuctionReservation = 86;</code>
*/
com.caliverse.admin.domain.RabbitMq.message.ServerMessage.GS2GS_NTF_LAND_AUCTION_RESERVATIONOrBuilder getNtfLandAuctionReservationOrBuilder();
public com.caliverse.admin.domain.RabbitMq.message.ServerMessage.MsgCase getMsgCase(); public com.caliverse.admin.domain.RabbitMq.message.ServerMessage.MsgCase getMsgCase();
} }

View File

@@ -424,6 +424,56 @@ public final class ServerMessageOuterClass {
static final static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_ServerMessage_GS2GS_NTF_MODIFY_FLOOR_LINKED_INFOS_fieldAccessorTable; internal_static_ServerMessage_GS2GS_NTF_MODIFY_FLOOR_LINKED_INFOS_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_ServerMessage_OS2GS_REQ_CREATE_CALIUM_CONTENT_STORAGE_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_ServerMessage_OS2GS_REQ_CREATE_CALIUM_CONTENT_STORAGE_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_ServerMessage_OS2GS_ACK_CREATE_CALIUM_CONTENT_STORAGE_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_ServerMessage_OS2GS_ACK_CREATE_CALIUM_CONTENT_STORAGE_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_ServerMessage_GS2GS_NTF_CHANGE_CALIUM_STORAGE_INFO_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_ServerMessage_GS2GS_NTF_CHANGE_CALIUM_STORAGE_INFO_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_ServerMessage_GS2GS_NTF_MODIFY_LAND_INFO_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_ServerMessage_GS2GS_NTF_MODIFY_LAND_INFO_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_ServerMessage_GS2GS_NTF_MODIFY_BUILDING_INFO_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_ServerMessage_GS2GS_NTF_MODIFY_BUILDING_INFO_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_ServerMessage_GS2GS_NTF_MODIFY_BUILDING_PROFIT_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_ServerMessage_GS2GS_NTF_MODIFY_BUILDING_PROFIT_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_ServerMessage_GS2GS_NTF_MODIFY_BUILDING_PROFIT_FloorProfitsEntry_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_ServerMessage_GS2GS_NTF_MODIFY_BUILDING_PROFIT_FloorProfitsEntry_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_ServerMessage_GS2GS_NTF_LAND_AUCTION_HIGHEST_BIDDER_CHANGE_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_ServerMessage_GS2GS_NTF_LAND_AUCTION_HIGHEST_BIDDER_CHANGE_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_ServerMessage_GS2GS_NTF_LAND_AUCTION_WINNING_BID_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_ServerMessage_GS2GS_NTF_LAND_AUCTION_WINNING_BID_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_ServerMessage_GS2GS_NTF_LAND_AUCTION_RESERVATION_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_ServerMessage_GS2GS_NTF_LAND_AUCTION_RESERVATION_fieldAccessorTable;
public static com.google.protobuf.Descriptors.FileDescriptor public static com.google.protobuf.Descriptors.FileDescriptor
getDescriptor() { getDescriptor() {
@@ -436,7 +486,7 @@ public final class ServerMessageOuterClass {
"\n\023ServerMessage.proto\032\037google/protobuf/t" + "\n\023ServerMessage.proto\032\037google/protobuf/t" +
"imestamp.proto\032\023Define_Common.proto\032\023Def" + "imestamp.proto\032\023Define_Common.proto\032\023Def" +
"ine_Result.proto\032\033Define_ProgramVersion." + "ine_Result.proto\032\033Define_ProgramVersion." +
"proto\032\021Game_Define.proto\"\316`\n\rServerMessa" + "proto\032\021Game_Define.proto\"\327o\n\rServerMessa" +
"ge\022/\n\013messageTime\030\001 \001(\0132\032.google.protobu" + "ge\022/\n\013messageTime\030\001 \001(\0132\032.google.protobu" +
"f.Timestamp\022\025\n\rmessageSender\030\002 \001(\t\022#\n\004ch" + "f.Timestamp\022\025\n\rmessageSender\030\002 \001(\t\022#\n\004ch" +
"at\030\003 \001(\0132\023.ServerMessage.ChatH\000\022)\n\007kickR" + "at\030\003 \001(\0132\023.ServerMessage.ChatH\000\022)\n\007kickR" +
@@ -562,192 +612,240 @@ public final class ServerMessageOuterClass {
"essage.GS2GS_NTF_MODIFY_FLOOR_LINKED_INF" + "essage.GS2GS_NTF_MODIFY_FLOOR_LINKED_INF" +
"OSH\000\022M\n\024ntfBeaconCompactSync\030M \001(\0132-.Ser" + "OSH\000\022M\n\024ntfBeaconCompactSync\030M \001(\0132-.Ser" +
"verMessage.GS2MQS_NTF_BEACON_COMPACT_SYN" + "verMessage.GS2MQS_NTF_BEACON_COMPACT_SYN" +
"CH\000\032\207\001\n\004Chat\022\027\n\004type\030\001 \001(\0162\t.ChatType\022\026\n" + "CH\000\022Y\n\027reqCreateContentStorage\030N \001(\01326.S" +
"\016senderNickName\030\002 \001(\t\022\024\n\014receiverGuid\030\003 " + "erverMessage.OS2GS_REQ_CREATE_CALIUM_CON" +
"\001(\t\022\'\n\rreceiverstate\030\004 \001(\0162\020.PlayerState" + "TENT_STORAGEH\000\022Y\n\027ackCreateContentStorag" +
"Type\022\017\n\007message\030\005 \001(\t\032&\n\007KickReq\022\r\n\005reqI" + "e\030O \001(\01326.ServerMessage.OS2GS_ACK_CREATE" +
"d\030\001 \001(\005\022\014\n\004name\030\002 \001(\t\032I\n\007KickRes\022\r\n\005reqI" + "_CALIUM_CONTENT_STORAGEH\000\022Y\n\032ntfChangeCa" +
"d\030\001 \001(\005\022!\n\007errCode\030\002 \001(\0162\020.ServerErrorCo" + "liumStorageInfo\030P \001(\01323.ServerMessage.GS" +
"de\022\014\n\004name\030\003 \001(\t\032\024\n\022GetServerConfigReq\032I" + "2GS_NTF_CHANGE_CALIUM_STORAGE_INFOH\000\022F\n\021" +
"\n\022GetServerConfigRes\022\022\n\nserverType\030\001 \001(\005" + "ntfModifyLandInfo\030Q \001(\0132).ServerMessage." +
"\022\017\n\007worldId\030\002 \001(\005\022\016\n\006region\030\003 \001(\005\032\025\n\023Whi" + "GS2GS_NTF_MODIFY_LAND_INFOH\000\022N\n\025ntfModif" +
"teListUpdateNoti\032\025\n\023BlackListUpdateNoti\032" + "yBuildingInfo\030R \001(\0132-.ServerMessage.GS2G" +
"%\n\rInspectionReq\022\024\n\014isInspection\030\001 \001(\005\032/" + "S_NTF_MODIFY_BUILDING_INFOH\000\022R\n\027ntfModif" +
"\n\022ReadyForDistroyReq\022\031\n\021isReadyForDistro" + "yBuildingProfit\030S \001(\0132/.ServerMessage.GS" +
"y\030\001 \001(\005\032*\n\026ManagerServerActiveReq\022\020\n\010isA" + "2GS_NTF_MODIFY_BUILDING_PROFITH\000\022h\n!ntfL" +
"ctive\030\001 \001(\005\032*\n\026ManagerServerActiveRes\022\020\n" + "andAuctionHighestBidderChange\030T \001(\0132;.Se" +
"\010isActive\030\001 \001(\005\032(\n\025ChangeServerConfigReq" + "rverMessage.GS2GS_NTF_LAND_AUCTION_HIGHE" +
"\022\017\n\007maxUser\030\001 \001(\005\032\027\n\025AllKickNormalUserNo" + "ST_BIDDER_CHANGEH\000\022U\n\030ntfLandAuctionWinn" +
"ti\032&\n\017ReceiveMailNoti\022\023\n\013accountGuid\030\001 \001" + "ingBid\030U \001(\01321.ServerMessage.GS2GS_NTF_L" +
"(\t\032\254\001\n\032AwsAutoScaleGroupOptionReq\022\034\n\024sca" + "AND_AUCTION_WINNING_BIDH\000\022V\n\031ntfLandAuct" +
"leOutPlusConstant\030\001 \001(\005\022\030\n\020scaleInCondit" + "ionReservation\030V \001(\01321.ServerMessage.GS2" +
"ion\030\002 \001(\005\022\031\n\021scaleOutCondition\030\003 \001(\005\022\022\n\n" + "GS_NTF_LAND_AUCTION_RESERVATIONH\000\032\207\001\n\004Ch" +
"serverName\030\004 \001(\t\022\020\n\010groupMin\030\005 \001(\005\022\025\n\rgr" + "at\022\027\n\004type\030\001 \001(\0162\t.ChatType\022\026\n\016senderNic" +
"oupCapacity\030\006 \001(\005\032\034\n\032AwsAutoScaleGroupOp" + "kName\030\002 \001(\t\022\024\n\014receiverGuid\030\003 \001(\t\022\'\n\rrec" +
"tionRes\032N\n ExchangeMannequinDisplayItemN" + "eiverstate\030\004 \001(\0162\020.PlayerStateType\022\017\n\007me" +
"oti\022\022\n\nanchorGuid\030\001 \001(\t\022\026\n\016displayItemId" + "ssage\030\005 \001(\t\032&\n\007KickReq\022\r\n\005reqId\030\001 \001(\005\022\014\n" +
"s\030\002 \003(\005\032G\n\tSacleInfo\022\027\n\017ServerGroupName\030" + "\004name\030\002 \001(\t\032I\n\007KickRes\022\r\n\005reqId\030\001 \001(\005\022!\n" +
"\001 \001(\t\022\017\n\007MinSize\030\002 \001(\005\022\020\n\010CapaCity\030\003 \001(\005" + "\007errCode\030\002 \001(\0162\020.ServerErrorCode\022\014\n\004name" +
"\032\032\n\030GetAwsAutoScaleOptionReq\032\263\001\n\030GetAwsA" + "\030\003 \001(\t\032\024\n\022GetServerConfigReq\032I\n\022GetServe" +
"utoScaleOptionRes\022\034\n\024scaleOutPlusConstan" + "rConfigRes\022\022\n\nserverType\030\001 \001(\005\022\017\n\007worldI" +
"t\030\001 \001(\005\022\030\n\020scaleInCondition\030\002 \001(\005\022\031\n\021sca" + "d\030\002 \001(\005\022\016\n\006region\030\003 \001(\005\032\025\n\023WhiteListUpda" +
"leOutCondition\030\003 \001(\005\0222\n\020instanceInfoList" + "teNoti\032\025\n\023BlackListUpdateNoti\032%\n\rInspect" +
"\030\004 \003(\0132\030.ServerMessage.SacleInfo\022\020\n\010isAc" + "ionReq\022\024\n\014isInspection\030\001 \001(\005\032/\n\022ReadyFor" +
"tive\030\005 \001(\005\032^\n\027InviteFriendToMyHomeReq\022\023\n" + "DistroyReq\022\031\n\021isReadyForDistroy\030\001 \001(\005\032*\n" +
"\013inviterGuid\030\001 \001(\t\022\027\n\017inviterNickName\030\002 " + "\026ManagerServerActiveReq\022\020\n\010isActive\030\001 \001(" +
"\001(\t\022\025\n\rinviterRoomId\030\003 \001(\t\032\275\001\n\017ToFiendNo" + "\005\032*\n\026ManagerServerActiveRes\022\020\n\010isActive\030" +
"tiBase\022\020\n\010senderId\030\001 \001(\t\022\022\n\nsenderGuid\030\002" + "\001 \001(\005\032(\n\025ChangeServerConfigReq\022\017\n\007maxUse" +
" \001(\t\022\026\n\016senderNickName\030\003 \001(\t\022\023\n\013senderSt" + "r\030\001 \001(\005\032\027\n\025AllKickNormalUserNoti\032&\n\017Rece" +
"ate\030\004 \001(\005\022\023\n\013senderMapId\030\005 \001(\005\022\022\n\nreceiv" + "iveMailNoti\022\023\n\013accountGuid\030\001 \001(\t\032\254\001\n\032Aws" +
"erId\030\006 \001(\t\022\024\n\014receiverGuid\030\007 \001(\t\022\030\n\020rece" + "AutoScaleGroupOptionReq\022\034\n\024scaleOutPlusC" +
"iverNickName\030\010 \001(\t\032\224\001\n\020InviteMyHomeBase\022" + "onstant\030\001 \001(\005\022\030\n\020scaleInCondition\030\002 \001(\005\022" +
"\020\n\010senderId\030\001 \001(\t\022\022\n\nsenderGuid\030\002 \001(\t\022\026\n" + "\031\n\021scaleOutCondition\030\003 \001(\005\022\022\n\nserverName" +
"\016senderNickName\030\003 \001(\t\022\022\n\nreceiverId\030\004 \001(" + "\030\004 \001(\t\022\020\n\010groupMin\030\005 \001(\005\022\025\n\rgroupCapacit" +
"\t\022\024\n\014receiverGuid\030\005 \001(\t\022\030\n\020receiverNickN" + "y\030\006 \001(\005\032\034\n\032AwsAutoScaleGroupOptionRes\032N\n" +
"ame\030\006 \001(\t\032n\n\021LoginNotiToFriend\0220\n\010baseIn" + " ExchangeMannequinDisplayItemNoti\022\022\n\nanc" +
"fo\030\001 \001(\0132\036.ServerMessage.ToFiendNotiBase" + "horGuid\030\001 \001(\t\022\026\n\016displayItemIds\030\002 \003(\005\032G\n" +
"\022\'\n\014locationInfo\030\002 \001(\0132\021.UserLocationInf" + "\tSacleInfo\022\027\n\017ServerGroupName\030\001 \001(\t\022\017\n\007M" +
"o\032F\n\022LogoutNotiToFriend\0220\n\010baseInfo\030\001 \001(" + "inSize\030\002 \001(\005\022\020\n\010CapaCity\030\003 \001(\005\032\032\n\030GetAws" +
"\0132\036.ServerMessage.ToFiendNotiBase\032n\n\021Sta" + "AutoScaleOptionReq\032\263\001\n\030GetAwsAutoScaleOp" +
"teNotiToFriend\0220\n\010baseInfo\030\001 \001(\0132\036.Serve" + "tionRes\022\034\n\024scaleOutPlusConstant\030\001 \001(\005\022\030\n" +
"rMessage.ToFiendNotiBase\022\'\n\014locationInfo" + "\020scaleInCondition\030\002 \001(\005\022\031\n\021scaleOutCondi" +
"\030\002 \001(\0132\021.UserLocationInfo\032\335\001\n\027ReceiveInv" + "tion\030\003 \001(\005\0222\n\020instanceInfoList\030\004 \003(\0132\030.S" +
"iteMyHomeNoti\0221\n\010baseInfo\030\001 \001(\0132\037.Server" + "erverMessage.SacleInfo\022\020\n\010isActive\030\005 \001(\005" +
"Message.InviteMyHomeBase\022\027\n\017inviterMyHom" + "\032^\n\027InviteFriendToMyHomeReq\022\023\n\013inviterGu" +
"eId\030\002 \001(\t\022.\n\nexpireTime\030\003 \001(\0132\032.google.p" + "id\030\001 \001(\t\022\027\n\017inviterNickName\030\002 \001(\t\022\025\n\rinv" +
"rotobuf.Timestamp\0223\n\017replyExpireTime\030\004 \001" + "iterRoomId\030\003 \001(\t\032\275\001\n\017ToFiendNotiBase\022\020\n\010" +
"(\0132\032.google.protobuf.Timestamp\022\021\n\tunique" + "senderId\030\001 \001(\t\022\022\n\nsenderGuid\030\002 \001(\t\022\026\n\016se" +
"Key\030\005 \001(\t\032Z\n\025ReplyInviteMyhomeNoti\022\026\n\016ac" + "nderNickName\030\003 \001(\t\022\023\n\013senderState\030\004 \001(\005\022" +
"ceptOrRefuse\030\001 \001(\005\022\022\n\nreceiverId\030\002 \001(\t\022\025" + "\023\n\013senderMapId\030\005 \001(\005\022\022\n\nreceiverId\030\006 \001(\t" +
"\n\rreplyUserGuid\030\003 \001(\t\032?\n\027KickFromFriends" + "\022\024\n\014receiverGuid\030\007 \001(\t\022\030\n\020receiverNickNa" +
"HomeNoti\022\022\n\nkickerGuid\030\001 \001(\t\022\020\n\010kickerId" + "me\030\010 \001(\t\032\224\001\n\020InviteMyHomeBase\022\020\n\010senderI" +
"\030\002 \001(\t\032s\n\021FriendRequestInfo\022\014\n\004guid\030\001 \001(" + "d\030\001 \001(\t\022\022\n\nsenderGuid\030\002 \001(\t\022\026\n\016senderNic" +
"\t\022\020\n\010nickName\030\002 \001(\t\022\r\n\005isNew\030\003 \001(\005\022/\n\013re" + "kName\030\003 \001(\t\022\022\n\nreceiverId\030\004 \001(\t\022\024\n\014recei" +
"questTime\030\004 \001(\0132\032.google.protobuf.Timest" + "verGuid\030\005 \001(\t\022\030\n\020receiverNickName\030\006 \001(\t\032" +
"amp\032^\n\021FriendRequestNoti\0225\n\013requestInfo\030" + "n\n\021LoginNotiToFriend\0220\n\010baseInfo\030\001 \001(\0132\036" +
"\001 \001(\0132 .ServerMessage.FriendRequestInfo\022" + ".ServerMessage.ToFiendNotiBase\022\'\n\014locati" +
"\022\n\nreceiverId\030\002 \001(\t\032\222\001\n\020FriendAcceptNoti" + "onInfo\030\002 \001(\0132\021.UserLocationInfo\032F\n\022Logou" +
"\022\020\n\010senderId\030\001 \001(\t\022\022\n\nsenderGuid\030\002 \001(\t\022\026" + "tNotiToFriend\0220\n\010baseInfo\030\001 \001(\0132\036.Server" +
"\n\016senderNickName\030\003 \001(\t\022\026\n\016acceptOrRefuse" + "Message.ToFiendNotiBase\032n\n\021StateNotiToFr" +
"\030\004 \001(\005\022\022\n\nreceiverId\030\005 \001(\t\022\024\n\014receiverGu" + "iend\0220\n\010baseInfo\030\001 \001(\0132\036.ServerMessage.T" +
"id\030\006 \001(\t\032z\n\020FriendDeleteNoti\022\020\n\010senderId" + "oFiendNotiBase\022\'\n\014locationInfo\030\002 \001(\0132\021.U" +
"\030\001 \001(\t\022\022\n\nsenderGuid\030\002 \001(\t\022\026\n\016senderNick" + "serLocationInfo\032\335\001\n\027ReceiveInviteMyHomeN" +
"Name\030\003 \001(\t\022\022\n\nreceiverId\030\004 \001(\t\022\024\n\014receiv" + "oti\0221\n\010baseInfo\030\001 \001(\0132\037.ServerMessage.In" +
"erGuid\030\005 \001(\t\032\201\001\n\027CancelFriendRequestNoti" + "viteMyHomeBase\022\027\n\017inviterMyHomeId\030\002 \001(\t\022" +
"\022\020\n\010senderId\030\001 \001(\t\022\022\n\nsenderGuid\030\002 \001(\t\022\026" + ".\n\nexpireTime\030\003 \001(\0132\032.google.protobuf.Ti" +
"\n\016senderNickName\030\003 \001(\t\022\022\n\nreceiverId\030\004 \001" + "mestamp\0223\n\017replyExpireTime\030\004 \001(\0132\032.googl" +
"(\t\022\024\n\014receiverGuid\030\005 \001(\t\032\035\n\033KickedFromFr" + "e.protobuf.Timestamp\022\021\n\tuniqueKey\030\005 \001(\t\032" +
"iendsMyHomeNoti\032\227\001\n%GS2GS_REQ_RESERVATIO" + "Z\n\025ReplyInviteMyhomeNoti\022\026\n\016acceptOrRefu" +
"N_ENTER_TO_SERVER\022!\n\010moveType\030\001 \001(\0162\017.Se" + "se\030\001 \001(\005\022\022\n\nreceiverId\030\002 \001(\t\022\025\n\rreplyUse" +
"rverMoveType\022\031\n\021requestServerName\030\002 \001(\t\022" + "rGuid\030\003 \001(\t\032?\n\027KickFromFriendsHomeNoti\022\022" +
"\027\n\017requestUserGuid\030\003 \001(\t\022\027\n\017summonPartyG" + "\n\nkickerGuid\030\001 \001(\t\022\020\n\010kickerId\030\002 \001(\t\032s\n\021" +
"uid\030\004 \001(\t\032|\n%GS2GS_ACK_RESERVATION_ENTER" + "FriendRequestInfo\022\014\n\004guid\030\001 \001(\t\022\020\n\010nickN" +
"_TO_SERVER\022\027\n\006result\030\001 \001(\0132\007.Result\022\033\n\023r" + "ame\030\002 \001(\t\022\r\n\005isNew\030\003 \001(\005\022/\n\013requestTime\030" +
"eservationUserGuid\030\002 \001(\t\022\035\n\025reservationS" + "\004 \001(\0132\032.google.protobuf.Timestamp\032^\n\021Fri" +
"erverName\030\003 \001(\t\032\\\n&GS2GS_REQ_RESERVATION" + "endRequestNoti\0225\n\013requestInfo\030\001 \001(\0132 .Se" +
"_CANCEL_TO_SERVER\022\031\n\021requestServerName\030\001" + "rverMessage.FriendRequestInfo\022\022\n\nreceive" +
" \001(\t\022\027\n\017requestUserGuid\030\002 \001(\t\032A\n&GS2GS_A" + "rId\030\002 \001(\t\032\222\001\n\020FriendAcceptNoti\022\020\n\010sender" +
"CK_RESERVATION_CANCEL_TO_SERVER\022\027\n\017reque" + "Id\030\001 \001(\t\022\022\n\nsenderGuid\030\002 \001(\t\022\026\n\016senderNi" +
"stUserGuid\030\001 \001(\t\0326\n\034GS2GS_NTF_RETURN_USE" + "ckName\030\003 \001(\t\022\026\n\016acceptOrRefuse\030\004 \001(\005\022\022\n\n" +
"R_LOGOUT\022\026\n\016returnUserGuid\030\001 \001(\t\032R\n\034GS2C" + "receiverId\030\005 \001(\t\022\024\n\014receiverGuid\030\006 \001(\t\032z" +
"_NTF_FRIEND_LEAVING_HOME\022\014\n\004guid\030\001 \001(\t\022\020" + "\n\020FriendDeleteNoti\022\020\n\010senderId\030\001 \001(\t\022\022\n\n" +
"\n\010nickName\030\002 \001(\t\022\022\n\nreceiverId\030\003 \001(\t\032B\n\023" + "senderGuid\030\002 \001(\t\022\026\n\016senderNickName\030\003 \001(\t" +
"GS2C_NTF_PARTY_INFO\022\021\n\tpartyGuid\030\001 \001(\t\022\030" + "\022\022\n\nreceiverId\030\004 \001(\t\022\024\n\014receiverGuid\030\005 \001" +
"\n\020partyMemberGuids\030\002 \003(\t\032x\n\023GS2C_NTF_PAR" + "(\t\032\201\001\n\027CancelFriendRequestNoti\022\020\n\010sender" +
"TY_CHAT\022\021\n\tpartyGuid\030\001 \001(\t\022\027\n\017partySende" + "Id\030\001 \001(\t\022\022\n\nsenderGuid\030\002 \001(\t\022\026\n\016senderNi" +
"rGuid\030\002 \001(\t\022\033\n\023partySenderNickname\030\003 \001(\t" + "ckName\030\003 \001(\t\022\022\n\nreceiverId\030\004 \001(\t\022\024\n\014rece" +
"\022\030\n\020partySendMessage\030\004 \001(\t\032\214\001\n\034GS2C_NTF_" + "iverGuid\030\005 \001(\t\032\035\n\033KickedFromFriendsMyHom" +
"PARTY_INVITE_RESULT\022#\n\terrorCode\030\001 \001(\0162\020" + "eNoti\032\227\001\n%GS2GS_REQ_RESERVATION_ENTER_TO" +
".ServerErrorCode\022\027\n\017invitePartyGuid\030\002 \001(" + "_SERVER\022!\n\010moveType\030\001 \001(\0162\017.ServerMoveTy" +
"\t\022\026\n\016inviteHostGuid\030\003 \001(\t\022\026\n\016inviteUserG" + "pe\022\031\n\021requestServerName\030\002 \001(\t\022\027\n\017request" +
"uid\030\004 \001(\t\0322\n\026GS2C_NTF_DESTROY_PARTY\022\030\n\020d" + "UserGuid\030\003 \001(\t\022\027\n\017summonPartyGuid\030\004 \001(\t\032" +
"estroyPartyGuid\030\001 \001(\t\032a\n\017InvitePartyNoti" + "|\n%GS2GS_ACK_RESERVATION_ENTER_TO_SERVER" +
"\022\026\n\016inviteUserGuid\030\001 \001(\t\022\035\n\025invitePartyL" + "\022\027\n\006result\030\001 \001(\0132\007.Result\022\033\n\023reservation" +
"eaderGuid\030\002 \001(\t\022\027\n\017invitePartyGuid\030\003 \001(\t" + "UserGuid\030\002 \001(\t\022\035\n\025reservationServerName\030" +
"\032~\n\024ReplyInvitePartyNoti\022\027\n\017invitePartyG" + "\003 \001(\t\032\\\n&GS2GS_REQ_RESERVATION_CANCEL_TO" +
"uid\030\001 \001(\t\022\026\n\016inviteUserGuid\030\002 \001(\t\022\032\n\022inv" + "_SERVER\022\031\n\021requestServerName\030\001 \001(\t\022\027\n\017re" +
"iteUserNickname\030\003 \001(\t\022\031\n\006result\030\004 \001(\0162\t." + "questUserGuid\030\002 \001(\t\032A\n&GS2GS_ACK_RESERVA" +
"BoolType\032L\n\017CreatePartyNoti\022 \n\030joinParty" + "TION_CANCEL_TO_SERVER\022\027\n\017requestUserGuid" +
"MemberAccountId\030\001 \001(\t\022\027\n\017createPartyGuid" + "\030\001 \001(\t\0326\n\034GS2GS_NTF_RETURN_USER_LOGOUT\022\026" +
"\030\002 \001(\t\032E\n\023JoinPartyMemberNoti\022\021\n\tpartyGu" + "\n\016returnUserGuid\030\001 \001(\t\032R\n\034GS2C_NTF_FRIEN" +
"id\030\001 \001(\t\022\033\n\023joinPartyMemberInfo\030\002 \001(\t\032_\n" + "D_LEAVING_HOME\022\014\n\004guid\030\001 \001(\t\022\020\n\010nickName" +
"\024LeavePartyMemberNoti\022\021\n\tpartyGuid\030\001 \001(\t" + "\030\002 \001(\t\022\022\n\nreceiverId\030\003 \001(\t\032B\n\023GS2C_NTF_P" +
"\022\032\n\022leavePartyUserGuid\030\002 \001(\t\022\030\n\005isBan\030\003 " + "ARTY_INFO\022\021\n\tpartyGuid\030\001 \001(\t\022\030\n\020partyMem" +
"\001(\0162\t.BoolType\032a\n\031ChangePartyServerNameN" + "berGuids\030\002 \003(\t\032x\n\023GS2C_NTF_PARTY_CHAT\022\021\n" +
"oti\022\021\n\tpartyGuid\030\001 \001(\t\022\035\n\nisAddition\030\002 \001" + "\tpartyGuid\030\001 \001(\t\022\027\n\017partySenderGuid\030\002 \001(" +
"(\0162\t.BoolType\022\022\n\nServerName\030\003 \001(\t\032H\n\031Rem" + "\t\022\033\n\023partySenderNickname\030\003 \001(\t\022\030\n\020partyS" +
"ovePartyServerNameNoti\022\021\n\tpartyGuid\030\001 \001(" + "endMessage\030\004 \001(\t\032\214\001\n\034GS2C_NTF_PARTY_INVI" +
"\t\022\030\n\020removeServerName\030\002 \001(\t\032F\n\025ChangePar" + "TE_RESULT\022#\n\terrorCode\030\001 \001(\0162\020.ServerErr" +
"tyLeaderNoti\022\021\n\tpartyGuid\030\001 \001(\t\022\032\n\022newPa" + "orCode\022\027\n\017invitePartyGuid\030\002 \001(\t\022\026\n\016invit" +
"rtyLeaderGuid\030\002 \001(\t\032@\n\025ExchangePartyName" + "eHostGuid\030\003 \001(\t\022\026\n\016inviteUserGuid\030\004 \001(\t\032" +
"Noti\022\021\n\tpartyGuid\030\001 \001(\t\022\024\n\014newPartyName\030" + "2\n\026GS2C_NTF_DESTROY_PARTY\022\030\n\020destroyPart" +
"\002 \001(\t\0324\n\031JoiningPartyFlagResetNoti\022\027\n\017ta" + "yGuid\030\001 \001(\t\032a\n\017InvitePartyNoti\022\026\n\016invite" +
"rgetAccountId\030\001 \001(\t\032X\n\033ExchangePartyMemb" + "UserGuid\030\001 \001(\t\022\035\n\025invitePartyLeaderGuid\030" +
"erMarkNoti\022\021\n\tpartyGuid\030\001 \001(\t\022\026\n\016memberU" + "\002 \001(\t\022\027\n\017invitePartyGuid\030\003 \001(\t\032~\n\024ReplyI" +
"serGuid\030\002 \001(\t\022\016\n\006markId\030\003 \001(\005\0328\n\014BanPart" + "nvitePartyNoti\022\027\n\017invitePartyGuid\030\001 \001(\t\022" +
"yNoti\022\021\n\tpartyGuid\030\001 \001(\t\022\025\n\rbanMemberGui" + "\026\n\016inviteUserGuid\030\002 \001(\t\022\032\n\022inviteUserNic" +
"d\030\002 \001(\t\032{\n\025SummonPartyMemberNoti\022\027\n\017summ" + "kname\030\003 \001(\t\022\031\n\006result\030\004 \001(\0162\t.BoolType\032L" +
"\n\017CreatePartyNoti\022 \n\030joinPartyMemberAcco" +
"untId\030\001 \001(\t\022\027\n\017createPartyGuid\030\002 \001(\t\032E\n\023" +
"JoinPartyMemberNoti\022\021\n\tpartyGuid\030\001 \001(\t\022\033" +
"\n\023joinPartyMemberInfo\030\002 \001(\t\032_\n\024LeavePart" +
"yMemberNoti\022\021\n\tpartyGuid\030\001 \001(\t\022\032\n\022leaveP" +
"artyUserGuid\030\002 \001(\t\022\030\n\005isBan\030\003 \001(\0162\t.Bool" +
"Type\032a\n\031ChangePartyServerNameNoti\022\021\n\tpar" +
"tyGuid\030\001 \001(\t\022\035\n\nisAddition\030\002 \001(\0162\t.BoolT" +
"ype\022\022\n\nServerName\030\003 \001(\t\032H\n\031RemovePartySe" +
"rverNameNoti\022\021\n\tpartyGuid\030\001 \001(\t\022\030\n\020remov" +
"eServerName\030\002 \001(\t\032F\n\025ChangePartyLeaderNo" +
"ti\022\021\n\tpartyGuid\030\001 \001(\t\022\032\n\022newPartyLeaderG" +
"uid\030\002 \001(\t\032@\n\025ExchangePartyNameNoti\022\021\n\tpa" +
"rtyGuid\030\001 \001(\t\022\024\n\014newPartyName\030\002 \001(\t\0324\n\031J" +
"oiningPartyFlagResetNoti\022\027\n\017targetAccoun" +
"tId\030\001 \001(\t\032X\n\033ExchangePartyMemberMarkNoti" +
"\022\021\n\tpartyGuid\030\001 \001(\t\022\026\n\016memberUserGuid\030\002 " +
"\001(\t\022\016\n\006markId\030\003 \001(\005\0328\n\014BanPartyNoti\022\021\n\tp" +
"artyGuid\030\001 \001(\t\022\025\n\rbanMemberGuid\030\002 \001(\t\032{\n" +
"\025SummonPartyMemberNoti\022\027\n\017summonPartyGui" +
"d\030\001 \001(\t\022\026\n\016summonUserGuid\030\002 \001(\t\022\030\n\020summo" +
"nServerName\030\003 \001(\t\022\027\n\tsummonPos\030\004 \001(\0132\004.P" +
"os\032{\n\032ReplySummonPartyMemberNoti\022\027\n\017summ" +
"onPartyGuid\030\001 \001(\t\022\026\n\016summonUserGuid\030\002 \001(" + "onPartyGuid\030\001 \001(\t\022\026\n\016summonUserGuid\030\002 \001(" +
"\t\022\030\n\020summonServerName\030\003 \001(\t\022\027\n\tsummonPos" + "\t\022,\n\006result\030\003 \001(\0162\034.SummonPartyMemberRes" +
"\030\004 \001(\0132\004.Pos\032{\n\032ReplySummonPartyMemberNo" + "ultType\032\020\n\016NoticeChatNoti\032\020\n\016SystemMailN" +
"ti\022\027\n\017summonPartyGuid\030\001 \001(\t\022\026\n\016summonUse" + "oti\032h\n\rPartyVoteNoti\022\021\n\tpartyGuid\030\001 \001(\t\022" +
"rGuid\030\002 \001(\t\022,\n\006result\030\003 \001(\0162\034.SummonPart" + "\021\n\tvoteTitle\030\002 \001(\t\0221\n\rvoteStartTime\030\003 \001(" +
"yMemberResultType\032\020\n\016NoticeChatNoti\032\020\n\016S" + "\0132\032.google.protobuf.Timestamp\032X\n\022ReplyPa" +
"ystemMailNoti\032h\n\rPartyVoteNoti\022\021\n\tpartyG" + "rtyVoteNoti\022\021\n\tpartyGuid\030\001 \001(\t\022\026\n\016partyV" +
"uid\030\001 \001(\t\022\021\n\tvoteTitle\030\002 \001(\t\0221\n\rvoteStar" + "oterGuid\030\002 \001(\t\022\027\n\004vote\030\003 \001(\0162\t.VoteType\032" +
"tTime\030\003 \001(\0132\032.google.protobuf.Timestamp\032" + "u\n\023PartyVoteResultNoti\022\021\n\tpartyGuid\030\001 \001(" +
"X\n\022ReplyPartyVoteNoti\022\021\n\tpartyGuid\030\001 \001(\t" + "\t\022\021\n\tvoteTitle\030\002 \001(\t\022\022\n\nresultTrue\030\003 \001(\005" +
"\022\026\n\016partyVoterGuid\030\002 \001(\t\022\027\n\004vote\030\003 \001(\0162\t" + "\022\023\n\013resultFalse\030\004 \001(\005\022\017\n\007abstain\030\005 \001(\005\032*" +
".VoteType\032u\n\023PartyVoteResultNoti\022\021\n\tpart" + "\n\025PartyInstanceInfoNoti\022\021\n\tpartyGuid\030\001 \001" +
"yGuid\030\001 \001(\t\022\021\n\tvoteTitle\030\002 \001(\t\022\022\n\nresult" + "(\t\032`\n\017SessionInfoNoti\022\022\n\ninstanceId\030\001 \001(" +
"True\030\003 \001(\005\022\023\n\013resultFalse\030\004 \001(\005\022\017\n\007absta" + "\t\022\024\n\014sessionCount\030\002 \001(\005\022\022\n\nserverType\030\003 " +
"in\030\005 \001(\005\032*\n\025PartyInstanceInfoNoti\022\021\n\tpar" + "\001(\005\022\017\n\007worldId\030\004 \001(\005\032O\n\033CancelSummonPart" +
"tyGuid\030\001 \001(\t\032`\n\017SessionInfoNoti\022\022\n\ninsta" + "yMemberNoti\022\021\n\tpartyGuid\030\001 \001(\t\022\035\n\025cancel" +
"nceId\030\001 \001(\t\022\024\n\014sessionCount\030\002 \001(\005\022\022\n\nser" + "SummonUserGuids\030\002 \003(\t\032E\n\027PartyMemberLoca" +
"verType\030\003 \001(\005\022\017\n\007worldId\030\004 \001(\005\032O\n\033Cancel" + "tionNoti\022\021\n\tpartyGuid\030\001 \001(\t\022\027\n\017partyMemb" +
"SummonPartyMemberNoti\022\021\n\tpartyGuid\030\001 \001(\t" + "erGuid\030\002 \001(\t\032I\n\034GS2GS_NTF_CLEAR_PARTY_SU" +
"\022\035\n\025cancelSummonUserGuids\030\002 \003(\t\032E\n\027Party" + "MMON\022\021\n\tpartyGuid\030\001 \001(\t\022\026\n\016memberUserGui" +
"MemberLocationNoti\022\021\n\tpartyGuid\030\001 \001(\t\022\027\n" + "d\030\002 \001(\t\032O\n\"GS2GS_NTF_DELETE_PARTY_INVITE" +
"\017partyMemberGuid\030\002 \001(\t\032I\n\034GS2GS_NTF_CLEA" + "_SEND\022\021\n\tpartyGuid\030\001 \001(\t\022\026\n\016inviteUserGu" +
"R_PARTY_SUMMON\022\021\n\tpartyGuid\030\001 \001(\t\022\026\n\016mem" + "id\030\002 \001(\t\032\263\001\n\024GS2GS_NTF_CRAFT_HELP\022\016\n\006roo" +
"berUserGuid\030\002 \001(\t\032O\n\"GS2GS_NTF_DELETE_PA" + "mId\030\001 \001(\t\022\023\n\013anchor_guid\030\002 \001(\t\0223\n\017craftF" +
"RTY_INVITE_SEND\022\021\n\tpartyGuid\030\001 \001(\t\022\026\n\016in" + "inishTime\030\003 \001(\0132\032.google.protobuf.Timest" +
"viteUserGuid\030\002 \001(\t\032\263\001\n\024GS2GS_NTF_CRAFT_H" + "amp\022\021\n\townerGuid\030\004 \001(\t\022\030\n\020ownerHelpedCou" +
"ELP\022\016\n\006roomId\030\001 \001(\t\022\023\n\013anchor_guid\030\002 \001(\t" + "nt\030\005 \001(\005\022\024\n\014helpUserName\030\006 \001(\t\032`\n\031GS2GS_" +
"\0223\n\017craftFinishTime\030\003 \001(\0132\032.google.proto" + "NTF_EXCHANGE_MYHOME\022\016\n\006roomId\030\001 \001(\t\022\022\n\nm" +
"buf.Timestamp\022\021\n\townerGuid\030\004 \001(\t\022\030\n\020owne" + "yhomeGuid\030\002 \001(\t\022\037\n\nmyhomeInfo\030\003 \001(\0132\013.My" +
"rHelpedCount\030\005 \001(\005\022\024\n\014helpUserName\030\006 \001(\t" + "HomeInfo\032 \n\036GS2GS_NTF_UGC_NPC_RANK_REFRE" +
"\032`\n\031GS2GS_NTF_EXCHANGE_MYHOME\022\016\n\006roomId\030" + "SH\032O\n%GS2GS_NTF_MYHOME_HOST_ENTER_EDIT_R" +
"\001 \001(\t\022\022\n\nmyhomeGuid\030\002 \001(\t\022\037\n\nmyhomeInfo\030" + "OOM\022\016\n\006roomId\030\001 \001(\t\022\026\n\016exceptUserGuid\030\002 " +
"\003 \001(\0132\013.MyHomeInfo\032 \n\036GS2GS_NTF_UGC_NPC_" + "\001(\t\032l\n\024MOS2GS_NTF_USER_KICK\022\020\n\010userGuid\030" +
"RANK_REFRESH\032O\n%GS2GS_NTF_MYHOME_HOST_EN" + "\001 \001(\t\022+\n\020logoutReasonType\030\002 \001(\0162\021.Logout" +
"TER_EDIT_ROOM\022\016\n\006roomId\030\001 \001(\t\022\026\n\016exceptU" + "ReasonType\022\025\n\rkickReasonMsg\030\003 \001(\t\032\316\001\n\024MO" +
"serGuid\030\002 \001(\t\032l\n\024MOS2GS_NTF_USER_KICK\022\020\n" + "S2GS_NTF_MAIL_SEND\022\020\n\010userGuid\030\001 \001(\t\022\020\n\010" +
"\010userGuid\030\001 \001(\t\022+\n\020logoutReasonType\030\002 \001(" + "mailType\030\002 \001(\t\022\033\n\010itemList\030\003 \003(\0132\t.MailI" +
"\0162\021.LogoutReasonType\022\025\n\rkickReasonMsg\030\003 " + "tem\022&\n\005title\030\004 \003(\0132\027.OperationSystemMess" +
"\001(\t\032\316\001\n\024MOS2GS_NTF_MAIL_SEND\022\020\n\010userGuid" + "age\022$\n\003msg\030\005 \003(\0132\027.OperationSystemMessag" +
"\030\001 \001(\t\022\020\n\010mailType\030\002 \001(\t\022\033\n\010itemList\030\003 \003" + "e\022\'\n\006sender\030\006 \003(\0132\027.OperationSystemMessa" +
"(\0132\t.MailItem\022&\n\005title\030\004 \003(\0132\027.Operation" + "ge\032\203\001\n\026MOS2GS_NTF_NOTICE_CHAT\022\022\n\nnoticeT" +
"SystemMessage\022$\n\003msg\030\005 \003(\0132\027.OperationSy" + "ype\030\001 \003(\t\022,\n\013chatMessage\030\002 \003(\0132\027.Operati" +
"stemMessage\022\'\n\006sender\030\006 \003(\0132\027.OperationS" + "onSystemMessage\022\'\n\006sender\030\003 \003(\0132\027.Operat" +
"ystemMessage\032\203\001\n\026MOS2GS_NTF_NOTICE_CHAT\022" + "ionSystemMessage\032q\n\026GS2MQS_NTF_FARMING_E" +
"\022\n\nnoticeType\030\001 \003(\t\022,\n\013chatMessage\030\002 \003(\013" + "ND\022\020\n\010userGuid\030\001 \001(\t\022\'\n\016farmingSummary\030\005" +
"2\027.OperationSystemMessage\022\'\n\006sender\030\003 \003(" + " \001(\0132\017.FarmingSummary\022\034\n\tisApplyDb\030\006 \001(\016" +
"\0132\027.OperationSystemMessage\032q\n\026GS2MQS_NTF" + "2\t.BoolType\032v\n\036GS2MQS_NTF_BEACON_COMPACT" +
"_FARMING_END\022\020\n\010userGuid\030\001 \001(\t\022\'\n\016farmin" + "_SYNC\022\020\n\010userGuid\030\001 \001(\t\022%\n\rugcNpcCompact" +
"gSummary\030\005 \001(\0132\017.FarmingSummary\022\034\n\tisApp" + "\030\005 \001(\0132\016.UgcNpcCompact\022\033\n\023locatedInstanc" +
"lyDb\030\006 \001(\0162\t.BoolType\032v\n\036GS2MQS_NTF_BEAC" + "eGuid\030\006 \001(\t\032z\n\024GS2GS_NTF_RENT_FLOOR\022\030\n\020e" +
"ON_COMPACT_SYNC\022\020\n\010userGuid\030\001 \001(\t\022%\n\rugc" + "xceptServerName\030\001 \001(\t\0223\n\024rentFloorReques" +
"NpcCompact\030\005 \001(\0132\016.UgcNpcCompact\022\033\n\023loca" + "tInfo\030\002 \001(\0132\025.RentFloorRequestInfo\022\023\n\013ug" +
"tedInstanceGuid\030\006 \001(\t\032z\n\024GS2GS_NTF_RENT_" + "cNpcGuids\030\003 \003(\t\032w\n#GS2GS_NTF_MODIFY_FLOO" +
"FLOOR\022\030\n\020exceptServerName\030\001 \001(\t\0223\n\024rentF" + "R_LINKED_INFOS\022\030\n\020exceptServerName\030\001 \001(\t" +
"loorRequestInfo\030\002 \001(\0132\025.RentFloorRequest" + "\0226\n\026modifyFloorLinkedInfos\030\002 \003(\0132\026.Modif" +
"Info\022\023\n\013ugcNpcGuids\030\003 \003(\t\032w\n#GS2GS_NTF_M" + "yFloorLinkedInfo\032g\n\'OS2GS_REQ_CREATE_CAL" +
"ODIFY_FLOOR_LINKED_INFOS\022\030\n\020exceptServer" + "IUM_CONTENT_STORAGE\022\031\n\021requestServerName" +
"Name\030\001 \001(\t\0226\n\026modifyFloorLinkedInfos\030\002 \003" + "\030\001 \001(\t\022\021\n\tcontentId\030\002 \001(\t\022\016\n\006calium\030\003 \001(" +
"(\0132\026.ModifyFloorLinkedInfoB\005\n\003msgB/\n+com" + "\001\032B\n\'OS2GS_ACK_CREATE_CALIUM_CONTENT_STO" +
".caliverse.admin.domain.RabbitMq.message" + "RAGE\022\027\n\006result\030\001 \001(\0132\007.Result\032&\n$GS2GS_N" +
"P\001b\006proto3" "TF_CHANGE_CALIUM_STORAGE_INFO\032T\n\032GS2GS_N" +
"TF_MODIFY_LAND_INFO\022\030\n\020exceptServerName\030" +
"\001 \001(\t\022\034\n\tlandInfos\030\002 \003(\0132\t.LandInfo\032`\n\036G" +
"S2GS_NTF_MODIFY_BUILDING_INFO\022\030\n\020exceptS" +
"erverName\030\001 \001(\t\022$\n\rbuildingInfos\030\002 \003(\0132\r" +
".BuildingInfo\032\364\001\n GS2GS_NTF_MODIFY_BUILD" +
"ING_PROFIT\022\030\n\020exceptServerName\030\001 \001(\t\022\026\n\016" +
"buildingMetaId\030\002 \001(\005\022W\n\014floorProfits\030\003 \003" +
"(\0132A.ServerMessage.GS2GS_NTF_MODIFY_BUIL" +
"DING_PROFIT.FloorProfitsEntry\032E\n\021FloorPr" +
"ofitsEntry\022\013\n\003key\030\001 \001(\005\022\037\n\005value\030\002 \001(\0132\020" +
".FloorProfitInfo:\0028\001\032\200\002\n,GS2GS_NTF_LAND_" +
"AUCTION_HIGHEST_BIDDER_CHANGE\022\030\n\020receive" +
"rUserGuid\030\001 \001(\t\022(\n\025hasReceivedRefundMail" +
"\030\002 \001(\0162\t.BoolType\022\022\n\nlandMetaId\030\003 \001(\005\022#\n" +
"\014currencyType\030\005 \001(\0162\r.CurrencyType\022\027\n\017hi" +
"ghestBidPrice\030\006 \001(\001\022\032\n\022highestBidUserGui" +
"d\030\007 \001(\t\022\036\n\026highestBidUserNickname\030\010 \001(\t\032" +
"\251\001\n\"GS2GS_NTF_LAND_AUCTION_WINNING_BID\022\027" +
"\n\017winningUserGuid\030\001 \001(\t\022\033\n\023winningUserNi" +
"ckname\030\002 \001(\t\022\022\n\nlandMetaId\030\005 \001(\005\022\027\n\017buil" +
"dingMetaIds\030\006 \003(\005\022 \n\risNewRecvMail\030\007 \001(\016" +
"2\t.BoolType\032>\n\"GS2GS_NTF_LAND_AUCTION_RE" +
"SERVATION\022\030\n\020toAddActivitings\030\001 \003(\005B\005\n\003m" +
"sgB/\n+com.caliverse.admin.domain.RabbitM" +
"q.messageP\001b\006proto3"
}; };
descriptor = com.google.protobuf.Descriptors.FileDescriptor descriptor = com.google.protobuf.Descriptors.FileDescriptor
.internalBuildGeneratedFileFrom(descriptorData, .internalBuildGeneratedFileFrom(descriptorData,
@@ -763,7 +861,7 @@ public final class ServerMessageOuterClass {
internal_static_ServerMessage_fieldAccessorTable = new internal_static_ServerMessage_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_ServerMessage_descriptor, internal_static_ServerMessage_descriptor,
new java.lang.String[] { "MessageTime", "MessageSender", "Chat", "KickReq", "KickRes", "WhiteListUpdateNoti", "BlackListUpdateNoti", "InspectionReq", "ChangeServerConfigReq", "AllKickNormalUserNoti", "AwsAutoScaleGroupOptionReq", "AwsAutoScaleGroupOptionRes", "ReceiveMailNoti", "ExchangeMannequinDisplayItemNoti", "GetAwsAutoScaleOptionReq", "GetAwsAutoScaleOptionRes", "ReadyForDistroyReq", "LoginNotiToFriend", "LogoutNotiToFriend", "ManagerServerActiveReq", "ManagerServerActiveRes", "ReceiveInviteMyHomeNoti", "ReplyInviteMyhomeNoti", "StateNotiToFriend", "FriendRequestNoti", "FriendAcceptNoti", "FriendDeleteNoti", "CancelFriendRequestNoti", "InvitePartyNoti", "ReplyInvitePartyNoti", "JoinPartyMemberNoti", "LeavePartyMemberNoti", "ChangePartyServerNameNoti", "ChangePartyLeaderNoti", "ExchangePartyNameNoti", "ExchangePartyMemberMarkNoti", "BanPartyNoti", "SummonPartyMemberNoti", "ReplySummonPartyMemberNoti", "NoticeChatNoti", "SystemMailNoti", "PartyVoteNoti", "ReplyPartyVoteNoti", "PartyVoteResultNoti", "PartyInstanceInfoNoti", "SessionInfoNoti", "KickedFromFriendsMyHomeNoti", "CancelSummonPartyMemberNoti", "PartyMemberLocationNoti", "NtfFriendLeavingHome", "NtfInvitePartyRecvResult", "NtfDestroyParty", "ReqReservationEnterToServer", "AckReservationEnterToServer", "NtfPartyChat", "NtfPartyInfo", "NtfReturnUserLogout", "NtfClearPartySummon", "NtfCraftHelp", "ReqReservationCancelToServer", "NtfExchangeMyhome", "NtfUgcNpcRankRefresh", "NtfDeletePartyInviteSend", "NtfMyhomeHostEnterEditRoom", "NtfUserKick", "NtfMailSend", "NtfOperationSystemNoticeChat", "AckReservationCancelToServer", "NtfFarmingEnd", "NtfRentFloor", "NtfModifyFloorLinkedInfos", "NtfBeaconCompactSync", "Msg", }); new java.lang.String[] { "MessageTime", "MessageSender", "Chat", "KickReq", "KickRes", "WhiteListUpdateNoti", "BlackListUpdateNoti", "InspectionReq", "ChangeServerConfigReq", "AllKickNormalUserNoti", "AwsAutoScaleGroupOptionReq", "AwsAutoScaleGroupOptionRes", "ReceiveMailNoti", "ExchangeMannequinDisplayItemNoti", "GetAwsAutoScaleOptionReq", "GetAwsAutoScaleOptionRes", "ReadyForDistroyReq", "LoginNotiToFriend", "LogoutNotiToFriend", "ManagerServerActiveReq", "ManagerServerActiveRes", "ReceiveInviteMyHomeNoti", "ReplyInviteMyhomeNoti", "StateNotiToFriend", "FriendRequestNoti", "FriendAcceptNoti", "FriendDeleteNoti", "CancelFriendRequestNoti", "InvitePartyNoti", "ReplyInvitePartyNoti", "JoinPartyMemberNoti", "LeavePartyMemberNoti", "ChangePartyServerNameNoti", "ChangePartyLeaderNoti", "ExchangePartyNameNoti", "ExchangePartyMemberMarkNoti", "BanPartyNoti", "SummonPartyMemberNoti", "ReplySummonPartyMemberNoti", "NoticeChatNoti", "SystemMailNoti", "PartyVoteNoti", "ReplyPartyVoteNoti", "PartyVoteResultNoti", "PartyInstanceInfoNoti", "SessionInfoNoti", "KickedFromFriendsMyHomeNoti", "CancelSummonPartyMemberNoti", "PartyMemberLocationNoti", "NtfFriendLeavingHome", "NtfInvitePartyRecvResult", "NtfDestroyParty", "ReqReservationEnterToServer", "AckReservationEnterToServer", "NtfPartyChat", "NtfPartyInfo", "NtfReturnUserLogout", "NtfClearPartySummon", "NtfCraftHelp", "ReqReservationCancelToServer", "NtfExchangeMyhome", "NtfUgcNpcRankRefresh", "NtfDeletePartyInviteSend", "NtfMyhomeHostEnterEditRoom", "NtfUserKick", "NtfMailSend", "NtfOperationSystemNoticeChat", "AckReservationCancelToServer", "NtfFarmingEnd", "NtfRentFloor", "NtfModifyFloorLinkedInfos", "NtfBeaconCompactSync", "ReqCreateContentStorage", "AckCreateContentStorage", "NtfChangeCaliumStorageInfo", "NtfModifyLandInfo", "NtfModifyBuildingInfo", "NtfModifyBuildingProfit", "NtfLandAuctionHighestBidderChange", "NtfLandAuctionWinningBid", "NtfLandAuctionReservation", "Msg", });
internal_static_ServerMessage_Chat_descriptor = internal_static_ServerMessage_Chat_descriptor =
internal_static_ServerMessage_descriptor.getNestedTypes().get(0); internal_static_ServerMessage_descriptor.getNestedTypes().get(0);
internal_static_ServerMessage_Chat_fieldAccessorTable = new internal_static_ServerMessage_Chat_fieldAccessorTable = new
@@ -1250,6 +1348,66 @@ public final class ServerMessageOuterClass {
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_ServerMessage_GS2GS_NTF_MODIFY_FLOOR_LINKED_INFOS_descriptor, internal_static_ServerMessage_GS2GS_NTF_MODIFY_FLOOR_LINKED_INFOS_descriptor,
new java.lang.String[] { "ExceptServerName", "ModifyFloorLinkedInfos", }); new java.lang.String[] { "ExceptServerName", "ModifyFloorLinkedInfos", });
internal_static_ServerMessage_OS2GS_REQ_CREATE_CALIUM_CONTENT_STORAGE_descriptor =
internal_static_ServerMessage_descriptor.getNestedTypes().get(81);
internal_static_ServerMessage_OS2GS_REQ_CREATE_CALIUM_CONTENT_STORAGE_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_ServerMessage_OS2GS_REQ_CREATE_CALIUM_CONTENT_STORAGE_descriptor,
new java.lang.String[] { "RequestServerName", "ContentId", "Calium", });
internal_static_ServerMessage_OS2GS_ACK_CREATE_CALIUM_CONTENT_STORAGE_descriptor =
internal_static_ServerMessage_descriptor.getNestedTypes().get(82);
internal_static_ServerMessage_OS2GS_ACK_CREATE_CALIUM_CONTENT_STORAGE_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_ServerMessage_OS2GS_ACK_CREATE_CALIUM_CONTENT_STORAGE_descriptor,
new java.lang.String[] { "Result", });
internal_static_ServerMessage_GS2GS_NTF_CHANGE_CALIUM_STORAGE_INFO_descriptor =
internal_static_ServerMessage_descriptor.getNestedTypes().get(83);
internal_static_ServerMessage_GS2GS_NTF_CHANGE_CALIUM_STORAGE_INFO_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_ServerMessage_GS2GS_NTF_CHANGE_CALIUM_STORAGE_INFO_descriptor,
new java.lang.String[] { });
internal_static_ServerMessage_GS2GS_NTF_MODIFY_LAND_INFO_descriptor =
internal_static_ServerMessage_descriptor.getNestedTypes().get(84);
internal_static_ServerMessage_GS2GS_NTF_MODIFY_LAND_INFO_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_ServerMessage_GS2GS_NTF_MODIFY_LAND_INFO_descriptor,
new java.lang.String[] { "ExceptServerName", "LandInfos", });
internal_static_ServerMessage_GS2GS_NTF_MODIFY_BUILDING_INFO_descriptor =
internal_static_ServerMessage_descriptor.getNestedTypes().get(85);
internal_static_ServerMessage_GS2GS_NTF_MODIFY_BUILDING_INFO_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_ServerMessage_GS2GS_NTF_MODIFY_BUILDING_INFO_descriptor,
new java.lang.String[] { "ExceptServerName", "BuildingInfos", });
internal_static_ServerMessage_GS2GS_NTF_MODIFY_BUILDING_PROFIT_descriptor =
internal_static_ServerMessage_descriptor.getNestedTypes().get(86);
internal_static_ServerMessage_GS2GS_NTF_MODIFY_BUILDING_PROFIT_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_ServerMessage_GS2GS_NTF_MODIFY_BUILDING_PROFIT_descriptor,
new java.lang.String[] { "ExceptServerName", "BuildingMetaId", "FloorProfits", });
internal_static_ServerMessage_GS2GS_NTF_MODIFY_BUILDING_PROFIT_FloorProfitsEntry_descriptor =
internal_static_ServerMessage_GS2GS_NTF_MODIFY_BUILDING_PROFIT_descriptor.getNestedTypes().get(0);
internal_static_ServerMessage_GS2GS_NTF_MODIFY_BUILDING_PROFIT_FloorProfitsEntry_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_ServerMessage_GS2GS_NTF_MODIFY_BUILDING_PROFIT_FloorProfitsEntry_descriptor,
new java.lang.String[] { "Key", "Value", });
internal_static_ServerMessage_GS2GS_NTF_LAND_AUCTION_HIGHEST_BIDDER_CHANGE_descriptor =
internal_static_ServerMessage_descriptor.getNestedTypes().get(87);
internal_static_ServerMessage_GS2GS_NTF_LAND_AUCTION_HIGHEST_BIDDER_CHANGE_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_ServerMessage_GS2GS_NTF_LAND_AUCTION_HIGHEST_BIDDER_CHANGE_descriptor,
new java.lang.String[] { "ReceiverUserGuid", "HasReceivedRefundMail", "LandMetaId", "CurrencyType", "HighestBidPrice", "HighestBidUserGuid", "HighestBidUserNickname", });
internal_static_ServerMessage_GS2GS_NTF_LAND_AUCTION_WINNING_BID_descriptor =
internal_static_ServerMessage_descriptor.getNestedTypes().get(88);
internal_static_ServerMessage_GS2GS_NTF_LAND_AUCTION_WINNING_BID_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_ServerMessage_GS2GS_NTF_LAND_AUCTION_WINNING_BID_descriptor,
new java.lang.String[] { "WinningUserGuid", "WinningUserNickname", "LandMetaId", "BuildingMetaIds", "IsNewRecvMail", });
internal_static_ServerMessage_GS2GS_NTF_LAND_AUCTION_RESERVATION_descriptor =
internal_static_ServerMessage_descriptor.getNestedTypes().get(89);
internal_static_ServerMessage_GS2GS_NTF_LAND_AUCTION_RESERVATION_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_ServerMessage_GS2GS_NTF_LAND_AUCTION_RESERVATION_descriptor,
new java.lang.String[] { "ToAddActivitings", });
com.google.protobuf.TimestampProto.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor();
com.caliverse.admin.domain.RabbitMq.message.DefineCommon.getDescriptor(); com.caliverse.admin.domain.RabbitMq.message.DefineCommon.getDescriptor();
com.caliverse.admin.domain.RabbitMq.message.DefineResult.getDescriptor(); com.caliverse.admin.domain.RabbitMq.message.DefineResult.getDescriptor();

View File

@@ -72,4 +72,9 @@ public class AdminController {
return ResponseEntity.ok().body(adminService.deleteAdmin(adminRequest)); return ResponseEntity.ok().body(adminService.deleteAdmin(adminRequest));
} }
//데이터 초기화
@PostMapping("/init-data")
public ResponseEntity<AdminResponse> initData(@RequestBody AuthenticateRequest authenticateRequest){
return ResponseEntity.ok().body(adminService.initPassword(authenticateRequest));
}
} }

View File

@@ -0,0 +1,53 @@
package com.caliverse.admin.domain.api;
import com.caliverse.admin.domain.request.AuthenticateRequest;
import com.caliverse.admin.domain.request.LogGenericRequest;
import com.caliverse.admin.domain.response.DataResponse;
import com.caliverse.admin.domain.response.LogResponse;
import com.caliverse.admin.domain.service.DataService;
import com.caliverse.admin.global.common.code.CommonCode;
import com.caliverse.admin.global.common.code.ErrorCode;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@Tag(name = "데이터 관련", description = "데이터 관련 api 입니다.")
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/v1/data")
public class DataController {
private final DataService dataService;
@Value("${spring.profiles.active}")
private String activeProfile;
@PostMapping("/init-list")
public ResponseEntity<DataResponse> initHistoryList(
@RequestBody LogGenericRequest logGenericRequest){
if(activeProfile.equals("live")){
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(DataResponse.builder()
.status(CommonCode.ERROR.getHttpStatus())
.result(ErrorCode.NOT_FOUNT_API.toString())
.build());
}
return ResponseEntity.ok().body( dataService.initHistoryList(logGenericRequest));
}
//데이터 초기화
@PostMapping("/init-data")
public ResponseEntity<DataResponse> initData(@RequestBody AuthenticateRequest authenticateRequest){
if(activeProfile.equals("live")){
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(DataResponse.builder()
.status(CommonCode.ERROR.getHttpStatus())
.result(ErrorCode.NOT_FOUNT_API.toString())
.build());
}
return ResponseEntity.ok().body(dataService.initData(authenticateRequest));
}
}

View File

@@ -20,6 +20,12 @@ import java.util.Map;
@RequestMapping("/api/v1/land") @RequestMapping("/api/v1/land")
public class LandController { public class LandController {
private final LandService landService; private final LandService landService;
@GetMapping("/info")
public ResponseEntity<LandResponse> getLandInfoList(
@RequestParam Map<String, String> requestParam){
return ResponseEntity.ok().body( landService.getLandInfo(requestParam));
}
@GetMapping("/auction/list") @GetMapping("/auction/list")
public ResponseEntity<LandResponse> getLandAuctionList( public ResponseEntity<LandResponse> getLandAuctionList(
@RequestParam Map<String, String> requestParam){ @RequestParam Map<String, String> requestParam){
@@ -49,16 +55,34 @@ public class LandController {
return ResponseEntity.ok().body(landService.postLandAuction(landRequest)); return ResponseEntity.ok().body(landService.postLandAuction(landRequest));
} }
@PostMapping("/change")
public ResponseEntity<LandResponse> postLandOwnerChanges(
@RequestBody LandRequest landRequest){
return ResponseEntity.ok().body(landService.postLandOwnerChanges(landRequest));
}
@PutMapping("/auction/{id}") @PutMapping("/auction/{id}")
public ResponseEntity<LandResponse> updateLandAuction( public ResponseEntity<LandResponse> updateLandAuction(
@PathVariable("id")Long id, @RequestBody LandRequest landRequest){ @PathVariable("id")Long id, @RequestBody LandRequest landRequest){
return ResponseEntity.ok().body(landService.updateLandAuction(id, landRequest)); return ResponseEntity.ok().body(landService.updateLandAuction(id, landRequest));
} }
@PutMapping("/change/{id}")
public ResponseEntity<LandResponse> updateLandOwnerChanges(
@PathVariable("id")Long id, @RequestBody LandRequest landRequest){
return ResponseEntity.ok().body(landService.updateLandOwnerChanges(id, landRequest));
}
@DeleteMapping("/auction/delete") @DeleteMapping("/auction/delete")
public ResponseEntity<LandResponse> deleteLandAuction( public ResponseEntity<LandResponse> deleteLandAuction(
@RequestBody LandRequest landRequest){ @RequestBody LandRequest landRequest){
return ResponseEntity.ok().body(landService.deleteLandAuction(landRequest)); return ResponseEntity.ok().body(landService.deleteLandAuction(landRequest));
} }
@DeleteMapping("/change/delete")
public ResponseEntity<LandResponse> deleteLandOwnerChanges(
@RequestBody LandRequest landRequest){
return ResponseEntity.ok().body(landService.deleteLandOwnerChanges(landRequest));
}
} }

View File

@@ -0,0 +1,25 @@
package com.caliverse.admin.domain.api;
import com.caliverse.admin.domain.request.LogGenericRequest;
import com.caliverse.admin.domain.response.LogResponse;
import com.caliverse.admin.domain.service.LogService;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@Tag(name = "로그", description = "로그 api")
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/v1/log")
public class LogController {
private final LogService logService;
@PostMapping("/generic/list")
public ResponseEntity<LogResponse> genericlist(
@RequestBody LogGenericRequest logGenericRequest){
return ResponseEntity.ok().body( logService.genericLogList(logGenericRequest));
}
}

View File

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

View File

@@ -0,0 +1,28 @@
package com.caliverse.admin.domain.dao.admin;
import com.caliverse.admin.domain.entity.*;
import com.caliverse.admin.domain.request.LandRequest;
import org.apache.ibatis.annotations.*;
import java.util.List;
import java.util.Map;
public interface DataMapper {
@Select("SELECT * FROM data_initialize_schedule WHERE status = 'WAIT'")
@Results({
@Result(property = "id", column = "id"),
@Result(property = "dataType", column = "data_type"),
@Result(property = "status", column = "status"),
@Result(property = "deleted", column = "deleted"),
@Result(property = "createBy", column = "create_by"),
@Result(property = "createDt", column = "create_dt"),
})
List<DataInit> getDataInit();
@Update("UPDATE data_initialize_schedule SET status = #{status} WHERE id = #{id}")
int updateStatus(@Param("id") long id, @Param("status") String status);
@Insert("INSERT INTO data_initialize_schedule (data_type, create_by) VALUES (#{dataType}, #{createBy})")
int postDataInit(@Param("dataType") EInitDataType dataType, @Param("createBy") long createBy);
}

View File

@@ -2,8 +2,10 @@ package com.caliverse.admin.domain.dao.admin;
import com.caliverse.admin.domain.entity.Event; import com.caliverse.admin.domain.entity.Event;
import com.caliverse.admin.domain.entity.LandAuction; import com.caliverse.admin.domain.entity.LandAuction;
import com.caliverse.admin.domain.entity.LandOwnerChange;
import com.caliverse.admin.domain.entity.Message; import com.caliverse.admin.domain.entity.Message;
import com.caliverse.admin.domain.request.LandRequest; import com.caliverse.admin.domain.request.LandRequest;
import org.apache.ibatis.annotations.Select;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -11,26 +13,40 @@ import java.util.Map;
public interface LandMapper { public interface LandMapper {
List<LandAuction> getAllLandAuction();
List<LandOwnerChange> getAllLandOwnedChanges();
List<LandAuction> getLandAuctionList(Map map); List<LandAuction> getLandAuctionList(Map map);
int getAllCnt(Map map); int getAllCnt(Map map);
int getTotal(); int getTotal();
LandAuction getLandAuctionDetail(Long id); LandAuction getLandAuctionDetail(Long id);
LandOwnerChange getLandOwnerChangeDetail(Long id);
List<LandOwnerChange> getLandOwnerChangeInfo(int landId);
List<Message> getMessage(Long id); List<Message> getMessage(Long id);
int getMaxLandSeq(Integer landId); int getMaxLandSeq(Integer landId);
int getPossibleLand(Integer landId); int getPossibleLand(Integer landId);
int getPossibleLandOwnerChanges(Integer landId);
int postLandAuction(LandRequest landRequest); int postLandAuction(LandRequest landRequest);
int postLandOwnerChange(LandRequest landRequest);
void insertMessage(Map map); void insertMessage(Map map);
int updateLandAuction(LandRequest landRequest); int updateLandAuction(LandRequest landRequest);
int updateLandOwnerChange(LandRequest landRequest);
int deleteMessage(Map map); int deleteMessage(Map map);
int initLandAuction(Long id);
int initLandOwnedChanges(Long id);
int deleteLandAuction(Map map); int deleteLandAuction(Map map);
int deleteLandOwnerChanges(Map map);
int updateStatusLandAuction(Map map); int updateStatusLandAuction(Map map);
int updateStatusLandOwnedChange(Map map);
List<LandAuction> getScheduleLandAuctionList(); List<LandAuction> getScheduleLandAuctionList();
List<LandOwnerChange> getScheduleLandOwnedChangeList();
} }

View File

@@ -29,6 +29,7 @@ public class MetaDataFileLoader {
private final Map<Integer, MetaLandData> lands; private final Map<Integer, MetaLandData> lands;
private final Map<Integer, MetaBattleConfigData> battleConfigs; private final Map<Integer, MetaBattleConfigData> battleConfigs;
private final Map<Integer, MetaBattleRewardData> battleRewards; private final Map<Integer, MetaBattleRewardData> battleRewards;
private final Map<String, MetaSystemMailData> systemMails;
public MetaDataFileLoader(JsonFileReader jsonFileReader) { public MetaDataFileLoader(JsonFileReader jsonFileReader) {
this.jsonFileReader = jsonFileReader; this.jsonFileReader = jsonFileReader;
@@ -42,6 +43,7 @@ public class MetaDataFileLoader {
this.lands = new ConcurrentHashMap<>(); this.lands = new ConcurrentHashMap<>();
this.battleConfigs = new ConcurrentHashMap<>(); this.battleConfigs = new ConcurrentHashMap<>();
this.battleRewards = new ConcurrentHashMap<>(); this.battleRewards = new ConcurrentHashMap<>();
this.systemMails = new ConcurrentHashMap<>();
} }
@PostConstruct @PostConstruct
@@ -72,6 +74,7 @@ public class MetaDataFileLoader {
loadClothType(); loadClothType();
loadBattleConfig(); loadBattleConfig();
loadBattleReward(); loadBattleReward();
loadSystemMail();
}catch(MetaDataException e){ }catch(MetaDataException e){
log.error("Failed to initialize metadata", e); log.error("Failed to initialize metadata", e);
throw e; throw e;
@@ -152,6 +155,9 @@ public class MetaDataFileLoader {
.sorted(Comparator.comparing(MetaBattleRewardData::getGroupID)) // groupId 기준으로 정렬 .sorted(Comparator.comparing(MetaBattleRewardData::getGroupID)) // groupId 기준으로 정렬
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
public List<MetaSystemMailData> getMetaSystemMail() {
return new ArrayList<>(systemMails.values());
}
@@ -320,11 +326,18 @@ public class MetaDataFileLoader {
item.setLandId((Integer)meta.get("LandId")); item.setLandId((Integer)meta.get("LandId"));
item.setOwner((String)meta.get("Owner")); item.setOwner((String)meta.get("Owner"));
item.setEditor((String)meta.get("Editor")); item.setEditor((String)meta.get("Editor"));
// item.setNonAuction((Boolean)meta.get("NonAuction")); Boolean nonAuction = (Boolean)meta.get("NonAuction");
if(nonAuction != null)
item.setNonAuction(nonAuction);
item.setRentalStateSwitch((Boolean)meta.get("RentalStateSwitch"));
item.setRentalAvailable((Boolean)meta.get("RentalAvailable"));
item.setLandName(land_name); item.setLandName(land_name);
item.setLandDesc((String)meta.get("LandDesc")); item.setLandDesc((String)meta.get("LandDesc"));
item.setLandSize((String)meta.get("LandSize")); item.setLandSize((String)meta.get("LandSize"));
item.setLandType((String)meta.get("LandType")); item.setLandType((String)meta.get("LandType"));
item.setLinkedItem((Integer)meta.get("LinkedItem"));
item.setCityType((String)meta.get("CityType"));
item.setBuildingArea((String)meta.get("BuildingArea"));
item.setBuildingId((Integer)meta.get("BuildingId")); item.setBuildingId((Integer)meta.get("BuildingId"));
item.setBuildingSocket((Integer)meta.get("BuildingSocket")); item.setBuildingSocket((Integer)meta.get("BuildingSocket"));
lands.put((Integer)meta.get("LandId"), item); lands.put((Integer)meta.get("LandId"), item);
@@ -379,4 +392,24 @@ public class MetaDataFileLoader {
log.info("loadBattleReward {} Load Complete", EMetaData.BATTLE_REWARD_DATA.getFileName()); log.info("loadBattleReward {} Load Complete", EMetaData.BATTLE_REWARD_DATA.getFileName());
} }
// 시스템메일 데이터 로드
public void loadSystemMail(){
List<Map<String, Object>> metaList = jsonFileReader.readJsonFile(EMetaData.SYSTEM_MAIL_DATA.getFileName(), MetadataConstants.JSON_LIST_SYSTEM_META);
if(metaList == null || metaList.isEmpty()) {
log.warn("System Mail data is empty or file not found: {}", EMetaData.SYSTEM_MAIL_DATA.getFileName());
return;
}
metaList.forEach(meta -> {
MetaSystemMailData item = new MetaSystemMailData();
item.setKey((String)meta.get("Key"));
item.setMailTitle((String)meta.get("Mail_Title"));
item.setMailDesc((String)meta.get("Mail_Desc"));
item.setSender((String)meta.get("Sender"));
systemMails.put((String)meta.get("Key"), item);
});
log.info("loadSystemMail {} Load Complete", EMetaData.SYSTEM_MAIL_DATA.getFileName());
}
} }

View File

@@ -78,5 +78,9 @@ public class MetaDataHandler {
public List<MetaBattleRewardData> getMetaBattleRewardsListData() { public List<MetaBattleRewardData> getMetaBattleRewardsListData() {
return metadataFileLoader.getMetaBattleRewards(); return metadataFileLoader.getMetaBattleRewards();
} }
public List<MetaSystemMailData> getMetaSystemMailListData() {
return metadataFileLoader.getMetaSystemMail();
}
} }

View File

@@ -1,15 +0,0 @@
package com.caliverse.admin.domain.datacomponent;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
public class MetaQuestKey {
private Integer qeustId;
private Integer taskNum;
}

View File

@@ -38,6 +38,9 @@ public class Admin implements UserDetails{
@JsonProperty("expired_dt") @JsonProperty("expired_dt")
private LocalDateTime expiredDt; private LocalDateTime expiredDt;
@JsonProperty("auth_level_type")
private EAuthAdminLevelType authLevelType;
/* 만료일 만 가져올려면 */ /* 만료일 만 가져올려면 */
/*@Column(name = "expired_dt") /*@Column(name = "expired_dt")
@Temporal(TemporalType.DATE) @Temporal(TemporalType.DATE)

View File

@@ -0,0 +1,36 @@
package com.caliverse.admin.domain.entity;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
@JsonInclude(JsonInclude.Include.NON_NULL)
public class DataInit {
private Long id;
private EInitDataType dataType;
private DATA_INIT_STATUS status;
private boolean deleted;
@JsonProperty("create_by")
private String createBy;
@JsonProperty("create_dt")
private LocalDateTime createDt;
public enum DATA_INIT_STATUS {
WAIT,
RUNNING,
FINISH,
FAIL
;
}
}

View File

@@ -0,0 +1,10 @@
package com.caliverse.admin.domain.entity;
public enum EAuthAdminLevelType {
None,
Reader,
Master,
Developer
;
}

View File

@@ -1,37 +0,0 @@
package com.caliverse.admin.domain.entity;
import java.util.Arrays;
public enum ECurrencyType {
NONE(0, "None"),
GOLD(1, "Gold"),
SAPPHIRE(2, "Sapphire"),
CALIUM(3, "Calium"),
BEAM(4, "Beam"),
RUBY(5, "Ruby");
private final int value;
private final String name;
ECurrencyType(int value, String name) {
this.value = value;
this.name = name;
}
public int getValue() {
return value;
}
public String getName() {
return name;
}
public static int getValueByName(String name) {
return Arrays.stream(values())
.filter(type -> type.name.equalsIgnoreCase(name))
.findFirst()
.map(ECurrencyType::getValue)
.orElse(NONE.value);
}
}

View File

@@ -0,0 +1,10 @@
package com.caliverse.admin.domain.entity;
public enum EInitDataType {
None,
LandAuction,
LandOwned,
LandDesc
;
}

View File

@@ -0,0 +1,11 @@
package com.caliverse.admin.domain.entity;
public enum EInputType {
None,
String,
Number,
Boolean,
Null
;
}

View File

@@ -12,7 +12,8 @@ public enum EMetaData {
LAND_DATA("LandData.json", true), LAND_DATA("LandData.json", true),
BUILDING_DATA("BuildingData.json", true), BUILDING_DATA("BuildingData.json", true),
BATTLE_CONFIG_DATA("BattleFFAConfigData.json", true), BATTLE_CONFIG_DATA("BattleFFAConfigData.json", true),
BATTLE_REWARD_DATA("BattleFFARewardData.json", true) BATTLE_REWARD_DATA("BattleFFARewardData.json", true),
SYSTEM_MAIL_DATA("SystemMailData.json", true)
; ;

View File

@@ -44,7 +44,14 @@ public enum HISTORYTYPE {
LAND_AUCTION_DELETE("랜드경매 삭제"), LAND_AUCTION_DELETE("랜드경매 삭제"),
BATTLE_EVENT_ADD("전투시스템 이벤트 등록"), BATTLE_EVENT_ADD("전투시스템 이벤트 등록"),
BATTLE_EVENT_UPDATE("전투시스템 이벤트 수정"), BATTLE_EVENT_UPDATE("전투시스템 이벤트 수정"),
BATTLE_EVENT_DELETE("전투시스템 이벤트 삭제") BATTLE_EVENT_DELETE("전투시스템 이벤트 삭제"),
LAND_OWNER_CHANGE_ADD("랜드 소유권 변경 등록"),
LAND_OWNER_CHANGE_UPDATE("랜드 소유권 변경 수정"),
LAND_OWNER_CHANGE_DELETE("랜드 소유권 변경 예약 취소"),
LAND_OWNER_CHANGE_MAIL("랜드 소유권 변경 우편"),
LAND_OWNED_INITIALIZE("랜드 소유권 정보 초기화"),
LAND_DESC_INITIALIZE("랜드 정보 초기화"),
LAND_AUCTION_INITIALIZE("랜드 경매 초기화"),
; ;
private String historyType; private String historyType;
HISTORYTYPE(String type) { HISTORYTYPE(String type) {

View File

@@ -0,0 +1,66 @@
package com.caliverse.admin.domain.entity;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
@JsonInclude(JsonInclude.Include.NON_NULL)
public class LandInfo {
private Long id;
@JsonProperty("row_num")
private Integer rowNum;
@JsonProperty("land_id")
private Integer landId;
@JsonProperty("land_name")
private String landName;
@JsonProperty("land_desc")
private String landDesc;
@JsonProperty("land_size")
private String landSize;
@JsonProperty("land_type")
private String landType;
private String category;
@JsonProperty("building_id")
private Integer buildingId;
@JsonProperty("building_name")
private String buildingName;
@JsonProperty("owner_user_guid")
private String ownerUserGuid;
@JsonProperty("owner_user_nickname")
private String ownerUserNickname;
@JsonProperty("owner_user_create_date")
// private LocalDateTime ownerUserCreateDate;
private String ownerUserCreateDate;
@JsonProperty("owner_price")
private String ownerPrice;
@JsonProperty("non_auction")
private boolean nonAuction;
private Integer socket;
private String editor;
private String status;
private String isUpdate;
private boolean isOwned;
@JsonProperty("owner_changes")
private List<LandOwnerChange> ownerChanges;
public enum LAND_STATUS {
NONE,
AUCTION_RUNNING,
AUCTION_WAIT,
AUCTION_END,
OWNED,
OWNED_WAIT
;
}
}

View File

@@ -0,0 +1,58 @@
package com.caliverse.admin.domain.entity;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
@JsonInclude(JsonInclude.Include.NON_NULL)
public class LandOwnerChange {
private Long id;
@JsonProperty("row_num")
private Integer rowNum;
@JsonProperty("land_id")
private Integer landId;
@JsonProperty("land_name")
private String landName;
@JsonProperty("building_id")
private Integer buildingId;
@JsonProperty("building_name")
private String buildingName;
@JsonProperty("user_guid")
private String userGuid;
@JsonProperty("user_name")
private String userName;
@JsonProperty("reservation_dt")
private LocalDateTime reservationDt;
@JsonProperty("is_reserve")
private boolean isReserve;
private CHANGE_STATUS status;
private boolean deleted;
@JsonProperty("create_by")
private String createBy;
@JsonProperty("create_dt")
private LocalDateTime createDt;
@JsonProperty("update_by")
private String updateBy;
@JsonProperty("update_dt")
private LocalDateTime updateDt;
public enum CHANGE_STATUS {
WAIT,
FINISH,
RUNNING,
CANCEL,
FAIL
;
}
}

View File

@@ -0,0 +1,8 @@
package com.caliverse.admin.domain.entity.common;
public enum SearchUserType {
NONE,
GUID,
NICKNAME,
ACCOUNT
}

View File

@@ -8,11 +8,16 @@ public class MetaLandData {
private Integer landId; private Integer landId;
private String owner; private String owner;
private String editor; private String editor;
private Integer linkedItem;
private boolean nonAuction; private boolean nonAuction;
private boolean rentalStateSwitch;
private boolean rentalAvailable;
private String landName; private String landName;
private String landDesc; private String landDesc;
private String landSize; private String landSize;
private String landType; private String landType;
private Integer buildingId;
private Integer buildingSocket; private Integer buildingSocket;
private String cityType;
private String buildingArea;
private Integer buildingId;
} }

View File

@@ -0,0 +1,15 @@
package com.caliverse.admin.domain.entity.metadata;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
@Getter @Setter
public class MetaSystemMailData {
private String key;
@JsonProperty("mail_title")
private String mailTitle;
@JsonProperty("mail_desc")
private String mailDesc;
private String sender;
}

View File

@@ -1,5 +1,6 @@
package com.caliverse.admin.domain.request; package com.caliverse.admin.domain.request;
import com.caliverse.admin.domain.entity.EInitDataType;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*; import lombok.*;
@@ -12,7 +13,8 @@ public class AuthenticateRequest {
private String name; private String name;
private String email; private String email;
private String password; private String password;
@JsonProperty("new_password") @JsonProperty("new_password")
private String newPassword; private String newPassword;
@JsonProperty("init_data_type")
private EInitDataType initDataType;
} }

View File

@@ -50,6 +50,21 @@ public class LandRequest {
@JsonProperty("message_list") @JsonProperty("message_list")
private List<Message> massageList; private List<Message> massageList;
//소유권 변경
@JsonProperty("user_guid")
private String userGuid;
@JsonProperty("user_name")
private String userName;
@JsonProperty("is_reserve")
private boolean isReserve;
@JsonProperty("reservation_dt")
private LocalDateTime reservationDt;
@JsonProperty("building_id")
private Integer buildingId;
@JsonProperty("building_name")
private String buildingName;
@JsonProperty("create_by") @JsonProperty("create_by")
private Long createBy; private Long createBy;
@JsonProperty("create_dt") @JsonProperty("create_dt")

View File

@@ -0,0 +1,52 @@
package com.caliverse.admin.domain.request;
import com.caliverse.admin.domain.entity.EInputType;
import com.caliverse.admin.domain.entity.common.SearchUserType;
import com.caliverse.admin.logs.entity.LogAction;
import com.caliverse.admin.logs.entity.LogDomain;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class LogGenericRequest {
@JsonProperty("search_type")
private SearchUserType searchType;
@JsonProperty("search_data")
private String searchData;
@JsonProperty("log_action")
private LogAction logAction;
@JsonProperty("log_domain")
private LogDomain logDomain;
private List<LogFilter> filters;
@JsonProperty("tran_id")
private String tranId;
@JsonProperty("start_dt")
private LocalDateTime startDt;
@JsonProperty("end_dt")
private LocalDateTime endDt;
@JsonProperty("page_no")
private Integer pageNo;
@JsonProperty("page_size")
private Integer pageSize;
@JsonProperty("order_by")
private String orderBy;
@Data
public static class LogFilter{
@JsonProperty("field_name")
private String fieldName;
@JsonProperty("field_type")
private EInputType fieldType;
private String value;
}
}

View File

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

View File

@@ -47,6 +47,9 @@ public class AdminResponse {
private Long groupId; private Long groupId;
@JsonProperty("auth_level_type")
private EAuthAdminLevelType authLevelType;
@JsonProperty("list") @JsonProperty("list")
private List<Admin> adminList; private List<Admin> adminList;

View File

@@ -0,0 +1,42 @@
package com.caliverse.admin.domain.response;
import com.caliverse.admin.history.domain.DynamodbDataInitializeHistory;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DataResponse {
private int status;
private String result;
@JsonProperty("data")
private ResultData resultData;
@Data
@Builder
@JsonInclude(JsonInclude.Include.NON_NULL)
public static class ResultData {
@JsonProperty("init_list")
List<DynamodbDataInitializeHistory> dataInitList;
private String message;
private int total;
@JsonProperty("total_all")
private int totalAll;
@JsonProperty("page_no")
private int pageNo;
}
}

View File

@@ -1,6 +1,7 @@
package com.caliverse.admin.domain.response; package com.caliverse.admin.domain.response;
import com.caliverse.admin.domain.entity.LandAuction; import com.caliverse.admin.domain.entity.LandAuction;
import com.caliverse.admin.domain.entity.LandInfo;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@@ -35,6 +36,9 @@ public class LandResponse {
@JsonProperty("building_list") @JsonProperty("building_list")
private List<Building> buildingList; private List<Building> buildingList;
@JsonProperty("land_info_list")
private List<LandInfo> landInfoList;
private String message; private String message;
@JsonProperty("land_list") @JsonProperty("land_list")
private List<Land> landList; private List<Land> landList;

View File

@@ -0,0 +1,45 @@
package com.caliverse.admin.domain.response;
import com.caliverse.admin.logs.Indicatordomain.GenericMongoLog;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.Map;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class LogResponse {
private int status;
private String result;
@JsonProperty("data")
private ResultData resultData;
@Data
@Builder
@JsonInclude(JsonInclude.Include.NON_NULL)
public static class ResultData {
private String message;
@JsonProperty("generic_list")
// private List<Map<String, Object>> genericList;
private List<GenericMongoLog> genericList;
private int total;
@JsonProperty("total_all")
private int totalAll;
@JsonProperty("page_no")
private int pageNo;
}
}

View File

@@ -31,6 +31,8 @@ public class UsersResponse {
private String message; private String message;
@JsonProperty("user_session")
private boolean userSession;
@JsonProperty("user_info") @JsonProperty("user_info")
private UserInfo userInfo; private UserInfo userInfo;
@JsonProperty("char_info") @JsonProperty("char_info")
@@ -62,6 +64,8 @@ public class UsersResponse {
@JsonProperty("quest_detail") @JsonProperty("quest_detail")
private List<Quest> questDetail; private List<Quest> questDetail;
private Map<String,String> pageKey;
private Map<String,String> result; private Map<String,String> result;
} }
@Data @Data

View File

@@ -132,6 +132,7 @@ public class AdminService {
.status(admin.get().getStatus()) .status(admin.get().getStatus())
.authorityList(groupAuth) .authorityList(groupAuth)
.expiredDt(admin.get().getPwUpdateDt().plus(passwordExpiration, ChronoUnit.DAYS)) .expiredDt(admin.get().getPwUpdateDt().plus(passwordExpiration, ChronoUnit.DAYS))
.authLevelType(admin.get().getAuthLevelType())
.build(); .build();
} }
return AdminResponse.builder() return AdminResponse.builder()

View File

@@ -23,6 +23,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.util.HashMap; import java.util.HashMap;
@@ -116,6 +118,15 @@ public class BattleEventService {
LocalDateTime start_dt = battleEventRequest.getEventStartDt(); LocalDateTime start_dt = battleEventRequest.getEventStartDt();
LocalDateTime end_dt = start_dt.plusHours(12); LocalDateTime end_dt = start_dt.plusHours(12);
battleEventRequest.setEventEndDt(end_dt); battleEventRequest.setEventEndDt(end_dt);
}else{
// 일자만 필요해서 UTC시간으로 변경되다보니 한국시간(+9)을 더해서 마지막시간으로 설정
LocalDateTime end_dt_kst = battleEventRequest.getEventEndDt()
.plusHours(9)
.withHour(23)
.withMinute(59)
.withSecond(59)
.withNano(0);
battleEventRequest.setEventEndDt(end_dt_kst);
} }
battleEventRequest.setInstanceId(CommonConstants.BATTLE_INSTANCE_ID); //고정값으로 넣고 추후 맵정보가 늘어나면 선택하는 걸로 battleEventRequest.setInstanceId(CommonConstants.BATTLE_INSTANCE_ID); //고정값으로 넣고 추후 맵정보가 늘어나면 선택하는 걸로
@@ -126,21 +137,13 @@ public class BattleEventService {
List<BattleEvent> existingList = battleMapper.getCheckBattleEventList(battleEventRequest); List<BattleEvent> existingList = battleMapper.getCheckBattleEventList(battleEventRequest);
boolean isTime = isTimeOverlapping(existingList, battleEventRequest); boolean isTime = isTimeOverlapping(existingList, battleEventRequest);
if(isTime){ if(isTime){
log.warn("battle Schedule duplication start_dt: {}, end_dt: {}, operation_time: {}", battleEventRequest.getEventStartDt(), battleEventRequest.getEventEndDt(), operation_time);
return BattleEventResponse.builder() return BattleEventResponse.builder()
.status(CommonCode.ERROR.getHttpStatus()) .status(CommonCode.ERROR.getHttpStatus())
.result(ErrorCode.ERROR_BATTLE_EVENT_TIME_OVER.toString()) .result(ErrorCode.ERROR_BATTLE_EVENT_TIME_OVER.toString())
.build(); .build();
} }
// 일자만 필요해서 UTC시간으로 변경되다보니 한국시간(+9)을 더해서 마지막시간으로 설정
LocalDateTime end_dt_kst = battleEventRequest.getEventEndDt()
.plusHours(9)
.withHour(23)
.withMinute(59)
.withSecond(59)
.withNano(0);
battleEventRequest.setEventEndDt(end_dt_kst);
int next_event_id = dynamodbBattleEventService.getEventId() + 1; int next_event_id = dynamodbBattleEventService.getEventId() + 1;
battleEventRequest.setEventId(next_event_id); battleEventRequest.setEventId(next_event_id);
@@ -363,14 +366,205 @@ public class BattleEventService {
} }
private boolean isTimeOverlapping(List<BattleEvent> existingList, BattleEventRequest battleEventRequest){ private boolean isTimeOverlapping(List<BattleEvent> existingList, BattleEventRequest battleEventRequest){
LocalTime newStartTime = battleEventRequest.getEventStartDt().toLocalTime(); LocalDateTime newStartDt = battleEventRequest.getEventStartDt();
LocalDateTime newEndDt = battleEventRequest.getEventEndDt();
LocalDate newStartDate = newStartDt.toLocalDate();
LocalDate newEndDate = newEndDt.toLocalDate();
LocalTime newStartTime = newStartDt.toLocalTime();
LocalTime newEndTime = newStartTime.plusSeconds(battleEventRequest.getEventOperationTime()); LocalTime newEndTime = newStartTime.plusSeconds(battleEventRequest.getEventOperationTime());
BattleEvent.BATTLE_REPEAT_TYPE newRepeatType = battleEventRequest.getRepeatType();
return existingList.stream().anyMatch(schedule -> { return existingList.stream().anyMatch(existingEvent -> {
LocalTime existingStartTime = schedule.getEventStartDt().toLocalTime(); // 자기 자신은 제외 (수정 시)
LocalTime existingEndTime = existingStartTime.plusSeconds(schedule.getEventOperationTime()); if (battleEventRequest.getId() != null && battleEventRequest.getId().equals(existingEvent.getId())) {
return false;
}
// 기존 이벤트 정보
LocalDateTime existingStartDt = existingEvent.getEventStartDt();
LocalDateTime existingEndDt = existingEvent.getEventEndDt();
LocalDate existingStartDate = existingStartDt.toLocalDate();
LocalDate existingEndDate = existingEndDt.toLocalDate();
LocalTime existingStartTime = existingStartDt.toLocalTime();
LocalTime existingEndTime = existingStartTime.plusSeconds(existingEvent.getEventOperationTime());
BattleEvent.BATTLE_REPEAT_TYPE existingRepeatType = existingEvent.getRepeatType();
// 1. 두 이벤트가 모두 NONE 타입인 경우
if (newRepeatType == BattleEvent.BATTLE_REPEAT_TYPE.NONE &&
existingRepeatType == BattleEvent.BATTLE_REPEAT_TYPE.NONE) {
// 같은 날짜인지 확인
if (newStartDate.equals(existingStartDate)) {
// 시간이 겹치는지 확인
return !existingStartTime.isAfter(newEndTime) && !newStartTime.isAfter(existingEndTime); return !existingStartTime.isAfter(newEndTime) && !newStartTime.isAfter(existingEndTime);
}
return false;
}
// 2. NONE 타입과 DAY 타입 간의 중복 체크
if (newRepeatType == BattleEvent.BATTLE_REPEAT_TYPE.NONE &&
existingRepeatType == BattleEvent.BATTLE_REPEAT_TYPE.DAY) {
// NONE 이벤트의 날짜가 DAY 이벤트의 기간 내에 있는지 확인
if (isDateInRange(newStartDate, existingStartDate, existingEndDate)) {
// 시간이 겹치는지 확인
return !existingStartTime.isAfter(newEndTime) && !newStartTime.isAfter(existingEndTime);
}
return false;
}
// 3. DAY 타입과 NONE 타입 간의 중복 체크
if (newRepeatType == BattleEvent.BATTLE_REPEAT_TYPE.DAY &&
existingRepeatType == BattleEvent.BATTLE_REPEAT_TYPE.NONE) {
// NONE 이벤트의 날짜가 DAY 이벤트의 기간 내에 있는지 확인
if (isDateInRange(existingStartDate, newStartDate, newEndDate)) {
// 시간이 겹치는지 확인
return !existingStartTime.isAfter(newEndTime) && !newStartTime.isAfter(existingEndTime);
}
return false;
}
// 4. 두 이벤트가 모두 DAY 타입인 경우
if (newRepeatType == BattleEvent.BATTLE_REPEAT_TYPE.DAY &&
existingRepeatType == BattleEvent.BATTLE_REPEAT_TYPE.DAY) {
// 날짜 범위가 겹치는지 확인
if (datesOverlap(newStartDate, newEndDate, existingStartDate, existingEndDate)) {
// 시간이 겹치는지 확인
return !existingStartTime.isAfter(newEndTime) && !newStartTime.isAfter(existingEndTime);
}
return false;
}
// 5. NONE 타입과 요일 타입 간의 중복 체크
if (newRepeatType == BattleEvent.BATTLE_REPEAT_TYPE.NONE &&
isWeekdayType(existingRepeatType)) {
// NONE 이벤트의 날짜가 요일 이벤트의 기간 내에 있는지 확인
if (isDateInRange(newStartDate, existingStartDate, existingEndDate)) {
// NONE 이벤트의 요일이 요일 이벤트의 요일과 일치하는지 확인
DayOfWeek noneDayOfWeek = newStartDate.getDayOfWeek();
DayOfWeek weekdayType = getDayOfWeekFromRepeatType(existingRepeatType);
if (noneDayOfWeek == weekdayType) {
// 시간이 겹치는지 확인
return !existingStartTime.isAfter(newEndTime) && !newStartTime.isAfter(existingEndTime);
}
}
return false;
}
// 6. 요일 타입과 NONE 타입 간의 중복 체크
if (isWeekdayType(newRepeatType) &&
existingRepeatType == BattleEvent.BATTLE_REPEAT_TYPE.NONE) {
// NONE 이벤트의 날짜가 요일 이벤트의 기간 내에 있는지 확인
if (isDateInRange(existingStartDate, newStartDate, newEndDate)) {
// NONE 이벤트의 요일이 요일 이벤트의 요일과 일치하는지 확인
DayOfWeek noneDayOfWeek = existingStartDate.getDayOfWeek();
DayOfWeek weekdayType = getDayOfWeekFromRepeatType(newRepeatType);
if (noneDayOfWeek == weekdayType) {
// 시간이 겹치는지 확인
return !existingStartTime.isAfter(newEndTime) && !newStartTime.isAfter(existingEndTime);
}
}
return false;
}
// 7. DAY 타입과 요일 타입 간의 중복 체크
if (newRepeatType == BattleEvent.BATTLE_REPEAT_TYPE.DAY &&
isWeekdayType(existingRepeatType)) {
// 날짜 범위가 겹치는지 확인
if (datesOverlap(newStartDate, newEndDate, existingStartDate, existingEndDate)) {
// 날짜 범위 내에 해당 요일이 적어도 하나 있는지 확인
if (hasOverlappingWeekday(newStartDate, newEndDate, existingStartDate, existingEndDate, getDayOfWeekFromRepeatType(existingRepeatType))) {
// 시간이 겹치는지 확인
return !existingStartTime.isAfter(newEndTime) && !newStartTime.isAfter(existingEndTime);
}
}
return false;
}
// 8. 요일 타입과 DAY 타입 간의 중복 체크
if (isWeekdayType(newRepeatType) &&
existingRepeatType == BattleEvent.BATTLE_REPEAT_TYPE.DAY) {
// 날짜 범위가 겹치는지 확인
if (datesOverlap(newStartDate, newEndDate, existingStartDate, existingEndDate)) {
// 날짜 범위 내에 해당 요일이 적어도 하나 있는지 확인
if (hasOverlappingWeekday(newStartDate, newEndDate, existingStartDate, existingEndDate, getDayOfWeekFromRepeatType(newRepeatType))) {
// 시간이 겹치는지 확인
return !existingStartTime.isAfter(newEndTime) && !newStartTime.isAfter(existingEndTime);
}
}
return false;
}
// 9. 두 이벤트가 모두 요일 타입인 경우
if (isWeekdayType(newRepeatType) && isWeekdayType(existingRepeatType)) {
// 같은 요일인지 확인
if (newRepeatType == existingRepeatType) {
// 날짜 범위가 겹치는지 확인
if (datesOverlap(newStartDate, newEndDate, existingStartDate, existingEndDate)) {
// 시간이 겹치는지 확인
return !existingStartTime.isAfter(newEndTime) && !newStartTime.isAfter(existingEndTime);
}
}
return false;
}
return false;
}); });
} }
private boolean isDateInRange(LocalDate date, LocalDate rangeStart, LocalDate rangeEnd) {
return !date.isBefore(rangeStart) && !date.isAfter(rangeEnd);
}
private boolean datesOverlap(LocalDate start1, LocalDate end1, LocalDate start2, LocalDate end2) {
return !start1.isAfter(end2) && !start2.isAfter(end1);
}
private boolean isWeekdayType(BattleEvent.BATTLE_REPEAT_TYPE repeatType) {
return repeatType == BattleEvent.BATTLE_REPEAT_TYPE.SUNDAY ||
repeatType == BattleEvent.BATTLE_REPEAT_TYPE.MONDAY ||
repeatType == BattleEvent.BATTLE_REPEAT_TYPE.TUESDAY ||
repeatType == BattleEvent.BATTLE_REPEAT_TYPE.WEDNESDAY ||
repeatType == BattleEvent.BATTLE_REPEAT_TYPE.THURSDAY ||
repeatType == BattleEvent.BATTLE_REPEAT_TYPE.FRIDAY ||
repeatType == BattleEvent.BATTLE_REPEAT_TYPE.SATURDAY;
}
private DayOfWeek getDayOfWeekFromRepeatType(BattleEvent.BATTLE_REPEAT_TYPE repeatType) {
switch (repeatType) {
case MONDAY: return DayOfWeek.MONDAY;
case TUESDAY: return DayOfWeek.TUESDAY;
case WEDNESDAY: return DayOfWeek.WEDNESDAY;
case THURSDAY: return DayOfWeek.THURSDAY;
case FRIDAY: return DayOfWeek.FRIDAY;
case SATURDAY: return DayOfWeek.SATURDAY;
case SUNDAY: return DayOfWeek.SUNDAY;
default: throw new IllegalArgumentException("Invalid repeat type: " + repeatType);
}
}
private boolean hasOverlappingWeekday(
LocalDate start1, LocalDate end1,
LocalDate start2, LocalDate end2,
DayOfWeek dayOfWeek) {
// 두 범위의 교집합 계산
LocalDate overlapStart = start1.isAfter(start2) ? start1 : start2;
LocalDate overlapEnd = end1.isBefore(end2) ? end1 : end2;
if (overlapStart.isAfter(overlapEnd)) {
return false; // 겹치는 날짜 범위 없음
}
// 겹치는 날짜 범위 내에 해당 요일이 있는지 확인
LocalDate current = overlapStart;
while (!current.isAfter(overlapEnd)) {
if (current.getDayOfWeek() == dayOfWeek) {
return true; // 해당 요일 발견
}
current = current.plusDays(1);
}
return false; // 해당 요일 없음
}
} }

View File

@@ -0,0 +1,215 @@
package com.caliverse.admin.domain.service;
import com.caliverse.admin.domain.dao.admin.DataMapper;
import com.caliverse.admin.domain.dao.admin.LandMapper;
import com.caliverse.admin.domain.entity.*;
import com.caliverse.admin.domain.request.AuthenticateRequest;
import com.caliverse.admin.domain.request.LogGenericRequest;
import com.caliverse.admin.domain.response.DataResponse;
import com.caliverse.admin.dynamodb.service.DynamodbDataService;
import com.caliverse.admin.global.common.code.CommonCode;
import com.caliverse.admin.global.common.code.ErrorCode;
import com.caliverse.admin.global.common.code.SuccessCode;
import com.caliverse.admin.global.common.constants.MysqlConstants;
import com.caliverse.admin.global.common.utils.CommonUtils;
import com.caliverse.admin.global.component.transaction.TransactionIdManager;
import com.caliverse.admin.history.domain.DynamodbDataInitializeHistory;
import com.caliverse.admin.history.service.DataInitializeHistoryService;
import com.caliverse.admin.history.service.MysqlHistoryLogService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.mongodb.UncategorizedMongoDbException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
@RequiredArgsConstructor
public class DataService {
private final DynamodbDataService dynamodbDataService;
private final MysqlHistoryLogService mysqlHistoryLogService;
private final LandMapper landMapper;
private final DataMapper dataMapper;
private final DataInitializeHistoryService dataInitializeHistoryService;
private final TransactionIdManager transactionIdManager;
public DataResponse initHistoryList(LogGenericRequest logGenericRequest){
LocalDateTime startDt = logGenericRequest.getStartDt().plusHours(9);
LocalDateTime endDt = logGenericRequest.getEndDt().plusHours(9).plusDays(1);
logGenericRequest.setStartDt(startDt);
logGenericRequest.setEndDt(endDt);
List<DynamodbDataInitializeHistory> logList = new ArrayList<>();
try{
logList = dataInitializeHistoryService.loadHistoryData(logGenericRequest, DynamodbDataInitializeHistory.class);
}catch(UncategorizedMongoDbException e){
if (e.getMessage().contains("Sort exceeded memory limit")) {
log.error("MongoDB Query memory limit error: {}", e.getMessage());
return DataResponse.builder()
.status(CommonCode.ERROR.getHttpStatus())
.result(ErrorCode.ERROR_LOG_MEMORY_LIMIT.toString())
.build();
} else {
log.error("MongoDB Query error", e);
return DataResponse.builder()
.status(CommonCode.ERROR.getHttpStatus())
.result(ErrorCode.ERROR_MONGODB_QUERY.toString())
.build();
}
}catch (Exception e){
log.error("dataInitialize error", e);
}
return DataResponse.builder()
.resultData(DataResponse.ResultData.builder()
.dataInitList(logList)
.build())
.status(CommonCode.SUCCESS.getHttpStatus())
.result(CommonCode.SUCCESS.getResult())
.build();
}
@Transactional(transactionManager = "transactionManager")
public DataResponse initData(AuthenticateRequest authenticateRequest){
EInitDataType dataType = authenticateRequest.getInitDataType();
log.info("initData email: {}, initDataType: {}", CommonUtils.getAdmin().getEmail(), dataType);
dataMapper.postDataInit(dataType, CommonUtils.getAdmin().getId());
// switch(dataType){
// case LandAuction -> {
// int result = initLandAuction();
// if(result == 0){
// return DataResponse.builder()
// .status(CommonCode.ERROR.getHttpStatus())
// .result(ErrorCode.ERROR_DATA_INIT.toString())
// .build();
// }
// }
// case LandOwned -> {
// int result = initLandOwned();
// if(result == 0){
// return DataResponse.builder()
// .status(CommonCode.ERROR.getHttpStatus())
// .result(ErrorCode.ERROR_DATA_INIT.toString())
// .build();
// }
// }
// }
//
// dynamodbDataService.InitDataLandOwned();
return DataResponse.builder()
.status(CommonCode.SUCCESS.getHttpStatus())
.result(CommonCode.SUCCESS.getResult())
.resultData(DataResponse.ResultData.builder()
.message(SuccessCode.SAVE.getMessage())
.build())
.build();
}
@Transactional(transactionManager = "transactionManager")
public void initLandAuction(LandAuction landAuction){
try {
long auctionId = landAuction.getId();
int result = landMapper.initLandAuction(auctionId);
List<Message> message = landMapper.getMessage(auctionId);
Map map = new HashMap();
map.put("id", landAuction.getId());
landMapper.deleteMessage(map);
mysqlHistoryLogService.deleteHistoryLog(
HISTORYTYPE.LAND_AUCTION_INITIALIZE,
MysqlConstants.TABLE_NAME_LAND_AUCTION,
HISTORYTYPE.LAND_AUCTION_INITIALIZE.name(),
landAuction,
CommonUtils.getAdmin() == null ? "" : CommonUtils.getAdmin().getEmail(),
CommonUtils.getClientIp() == null ? "" : CommonUtils.getClientIp()
);
if (!message.isEmpty()) {
mysqlHistoryLogService.deleteHistoryLog(
HISTORYTYPE.LAND_AUCTION_INITIALIZE,
MysqlConstants.TABLE_NAME_MESSAGE,
HISTORYTYPE.LAND_AUCTION_INITIALIZE.name(),
message,
CommonUtils.getAdmin() == null ? "" : CommonUtils.getAdmin().getEmail(),
CommonUtils.getClientIp() == null ? "" : CommonUtils.getClientIp()
);
}
dataInitializeHistoryService.mysqlDataInitHistory(
EInitDataType.LandAuction,
MysqlConstants.TABLE_NAME_LAND_AUCTION,
transactionIdManager.getCurrentTransactionId(),
true,
"",
landAuction
);
}catch(Exception e){
log.error("InitLandAuction Delete Error: {}", e.getMessage());
dataInitializeHistoryService.mysqlDataInitHistory(
EInitDataType.LandAuction,
MysqlConstants.TABLE_NAME_LAND_AUCTION,
transactionIdManager.getCurrentTransactionId(),
false,
e.getMessage(),
landAuction
);
}
}
public void initLandOwned(LandOwnerChange landOwnerChange){
try {
long id = landOwnerChange.getId();
landMapper.initLandOwnedChanges(id);
mysqlHistoryLogService.deleteHistoryLog(
HISTORYTYPE.LAND_OWNED_INITIALIZE,
MysqlConstants.TABLE_NAME_LAND_OWNER_CHANGE,
HISTORYTYPE.LAND_OWNED_INITIALIZE.name(),
landOwnerChange,
CommonUtils.getAdmin() == null ? "" : CommonUtils.getAdmin().getEmail(),
CommonUtils.getClientIp() == null ? "" : CommonUtils.getClientIp()
);
dataInitializeHistoryService.mysqlDataInitHistory(
EInitDataType.LandOwned,
MysqlConstants.TABLE_NAME_LAND_OWNER_CHANGE,
transactionIdManager.getCurrentTransactionId(),
true,
"",
landOwnerChange
);
}catch(Exception e){
log.error("initLandOwned Delete Error: {}", e.getMessage());
dataInitializeHistoryService.mysqlDataInitHistory(
EInitDataType.LandOwned,
MysqlConstants.TABLE_NAME_LAND_OWNER_CHANGE,
transactionIdManager.getCurrentTransactionId(),
false,
e.getMessage(),
landOwnerChange
);
}
}
public List<DataInit> getScheduleDataInitList(){
return dataMapper.getDataInit();
}
public void updateStatus(long id, DataInit.DATA_INIT_STATUS status){
dataMapper.updateStatus(id, status.toString());
}
}

View File

@@ -96,7 +96,7 @@ public class DynamoDBService {
Map<String, Object> resMap = new HashMap<>(); Map<String, Object> resMap = new HashMap<>();
Map<String, AttributeValue> key = new HashMap<>(); Map<String, AttributeValue> key = new HashMap<>();
key.put("PK", AttributeValue.builder().s("user_nickname_registry#global").build()); key.put("PK", AttributeValue.builder().s("user_nickname_registry#global").build());
key.put("SK", AttributeValue.builder().s(primaryKey).build()); key.put("SK", AttributeValue.builder().s(primaryKey.toLowerCase(Locale.ENGLISH)).build());
// GetItem 요청을 만듭니다. // GetItem 요청을 만듭니다.
GetItemRequest getItemRequest = GetItemRequest.builder() GetItemRequest getItemRequest = GetItemRequest.builder()
.tableName(metaTable) .tableName(metaTable)
@@ -1664,122 +1664,6 @@ public class DynamoDBService {
return resTatto; return resTatto;
} }
public String insertSystemMail(int id, ArrayNode titleList, ArrayNode textList, ArrayNode senderList, LocalDateTime start_dt, LocalDateTime end_dt, ArrayNode itemList) {
try {
// Attrib에 저장할 JSON 생성
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode infoNode = objectMapper.createObjectNode();
infoNode.put("attrib_type", DynamoDBConstants.ATTRIB_SYSTEMMAIL);
infoNode.put("mail_id", id);
infoNode.set("sender_nickname", senderList);
infoNode.set("title", titleList);
infoNode.set("text", textList);
infoNode.put("start_time", CommonUtils.convertUTCDate(start_dt));
infoNode.put("end_time", CommonUtils.convertUTCDate(end_dt));
infoNode.set("item_list", itemList);
String infoJson = infoNode.toString();
log.info("insertSystemMail SystemMetaMailAttrib: {}", infoJson);
// 추가 데이터
Map<String, AttributeValue> itemValues = new HashMap<>();
itemValues.put("PK", AttributeValue.builder().s(DynamoDBConstants.PK_KEY_SYSTEM_MAIL).build());
itemValues.put("SK", AttributeValue.builder().s(String.valueOf(id)).build());
itemValues.put("CreatedDateTime", AttributeValue.builder().s(CommonUtils.convertUTCDate(LocalDateTime.now())).build());
itemValues.put("DeletedDateTime", AttributeValue.builder().s(DynamoDBConstants.MIN_DATE).build());
itemValues.put("DocType", AttributeValue.builder().s(DynamoDBConstants.DOC_SYSTEMMAIL).build());
itemValues.put("SystemMetaMailAttrib", AttributeValue.builder().s(infoJson).build());
itemValues.put("RestoredDateTime", AttributeValue.builder().s(DynamoDBConstants.MIN_DATE).build());
itemValues.put("UpdatedDateTime", AttributeValue.builder().s(CommonUtils.convertUTCDate(LocalDateTime.now())).build());
PutItemRequest putRequest = PutItemRequest.builder()
.tableName(metaTable)
.item(itemValues)
.build();
dynamoDbClient.putItem(putRequest);
return itemValues.toString();
} catch (Exception e) {
log.error("insertSystemMail: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
}
public String deleteSystemMail(String id) {
Map<String, AttributeValue> itemAttributes = new HashMap<>();
itemAttributes.put("PK", AttributeValue.builder().s(DynamoDBConstants.PK_KEY_SYSTEM_MAIL).build());
itemAttributes.put("SK", AttributeValue.builder().s(id).build());
try {
Map<String, AttributeValue> item = getItem(DynamoDBConstants.PK_KEY_SYSTEM_MAIL, id);
DeleteItemRequest request = DeleteItemRequest.builder()
.tableName(metaTable)
.key(itemAttributes)
.build();
DeleteItemResponse response = dynamoDbClient.deleteItem(request);
if(response.sdkHttpResponse().isSuccessful())
return item.toString();
return "";
}catch (ConditionalCheckFailedException e) {
log.error("deleteSystemMail Conditional check failed: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}catch(Exception e){
log.error("deleteSystemMail: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
}
public String updateSystemMail(String id, ArrayNode titleList, ArrayNode textList, LocalDateTime start_dt, LocalDateTime end_dt, ArrayNode itemList) {
try{
Map<String, AttributeValue> item = getItem(DynamoDBConstants.PK_KEY_SYSTEM_MAIL, id);
String InfoJson = item.get("SystemMetaMailAttrib").s();
ObjectMapper objectMapper = new ObjectMapper();
JsonNode infoNode = objectMapper.readTree(InfoJson);
((ObjectNode) infoNode).set("title", titleList);
((ObjectNode) infoNode).set("text", textList);
((ObjectNode) infoNode).put("start_time", CommonUtils.convertUTCDate(start_dt));
((ObjectNode) infoNode).put("end_time", CommonUtils.convertUTCDate(end_dt));
((ObjectNode) infoNode).set("item_list", itemList);
String updatedInfoJson = infoNode.toString();
Map<String, AttributeValue> expressionAttributeValues = new HashMap<>();
expressionAttributeValues.put(":newAttrib", AttributeValue.builder().s(updatedInfoJson).build());
String updateExpression = "SET SystemMetaMailAttrib = :newAttrib";
UpdateItemRequest updateRequest = UpdateItemRequest.builder()
.tableName(metaTable)
.key(Map.of(
"PK", AttributeValue.builder().s(DynamoDBConstants.PK_KEY_SYSTEM_MAIL).build(),
"SK", AttributeValue.builder().s(id).build()))
.updateExpression(updateExpression)
.expressionAttributeValues(expressionAttributeValues)
.returnValues(ReturnValue.ALL_NEW) // 업데이트 후의 값을 반환하려면 지정
.build();
dynamoDbClient.updateItem(updateRequest);
JSONObject jsonObject = new JSONObject();
jsonObject.put("data(before)", InfoJson);
jsonObject.put("data(after)", updatedInfoJson);
return jsonObject.toString();
}catch(Exception e){
log.error("updateSystemMail: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage() );
}
}
// 친구 목록 // 친구 목록
public List<UsersResponse.Friend> getFriendList(String guid){ public List<UsersResponse.Friend> getFriendList(String guid){
List<UsersResponse.Friend> resList = new ArrayList<>(); List<UsersResponse.Friend> resList = new ArrayList<>();
@@ -1885,454 +1769,4 @@ public class DynamoDBService {
} }
return myhome; return myhome;
} }
// 칼리움 수량
public float getCaliumTotal(){
try {
float total = 0;
Map<String, AttributeValue> response = getItem(DynamoDBConstants.PK_KEY_CALIUM, "empty");
AttributeValue attributeValue = response.get(DynamoDBConstants.ATTRIB_CALIUM);
if (attributeValue != null) {
Map<String, AttributeValue> attrib = attributeValue.m();
Map<String, AttributeValue> storageMap = attrib.get("calium_operator_storage").m();
total = Float.parseFloat(storageMap.get("operator_total_calium").n());
}
log.info("getCaliumTotal calium total: {}", total);
return total;
}catch (Exception e){
log.error("getCaliumTotal: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
}
public String updateCaliumTotal(float caliumCnt) {
try{
Map<String, AttributeValue> item = getItem(DynamoDBConstants.PK_KEY_CALIUM, "empty");
String InfoJson = item.get(DynamoDBConstants.ATTRIB_CALIUM).m().toString();
float currentTotal = Float.parseFloat(item.get(DynamoDBConstants.ATTRIB_CALIUM).m().get("calium_operator_storage").m().get("operator_total_calium").n());
float sumTotal = currentTotal + caliumCnt;
log.info("updateCaliumTotal currentTotal: {}, newCaliumCnt: {}", currentTotal, caliumCnt);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSS");
String nowDateTime = LocalDateTime.now().format(formatter);
try {
String updateExpression = "SET " + DynamoDBConstants.ATTRIB_CALIUM + ".calium_operator_storage.operator_total_calium = :newCalium, "
+ DynamoDBConstants.ATTRIB_CALIUM + ".calium_operator_storage.operator_calium_fill_up_date = :newDate, "
+ "UpdatedDateTime = :newDate";
log.info("updateCaliumTotal update Query: {}", updateExpression);
Map<String, AttributeValue> expressionAttributeValues = new HashMap<>();
expressionAttributeValues.put(":newCalium",
AttributeValue.builder().n(String.valueOf(sumTotal)).build());
expressionAttributeValues.put(":newDate",
AttributeValue.builder().s(nowDateTime).build());
UpdateItemRequest updateRequest = UpdateItemRequest.builder()
.tableName(metaTable)
.key(Map.of(
"PK", AttributeValue.builder().s(DynamoDBConstants.PK_KEY_CALIUM).build(),
"SK", AttributeValue.builder().s("empty").build()))
.updateExpression(updateExpression)
.expressionAttributeValues(expressionAttributeValues)
.returnValues(ReturnValue.ALL_NEW) // 업데이트 후의 값을 반환하려면 지정
.build();
UpdateItemResponse updateResponse = dynamoDbClient.updateItem(updateRequest);
JSONObject jsonObject = new JSONObject();
jsonObject.put("data(before)", InfoJson);
jsonObject.put("data(after)", updateResponse.attributes().get(DynamoDBConstants.ATTRIB_CALIUM).m().toString());
return jsonObject.toString();
}catch(Exception e){
log.error("updateCaliumTotal Error occurred during update. Rolling back to original value: {}", e.getMessage());
String updateExpression = "SET " + DynamoDBConstants.ATTRIB_CALIUM + ".calium_operator_storage.operator_total_calium = :oldAttrib";
Map<String, AttributeValue> expressionAttributeValues = new HashMap<>();
expressionAttributeValues.put(":oldAttrib",
AttributeValue.builder().n(String.valueOf(currentTotal)).build()); // 여기서 20은 새로운 값입니다
UpdateItemRequest updateRequest = UpdateItemRequest.builder()
.tableName(metaTable)
.key(Map.of(
"PK", AttributeValue.builder().s(DynamoDBConstants.PK_KEY_CALIUM).build(),
"SK", AttributeValue.builder().s("empty").build()))
.updateExpression(updateExpression)
.expressionAttributeValues(expressionAttributeValues)
.returnValues(ReturnValue.ALL_NEW) // 업데이트 후의 값을 반환하려면 지정
.build();
try{
UpdateItemResponse updateResponse = dynamoDbClient.updateItem(updateRequest);
}catch(Exception rollbackError){
log.error("updateCaliumTotal Failed to rollback: {}", rollbackError.getMessage());
throw rollbackError;
}
throw e;
}
}catch(Exception e){
log.error("updateCaliumTotal: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage() );
}
}
// public String insertLandAuction(LandRequest landRequest) {
// try {
// LocalDateTime nowDate = LocalDateTime.now();
//
// // LandAuctionRegistryAttrib 객체 생성
// LandAuctionRegistryAttrib attrib = new LandAuctionRegistryAttrib();
// attrib.setLandMetaId(landRequest.getLandId());
// attrib.setAuctionNumber(landRequest.getAuctionSeq());
// attrib.setAuctionReservationNoticeStartTime(CommonUtils.convertUTCDate(landRequest.getResvStartDt()));
// attrib.setBidCurrencyType(landRequest.getCurrencyType());
// attrib.setAuctionStartTime(CommonUtils.convertUTCDate(landRequest.getAuctionStartDt()));
// attrib.setAuctionEndTime(CommonUtils.convertUTCDate(landRequest.getAuctionEndDt()));
// attrib.setBidStartPrice(landRequest.getStartPrice());
// attrib.setIsCancelAuction(CommonConstants.FALSE);
// attrib.setAuctionState(CommonConstants.NONE);
// attrib.setAuctionResult(CommonConstants.NONE);
// attrib.setRegisteredVersionTime(CommonUtils.convertUTCDate(nowDate));
// attrib.setProcessVersionTime(DynamoDBConstants.MIN_DATE);
//
// // LandAuctionRegistry 객체 생성
// LandAuctionRegistryDoc registry = new LandAuctionRegistryDoc();
// registry.setPK(DynamoDBConstants.PK_KEY_LANDAUCTION);
// registry.setSK(String.format("%s#%s", landRequest.getLandId(), landRequest.getAuctionSeq()));
// registry.setDocType(DynamoDBConstants.DOC_LANDAUCTION);
// registry.setAttribValue(attrib);
// registry.setCreatedDateTime(CommonUtils.convertUTCDate(nowDate));
// registry.setUpdatedDateTime(CommonUtils.convertUTCDate(nowDate));
// registry.setDeletedDateTime(DynamoDBConstants.MIN_DATE);
// registry.setRestoredDateTime(DynamoDBConstants.MIN_DATE);
//
// TableSchema<LandAuctionRegistryDoc> schema = TableSchema.fromBean(LandAuctionRegistryDoc.class);
//
// DynamoDbTable<LandAuctionRegistryDoc> table = enhancedClient.table(metaTable, schema);
//
// table.putItem(registry);
//
// return registry.toString();
//
// } catch (DynamoDbException e) {
// log.error("insertLandAuction Failed to insert new item: {}", e.getMessage());
// throw new RestApiException(CommonCode.ERROR.getHttpStatus(),
// ErrorCode.DYNAMODB_INSERT_ERROR.getMessage());
// } catch (Exception e) {
// log.error("insertLandAuction Error: {}", e.getMessage());
// throw new RestApiException(CommonCode.ERROR.getHttpStatus(),
// ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
// }
// }
@DynamoDBTransaction
public JSONObject insertLandAuctionRegistryWithActivity(LandRequest landRequest) {
String registry_result = insertLandAuction(landRequest);
String activity_result = upsertLandAuctionActive(landRequest);
JSONObject jsonObject = new JSONObject();
jsonObject.put("land_auction_registry_result", registry_result);
jsonObject.put("land_auction_active_result", activity_result);
return jsonObject;
}
public String insertLandAuction(LandRequest landRequest) {
LocalDateTime nowDate = LocalDateTime.now();
// LandAuctionRegistryAttrib 객체 생성
LandAuctionRegistryAttrib attrib = new LandAuctionRegistryAttrib();
attrib.setLandMetaId(landRequest.getLandId());
attrib.setAuctionNumber(landRequest.getAuctionSeq());
attrib.setAuctionReservationNoticeStartTime(CommonUtils.convertUTCDate(landRequest.getResvStartDt()));
attrib.setBidCurrencyType(landRequest.getCurrencyType());
attrib.setAuctionStartTime(CommonUtils.convertUTCDate(landRequest.getAuctionStartDt()));
attrib.setAuctionEndTime(CommonUtils.convertUTCDate(landRequest.getAuctionEndDt()));
attrib.setBidStartPrice(landRequest.getStartPrice());
attrib.setIsCancelAuction(CommonConstants.FALSE);
attrib.setAuctionState(CommonConstants.NONE);
attrib.setAuctionResult(CommonConstants.NONE);
attrib.setRegisteredVersionTime(CommonUtils.convertUTCDate(nowDate));
attrib.setProcessVersionTime(DynamoDBConstants.MIN_DATE);
// LandAuctionRegistry 객체 생성
LandAuctionRegistryDoc registry = new LandAuctionRegistryDoc();
registry.setPK(DynamoDBConstants.PK_KEY_LAND_AUCTION);
registry.setSK(String.format("%s#%s", landRequest.getLandId(), landRequest.getAuctionSeq()));
registry.setDocType(DynamoDBConstants.DOC_LANDAUCTION);
registry.setAttribValue(attrib);
registry.setCreatedDateTime(CommonUtils.convertUTCDate(nowDate));
registry.setUpdatedDateTime(CommonUtils.convertUTCDate(nowDate));
registry.setDeletedDateTime(DynamoDBConstants.MIN_DATE);
registry.setRestoredDateTime(DynamoDBConstants.MIN_DATE);
DynamoDBOperations.addPutItem(registry, LandAuctionRegistryDoc.class);
return registry.toString();
}
public String updateLandAuction(LandRequest landRequest) {
try {
TableSchema<LandAuctionRegistryDoc> schema = TableSchema.fromBean(LandAuctionRegistryDoc.class);
DynamoDbTable<LandAuctionRegistryDoc> table = enhancedClient.table(metaTable, schema);
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_LAND_AUCTION)
.sortValue(String.format("%s#%s", landRequest.getLandId(), landRequest.getAuctionSeq()))
.build();
LandAuctionRegistryDoc existingRegistry = table.getItem(key);
if (existingRegistry == null) {
throw new RestApiException(CommonCode.ERROR.getHttpStatus(),
ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
LandAuctionRegistryAttrib before = existingRegistry.getAttribValue();
// JSON을 객체로 변환하여 업데이트
LandAuctionRegistryAttrib attrib = before;
attrib.setAuctionReservationNoticeStartTime(CommonUtils.convertUTCDate(landRequest.getResvStartDt()));
attrib.setAuctionStartTime(CommonUtils.convertUTCDate(landRequest.getAuctionStartDt()));
attrib.setAuctionEndTime(CommonUtils.convertUTCDate(landRequest.getAuctionEndDt()));
attrib.setBidStartPrice(landRequest.getStartPrice());
attrib.setRegisteredVersionTime(CommonUtils.convertUTCDate(LocalDateTime.now()));
// Registry 업데이트
existingRegistry.setAttribValue(attrib);
existingRegistry.setUpdatedDateTime(CommonUtils.convertUTCDate(LocalDateTime.now()));
table.updateItem(existingRegistry);
JSONObject response = new JSONObject();
response.put("data(before)", mapper.writeValueAsString(before));
response.put("data(after)", mapper.writeValueAsString(attrib));
return response.toString();
} catch (DynamoDbException e) {
log.error("updateLandAuction Failed to update existing item: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(),
ErrorCode.DYNAMODB_UPDATE_ERROR.getMessage());
} catch (Exception e) {
log.error("updateLandAuction Error: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(),
ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
}
public String cancelLandAuction(LandAuction auctionInfo) {
try {
TableSchema<LandAuctionRegistryDoc> schema = TableSchema.fromBean(LandAuctionRegistryDoc.class);
DynamoDbTable<LandAuctionRegistryDoc> table = enhancedClient.table(metaTable, schema);
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_LAND_AUCTION)
.sortValue(String.format("%s#%s", auctionInfo.getLandId(), auctionInfo.getAuctionSeq()))
.build();
LandAuctionRegistryDoc existingRegistry = table.getItem(key);
if (existingRegistry == null) {
throw new RestApiException(CommonCode.ERROR.getHttpStatus(),
ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
LandAuctionRegistryAttrib before = existingRegistry.getAttribValue();
// JSON을 객체로 변환하여 업데이트
LandAuctionRegistryAttrib attrib = before;
attrib.setIsCancelAuction(CommonConstants.TRUE);
attrib.setAuctionResult(ELandAuctionResult.CANCELED.getName());
attrib.setRegisteredVersionTime(CommonUtils.convertUTCDate(LocalDateTime.now()));
// Registry 업데이트
existingRegistry.setAttribValue(attrib);
existingRegistry.setUpdatedDateTime(CommonUtils.convertUTCDate(LocalDateTime.now()));
table.updateItem(existingRegistry);
JSONObject response = new JSONObject();
response.put("data(before)", mapper.writeValueAsString(before));
response.put("data(after)", mapper.writeValueAsString(attrib));
return response.toString();
} catch (DynamoDbException e) {
log.error("cancelLandAuction Failed to update existing item: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(),
ErrorCode.DYNAMODB_UPDATE_ERROR.getMessage());
} catch (Exception e) {
log.error("cancelLandAuction Error: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(),
ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
}
public String upsertLandAuctionActive(LandRequest landRequest){
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_LAND_AUCTION_ACTIVE)
.sortValue(landRequest.getLandId().toString())
.build();
LandAuctionActivityDoc item = DynamoDBOperations.getItem(key, LandAuctionActivityDoc.class);
String resultJson;
if (item == null) {
resultJson = insertLandAuctionActive(landRequest);
}else{
resultJson = updateLandAuctionActive(landRequest, item);
}
return resultJson;
}
public String insertLandAuctionActive(LandRequest landRequest){
LocalDateTime nowDate = LocalDateTime.now();
LandAuctionActivityAttrib attrib = new LandAuctionActivityAttrib();
attrib.setLandMetaId(landRequest.getLandId());
attrib.setAuctionNumber(landRequest.getAuctionSeq());
LandAuctionActivityDoc activityDoc = new LandAuctionActivityDoc();
activityDoc.setPK(DynamoDBConstants.PK_KEY_LAND_AUCTION_ACTIVE);
activityDoc.setSK(landRequest.getLandId().toString());
activityDoc.setDocType(DynamoDBConstants.DOC_LANDAUCTION_ACTIVE);
activityDoc.setAttribValue(attrib);
activityDoc.setCreatedDateTime(CommonUtils.convertUTCDate(nowDate));
activityDoc.setUpdatedDateTime(CommonUtils.convertUTCDate(nowDate));
DynamoDBOperations.addPutItem(activityDoc, LandAuctionActivityDoc.class);
try {
return mapper.writeValueAsString(activityDoc.getAttribValue());
}catch(JsonProcessingException e){
log.error("insertLandAuctionActive JsonProcessingException: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_JSON_PARSE_ERROR.getMessage());
}
}
public String updateLandAuctionActive(LandRequest landRequest, LandAuctionActivityDoc existingDoc){
LandAuctionActivityAttrib attrib = existingDoc.getAttribValue();
attrib.setAuctionNumber(landRequest.getAuctionSeq());
existingDoc.setAttribValue(attrib);
existingDoc.setUpdatedDateTime(CommonUtils.convertUTCDate(LocalDateTime.now()));
DynamoDBOperations.addUpdateItem(existingDoc, LandAuctionActivityDoc.class);
try {
return mapper.writeValueAsString(existingDoc.getAttribValue());
}catch(JsonProcessingException e){
log.error("updateLandAuctionActive JsonProcessingException: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_JSON_PARSE_ERROR.getMessage());
}
}
// public String insertLandAuctionActive(LandRequest landRequest) {
// try {
// TableSchema<LandAuctionActivityDoc> schema = TableSchema.fromBean(LandAuctionActivityDoc.class);
//
// DynamoDbTable<LandAuctionActivityDoc> table = enhancedClient.table(metaTable, schema);
// LocalDateTime nowDate = LocalDateTime.now();
//
// Key key = Key.builder()
// .partitionValue(DynamoDBConstants.PK_KEY_LANDAUCTION_ACTIVE)
// .sortValue(landRequest.getLandId().toString())
// .build();
//
// LandAuctionActivityDoc activity = table.getItem(key);
// String resultJson;
//
// if (activity == null) {
// // 새로운 데이터 생성
// LandAuctionActivityAttrib attrib = new LandAuctionActivityAttrib();
// attrib.setLandMetaId(landRequest.getLandId());
// attrib.setAuctionNumber(landRequest.getAuctionSeq());
//
// activity = new LandAuctionActivityDoc();
// activity.setPK(DynamoDBConstants.PK_KEY_LANDAUCTION_ACTIVE);
// activity.setSK(landRequest.getLandId().toString());
// activity.setDocType(DynamoDBConstants.DOC_LANDAUCTION_ACTIVE);
// activity.setAttribValue(attrib);
// activity.setCreatedDateTime(CommonUtils.convertUTCDate(nowDate));
// activity.setUpdatedDateTime(CommonUtils.convertUTCDate(nowDate));
//// activity.setDeletedDateTime(DynamoDBConstants.MIN_DATE);
//// activity.setRestoredDateTime(DynamoDBConstants.MIN_DATE);
//
// table.putItem(activity);
// resultJson = mapper.writeValueAsString(attrib);
//
// } else {
// // 기존 데이터 업데이트
// LandAuctionActivityAttrib attrib = activity.getAttribValue();
// attrib.setAuctionNumber(landRequest.getAuctionSeq());
//
// activity.setAttribValue(attrib);
// activity.setUpdatedDateTime(CommonUtils.convertUTCDate(nowDate));
//
// table.updateItem(activity);
// resultJson = mapper.writeValueAsString(attrib);
// }
//
// return resultJson;
//
// } catch (DynamoDbException e) {
// log.error("insertLandAuctionActive DB operation failed: {}", e.getMessage());
// throw new RestApiException(CommonCode.ERROR.getHttpStatus(),
// ErrorCode.DYNAMODB_INSERT_ERROR.getMessage());
// } catch (Exception e) {
// log.error("insertLandAuctionActive Fail: {}", e.getMessage());
// throw new RestApiException(CommonCode.ERROR.getHttpStatus(),
// ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
// }
// }
public LandAuctionRegistryAttrib getLandAuctionRegistry(Integer land_id, Integer auction_seq){
try {
DynamoDbTable<LandAuctionRegistryDoc> table = enhancedClient.table(metaTable,
TableSchema.fromBean(LandAuctionRegistryDoc.class));
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_LAND_AUCTION)
.sortValue(String.format("%s#%s", land_id, auction_seq))
.build();
LandAuctionRegistryDoc registry = table.getItem(key);
if (registry == null) {
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
return registry.getAttribValue();
}catch (Exception e){
log.error("getLandAuctionRegistry: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
}
public LandAuctionHighestBidUserAttrib getLandAuctionHighestUser(Integer land_id, Integer auction_seq){
try {
DynamoDbTable<LandAuctionHighestBidUserDoc> table = enhancedClient.table(metaTable,
TableSchema.fromBean(LandAuctionHighestBidUserDoc.class));
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_LAND_AUCTION_HIGHEST_USER)
.sortValue(String.format("%s#%s", land_id, auction_seq))
.build();
LandAuctionHighestBidUserDoc highestBidUser = table.getItem(key);
if (highestBidUser == null) {
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
return highestBidUser.getAttribValue();
}catch (Exception e){
log.error("getLandAuctionHighestUser: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
}
} }

View File

@@ -358,23 +358,6 @@ public class EventService {
.build(); .build();
} }
public void insertSystemMail(Event event, ArrayNode mailTitleArray, ArrayNode mailTextArray, ArrayNode mailSenderArray, ArrayNode mailItemArray){
String dynamoResult = dynamoDBService.insertSystemMail(
event.getId().intValue(),
mailTitleArray,
mailTextArray,
mailSenderArray,
event.getStartDt(),
event.getEndDt(),
mailItemArray
);
eventMapper.updateAddFlag(event.getId());
historyService.setScheduleLog(HISTORYTYPE.EVENT_ADD, dynamoResult);
log.info("insertSystemMail Save Complete: {}", dynamoResult);
}
@Transactional(transactionManager = "transactionManager") @Transactional(transactionManager = "transactionManager")
public void insertSystemMail(Event event){ public void insertSystemMail(Event event){
try { try {

View File

@@ -62,7 +62,7 @@ public class ItemsService {
var itemCount = itemDeleteRequest.getItemCount(); var itemCount = itemDeleteRequest.getItemCount();
//UserKick //UserKick
userGameSessionService.kickUserSession(userGuid); userGameSessionService.kickUserSession(userGuid, "item delete");
//ItemDelete //ItemDelete
dynamoDBQueryServiceBase.deleteUserItem(userGuid, itemGuid); dynamoDBQueryServiceBase.deleteUserItem(userGuid, itemGuid);

View File

@@ -3,20 +3,28 @@ package com.caliverse.admin.domain.service;
import com.caliverse.admin.domain.dao.admin.LandMapper; import com.caliverse.admin.domain.dao.admin.LandMapper;
import com.caliverse.admin.domain.datacomponent.MetaDataHandler; import com.caliverse.admin.domain.datacomponent.MetaDataHandler;
import com.caliverse.admin.domain.entity.*; import com.caliverse.admin.domain.entity.*;
import com.caliverse.admin.dynamodb.domain.atrrib.LandAttrib;
import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionHighestBidUserAttrib; import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionHighestBidUserAttrib;
import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionRegistryAttrib; import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionRegistryAttrib;
import com.caliverse.admin.domain.entity.metadata.MetaBuildingData; import com.caliverse.admin.domain.entity.metadata.MetaBuildingData;
import com.caliverse.admin.domain.entity.metadata.MetaLandData; import com.caliverse.admin.domain.entity.metadata.MetaLandData;
import com.caliverse.admin.domain.request.LandRequest; import com.caliverse.admin.domain.request.LandRequest;
import com.caliverse.admin.domain.response.LandResponse; import com.caliverse.admin.domain.response.LandResponse;
import com.caliverse.admin.dynamodb.entity.ELandAuctionResult;
import com.caliverse.admin.dynamodb.entity.ELandAuctionState;
import com.caliverse.admin.dynamodb.service.DynamodbLandAuctionService; import com.caliverse.admin.dynamodb.service.DynamodbLandAuctionService;
import com.caliverse.admin.dynamodb.service.DynamodbLandService; import com.caliverse.admin.dynamodb.service.DynamodbLandService;
import com.caliverse.admin.dynamodb.service.DynamodbService;
import com.caliverse.admin.dynamodb.service.DynamodbUserService;
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;
import com.caliverse.admin.global.common.constants.CommonConstants;
import com.caliverse.admin.global.common.constants.MysqlConstants; import com.caliverse.admin.global.common.constants.MysqlConstants;
import com.caliverse.admin.global.common.utils.CommonUtils; import com.caliverse.admin.global.common.utils.CommonUtils;
import com.caliverse.admin.global.common.utils.DateUtils;
import com.caliverse.admin.history.service.MysqlHistoryLogService; import com.caliverse.admin.history.service.MysqlHistoryLogService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -26,11 +34,13 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import static com.caliverse.admin.global.common.utils.CommonUtils.convertIsoByDatetime;
import static com.caliverse.admin.global.common.utils.DateUtils.stringToDateTime;
import static com.caliverse.admin.global.common.utils.DateUtils.stringISOToLocalDateTime;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j @Slf4j
@@ -39,14 +49,216 @@ public class LandService {
// private final DynamoDBService dynamoDBService; // private final DynamoDBService dynamoDBService;
private final DynamodbLandAuctionService dynamodbLandAuctionService; private final DynamodbLandAuctionService dynamodbLandAuctionService;
private final DynamodbLandService dynamodbLandService; private final DynamodbLandService dynamodbLandService;
private final DynamodbUserService dynamodbUserService;
private final LandMapper landMapper; private final LandMapper landMapper;
private final MetaDataHandler metaDataHandler; private final MetaDataHandler metaDataHandler;
private final HistoryService historyService; private final HistoryService historyService;
private final ObjectMapper objectMapper; private final ObjectMapper objectMapper;
private final MysqlHistoryLogService mysqlHistoryLogService; private final MysqlHistoryLogService mysqlHistoryLogService;
private final DynamodbService dynamodbService;
// 랜드 정보 조회 public LandResponse getLandInfo(@RequestParam Map<String, String> requestParam){
String searchType = requestParam.getOrDefault("land_type", "ID");
String searchData = requestParam.getOrDefault("land_data", "");
String landSize = requestParam.getOrDefault("land_size", "ALL");
String category = requestParam.getOrDefault("category", "ALL");
String status = requestParam.getOrDefault("status", "ALL");
String startDt = requestParam.getOrDefault("start_dt", "");
String endDt = requestParam.getOrDefault("end_dt", "");
int page = Integer.parseInt(requestParam.getOrDefault("page_no", "1"));
int size = Integer.parseInt(requestParam.getOrDefault("page_size", "50"));
String orderBy = requestParam.getOrDefault("orderby", "DESC");
List<MetaLandData> landData = metaDataHandler.getMetaLandListData();
List<MetaBuildingData> buildingData = metaDataHandler.getMetaBuildingListData();
List<LandAuction> auctions = landMapper.getLandAuctionList(new HashMap());
List<LandInfo> list = landData.stream()
//필터 전처리(map 처리속도를 최대한 빠르게하기 위해서 먼저 필터 처리할수 있는건 한다)
.filter(info -> {
boolean result = true;
if (!searchData.isEmpty()) {
if (searchType.equals("ID")) {
String landIdStr = String.valueOf(info.getLandId());
result = landIdStr.contains(searchData);
} else if (searchType.equals("NAME")) {
String landName = metaDataHandler.getTextStringData(info.getLandName());
result = landName.contains(searchData);
}
}
if (!landSize.equals("ALL")) {
result = info.getLandSize().contains(landSize);
}
return result;
})
.map(data -> buildLandInfo(data, buildingData, auctions)).filter(Objects::nonNull)
.filter(info -> {
boolean result = true;
if (!status.equals("ALL")) {
result = info.getStatus().contains(status);
}
if (!category.equals("ALL")) {
result = info.getCategory().contains(category);
}
String createDate = info.getOwnerUserCreateDate();
if (!startDt.isEmpty() && !endDt.isEmpty()) {
if (createDate.isEmpty()) {
result = false;
} else {
LocalDateTime start_dt = stringISOToLocalDateTime(startDt);
LocalDateTime end_dt = stringISOToLocalDateTime(endDt);
LocalDateTime date = DateUtils.stringToLocalDateTime(createDate);
result = (date.isEqual(start_dt) || date.isAfter(start_dt)) &&
(date.isEqual(end_dt) || date.isBefore(end_dt));
}
}
return result;
})
.sorted(orderBy.equals("ASC") ?
Comparator.comparing(LandInfo::getLandId).reversed() :
Comparator.comparing(LandInfo::getLandId))
.toList();
// 페이징 처리
int totalItems = list.size();
int totalPages = (int) Math.ceil((double) totalItems / size);
page = (totalItems > 0 && page > totalPages) ? totalPages : page;
List<LandInfo> pagedList = (totalItems == 0) ?
new ArrayList<>() :
list.subList((page - 1) * size, Math.min((page - 1) * size + size, totalItems));
return LandResponse.builder()
.resultData(LandResponse.ResultData.builder()
.landInfoList(pagedList)
.total(pagedList.size())
.totalAll(totalItems)
.pageNo(requestParam.get("page_no") != null ?
Integer.parseInt(requestParam.get("page_no")) : 1)
.build())
.status(CommonCode.SUCCESS.getHttpStatus())
.result(CommonCode.SUCCESS.getResult())
.build();
}
private LandInfo buildLandInfo(MetaLandData data, List<MetaBuildingData> buildingData, List<LandAuction> auctions){
try {
int landId = data.getLandId();
String editor = data.getEditor();
boolean nonAction = data.isNonAuction();
String ownerGuid = "";
String ownerName = "";
String ownerDate = "";
double ownerPrice = 0;
String category = "";
String status = LandInfo.LAND_STATUS.NONE.toString();
List<LandOwnerChange> ownerChanges = new ArrayList<>();
if(editor.equals(CommonConstants.USER)){
//경매 체크
int auctionNumber = dynamodbLandAuctionService.getLandAuctionNumber(landId);
if(auctionNumber > 0){
LandAuctionRegistryAttrib auctionRegistry = dynamodbLandAuctionService.getLandAuctionRegistry(landId, auctionNumber);
String auctionState = auctionRegistry.getAuctionState();
if (auctionState.equals(ELandAuctionState.STARTED.getName())) {
status = LandInfo.LAND_STATUS.AUCTION_RUNNING.toString();
} else if (auctionState.equals(ELandAuctionState.ENDED.getName())) {
String auctionResult = auctionRegistry.getAuctionResult();
if (auctionResult.equals(ELandAuctionResult.SUCCESSED.getName())) {
LandAuctionHighestBidUserAttrib bidUser = dynamodbLandAuctionService.getLandAuctionHighestUser(landId, auctionNumber);
status = LandInfo.LAND_STATUS.AUCTION_END.toString();
if (bidUser != null) {
ownerPrice = bidUser.getHighestBidPrice();
} else {
log.warn("LandAuction land: {}, auction_number: {} Ended Result Success bidUser null", landId, auctionNumber);
}
}
} else {
status = LandInfo.LAND_STATUS.AUCTION_WAIT.toString();
}
}
//랜드 존재
LandAttrib land = dynamodbLandService.getLandInfo(landId);
if(land != null){
ownerGuid = land.getOwnerUserGuid();
//소유 체크
if(!ownerGuid.isEmpty()){
String parsedDate = dynamodbLandService.getLandOwnerCreateDate(ownerGuid, landId);
ownerDate = parsedDate.isEmpty() ? "" : convertIsoByDatetime(parsedDate);
ownerName = dynamodbUserService.getGuidByName(ownerGuid);
if(status.equals(LandInfo.LAND_STATUS.NONE.toString())){
status = LandInfo.LAND_STATUS.OWNED.toString();
}
}
}
//변경 이력
ownerChanges = landMapper.getLandOwnerChangeInfo(landId);
if(!ownerChanges.isEmpty()){
long changesCount = ownerChanges.stream().filter(changeData -> changeData.getStatus().equals(LandOwnerChange.CHANGE_STATUS.WAIT)).count();
if(changesCount > 0){
status = LandInfo.LAND_STATUS.OWNED_WAIT.toString();
}
}
}else{
ownerName = CommonConstants.CALIVERSE_NAME;
}
if(editor.equals(CommonConstants.CALIVERSE_CODE)){
category = CommonConstants.LAND_PUBLIC;
}else{
if(nonAction){
category = CommonConstants.LAND_EVENT;
}else{
category = CommonConstants.LAND_AUCTION;
}
}
boolean isOwned = editor.equals(CommonConstants.USER) && nonAction && ownerGuid.isEmpty();
MetaBuildingData buildingInfo = buildingData.stream()
.filter(building -> building.getBuildingId().equals(data.getBuildingId()))
.findFirst().get();
return LandInfo.builder()
.id((long) landId)
.landId(landId)
.landName(metaDataHandler.getTextStringData(data.getLandName()))
.landDesc(metaDataHandler.getTextStringData(data.getLandDesc()))
.buildingId(data.getBuildingId())
.buildingName(metaDataHandler.getTextStringData(buildingInfo.getBuildingName()))
.nonAuction(nonAction)
.editor(editor)
.status(status)
.isOwned(isOwned)
.category(category)
.landSize(data.getLandSize())
.landType(data.getLandType())
.socket(buildingInfo.getInstanceSocket())
.ownerUserGuid(ownerGuid)
.ownerUserNickname(ownerName)
.ownerUserCreateDate(ownerDate)
.ownerPrice(String.valueOf(ownerPrice))
.ownerChanges(ownerChanges)
.build();
}catch(Exception e){
log.error("buildLandInfo", e);
}
return null;
}
// 랜드 메타데이터 정보 조회
public LandResponse getLandList(){ public LandResponse getLandList(){
List<MetaLandData> landData = metaDataHandler.getMetaLandListData(); List<MetaLandData> landData = metaDataHandler.getMetaLandListData();
List<LandResponse.Land> landList = landData.stream() List<LandResponse.Land> landList = landData.stream()
@@ -62,7 +274,9 @@ public class LandService {
.type(data.getLandType()) .type(data.getLandType())
.buildingId(data.getBuildingId()) .buildingId(data.getBuildingId())
.build() .build()
).toList(); )
.sorted(Comparator.comparing(LandResponse.Land::getId))
.toList();
return LandResponse.builder() return LandResponse.builder()
.resultData(LandResponse.ResultData.builder() .resultData(LandResponse.ResultData.builder()
@@ -188,17 +402,17 @@ public class LandService {
map.put("id",String.valueOf(auction_id)); map.put("id",String.valueOf(auction_id));
//메시지 저장 //메시지 저장
if(landRequest.getMassageList()!= null && !landRequest.getMassageList().isEmpty()){ // if(landRequest.getMassageList()!= null && !landRequest.getMassageList().isEmpty()){
landRequest.getMassageList().forEach( // landRequest.getMassageList().forEach(
item -> { // item -> {
map.put("title",item.getTitle()); // map.put("title",item.getTitle());
map.put("content",item.getContent()); // map.put("content",item.getContent());
map.put("language",item.getLanguage()); // map.put("language",item.getLanguage());
landMapper.insertMessage(map); // landMapper.insertMessage(map);
} // }
); // );
} // }
log.info("AdminToolDB Message Save Complete"); // log.info("AdminToolDB Message Save Complete");
LandAuction auction_info = landMapper.getLandAuctionDetail(auction_id); LandAuction auction_info = landMapper.getLandAuctionDetail(auction_id);
auction_info.setMessageList(landMapper.getMessage(auction_id)); auction_info.setMessageList(landMapper.getMessage(auction_id));
@@ -214,22 +428,79 @@ public class LandService {
dynamodbLandAuctionService.insertLandAuctionRegistryWithActivity(landRequest); dynamodbLandAuctionService.insertLandAuctionRegistryWithActivity(landRequest);
//로그 기록 return LandResponse.builder()
try{ .status(CommonCode.SUCCESS.getHttpStatus())
JSONObject jsonObject = new JSONObject(); .result(CommonCode.SUCCESS.getResult())
jsonObject.put("land_id", landRequest.getLandId()); .resultData(LandResponse.ResultData.builder()
jsonObject.put("auction_seq", landRequest.getAuctionSeq()); .message(SuccessCode.SAVE.getMessage())
jsonObject.put("start_price", landRequest.getStartPrice()); .build())
jsonObject.put("recv_start_dt", landRequest.getResvStartDt()); .build();
jsonObject.put("recv_end_dt", landRequest.getResvEndDt());
jsonObject.put("auction_start_dt", landRequest.getAuctionStartDt());
jsonObject.put("auction_end_dt", landRequest.getAuctionEndDt());
jsonObject.put("message_list", map);
historyService.setLog(HISTORYTYPE.LAND_AUCTION_ADD, jsonObject);
}catch(Exception e){
log.error("history log Save Fail: {}", e.getMessage());
} }
@Transactional(transactionManager = "transactionManager")
public LandResponse postLandOwnerChanges(LandRequest landRequest){
String guid = landRequest.getUserGuid();
String nickname = dynamodbUserService.getGuidByName(guid);
int landId = landRequest.getLandId();
if(nickname.isEmpty() || !nickname.equals(landRequest.getUserName())){
return LandResponse.builder()
.status(CommonCode.ERROR.getHttpStatus())
.result(ErrorCode.GUID_CHECK.toString())
.build();
}
int chk = landMapper.getPossibleLandOwnerChanges(landId);
if(chk > 0){
return LandResponse.builder()
.status(CommonCode.ERROR.getHttpStatus())
.result(ErrorCode.ERROR_LAND_OWNER_CHANGES_DUPLICATION.toString())
.build();
}
LandAttrib landInfo = dynamodbLandService.getLandInfo(landId);
if(landInfo != null && !landInfo.getOwnerUserGuid().isEmpty()){
return LandResponse.builder()
.status(CommonCode.ERROR.getHttpStatus())
.result(ErrorCode.ERROR_LAND_OWNER_DUPLICATION.toString())
.build();
}
landRequest.setCreateBy(CommonUtils.getAdmin().getId());
boolean is_reserve = landRequest.isReserve();
if(!is_reserve){
landRequest.setReservationDt(LocalDateTime.now());
}
int result = landMapper.postLandOwnerChange(landRequest);
try {
log.info("AdminToolDB LandOwnerChanges Save: {}", objectMapper.writeValueAsString(landRequest));
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
long id = landRequest.getId();
HashMap<String,Object> map = new HashMap<>();
map.put("id",String.valueOf(id));
LandOwnerChange info = landMapper.getLandOwnerChangeDetail(id);
mysqlHistoryLogService.insertHistoryLog(
HISTORYTYPE.LAND_OWNER_CHANGE_ADD,
MysqlConstants.TABLE_NAME_LAND_OWNER_CHANGE,
HISTORYTYPE.LAND_OWNER_CHANGE_ADD.name(),
info,
CommonUtils.getAdmin().getEmail(),
CommonUtils.getClientIp()
);
// if(!is_reserve){
// dynamodbLandService.ChangesLandOwner(landRequest);
// map.put("status", LandOwnerChange.CHANGE_STATUS.FINISH);
// updateLandOwnedChangeStatus(map);
// dynamodbService.insertLandChangesMail(landRequest);
// }
return LandResponse.builder() return LandResponse.builder()
.status(CommonCode.SUCCESS.getHttpStatus()) .status(CommonCode.SUCCESS.getHttpStatus())
.result(CommonCode.SUCCESS.getResult()) .result(CommonCode.SUCCESS.getResult())
@@ -246,7 +517,7 @@ public class LandService {
landRequest.setUpdateDt(LocalDateTime.now()); landRequest.setUpdateDt(LocalDateTime.now());
LandAuction before_info = landMapper.getLandAuctionDetail(id); LandAuction before_info = landMapper.getLandAuctionDetail(id);
before_info.setMessageList(landMapper.getMessage(id)); // before_info.setMessageList(landMapper.getMessage(id));
if(!before_info.getStatus().equals(LandAuction.AUCTION_STATUS.WAIT) && !before_info.getStatus().equals(LandAuction.AUCTION_STATUS.RESV_START)){ if(!before_info.getStatus().equals(LandAuction.AUCTION_STATUS.WAIT) && !before_info.getStatus().equals(LandAuction.AUCTION_STATUS.RESV_START)){
return LandResponse.builder() return LandResponse.builder()
@@ -262,19 +533,19 @@ public class LandService {
map.put("id", String.valueOf(id)); map.put("id", String.valueOf(id));
// message 테이블 데이터 삭제 처리 by mail_id // message 테이블 데이터 삭제 처리 by mail_id
landMapper.deleteMessage(map); // landMapper.deleteMessage(map);
//
// 메시지 업데이트 // // 메시지 업데이트
if (landRequest.getMassageList() != null && !landRequest.getMassageList().isEmpty()) { // if (landRequest.getMassageList() != null && !landRequest.getMassageList().isEmpty()) {
landRequest.getMassageList().forEach(item -> { // landRequest.getMassageList().forEach(item -> {
map.put("title", item.getTitle()); // map.put("title", item.getTitle());
map.put("content", item.getContent()); // map.put("content", item.getContent());
map.put("language", item.getLanguage()); // map.put("language", item.getLanguage());
//
landMapper.insertMessage(map); // landMapper.insertMessage(map);
}); // });
} // }
log.info("AdminToolDB Message Update Complete"); // log.info("AdminToolDB Message Update Complete");
LandAuction after_info = landMapper.getLandAuctionDetail(id); LandAuction after_info = landMapper.getLandAuctionDetail(id);
after_info.setMessageList(landMapper.getMessage(id)); after_info.setMessageList(landMapper.getMessage(id));
@@ -291,17 +562,43 @@ public class LandService {
dynamodbLandAuctionService.updateLandAuction(landRequest); dynamodbLandAuctionService.updateLandAuction(landRequest);
//로그 기록
try{ return LandResponse.builder()
JSONObject jsonObject = new JSONObject(); .resultData(LandResponse.ResultData.builder()
jsonObject.put("before_info",before_info.toString()); .build())
jsonObject.put("after_info",after_info.toString()); .status(CommonCode.SUCCESS.getHttpStatus())
// jsonObject.put("dynamoDB_result",land_auction_registry_result); .result(CommonCode.SUCCESS.getResult())
historyService.setLog(HISTORYTYPE.LAND_AUCTION_UPDATE, jsonObject); .build();
}catch(Exception e){
log.error("history log Save Fail: {}", e.getMessage());
} }
@Transactional(transactionManager = "transactionManager")
public LandResponse updateLandOwnerChanges(Long id, LandRequest landRequest) {
landRequest.setId(id);
landRequest.setUpdateBy(CommonUtils.getAdmin().getId());
landRequest.setUpdateDt(LocalDateTime.now());
Map<String, String> map = new HashMap<>();
map.put("id", String.valueOf(id));
LandOwnerChange before_info = landMapper.getLandOwnerChangeDetail(id);
int result = landMapper.updateLandOwnerChange(landRequest);
log.info("AdminToolDB LandOwnerChanges Update Complete: {}", landRequest);
LandOwnerChange after_info = landMapper.getLandOwnerChangeDetail(id);
mysqlHistoryLogService.updateHistoryLog(
HISTORYTYPE.LAND_OWNER_CHANGE_UPDATE,
MysqlConstants.TABLE_NAME_LAND_OWNER_CHANGE,
HISTORYTYPE.LAND_OWNER_CHANGE_UPDATE.name(),
before_info,
after_info,
CommonUtils.getAdmin().getEmail(),
CommonUtils.getClientIp()
);
dynamodbLandService.ChangesLandOwner(landRequest);
return LandResponse.builder() return LandResponse.builder()
.resultData(LandResponse.ResultData.builder() .resultData(LandResponse.ResultData.builder()
.build()) .build())
@@ -370,10 +667,58 @@ public class LandService {
.build(); .build();
} }
@Transactional(transactionManager = "transactionManager")
public LandResponse deleteLandOwnerChanges(LandRequest landRequest){
Long id = landRequest.getId();
LandOwnerChange info = landMapper.getLandOwnerChangeDetail(id);
//예약상태가 아니면 취소할 수 없다
if(!info.getStatus().equals(LandOwnerChange.CHANGE_STATUS.WAIT)){
return LandResponse.builder()
.status(CommonCode.ERROR.getHttpStatus())
.result(ErrorCode.ERROR_LAND_OWNER_CHANGES_RESERVATION.toString())
.build();
}
Map<String,Object> map = new HashMap<>();
map.put("id", id);
map.put("updateBy", CommonUtils.getAdmin().getId());
int result = landMapper.deleteLandOwnerChanges(map);
log.info("LandOwnerChanges Delete Complete: {}", landRequest);
mysqlHistoryLogService.deleteHistoryLog(
HISTORYTYPE.LAND_OWNER_CHANGE_DELETE,
MysqlConstants.TABLE_NAME_LAND_OWNER_CHANGE,
HISTORYTYPE.LAND_OWNER_CHANGE_DELETE.name(),
info,
CommonUtils.getAdmin().getEmail(),
CommonUtils.getClientIp()
);
return LandResponse.builder()
.resultData(LandResponse.ResultData.builder()
.build())
.status(CommonCode.SUCCESS.getHttpStatus())
.result(CommonCode.SUCCESS.getResult())
.build();
}
public List<LandAuction> getScheduleLandAuctionList(){ public List<LandAuction> getScheduleLandAuctionList(){
return landMapper.getScheduleLandAuctionList(); return landMapper.getScheduleLandAuctionList();
} }
public List<LandOwnerChange> getScheduleLandOwnerChangesList(){
return landMapper.getScheduleLandOwnedChangeList();
}
public List<LandAuction> getAllLandAuctionList(){
return landMapper.getAllLandAuction();
}
public List<LandOwnerChange> getAllLandOwnerChangesList(){
return landMapper.getAllLandOwnedChanges();
}
public LandAuctionRegistryAttrib getLandAuctionRegistryAttrib(Integer land_id, Integer auction_seq){ public LandAuctionRegistryAttrib getLandAuctionRegistryAttrib(Integer land_id, Integer auction_seq){
return dynamodbLandAuctionService.getLandAuctionRegistry(land_id, auction_seq); return dynamodbLandAuctionService.getLandAuctionRegistry(land_id, auction_seq);
} }
@@ -391,4 +736,14 @@ public class LandService {
log.error("updateLandAuction LandAuction Update Fail map: {}", map); log.error("updateLandAuction LandAuction Update Fail map: {}", map);
} }
} }
@Transactional(transactionManager = "transactionManager")
public void updateLandOwnedChangeStatus(Map<String,Object> map){
try{
landMapper.updateStatusLandOwnedChange(map);
log.info("updateLandOwnedChangeStatus LandOwned status changed: {}", map.get("status"));
}catch(Exception e){
log.error("updateLandOwnedChangeStatus LandOwned Update Fail map: {}", map);
}
}
} }

View File

@@ -0,0 +1,91 @@
package com.caliverse.admin.domain.service;
import com.caliverse.admin.Indicators.Indicatorsservice.aggregationservice.*;
import com.caliverse.admin.Indicators.entity.*;
import com.caliverse.admin.domain.entity.Currencys;
import com.caliverse.admin.domain.entity.LandInfo;
import com.caliverse.admin.domain.entity.ROUTE;
import com.caliverse.admin.domain.request.LogGenericRequest;
import com.caliverse.admin.domain.response.IndicatorsResponse;
import com.caliverse.admin.domain.response.LandResponse;
import com.caliverse.admin.domain.response.LogResponse;
import com.caliverse.admin.global.common.code.CommonCode;
import com.caliverse.admin.global.common.code.ErrorCode;
import com.caliverse.admin.global.common.exception.RestApiException;
import com.caliverse.admin.global.common.utils.CommonUtils;
import com.caliverse.admin.global.common.utils.ExcelUtils;
import com.caliverse.admin.logs.Indicatordomain.GenericMongoLog;
import com.caliverse.admin.logs.logservice.businesslogservice.BusinessLogGenericService;
import com.caliverse.admin.logs.logservice.indicators.IndicatorsDauService;
import com.caliverse.admin.logs.logservice.indicators.IndicatorsMcuService;
import com.caliverse.admin.logs.logservice.indicators.IndicatorsNruService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mongodb.MongoCommandException;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.mongodb.UncategorizedMongoDbException;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
@Slf4j
public class LogService {
private final BusinessLogGenericService businessLogGenericService;
public LogResponse genericLogList(LogGenericRequest logGenericRequest){
int page = logGenericRequest.getPageNo();
int size = logGenericRequest.getPageSize();
LocalDateTime startDt = logGenericRequest.getStartDt().plusHours(9);
LocalDateTime endDt = logGenericRequest.getEndDt().plusHours(9).plusDays(1);
logGenericRequest.setStartDt(startDt);
logGenericRequest.setEndDt(endDt);
// List<Map<String, Object>> logList = businessLogGenericService.loadBusinessLogData(logGenericRequest);
List<GenericMongoLog> logList = new ArrayList<>();
try{
logList = businessLogGenericService.loadBusinessLogData(logGenericRequest, GenericMongoLog.class);
}catch(UncategorizedMongoDbException e){
if (e.getMessage().contains("Sort exceeded memory limit")) {
log.error("MongoDB Query memory limit error: {}", e.getMessage());
return LogResponse.builder()
.status(CommonCode.ERROR.getHttpStatus())
.result(ErrorCode.ERROR_LOG_MEMORY_LIMIT.toString())
.build();
} else {
log.error("MongoDB Query error", e);
return LogResponse.builder()
.status(CommonCode.ERROR.getHttpStatus())
.result(ErrorCode.ERROR_MONGODB_QUERY.toString())
.build();
}
}catch (Exception e){
log.error("businessLog error", e);
}
int totalItems = logList.size();
return LogResponse.builder()
.resultData(LogResponse.ResultData.builder()
.genericList(logList)
.total(totalItems)
.totalAll(totalItems)
.pageNo(logGenericRequest.getPageNo() != null ?
page : 1)
.build())
.status(CommonCode.SUCCESS.getHttpStatus())
.result(CommonCode.SUCCESS.getResult())
.build();
}
}

View File

@@ -30,10 +30,7 @@ import org.springframework.core.io.ResourceLoader;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.nio.file.Path; import java.nio.file.Path;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j @Slf4j
@Service @Service

View File

@@ -26,15 +26,20 @@ public class UserGameSessionService {
this.messageHandlerService = messageHandlerService; this.messageHandlerService = messageHandlerService;
} }
public boolean userSession(String userGuid){
var loginSession = redisUserInfoService.getUserLoginSessionInfo(userGuid);
public void kickUserSession(String userGuid){ return loginSession != null;
}
public void kickUserSession(String userGuid, String reason){
var loginSession = redisUserInfoService.getUserLoginSessionInfo(userGuid); var loginSession = redisUserInfoService.getUserLoginSessionInfo(userGuid);
//게임이 접속중 이면 kick 하고 2초 대기 //게임이 접속중 이면 kick 하고 2초 대기
if(null != loginSession ){ if(null != loginSession ){
var serverName = loginSession.getCurrentServer(); var serverName = loginSession.getCurrentServer();
messageHandlerService.sendUserKickMessage(userGuid, serverName); messageHandlerService.sendUserKickMessage(userGuid, serverName, reason);
//여기서 2초 정도 대기(게임 메모리 정리를 위해) //여기서 2초 정도 대기(게임 메모리 정리를 위해)
try{ try{

View File

@@ -4,16 +4,25 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import com.caliverse.admin.domain.entity.FriendRequest; import com.caliverse.admin.domain.entity.FriendRequest;
import com.caliverse.admin.domain.entity.HISTORYTYPE; import com.caliverse.admin.domain.entity.HISTORYTYPE;
import com.caliverse.admin.domain.request.MailRequest; 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.caliverse.admin.redis.service.RedisUserInfoService;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.json.JSONObject; import org.json.JSONObject;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.caliverse.admin.domain.datacomponent.MetaDataHandler; import com.caliverse.admin.domain.datacomponent.MetaDataHandler;
@@ -34,6 +43,7 @@ public class UsersService {
private static final Logger logger = LoggerFactory.getLogger(UsersService.class); private static final Logger logger = LoggerFactory.getLogger(UsersService.class);
private final DynamoDBService dynamoDBService; private final DynamoDBService dynamoDBService;
private final DynamodbService dynamodbService;
private final HistoryService historyService; private final HistoryService historyService;
private final UserGameSessionService userGameSessionService; private final UserGameSessionService userGameSessionService;
private final RedisUserInfoService redisUserInfoService; private final RedisUserInfoService redisUserInfoService;
@@ -41,6 +51,9 @@ public class UsersService {
//metadataHandler 어떻게 가져와야 되는가 //metadataHandler 어떻게 가져와야 되는가
@Autowired @Autowired
private MetaDataHandler metaDataHandler; private MetaDataHandler metaDataHandler;
@Qualifier("objectMapper")
@Autowired
private ObjectMapper objectMapper;
// 닉네임 변경 // 닉네임 변경
public UsersResponse changeNickname(UsersRequest usersRequest){ public UsersResponse changeNickname(UsersRequest usersRequest){
@@ -89,6 +102,23 @@ public class UsersService {
} }
// 유저 킥
public UsersResponse userKick(UsersRequest usersRequest){
String guid = usersRequest.getGuid();
String adminUser = CommonUtils.getAdmin().getEmail();
userGameSessionService.kickUserSession(guid, String.format("admin %s kick out", adminUser));
return UsersResponse.builder()
.resultData(UsersResponse.ResultData.builder()
.message(SuccessCode.SUCCESS.getMessage())
.build())
.status(CommonCode.SUCCESS.getHttpStatus())
.result(CommonCode.SUCCESS.getResult())
.build();
}
// 유정 정보 조회 닉네임,GUID,Account ID // 유정 정보 조회 닉네임,GUID,Account ID
public UsersResponse findUsers(Map requestParam){ public UsersResponse findUsers(Map requestParam){
@@ -105,6 +135,7 @@ public class UsersService {
.result(CommonCode.SUCCESS.getResult()) .result(CommonCode.SUCCESS.getResult())
.build(); .build();
} }
public UsersResponse getBasicInfo(String guid){ public UsersResponse getBasicInfo(String guid){
String account_id = dynamoDBService.getGuidByAccountId(guid); String account_id = dynamoDBService.getGuidByAccountId(guid);
@@ -114,12 +145,14 @@ public class UsersService {
// charInfo // charInfo
Map<String, Object> charInfo = dynamoDBService.getCharInfo(guid); Map<String, Object> charInfo = dynamoDBService.getCharInfo(guid);
boolean userSession = userGameSessionService.userSession(guid);
return UsersResponse.builder() return UsersResponse.builder()
.resultData( .resultData(
UsersResponse.ResultData.builder() UsersResponse.ResultData.builder()
.charInfo((UsersResponse.CharInfo) charInfo.get("charInfo")) .charInfo((UsersResponse.CharInfo) charInfo.get("charInfo"))
.userInfo((UsersResponse.UserInfo) userInfo.get("userInfo")) .userInfo((UsersResponse.UserInfo) userInfo.get("userInfo"))
.userSession(userSession)
.build() .build()
) )
.status(CommonCode.SUCCESS.getHttpStatus()) .status(CommonCode.SUCCESS.getHttpStatus())
@@ -227,7 +260,7 @@ public class UsersService {
int current_cnt = Integer.parseInt(requestParams.get("current_cnt")); int current_cnt = Integer.parseInt(requestParams.get("current_cnt"));
int update_cnt = Integer.parseInt(requestParams.get("cnt")); int update_cnt = Integer.parseInt(requestParams.get("cnt"));
userGameSessionService.kickUserSession(guid); userGameSessionService.kickUserSession(guid, "Item delete");
if(update_cnt >= current_cnt){ if(update_cnt >= current_cnt){
String attrib = dynamoDBService.deleteItem(guid, item_guid); String attrib = dynamoDBService.deleteItem(guid, item_guid);
if(!attrib.isEmpty()){ if(!attrib.isEmpty()){
@@ -258,13 +291,81 @@ 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(usersRequest.getMailType(), usersRequest.getGuid(), "", "", "", usersRequest.getPageKey(), false);
List<UsersResponse.Mail> mailList = new ArrayList<>();
List<UsersResponse.Mail> mailList = dynamoDBService.getMail(guid, type);; mailPageResult.getItems().forEach(doc -> {
try {
// MailAttrib attrib = objectMapper.readValue(doc.getAttribValue(), MailAttrib.class);
MailAttrib attrib = doc.getAttribValue();
List<UsersResponse.MailItem> itemList = new ArrayList<>();
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(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;
}
});
return UsersResponse.builder() return UsersResponse.builder()
.resultData( .resultData(
UsersResponse.ResultData.builder() UsersResponse.ResultData.builder()
.mailList(mailList) .mailList(mailList)
.pageKey(mailPageResult.getLastEvaluatedKey() == null ?
null :
mailPageResult.getLastEvaluatedKey().entrySet().stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
entry -> entry.getValue().s()
))
)
.build() .build()
) )
.status(CommonCode.SUCCESS.getHttpStatus()) .status(CommonCode.SUCCESS.getHttpStatus())
@@ -278,7 +379,7 @@ public class UsersService {
String mail_guid = requestParams.get("mail_guid"); String mail_guid = requestParams.get("mail_guid");
String type = requestParams.get("type"); String type = requestParams.get("type");
userGameSessionService.kickUserSession(guid); userGameSessionService.kickUserSession(guid, "delete mail");
String attrib = dynamoDBService.deleteMail(type, guid, mail_guid); String attrib = dynamoDBService.deleteMail(type, guid, mail_guid);
if(!attrib.isEmpty()){ if(!attrib.isEmpty()){
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
@@ -296,7 +397,7 @@ public class UsersService {
} }
public UsersResponse deleteMailItem(MailRequest.DeleteMailItem deleteMailItem){ public UsersResponse deleteMailItem(MailRequest.DeleteMailItem deleteMailItem){
userGameSessionService.kickUserSession(deleteMailItem.getGuid()); userGameSessionService.kickUserSession(deleteMailItem.getGuid(), "delete mail item");
JSONObject json = dynamoDBService.updateMailItem(deleteMailItem.getType(), deleteMailItem.getGuid(), JSONObject json = dynamoDBService.updateMailItem(deleteMailItem.getType(), deleteMailItem.getGuid(),
deleteMailItem.getMailGuid(), deleteMailItem.getItemId(), deleteMailItem.getParrentCount(), deleteMailItem.getCount()); deleteMailItem.getMailGuid(), deleteMailItem.getItemId(), deleteMailItem.getParrentCount(), deleteMailItem.getCount());
if(!json.isEmpty()){ if(!json.isEmpty()){

View File

@@ -28,9 +28,9 @@ public class BuildingAttrib extends DynamoDBAttribBase{
@JsonProperty("owner_user_guid") @JsonProperty("owner_user_guid")
private String ownerUserGuid; private String ownerUserGuid;
@JsonProperty("RentalCurrencyType") @JsonProperty("RentalCurrencyType")
private String rentalCurrencyType; private Integer rentalCurrencyType;
@JsonProperty("RentalCurrencyAmount") @JsonProperty("RentalCurrencyAmount")
private Double rentalCurrencyAmount; private Double rentalCurrencyAmount;
@JsonProperty("IsRentalOpen") @JsonProperty("IsRentalOpen")
private String isRentalOpen; private boolean isRentalOpen;
} }

View File

@@ -1,5 +1,7 @@
package com.caliverse.admin.dynamodb.domain.atrrib; 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.annotation.JsonProperty;
import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming; import com.fasterxml.jackson.databind.annotation.JsonNaming;
@@ -11,8 +13,12 @@ import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
@JsonIgnoreProperties(ignoreUnknown = true)
public abstract class DynamoDBAttribBase { public abstract class DynamoDBAttribBase {
//객체일때는 사용안하고 Json으로 Attrib이 생성될때만 사용(상속 안받는걸로) //객체일때는 사용안하고 Json으로 Attrib이 생성될때만 사용(상속 안받는걸로)
@JsonProperty("attrib_type") @JsonProperty("attrib_type")
private String attribType; private String attribType;
@JsonIgnore
private transient boolean isSaveToJson = true;
} }

View File

@@ -0,0 +1,33 @@
package com.caliverse.admin.dynamodb.domain.atrrib;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbAttribute;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;
@Setter
@ToString(callSuper = true)
@NoArgsConstructor
@DynamoDbBean
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class LandAuctionRecordAttrib {
@JsonProperty("land_meta_id")
private Integer landMetaId;
@JsonProperty("auction_number")
private Integer auctionNumber;
@DynamoDbAttribute("land_meta_id")
public Integer getLandMetaId() {
return landMetaId;
}
@DynamoDbAttribute("auction_number")
public Integer getAuctionNumber() {
return auctionNumber;
}
}

View File

@@ -0,0 +1,71 @@
package com.caliverse.admin.dynamodb.domain.atrrib;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbAttribute;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;
@Setter
@ToString(callSuper = true)
@NoArgsConstructor
@DynamoDbBean
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class LandAuctionRefundBidPriceAttrib {
@JsonProperty("land_meta_id")
private Integer landMetaId;
@JsonProperty("auction_number")
private Integer auctionNumber;
@JsonProperty("bid_user_guid")
private String bidUserGuid;
@JsonProperty("last_bid_type")
private String lastBidType;
@JsonProperty("bid_currency_type")
private String bidCurrencyType;
@JsonProperty("bid_price")
private Double bidPrice;
@JsonProperty("refundable_normal_bid_price")
private Double refundableNormalBidPrice;
@JsonProperty("refundable_blind_bid_price")
private Double refundableBlindBidPrice;
@DynamoDbAttribute("land_meta_id")
public Integer getLandMetaId() {
return landMetaId;
}
@DynamoDbAttribute("auction_number")
public Integer getAuctionNumber() {
return auctionNumber;
}
@DynamoDbAttribute("bid_user_guid")
public String getBidUserGuid() {
return bidUserGuid;
}
@DynamoDbAttribute("last_bid_type")
public String getLastBidType() { return lastBidType; }
@DynamoDbAttribute("bid_currency_type")
public String getBidCurrencyType() { return bidCurrencyType; }
@DynamoDbAttribute("bid_price")
public Double getBidPrice() {
return bidPrice;
}
@DynamoDbAttribute("refundable_normal_bid_price")
public Double getRefundableNormalBidPrice() {
return refundableNormalBidPrice;
}
@DynamoDbAttribute("refundable_blind_bid_price")
public Double getRefundableBlindBidPrice() {
return refundableBlindBidPrice;
}
}

View File

@@ -0,0 +1,122 @@
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.DynamoDbAttribute;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;
import java.util.List;
@Setter
@ToString(callSuper = true)
@NoArgsConstructor
@DynamoDbBean
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class MailAttrib{
@JsonProperty("mail_guid")
private String mailGuid;
@JsonProperty("is_read")
private String isRead;
@JsonProperty("is_get_item")
private String isGetItem;
@JsonProperty("is_system_mail")
private String 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 String isTextByMetaData;
@JsonProperty("item_list")
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

@@ -0,0 +1,28 @@
package com.caliverse.admin.dynamodb.domain.doc;
import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionRecordAttrib;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
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 LandAuctionRecordDoc extends DynamoDBDocBase {
private LandAuctionRecordAttrib landAuctionRecordAttrib;
public String getAttribFieldName() {
return "LandAuctionActivityAttrib";
}
@DynamoDbAttribute("LandAuctionRecordAttrib")
public LandAuctionRecordAttrib getAttribValue() {
return landAuctionRecordAttrib;
}
public void setAttribValue(LandAuctionRecordAttrib value) {
this.landAuctionRecordAttrib = value;
}
}

View File

@@ -0,0 +1,30 @@
package com.caliverse.admin.dynamodb.domain.doc;
import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionRefundBidPriceAttrib;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
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 LandAuctionRefundBidPriceDoc extends DynamoDBDocBase {
private LandAuctionRefundBidPriceAttrib landAuctionRefundBidPriceAttrib;
public String getAttribFieldName() {
return "LandAuctionRefundBidPriceAttrib";
}
@DynamoDbAttribute("LandAuctionRefundBidPriceAttrib")
@JsonProperty("LandAuctionRefundBidPriceAttrib")
public LandAuctionRefundBidPriceAttrib getAttribValue() {
return landAuctionRefundBidPriceAttrib;
}
public void setAttribValue(LandAuctionRefundBidPriceAttrib value) {
this.landAuctionRefundBidPriceAttrib = value;
}
}

View File

@@ -1,6 +1,5 @@
package com.caliverse.admin.dynamodb.domain.doc; package com.caliverse.admin.dynamodb.domain.doc;
import com.caliverse.admin.dynamodb.domain.atrrib.LandAttrib;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@@ -0,0 +1,40 @@
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.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 MailAttrib mailAttrib;
@Setter
private long ttl;
public String getAttribFieldName() {
return DynamoDBConstants.ATTRIB_MAIL;
}
@DynamoDbAttribute(DynamoDBConstants.ATTRIB_MAIL)
@JsonProperty(DynamoDBConstants.ATTRIB_MAIL)
public MailAttrib getAttribValue() {
return mailAttrib;
}
@DynamoDbAttribute("TTL")
@JsonProperty("TTL")
public long getTtl() {
return ttl;
}
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

@@ -0,0 +1,28 @@
package com.caliverse.admin.dynamodb.dto;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
import java.util.List;
import java.util.Map;
public class PageResult<T> {
private final List<T> items;
private final Map<String, AttributeValue> lastEvaluatedKey;
public PageResult(List<T> items, Map<String, AttributeValue> lastEvaluatedKey) {
this.items = items;
this.lastEvaluatedKey = lastEvaluatedKey;
}
public List<T> getItems() {
return items;
}
public Map<String, AttributeValue> getLastEvaluatedKey() {
return lastEvaluatedKey;
}
public boolean hasMorePages() {
return lastEvaluatedKey != null && !lastEvaluatedKey.isEmpty();
}
}

View File

@@ -0,0 +1,13 @@
package com.caliverse.admin.dynamodb.entity;
import com.caliverse.admin.dynamodb.domain.doc.DynamoDBDocBase;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class DynamodbOperationResult {
private boolean success;
private String message;
private DynamoDBDocBase data;
}

View File

@@ -0,0 +1,25 @@
package com.caliverse.admin.dynamodb.entity;
import com.caliverse.admin.domain.entity.common.ValueEnum;
public enum ECurrencyType implements ValueEnum {
None(0),
Gold(1),
Sapphire(2),
Calium(3),
Beam(4),
Ruby(5),
;
private final int value;
ECurrencyType(int value) {
this.value = value;
}
@Override
public int getValue() {
return value;
}
}

View File

@@ -0,0 +1,22 @@
package com.caliverse.admin.dynamodb.entity;
import com.caliverse.admin.domain.entity.common.ValueEnum;
public enum EOwnedType implements ValueEnum {
None(0),
Own(1),
Rent(2),
;
private final int value;
EOwnedType(int value) {
this.value = value;
}
@Override
public int getValue() {
return value;
}
}

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

@@ -1,17 +1,23 @@
package com.caliverse.admin.dynamodb.entity; package com.caliverse.admin.dynamodb.entity;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;
@Data @Data
@Builder @Builder
@NoArgsConstructor
@AllArgsConstructor
@DynamoDbBean
public class MailItem { public class MailItem {
@JsonProperty("itemId") @JsonProperty("ItemId")
private Integer itemId; private Integer itemId;
@JsonProperty("count") @JsonProperty("Count")
private Double count; private Double count;
@JsonProperty("productId") @JsonProperty("ProductId")
private Integer productId; private Integer productId;
@JsonProperty("isRepeatProduct") @JsonProperty("isRepeatProduct")
private boolean isRepeatProduct; private boolean isRepeatProduct;

View File

@@ -1,5 +1,6 @@
package com.caliverse.admin.dynamodb.repository; package com.caliverse.admin.dynamodb.repository;
import com.caliverse.admin.dynamodb.dto.PageResult;
import com.caliverse.admin.dynamodb.service.DynamoDBOperations; import com.caliverse.admin.dynamodb.service.DynamoDBOperations;
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;
@@ -10,8 +11,10 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import software.amazon.awssdk.enhanced.dynamodb.Expression; import software.amazon.awssdk.enhanced.dynamodb.Expression;
import software.amazon.awssdk.enhanced.dynamodb.Key; import software.amazon.awssdk.enhanced.dynamodb.Key;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
import java.util.List; import java.util.List;
import java.util.Map;
@RequiredArgsConstructor @RequiredArgsConstructor
public abstract class BaseDynamoDBRepository<T> implements DynamoDBRepository<T> { public abstract class BaseDynamoDBRepository<T> implements DynamoDBRepository<T> {
@@ -57,7 +60,17 @@ public abstract class BaseDynamoDBRepository<T> implements DynamoDBRepository<T>
@Override @Override
public List<T> findAll(Key key) { public List<T> findAll(Key key) {
return operations.getItems(key, entityClass); return operations.getQueryItems(key, entityClass);
}
@Override
public List<T> findAllScan(String prefix) {
return operations.getItemsScanBegins(prefix, entityClass);
}
@Override
public List<T> findAllScan(String prefix, String sortKey) {
return operations.getItemsScanBegins(prefix, sortKey, entityClass);
} }
protected <T> T deepCopy(T source, Class<T> valueType) { protected <T> T deepCopy(T source, Class<T> valueType) {
@@ -77,4 +90,25 @@ public abstract class BaseDynamoDBRepository<T> implements DynamoDBRepository<T>
return operations.getItemsByPrefix(partitionKey, sortKeyPrefix, entityClass); return operations.getItemsByPrefix(partitionKey, sortKeyPrefix, entityClass);
} }
} }
@Override
public PageResult<T> findByPaging(
String partitionKey,
String sortKeyPrefix,
String filterAttributeName,
String filterAttributeValue,
Map<String, AttributeValue> exclusiveStartKey,
boolean scanIndexForward
) {
return operations.queryItemsPaging(
partitionKey,
sortKeyPrefix,
filterAttributeName,
filterAttributeValue,
exclusiveStartKey,
scanIndexForward,
entityClass
);
}
} }

View File

@@ -3,9 +3,12 @@ package com.caliverse.admin.dynamodb.repository;
import com.caliverse.admin.domain.request.LandRequest; import com.caliverse.admin.domain.request.LandRequest;
import com.caliverse.admin.dynamodb.domain.atrrib.BuildingAttrib; import com.caliverse.admin.dynamodb.domain.atrrib.BuildingAttrib;
import com.caliverse.admin.dynamodb.domain.doc.BuildingDoc; import com.caliverse.admin.dynamodb.domain.doc.BuildingDoc;
import com.caliverse.admin.dynamodb.entity.DynamodbOperationResult;
public interface BuildingRepository extends DynamoDBRepository<BuildingDoc> { public interface BuildingRepository extends DynamoDBRepository<BuildingDoc> {
BuildingAttrib findBuildingAttrib(Integer buildingId); BuildingAttrib findBuildingAttrib(Integer buildingId);
void insertBuilding(LandRequest landRequest); void insertBuilding(LandRequest landRequest);
void updateBuilding(LandRequest landRequest); void updateBuilding(LandRequest landRequest);
DynamodbOperationResult initBuildingOwner(int buildingId);
DynamodbOperationResult initBuildingDesc(int buildingId);
} }

View File

@@ -1,9 +1,12 @@
package com.caliverse.admin.dynamodb.repository; package com.caliverse.admin.dynamodb.repository;
import com.caliverse.admin.dynamodb.dto.PageResult;
import software.amazon.awssdk.enhanced.dynamodb.Expression; import software.amazon.awssdk.enhanced.dynamodb.Expression;
import software.amazon.awssdk.enhanced.dynamodb.Key; import software.amazon.awssdk.enhanced.dynamodb.Key;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
import java.util.List; import java.util.List;
import java.util.Map;
public interface DynamoDBRepository<T> { public interface DynamoDBRepository<T> {
void save(T item); void save(T item);
@@ -14,5 +17,16 @@ public interface DynamoDBRepository<T> {
void deleteWithCondition(Key key, Expression condition); void deleteWithCondition(Key key, Expression condition);
T findById(Key key); T findById(Key key);
List<T> findAll(Key key); List<T> findAll(Key key);
List<T> findAllScan(String prefix);
List<T> findAllScan(String prefix, String sortKey);
List<T> findByPrefix(String partitionKey, String sortKeyPrefix); List<T> findByPrefix(String partitionKey, String sortKeyPrefix);
PageResult<T> findByPaging(
String partitionKey,
String sortKeyPrefix,
String filterAttributeName,
String filterAttributeValue,
Map<String, AttributeValue> exclusiveStartKey,
boolean scanIndexForward
);
} }

View File

@@ -92,9 +92,7 @@ public class AccountBaseRepositoryImpl extends BaseDynamoDBRepository<AccountBas
HISTORYTYPE.BLACKLIST_UPDATE, HISTORYTYPE.BLACKLIST_UPDATE,
HISTORYTYPE.BLACKLIST_UPDATE.name(), HISTORYTYPE.BLACKLIST_UPDATE.name(),
beforeDoc, beforeDoc,
afterDoc, afterDoc
CommonConstants.SCHEDULE,
""
); );
} }
}catch (Exception e){ }catch (Exception e){
@@ -134,9 +132,7 @@ public class AccountBaseRepositoryImpl extends BaseDynamoDBRepository<AccountBas
HISTORYTYPE.BLACKLIST_UPDATE, HISTORYTYPE.BLACKLIST_UPDATE,
HISTORYTYPE.BLACKLIST_UPDATE.name(), HISTORYTYPE.BLACKLIST_UPDATE.name(),
beforeDoc, beforeDoc,
afterDoc, afterDoc
CommonConstants.SCHEDULE,
""
); );
} }
}catch (Exception e){ }catch (Exception e){

View File

@@ -119,9 +119,7 @@ public class BattleEventRepositoryImpl extends BaseDynamoDBRepository<BattleEven
dynamodbHistoryLogService.insertHistoryLog( dynamodbHistoryLogService.insertHistoryLog(
HISTORYTYPE.BATTLE_EVENT_ADD, HISTORYTYPE.BATTLE_EVENT_ADD,
HISTORYTYPE.BATTLE_EVENT_ADD.name(), HISTORYTYPE.BATTLE_EVENT_ADD.name(),
doc, doc
CommonUtils.getAdmin().getEmail(),
CommonUtils.getClientIp()
); );
}catch (Exception e){ }catch (Exception e){
log.error("insert Error: {}", e.getMessage()); log.error("insert Error: {}", e.getMessage());
@@ -167,9 +165,7 @@ public class BattleEventRepositoryImpl extends BaseDynamoDBRepository<BattleEven
HISTORYTYPE.BATTLE_EVENT_UPDATE, HISTORYTYPE.BATTLE_EVENT_UPDATE,
HISTORYTYPE.BATTLE_EVENT_UPDATE.name(), HISTORYTYPE.BATTLE_EVENT_UPDATE.name(),
beforeDoc, beforeDoc,
afterDoc, afterDoc
CommonUtils.getAdmin().getEmail(),
CommonUtils.getClientIp()
); );
} }
}catch (Exception e){ }catch (Exception e){
@@ -209,9 +205,7 @@ public class BattleEventRepositoryImpl extends BaseDynamoDBRepository<BattleEven
HISTORYTYPE.BATTLE_EVENT_UPDATE, HISTORYTYPE.BATTLE_EVENT_UPDATE,
HISTORYTYPE.BATTLE_EVENT_UPDATE.name(), HISTORYTYPE.BATTLE_EVENT_UPDATE.name(),
beforeDoc, beforeDoc,
afterDoc, afterDoc
CommonUtils.getAdmin().getEmail(),
CommonUtils.getClientIp()
); );
} }
}catch (Exception e){ }catch (Exception e){

View File

@@ -0,0 +1,222 @@
package com.caliverse.admin.dynamodb.repository.Impl;
import com.caliverse.admin.domain.entity.HISTORYTYPE;
import com.caliverse.admin.domain.request.LandRequest;
import com.caliverse.admin.dynamodb.domain.atrrib.BuildingAttrib;
import com.caliverse.admin.dynamodb.domain.doc.BuildingDoc;
import com.caliverse.admin.dynamodb.entity.ECurrencyType;
import com.caliverse.admin.dynamodb.entity.DynamodbOperationResult;
import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository;
import com.caliverse.admin.dynamodb.repository.BuildingRepository;
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.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import software.amazon.awssdk.enhanced.dynamodb.Key;
import java.time.LocalDateTime;
import static com.caliverse.admin.global.common.utils.CommonUtils.convertUTCDate;
@Component
@Slf4j
public class BuildingRepositoryImpl extends BaseDynamoDBRepository<BuildingDoc> implements BuildingRepository {
public BuildingRepositoryImpl(DynamoDBOperations operations, DynamodbHistoryLogService dynamodbHistoryLogService, ObjectMapper objectMapper) {
super(operations, BuildingDoc.class, dynamodbHistoryLogService, objectMapper);
}
@Override
public BuildingAttrib findBuildingAttrib(Integer buildingId) {
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_BUILDING + buildingId)
.sortValue(DynamoDBConstants.EMPTY)
.build();
BuildingDoc doc = findById(key);
if (doc == null) return null;
String attribJson = doc.getAttribValue();
try {
return objectMapper.readValue(attribJson, BuildingAttrib.class);
} catch (JsonProcessingException e) {
throw new RestApiException(CommonCode.ERROR.getHttpStatus(),
ErrorCode.DYNAMODB_JSON_PARSE_ERROR.getMessage());
}
}
@Override
public void insertBuilding(LandRequest landRequest) {
try {
LocalDateTime nowDate = LocalDateTime.now();
int building_id = landRequest.getBuildingId();
String guid = landRequest.getUserGuid();
String pk = DynamoDBConstants.PK_KEY_BUILDING + building_id;
BuildingAttrib attrib = new BuildingAttrib();
attrib.setAttribType(DynamoDBConstants.ATTRIB_BUILDING);
attrib.setBuildingName("");
attrib.setBuildingMetaId(building_id);
attrib.setDescription("");
attrib.setOwnerUserGuid(guid);
attrib.setRentalCurrencyAmount(0.0);
attrib.setRentalCurrencyType(ECurrencyType.Calium.getValue());
attrib.setRentalOpen(false);
attrib.setBuildingGuid("");
BuildingDoc doc = new BuildingDoc();
doc.setPK(pk);
doc.setSK(DynamoDBConstants.EMPTY);
doc.setDocType(DynamoDBConstants.DOC_BUILDING);
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);
log.info("BuildingDoc Insert Success: {}", objectMapper.writeValueAsString(doc));
dynamodbHistoryLogService.insertHistoryLog(
HISTORYTYPE.LAND_OWNER_CHANGE_ADD,
HISTORYTYPE.LAND_OWNER_CHANGE_ADD.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 updateBuilding(LandRequest landRequest) {
LocalDateTime nowDate = LocalDateTime.now();
int buildingId_id = landRequest.getBuildingId();
String guid = landRequest.getUserGuid();
try {
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_BUILDING + buildingId_id)
.sortValue(DynamoDBConstants.EMPTY)
.build();
BuildingDoc beforeDoc = findById(key);
if (beforeDoc != null) {
BuildingDoc afterDoc = deepCopy(beforeDoc, BuildingDoc.class);
BuildingAttrib attrib = objectMapper.readValue(afterDoc.getAttribValue(), BuildingAttrib.class);
attrib.setDescription("");
attrib.setOwnerUserGuid(guid);
afterDoc.setAttribValue(objectMapper.writeValueAsString(attrib));
afterDoc.setUpdatedDateTime(CommonUtils.convertUTCDate(nowDate));
update(afterDoc);
log.info("BuildingDoc Update Success: {}", objectMapper.writeValueAsString(afterDoc));
dynamodbHistoryLogService.updateHistoryLog(
HISTORYTYPE.LAND_OWNER_CHANGE_UPDATE,
HISTORYTYPE.LAND_OWNER_CHANGE_UPDATE.name(),
beforeDoc,
afterDoc
);
}
}catch (Exception e){
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
}
@Override
public DynamodbOperationResult initBuildingOwner(int buildingId) {
try {
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_BUILDING + buildingId)
.sortValue(DynamoDBConstants.EMPTY)
.build();
BuildingDoc beforeDoc = findById(key);
if (beforeDoc != null) {
BuildingDoc afterDoc = deepCopy(beforeDoc, BuildingDoc.class);
BuildingAttrib attrib = objectMapper.readValue(afterDoc.getAttribValue(), BuildingAttrib.class);
attrib.setOwnerUserGuid("");
afterDoc.setAttribValue(objectMapper.writeValueAsString(attrib));
afterDoc.setUpdatedDateTime(CommonUtils.convertUTCDate(LocalDateTime.now()));
update(afterDoc);
log.info("BuildingDoc Owned Init Update Success: {}", objectMapper.writeValueAsString(afterDoc));
dynamodbHistoryLogService.updateHistoryLog(
HISTORYTYPE.LAND_OWNED_INITIALIZE,
HISTORYTYPE.LAND_OWNED_INITIALIZE.name(),
beforeDoc,
afterDoc
);
return new DynamodbOperationResult(true, "", afterDoc);
}
return new DynamodbOperationResult(false, "null", null);
}catch (Exception e){
log.error("Init Building Owner Error: {}", e.getMessage());
return new DynamodbOperationResult(false, e.getMessage(), null);
}
}
@Override
public DynamodbOperationResult initBuildingDesc(int buildingId) {
try {
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_BUILDING + buildingId)
.sortValue(DynamoDBConstants.EMPTY)
.build();
BuildingDoc beforeDoc = findById(key);
if (beforeDoc != null) {
BuildingDoc afterDoc = deepCopy(beforeDoc, BuildingDoc.class);
BuildingAttrib attrib = objectMapper.readValue(afterDoc.getAttribValue(), BuildingAttrib.class);
attrib.setDescription("");
attrib.setBuildingName("");
attrib.setRentalCurrencyAmount(0.0);
attrib.setRentalOpen(false);
attrib.setRentalCurrencyType(ECurrencyType.Calium.getValue());
afterDoc.setAttribValue(objectMapper.writeValueAsString(attrib));
afterDoc.setUpdatedDateTime(CommonUtils.convertUTCDate(LocalDateTime.now()));
update(afterDoc);
log.info("BuildingDoc Desc Init Update Success: {}", objectMapper.writeValueAsString(afterDoc));
dynamodbHistoryLogService.updateHistoryLog(
HISTORYTYPE.LAND_DESC_INITIALIZE,
HISTORYTYPE.LAND_DESC_INITIALIZE.name(),
beforeDoc,
afterDoc
);
return new DynamodbOperationResult(true, "Success", afterDoc);
}
return new DynamodbOperationResult(true, "null", beforeDoc);
}catch (Exception e){
log.error("Init Building Desc Error: {}", e.getMessage());
return new DynamodbOperationResult(false, e.getMessage(), null);
}
}
}

View File

@@ -86,9 +86,7 @@ public class CaliumStorageRepositoryImpl extends BaseDynamoDBRepository<CaliumSt
HISTORYTYPE.CALIUM_TOTAL_UPDATE, HISTORYTYPE.CALIUM_TOTAL_UPDATE,
HISTORYTYPE.CALIUM_TOTAL_UPDATE.name(), HISTORYTYPE.CALIUM_TOTAL_UPDATE.name(),
beforeDoc, beforeDoc,
afterDoc, afterDoc
CommonUtils.getAdmin().getEmail(),
CommonUtils.getClientIp()
); );
} }
}catch (Exception e){ }catch (Exception e){
@@ -136,9 +134,7 @@ public class CaliumStorageRepositoryImpl extends BaseDynamoDBRepository<CaliumSt
HISTORYTYPE.CALIUM_TOTAL_UPDATE, HISTORYTYPE.CALIUM_TOTAL_UPDATE,
HISTORYTYPE.CALIUM_TOTAL_UPDATE.name(), HISTORYTYPE.CALIUM_TOTAL_UPDATE.name(),
beforeDoc, beforeDoc,
afterDoc, afterDoc
CommonUtils.getAdmin().getEmail(),
CommonUtils.getClientIp()
); );
} }
}catch (Exception e){ }catch (Exception e){

View File

@@ -4,6 +4,8 @@ import com.caliverse.admin.domain.entity.HISTORYTYPE;
import com.caliverse.admin.domain.request.LandRequest; import com.caliverse.admin.domain.request.LandRequest;
import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionActivityAttrib; import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionActivityAttrib;
import com.caliverse.admin.dynamodb.domain.doc.LandAuctionActivityDoc; import com.caliverse.admin.dynamodb.domain.doc.LandAuctionActivityDoc;
import com.caliverse.admin.dynamodb.domain.doc.LandAuctionRegistryDoc;
import com.caliverse.admin.dynamodb.entity.DynamodbOperationResult;
import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository; import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository;
import com.caliverse.admin.dynamodb.repository.LandAuctionActivityRepository; import com.caliverse.admin.dynamodb.repository.LandAuctionActivityRepository;
import com.caliverse.admin.dynamodb.service.DynamoDBOperations; import com.caliverse.admin.dynamodb.service.DynamoDBOperations;
@@ -19,6 +21,7 @@ import org.springframework.stereotype.Component;
import software.amazon.awssdk.enhanced.dynamodb.Key; import software.amazon.awssdk.enhanced.dynamodb.Key;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Component @Component
@Slf4j @Slf4j
@@ -57,6 +60,35 @@ public class LandAuctionActivityRepositoryImpl extends BaseDynamoDBRepository<La
return attrib.getAuctionNumber(); return attrib.getAuctionNumber();
} }
@Override
public DynamodbOperationResult initLandAuctionActivity(Integer landId, Integer auctionSeq) {
try{
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_LAND_AUCTION_ACTIVE)
.sortValue(landId.toString())
.build();
LandAuctionActivityDoc doc = findById(key);
if(doc != null && doc.getAttribValue().getAuctionNumber().equals(auctionSeq)) {
delete(key);
log.info("LandAuctionActivityDoc Delete Success: {}", objectMapper.writeValueAsString(doc));
dynamodbHistoryLogService.deleteHistoryLog(
HISTORYTYPE.LAND_AUCTION_INITIALIZE,
HISTORYTYPE.LAND_AUCTION_INITIALIZE.name(),
doc
);
return new DynamodbOperationResult(true, "delete success", doc);
}
return new DynamodbOperationResult(true, "null", doc);
}catch (Exception e){
log.error("Init LandAuctionActivity Error: {}", e.getMessage());
return new DynamodbOperationResult(false, e.getMessage(), null);
}
}
private void insertLandAuctionActive(LandRequest landRequest){ private void insertLandAuctionActive(LandRequest landRequest){
try { try {
LocalDateTime nowDate = LocalDateTime.now(); LocalDateTime nowDate = LocalDateTime.now();
@@ -80,9 +112,7 @@ public class LandAuctionActivityRepositoryImpl extends BaseDynamoDBRepository<La
dynamodbHistoryLogService.insertHistoryLog( dynamodbHistoryLogService.insertHistoryLog(
HISTORYTYPE.LAND_AUCTION_ADD, HISTORYTYPE.LAND_AUCTION_ADD,
HISTORYTYPE.LAND_AUCTION_ADD.name(), HISTORYTYPE.LAND_AUCTION_ADD.name(),
activityDoc, activityDoc
CommonUtils.getAdmin().getEmail(),
CommonUtils.getClientIp()
); );
}catch (Exception e){ }catch (Exception e){
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage()); throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
@@ -107,9 +137,7 @@ public class LandAuctionActivityRepositoryImpl extends BaseDynamoDBRepository<La
HISTORYTYPE.LAND_AUCTION_ADD, HISTORYTYPE.LAND_AUCTION_ADD,
HISTORYTYPE.LAND_AUCTION_ADD.name(), HISTORYTYPE.LAND_AUCTION_ADD.name(),
existingDoc, existingDoc,
afterDoc, afterDoc
CommonUtils.getAdmin().getEmail(),
CommonUtils.getClientIp()
); );
}catch (Exception e){ }catch (Exception e){
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage()); throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());

View File

@@ -4,8 +4,10 @@ import com.caliverse.admin.domain.entity.HISTORYTYPE;
import com.caliverse.admin.domain.request.LandRequest; import com.caliverse.admin.domain.request.LandRequest;
import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionHighestBidUserAttrib; import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionHighestBidUserAttrib;
import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionRegistryAttrib; import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionRegistryAttrib;
import com.caliverse.admin.dynamodb.domain.doc.LandAuctionActivityDoc;
import com.caliverse.admin.dynamodb.domain.doc.LandAuctionHighestBidUserDoc; import com.caliverse.admin.dynamodb.domain.doc.LandAuctionHighestBidUserDoc;
import com.caliverse.admin.dynamodb.domain.doc.LandAuctionRegistryDoc; import com.caliverse.admin.dynamodb.domain.doc.LandAuctionRegistryDoc;
import com.caliverse.admin.dynamodb.entity.DynamodbOperationResult;
import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository; import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository;
import com.caliverse.admin.dynamodb.repository.LandAuctionHighestBidUserRepository; import com.caliverse.admin.dynamodb.repository.LandAuctionHighestBidUserRepository;
import com.caliverse.admin.dynamodb.service.DynamoDBOperations; import com.caliverse.admin.dynamodb.service.DynamoDBOperations;
@@ -22,6 +24,7 @@ import org.springframework.stereotype.Component;
import software.amazon.awssdk.enhanced.dynamodb.Key; import software.amazon.awssdk.enhanced.dynamodb.Key;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Component @Component
@Slf4j @Slf4j
@@ -75,9 +78,7 @@ public class LandAuctionHighestBidUserRepositoryImpl extends BaseDynamoDBReposit
dynamodbHistoryLogService.insertHistoryLog( dynamodbHistoryLogService.insertHistoryLog(
HISTORYTYPE.LAND_AUCTION_ADD, HISTORYTYPE.LAND_AUCTION_ADD,
HISTORYTYPE.LAND_AUCTION_ADD.name(), HISTORYTYPE.LAND_AUCTION_ADD.name(),
registry, registry
CommonUtils.getAdmin().getEmail(),
CommonUtils.getClientIp()
); );
save(registry); save(registry);
@@ -86,4 +87,34 @@ public class LandAuctionHighestBidUserRepositoryImpl extends BaseDynamoDBReposit
} }
} }
@Override
public DynamodbOperationResult initLandAuctionHighestBidUser(Integer landId, Integer auctionSeq) {
try{
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_LAND_AUCTION_HIGHEST_USER)
.sortValue(String.format("%s#%s", landId, auctionSeq))
.build();
LandAuctionHighestBidUserDoc doc = findById(key);
if(doc != null) {
delete(key);
log.info("LandAuctionHighestBidUserDoc Delete Success: {}", objectMapper.writeValueAsString(doc));
dynamodbHistoryLogService.deleteHistoryLog(
HISTORYTYPE.LAND_AUCTION_INITIALIZE,
HISTORYTYPE.LAND_AUCTION_INITIALIZE.name(),
doc
);
return new DynamodbOperationResult(true, "delete success", doc);
}
return new DynamodbOperationResult(true, "null", doc);
}catch (Exception e){
log.error("Init LandAuctionHighestBidUser Error: {}", e.getMessage());
return new DynamodbOperationResult(false, e.getMessage(), null);
}
}
} }

View File

@@ -0,0 +1,60 @@
package com.caliverse.admin.dynamodb.repository.Impl;
import com.caliverse.admin.domain.entity.HISTORYTYPE;
import com.caliverse.admin.dynamodb.domain.doc.LandAuctionActivityDoc;
import com.caliverse.admin.dynamodb.domain.doc.LandAuctionRecordDoc;
import com.caliverse.admin.dynamodb.domain.doc.LandAuctionRegistryDoc;
import com.caliverse.admin.dynamodb.entity.DynamodbOperationResult;
import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository;
import com.caliverse.admin.dynamodb.repository.LandAuctionRecordRepository;
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 software.amazon.awssdk.enhanced.dynamodb.Key;
import java.util.List;
@Component
@Slf4j
public class LandAuctionRecordRepositoryImpl extends BaseDynamoDBRepository<LandAuctionRecordDoc> implements LandAuctionRecordRepository {
public LandAuctionRecordRepositoryImpl(DynamoDBOperations operations, DynamodbHistoryLogService dynamodbHistoryLogService, ObjectMapper objectMapper) {
super(operations, LandAuctionRecordDoc.class, dynamodbHistoryLogService, objectMapper);
}
@Override
public DynamodbOperationResult initLandAuctionRecord(Integer landId) {
try{
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_LAND_AUCTION_RECORD)
.sortValue(String.valueOf(landId))
.build();
LandAuctionRecordDoc doc = findById(key);
if(doc != null) {
delete(key);
log.info("LandAuctionRecordDoc Delete Success: {}", objectMapper.writeValueAsString(doc));
dynamodbHistoryLogService.deleteHistoryLog(
HISTORYTYPE.LAND_AUCTION_INITIALIZE,
HISTORYTYPE.LAND_AUCTION_INITIALIZE.name(),
doc
);
return new DynamodbOperationResult(true, "delete success", doc);
}
return new DynamodbOperationResult(true, "null", doc);
}catch (Exception e){
log.error("Init LandAuctionRecord Error: {}", e.getMessage());
return new DynamodbOperationResult(false, e.getMessage(), null);
}
}
}

View File

@@ -0,0 +1,60 @@
package com.caliverse.admin.dynamodb.repository.Impl;
import com.caliverse.admin.domain.entity.HISTORYTYPE;
import com.caliverse.admin.dynamodb.domain.doc.LandAuctionRefundBidPriceDoc;
import com.caliverse.admin.dynamodb.entity.DynamodbOperationResult;
import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository;
import com.caliverse.admin.dynamodb.repository.LandAuctionRefundBidPriceRepository;
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 software.amazon.awssdk.enhanced.dynamodb.Key;
import java.util.List;
@Component
@Slf4j
public class LandAuctionRefundBidPriceRepositoryImpl extends BaseDynamoDBRepository<LandAuctionRefundBidPriceDoc> implements LandAuctionRefundBidPriceRepository {
public LandAuctionRefundBidPriceRepositoryImpl(DynamoDBOperations operations, DynamodbHistoryLogService historyLogService, ObjectMapper objectMapper) {
super(operations, LandAuctionRefundBidPriceDoc.class, historyLogService, objectMapper);
}
@Override
public DynamodbOperationResult initLandAuctionRefundBidPrice(String guid, Integer landId, Integer auctionSeq) {
try{
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_LAND_AUCTION_REFUND_BID_PRICE + guid)
.sortValue(String.format("%s#%s", landId, auctionSeq))
.build();
LandAuctionRefundBidPriceDoc doc = findById(key);
if(doc != null) {
delete(key);
log.info("LandAuctionRefundBidPriceDoc Delete Success: {}", objectMapper.writeValueAsString(doc));
dynamodbHistoryLogService.deleteHistoryLog(
HISTORYTYPE.LAND_AUCTION_INITIALIZE,
HISTORYTYPE.LAND_AUCTION_INITIALIZE.name(),
doc
);
return new DynamodbOperationResult(true, "delete success", doc);
}
return new DynamodbOperationResult(true, "null", doc);
}catch (Exception e){
log.error("Init LandAuctionRefundBidPrice Error: {}", e.getMessage());
return new DynamodbOperationResult(false, e.getMessage(), null);
}
}
}

View File

@@ -2,8 +2,13 @@ package com.caliverse.admin.dynamodb.repository.Impl;
import com.caliverse.admin.domain.entity.HISTORYTYPE; import com.caliverse.admin.domain.entity.HISTORYTYPE;
import com.caliverse.admin.domain.request.LandRequest; import com.caliverse.admin.domain.request.LandRequest;
import com.caliverse.admin.dynamodb.domain.atrrib.BuildingAttrib;
import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionRegistryAttrib; import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionRegistryAttrib;
import com.caliverse.admin.dynamodb.domain.doc.BuildingDoc;
import com.caliverse.admin.dynamodb.domain.doc.LandAuctionRegistryDoc; import com.caliverse.admin.dynamodb.domain.doc.LandAuctionRegistryDoc;
import com.caliverse.admin.dynamodb.domain.doc.OwnedBuildingDoc;
import com.caliverse.admin.dynamodb.entity.DynamodbOperationResult;
import com.caliverse.admin.dynamodb.entity.ECurrencyType;
import com.caliverse.admin.dynamodb.entity.ELandAuctionResult; import com.caliverse.admin.dynamodb.entity.ELandAuctionResult;
import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository; import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository;
import com.caliverse.admin.dynamodb.repository.LandAuctionRegistryRepository; import com.caliverse.admin.dynamodb.repository.LandAuctionRegistryRepository;
@@ -34,7 +39,7 @@ public class LandAuctionRegistryRepositoryImpl extends BaseDynamoDBRepository<La
@Override @Override
public int findAuctionNumber(Integer landId) { public int findAuctionNumber(Integer landId) {
List<LandAuctionRegistryDoc> docs = findByPrefix( List<LandAuctionRegistryDoc> docs = findByPrefix(
DynamoDBConstants.PK_KEY_LAND_AUCTION, DynamoDBConstants.PK_KEY_LAND_AUCTION_REGISTRY,
landId.toString() landId.toString()
); );
@@ -53,7 +58,7 @@ public class LandAuctionRegistryRepositoryImpl extends BaseDynamoDBRepository<La
@Override @Override
public LandAuctionRegistryAttrib findRegistryAttrib(Integer landId, Integer auctionSeq) { public LandAuctionRegistryAttrib findRegistryAttrib(Integer landId, Integer auctionSeq) {
Key key = Key.builder() Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_LAND_AUCTION) .partitionValue(DynamoDBConstants.PK_KEY_LAND_AUCTION_REGISTRY)
.sortValue(String.format("%s#%s", landId, auctionSeq)) .sortValue(String.format("%s#%s", landId, auctionSeq))
.build(); .build();
@@ -83,7 +88,7 @@ public class LandAuctionRegistryRepositoryImpl extends BaseDynamoDBRepository<La
String sk = String.format("%s#%s", landRequest.getLandId(), landRequest.getAuctionSeq()); String sk = String.format("%s#%s", landRequest.getLandId(), landRequest.getAuctionSeq());
LandAuctionRegistryDoc registry = new LandAuctionRegistryDoc(); LandAuctionRegistryDoc registry = new LandAuctionRegistryDoc();
registry.setPK(DynamoDBConstants.PK_KEY_LAND_AUCTION); registry.setPK(DynamoDBConstants.PK_KEY_LAND_AUCTION_REGISTRY);
registry.setSK(sk); registry.setSK(sk);
registry.setDocType(DynamoDBConstants.DOC_LANDAUCTION); registry.setDocType(DynamoDBConstants.DOC_LANDAUCTION);
registry.setAttribValue(attrib); registry.setAttribValue(attrib);
@@ -97,13 +102,12 @@ public class LandAuctionRegistryRepositoryImpl extends BaseDynamoDBRepository<La
dynamodbHistoryLogService.insertHistoryLog( dynamodbHistoryLogService.insertHistoryLog(
HISTORYTYPE.LAND_AUCTION_ADD, HISTORYTYPE.LAND_AUCTION_ADD,
HISTORYTYPE.LAND_AUCTION_ADD.name(), HISTORYTYPE.LAND_AUCTION_ADD.name(),
registry, registry
CommonUtils.getAdmin().getEmail(),
CommonUtils.getClientIp()
); );
save(registry); save(registry);
}catch (Exception e){ }catch (Exception e){
log.error("Insert LandAuctionRegistry Error: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage()); throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
} }
} }
@@ -112,7 +116,7 @@ public class LandAuctionRegistryRepositoryImpl extends BaseDynamoDBRepository<La
public void updateAuction(LandRequest landRequest) { public void updateAuction(LandRequest landRequest) {
try { try {
Key key = Key.builder() Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_LAND_AUCTION) .partitionValue(DynamoDBConstants.PK_KEY_LAND_AUCTION_REGISTRY)
.sortValue(String.format("%s#%s", landRequest.getLandId(), landRequest.getAuctionSeq())) .sortValue(String.format("%s#%s", landRequest.getLandId(), landRequest.getAuctionSeq()))
.build(); .build();
@@ -139,12 +143,11 @@ public class LandAuctionRegistryRepositoryImpl extends BaseDynamoDBRepository<La
HISTORYTYPE.LAND_AUCTION_UPDATE, HISTORYTYPE.LAND_AUCTION_UPDATE,
HISTORYTYPE.LAND_AUCTION_UPDATE.name(), HISTORYTYPE.LAND_AUCTION_UPDATE.name(),
beforeDoc, beforeDoc,
afterDoc, afterDoc
CommonUtils.getAdmin().getEmail(),
CommonUtils.getClientIp()
); );
} }
}catch (Exception e){ }catch (Exception e){
log.error("Update LandAuctionRegistry Error: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage()); throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
} }
} }
@@ -153,7 +156,7 @@ public class LandAuctionRegistryRepositoryImpl extends BaseDynamoDBRepository<La
public void cancelAuction(Integer landId, Integer auctionSeq) { public void cancelAuction(Integer landId, Integer auctionSeq) {
try { try {
Key key = Key.builder() Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_LAND_AUCTION) .partitionValue(DynamoDBConstants.PK_KEY_LAND_AUCTION_REGISTRY)
.sortValue(String.format("%s#%s", landId, auctionSeq)) .sortValue(String.format("%s#%s", landId, auctionSeq))
.build(); .build();
@@ -178,14 +181,46 @@ public class LandAuctionRegistryRepositoryImpl extends BaseDynamoDBRepository<La
HISTORYTYPE.LAND_AUCTION_UPDATE, HISTORYTYPE.LAND_AUCTION_UPDATE,
HISTORYTYPE.LAND_AUCTION_UPDATE.name(), HISTORYTYPE.LAND_AUCTION_UPDATE.name(),
beforeDoc, beforeDoc,
afterDoc, afterDoc
CommonUtils.getAdmin().getEmail(),
CommonUtils.getClientIp()
); );
} }
}catch (Exception e){ }catch (Exception e){
log.error("Cancel LandAuctionRegistry Error: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage()); throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
} }
} }
@Override
public DynamodbOperationResult initLandAuctionRegistry(Integer landId, Integer auctionSeq) {
try{
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_LAND_AUCTION_REGISTRY)
.sortValue(String.format("%s#%s", landId, auctionSeq))
.build();
LandAuctionRegistryDoc doc = findById(key);
if(doc != null) {
Key detailKey = Key.builder()
.partitionValue(doc.getPK())
.sortValue(doc.getSK())
.build();
delete(detailKey);
log.info("LandAuctionRegistryDoc Delete Success: {}", objectMapper.writeValueAsString(doc));
dynamodbHistoryLogService.deleteHistoryLog(
HISTORYTYPE.LAND_AUCTION_INITIALIZE,
HISTORYTYPE.LAND_AUCTION_INITIALIZE.name(),
doc
);
return new DynamodbOperationResult(true, "", doc);
}
return new DynamodbOperationResult(true, "null", doc);
}catch (Exception e){
log.error("Init LandAuctionRegistry Error: {}", e.getMessage());
return new DynamodbOperationResult(false, e.getMessage(), null);
}
}
} }

View File

@@ -1,8 +1,10 @@
package com.caliverse.admin.dynamodb.repository.Impl; package com.caliverse.admin.dynamodb.repository.Impl;
import com.caliverse.admin.domain.entity.HISTORYTYPE;
import com.caliverse.admin.domain.request.LandRequest; import com.caliverse.admin.domain.request.LandRequest;
import com.caliverse.admin.dynamodb.domain.atrrib.LandAttrib; import com.caliverse.admin.dynamodb.domain.atrrib.LandAttrib;
import com.caliverse.admin.dynamodb.domain.doc.LandDoc; import com.caliverse.admin.dynamodb.domain.doc.LandDoc;
import com.caliverse.admin.dynamodb.entity.DynamodbOperationResult;
import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository; import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository;
import com.caliverse.admin.dynamodb.repository.LandRepository; import com.caliverse.admin.dynamodb.repository.LandRepository;
import com.caliverse.admin.dynamodb.service.DynamoDBOperations; import com.caliverse.admin.dynamodb.service.DynamoDBOperations;
@@ -10,6 +12,7 @@ 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.constants.DynamoDBConstants; import com.caliverse.admin.global.common.constants.DynamoDBConstants;
import com.caliverse.admin.global.common.exception.RestApiException; 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.caliverse.admin.history.service.DynamodbHistoryLogService;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
@@ -19,6 +22,8 @@ import software.amazon.awssdk.enhanced.dynamodb.Key;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import static com.caliverse.admin.global.common.utils.CommonUtils.convertUTCDate;
@Component @Component
@Slf4j @Slf4j
public class LandRepositoryImpl extends BaseDynamoDBRepository<LandDoc> implements LandRepository { public class LandRepositoryImpl extends BaseDynamoDBRepository<LandDoc> implements LandRepository {
@@ -49,46 +54,164 @@ public class LandRepositoryImpl extends BaseDynamoDBRepository<LandDoc> implemen
try { try {
LocalDateTime nowDate = LocalDateTime.now(); LocalDateTime nowDate = LocalDateTime.now();
// String pk = int land_id = landRequest.getLandId();
// String guid = landRequest.getUserGuid();
// LandAttrib attrib = new LandAttrib();
// attrib.setLandName(); String pk = DynamoDBConstants.PK_KEY_LAND + land_id;
// attrib.setMailId(event.getId().intValue());
// attrib.setStartTime(convertUTCDate(event.getStartDt())); LandAttrib attrib = new LandAttrib();
// attrib.setEndTime(convertUTCDate(event.getEndDt())); attrib.setAttribType(DynamoDBConstants.ATTRIB_LAND);
// attrib.setSenderNickName(createSystemMessages(event.getMailList(), DynamodbUtil::getSenderByLanguage)); attrib.setLandName("");
// attrib.setTitle(createSystemMessages(event.getMailList(), Message::getTitle)); attrib.setLandMetaId(land_id);
// attrib.setText(createSystemMessages(event.getMailList(), Message::getContent)); attrib.setDescription("");
// attrib.setItemList(createMailItems(event.getItemList())); attrib.setOwnerUserGuid(guid);
//
// LandDoc doc = new LandDoc(); LandDoc doc = new LandDoc();
// doc.setPK(DynamoDBConstants.PK_KEY_LAND + landRequest.getLandId()); doc.setPK(pk);
// doc.setSK(String.valueOf(event.getId())); doc.setSK(DynamoDBConstants.EMPTY);
// doc.setDocType(DynamoDBConstants.DOC_SYSTEMMAIL); doc.setDocType(DynamoDBConstants.DOC_LAND);
// doc.setAttribValue(objectMapper.writeValueAsString(attrib)); doc.setAttribValue(objectMapper.writeValueAsString(attrib));
// doc.setCreatedDateTime(convertUTCDate(nowDate)); doc.setCreatedDateTime(convertUTCDate(nowDate));
// doc.setUpdatedDateTime(convertUTCDate(nowDate)); doc.setUpdatedDateTime(convertUTCDate(nowDate));
// doc.setDeletedDateTime(DynamoDBConstants.MIN_DATE); doc.setDeletedDateTime(DynamoDBConstants.MIN_DATE);
// doc.setRestoredDateTime(DynamoDBConstants.MIN_DATE); doc.setRestoredDateTime(DynamoDBConstants.MIN_DATE);
//
// save(doc); save(doc);
//
// dynamodbHistoryLogService.insertHistoryLog( log.info("LandDoc Insert Success: {}", objectMapper.writeValueAsString(doc));
// HISTORYTYPE.EVENT_ADD,
// HISTORYTYPE.EVENT_ADD.name(), dynamodbHistoryLogService.insertHistoryLog(
// doc, HISTORYTYPE.LAND_OWNER_CHANGE_ADD,
// CommonUtils.getAdmin().getEmail(), HISTORYTYPE.LAND_OWNER_CHANGE_ADD.name(),
// CommonUtils.getClientIp() doc
// ); );
}catch (Exception e){ }catch (Exception e){
log.error("insert Error: {}", e.getMessage()); log.error("insertLand Error: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage()); throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
} }
} }
@Override @Override
public void updateLand(LandRequest landRequest) { public void updateLand(LandRequest landRequest) {
LocalDateTime nowDate = LocalDateTime.now();
int land_id = landRequest.getLandId();
String guid = landRequest.getUserGuid();
try {
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_LAND + land_id)
.sortValue(DynamoDBConstants.EMPTY)
.build();
LandDoc beforeDoc = findById(key);
if (beforeDoc != null) {
LandDoc afterDoc = deepCopy(beforeDoc, LandDoc.class);
LandAttrib attrib = objectMapper.readValue(afterDoc.getAttribValue(), LandAttrib.class);
attrib.setDescription("");
attrib.setOwnerUserGuid(guid);
afterDoc.setAttribValue(objectMapper.writeValueAsString(attrib));
afterDoc.setUpdatedDateTime(CommonUtils.convertUTCDate(nowDate));
update(afterDoc);
log.info("LandDoc Update Success: {}", objectMapper.writeValueAsString(afterDoc));
dynamodbHistoryLogService.updateHistoryLog(
HISTORYTYPE.LAND_OWNER_CHANGE_UPDATE,
HISTORYTYPE.LAND_OWNER_CHANGE_UPDATE.name(),
beforeDoc,
afterDoc
);
}
}catch (Exception e){
log.error("updateLand Error: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
}
@Override
public DynamodbOperationResult initLandOwner(int landId) {
LocalDateTime nowDate = LocalDateTime.now();
try {
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_LAND + landId)
.sortValue(DynamoDBConstants.EMPTY)
.build();
LandDoc beforeDoc = findById(key);
if (beforeDoc != null) {
LandDoc afterDoc = deepCopy(beforeDoc, LandDoc.class);
LandAttrib attrib = objectMapper.readValue(afterDoc.getAttribValue(), LandAttrib.class);
attrib.setOwnerUserGuid("");
afterDoc.setAttribValue(objectMapper.writeValueAsString(attrib));
afterDoc.setUpdatedDateTime(CommonUtils.convertUTCDate(nowDate));
update(afterDoc);
log.info("LandDoc Owned Init Update Success: {}", objectMapper.writeValueAsString(afterDoc));
dynamodbHistoryLogService.updateHistoryLog(
HISTORYTYPE.LAND_OWNED_INITIALIZE,
HISTORYTYPE.LAND_OWNED_INITIALIZE.name(),
beforeDoc,
afterDoc
);
return new DynamodbOperationResult(true, "",afterDoc);
}
return new DynamodbOperationResult(false, "null",null);
}catch (Exception e){
log.error("Init Land Owner Error: {}", e.getMessage());
return new DynamodbOperationResult(false, e.getMessage(),null);
}
}
@Override
public DynamodbOperationResult initLandDesc(int landId) {
LocalDateTime nowDate = LocalDateTime.now();
try {
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_LAND + landId)
.sortValue(DynamoDBConstants.EMPTY)
.build();
LandDoc beforeDoc = findById(key);
if (beforeDoc != null) {
LandDoc afterDoc = deepCopy(beforeDoc, LandDoc.class);
LandAttrib attrib = objectMapper.readValue(afterDoc.getAttribValue(), LandAttrib.class);
attrib.setDescription("");
attrib.setLandName("");
afterDoc.setAttribValue(objectMapper.writeValueAsString(attrib));
afterDoc.setUpdatedDateTime(CommonUtils.convertUTCDate(nowDate));
update(afterDoc);
log.info("LandDoc Desc Init Update Success: {}", objectMapper.writeValueAsString(afterDoc));
dynamodbHistoryLogService.updateHistoryLog(
HISTORYTYPE.LAND_DESC_INITIALIZE,
HISTORYTYPE.LAND_DESC_INITIALIZE.name(),
beforeDoc,
afterDoc
);
return new DynamodbOperationResult(true, "Success",afterDoc);
}
return new DynamodbOperationResult(false, "null",beforeDoc);
}catch (Exception e){
log.error("Init Land Desc Error: {}", e.getMessage());
return new DynamodbOperationResult(false, e.getMessage(),null);
}
} }
} }

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

@@ -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.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;
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.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;
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 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<MailItemAttrib> 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("-",""));
MailAttrib attrib = new MailAttrib();
attrib.setMailGuid(sk);
attrib.setIsRead(CommonConstants.FALSE);
attrib.setIsGetItem(CommonConstants.FALSE);
attrib.setIsSystemMail(CommonConstants.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.setIsTextByMetaData(CommonConstants.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(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<MailDoc> 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<MailDoc> mailList = findByPrefix(pk, sortKeyPrefix);
return mailList;
}
@Override
public PageResult<MailDoc> 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

@@ -32,6 +32,8 @@ public class NicknameRepositoryImpl extends BaseDynamoDBRepository<NicknameDoc>
NicknameDoc doc = findById(key); NicknameDoc doc = findById(key);
if (doc == null) return null;
try { try {
return objectMapper.readValue(doc.getAttribValue(), NicknameAttrib.class); return objectMapper.readValue(doc.getAttribValue(), NicknameAttrib.class);
} catch (JsonProcessingException e) { } catch (JsonProcessingException e) {

View File

@@ -0,0 +1,139 @@
package com.caliverse.admin.dynamodb.repository.Impl;
import com.caliverse.admin.domain.entity.HISTORYTYPE;
import com.caliverse.admin.dynamodb.domain.atrrib.OwnedBuildingAttrib;
import com.caliverse.admin.dynamodb.domain.doc.OwnedBuildingDoc;
import com.caliverse.admin.dynamodb.entity.EOwnedType;
import com.caliverse.admin.dynamodb.entity.DynamodbOperationResult;
import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository;
import com.caliverse.admin.dynamodb.repository.OwnedBuildingRepository;
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 software.amazon.awssdk.enhanced.dynamodb.Key;
import java.time.LocalDateTime;
import static com.caliverse.admin.global.common.utils.CommonUtils.convertUTCDate;
@Component
@Slf4j
public class OwnedBuildingRepositoryImpl extends BaseDynamoDBRepository<OwnedBuildingDoc> implements OwnedBuildingRepository {
public OwnedBuildingRepositoryImpl(DynamoDBOperations operations, DynamodbHistoryLogService dynamodbHistoryLogService, ObjectMapper objectMapper) {
super(operations, OwnedBuildingDoc.class, dynamodbHistoryLogService, objectMapper);
}
@Override
public OwnedBuildingDoc findOwnedBuilding(String guid, Integer buildingId) {
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_OWNED_BUILDING + guid)
.sortValue(String.valueOf(buildingId))
.build();
return findById(key);
}
@Override
public void insert(String guid, Integer buildingId) {
OwnedBuildingDoc ownedBuilding = findOwnedBuilding(guid, buildingId);
if (ownedBuilding != null){
log.warn("OwnedBuilding guid: {}, buildingId: {} Exist", guid, buildingId);
return;
}
try {
LocalDateTime nowDate = LocalDateTime.now();
String pk = DynamoDBConstants.PK_KEY_OWNED_BUILDING + guid;
OwnedBuildingAttrib attrib = new OwnedBuildingAttrib();
attrib.setAttribType(DynamoDBConstants.ATTRIB_OWNED_BUILDING);
attrib.setBuildingMetaId(buildingId);
attrib.setOwnedType(EOwnedType.Own.getValue());
OwnedBuildingDoc doc = new OwnedBuildingDoc();
doc.setPK(pk);
doc.setSK(String.valueOf(buildingId));
doc.setDocType(DynamoDBConstants.DOC_OWNED_BUILDING);
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);
log.info("OwnedBuildingDoc Insert Success: {}", objectMapper.writeValueAsString(doc));
dynamodbHistoryLogService.insertHistoryLog(
HISTORYTYPE.LAND_OWNER_CHANGE_ADD,
HISTORYTYPE.LAND_OWNER_CHANGE_ADD.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 delete(String guid, Integer buildingId) {
try{
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_OWNED_BUILDING + guid)
.sortValue(String.valueOf(buildingId))
.build();
OwnedBuildingDoc doc = findById(key);
delete(key);
log.info("OwnedBuildingDoc Delete Success: {}", objectMapper.writeValueAsString(doc));
dynamodbHistoryLogService.deleteHistoryLog(
HISTORYTYPE.LAND_OWNER_CHANGE_UPDATE,
HISTORYTYPE.LAND_OWNER_CHANGE_UPDATE.name(),
doc
);
}catch (Exception e){
log.error("delete Error: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
}
@Override
public DynamodbOperationResult initOwnedBuilding(String guid, Integer buildingId) {
try{
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_OWNED_BUILDING + guid)
.sortValue(String.valueOf(buildingId))
.build();
OwnedBuildingDoc doc = findById(key);
delete(key);
log.info("OwnedBuildingDoc Delete Success: {}", objectMapper.writeValueAsString(doc));
dynamodbHistoryLogService.deleteHistoryLog(
HISTORYTYPE.LAND_OWNED_INITIALIZE,
HISTORYTYPE.LAND_OWNED_INITIALIZE.name(),
doc
);
return new DynamodbOperationResult(true, "", doc);
}catch (Exception e){
log.error("Init OwnedBuilding Error: {}", e.getMessage());
return new DynamodbOperationResult(false, e.getMessage(), null);
}
}
}

View File

@@ -0,0 +1,137 @@
package com.caliverse.admin.dynamodb.repository.Impl;
import com.caliverse.admin.domain.entity.HISTORYTYPE;
import com.caliverse.admin.dynamodb.domain.atrrib.OwnedLandAttrib;
import com.caliverse.admin.dynamodb.domain.doc.OwnedLandDoc;
import com.caliverse.admin.dynamodb.entity.EOwnedType;
import com.caliverse.admin.dynamodb.entity.DynamodbOperationResult;
import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository;
import com.caliverse.admin.dynamodb.repository.OwnedLandRepository;
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 software.amazon.awssdk.enhanced.dynamodb.Key;
import java.time.LocalDateTime;
import static com.caliverse.admin.global.common.utils.CommonUtils.convertUTCDate;
@Component
@Slf4j
public class OwnedLandRepositoryImpl extends BaseDynamoDBRepository<OwnedLandDoc> implements OwnedLandRepository {
public OwnedLandRepositoryImpl(DynamoDBOperations operations, DynamodbHistoryLogService dynamodbHistoryLogService, ObjectMapper objectMapper) {
super(operations, OwnedLandDoc.class, dynamodbHistoryLogService, objectMapper);
}
@Override
public OwnedLandDoc findOwnedLand(String guid, Integer landId) {
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_OWNED_LAND + guid)
.sortValue(String.valueOf(landId))
.build();
return findById(key);
}
@Override
public void insert(String guid, Integer landId) {
OwnedLandDoc ownedLand = findOwnedLand(guid, landId);
if (ownedLand != null) {
log.warn("OwnedLand guid: {}, landId: {} Exist", guid, landId);
return;
}
try {
LocalDateTime nowDate = LocalDateTime.now();
String pk = DynamoDBConstants.PK_KEY_OWNED_LAND + guid;
OwnedLandAttrib attrib = new OwnedLandAttrib();
attrib.setAttribType(DynamoDBConstants.ATTRIB_OWNED_LAND);
attrib.setLandMetaId(landId);
attrib.setOwnedType(EOwnedType.Own.getValue());
OwnedLandDoc doc = new OwnedLandDoc();
doc.setPK(pk);
doc.setSK(String.valueOf(landId));
doc.setDocType(DynamoDBConstants.DOC_OWNED_LAND);
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);
log.info("OwnedLandDoc Insert Success: {}", objectMapper.writeValueAsString(doc));
dynamodbHistoryLogService.insertHistoryLog(
HISTORYTYPE.LAND_OWNER_CHANGE_ADD,
HISTORYTYPE.LAND_OWNER_CHANGE_ADD.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 delete(String guid, Integer landId) {
try {
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_OWNED_LAND + guid)
.sortValue(String.valueOf(landId))
.build();
OwnedLandDoc doc = findById(key);
delete(key);
log.info("OwnedLandDoc Delete Success: {}", objectMapper.writeValueAsString(doc));
dynamodbHistoryLogService.deleteHistoryLog(
HISTORYTYPE.LAND_OWNER_CHANGE_UPDATE,
HISTORYTYPE.LAND_OWNER_CHANGE_UPDATE.name(),
doc
);
}catch (Exception e){
log.error("delete Error: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
}
@Override
public DynamodbOperationResult initOwnedLand(String guid, Integer landId) {
try {
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_OWNED_LAND + guid)
.sortValue(String.valueOf(landId))
.build();
OwnedLandDoc doc = findById(key);
delete(key);
log.info("OwnedLandDoc Delete Success: {}", objectMapper.writeValueAsString(doc));
dynamodbHistoryLogService.deleteHistoryLog(
HISTORYTYPE.LAND_OWNER_CHANGE_UPDATE,
HISTORYTYPE.LAND_OWNER_CHANGE_UPDATE.name(),
doc
);
return new DynamodbOperationResult(true, "", doc);
}catch (Exception e){
log.error("Init OwnedLand Error: {}", e.getMessage());
return new DynamodbOperationResult(false, e.getMessage(), null);
}
}
}

View File

@@ -63,9 +63,7 @@ public class SystemMetaMailRepositoryImpl extends BaseDynamoDBRepository<SystemM
dynamodbHistoryLogService.insertHistoryLog( dynamodbHistoryLogService.insertHistoryLog(
HISTORYTYPE.EVENT_ADD, HISTORYTYPE.EVENT_ADD,
HISTORYTYPE.EVENT_ADD.name(), HISTORYTYPE.EVENT_ADD.name(),
doc, doc
CommonConstants.SCHEDULE,
""
); );
}catch (Exception e){ }catch (Exception e){

View File

@@ -31,6 +31,7 @@ public class UserBaseRepositoryImpl extends BaseDynamoDBRepository<UserBaseDoc>
.build(); .build();
UserBaseDoc doc = findById(key); UserBaseDoc doc = findById(key);
if(doc == null) return null;
try { try {
return objectMapper.readValue(doc.getAttribValue(), UserBaseAttrib.class); return objectMapper.readValue(doc.getAttribValue(), UserBaseAttrib.class);

View File

@@ -2,8 +2,10 @@ package com.caliverse.admin.dynamodb.repository;
import com.caliverse.admin.domain.request.LandRequest; import com.caliverse.admin.domain.request.LandRequest;
import com.caliverse.admin.dynamodb.domain.doc.LandAuctionActivityDoc; import com.caliverse.admin.dynamodb.domain.doc.LandAuctionActivityDoc;
import com.caliverse.admin.dynamodb.entity.DynamodbOperationResult;
public interface LandAuctionActivityRepository extends DynamoDBRepository<LandAuctionActivityDoc> { public interface LandAuctionActivityRepository extends DynamoDBRepository<LandAuctionActivityDoc> {
void upsertActivity(LandRequest landRequest); void upsertActivity(LandRequest landRequest);
int findAuctionNumber(Integer landId); int findAuctionNumber(Integer landId);
DynamodbOperationResult initLandAuctionActivity(Integer landId, Integer auctionSeq);
} }

View File

@@ -3,8 +3,10 @@ package com.caliverse.admin.dynamodb.repository;
import com.caliverse.admin.domain.request.LandRequest; import com.caliverse.admin.domain.request.LandRequest;
import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionHighestBidUserAttrib; import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionHighestBidUserAttrib;
import com.caliverse.admin.dynamodb.domain.doc.LandAuctionHighestBidUserDoc; import com.caliverse.admin.dynamodb.domain.doc.LandAuctionHighestBidUserDoc;
import com.caliverse.admin.dynamodb.entity.DynamodbOperationResult;
public interface LandAuctionHighestBidUserRepository extends DynamoDBRepository<LandAuctionHighestBidUserDoc> { public interface LandAuctionHighestBidUserRepository extends DynamoDBRepository<LandAuctionHighestBidUserDoc> {
LandAuctionHighestBidUserAttrib findHighestBidUserAttrib(Integer landId, Integer auctionSeq); LandAuctionHighestBidUserAttrib findHighestBidUserAttrib(Integer landId, Integer auctionSeq);
void insertHighestBidUser(LandRequest landRequest); void insertHighestBidUser(LandRequest landRequest);
DynamodbOperationResult initLandAuctionHighestBidUser(Integer landId, Integer auctionSeq);
} }

View File

@@ -0,0 +1,8 @@
package com.caliverse.admin.dynamodb.repository;
import com.caliverse.admin.dynamodb.domain.doc.LandAuctionRecordDoc;
import com.caliverse.admin.dynamodb.entity.DynamodbOperationResult;
public interface LandAuctionRecordRepository extends DynamoDBRepository<LandAuctionRecordDoc> {
DynamodbOperationResult initLandAuctionRecord(Integer landId);
}

View File

@@ -0,0 +1,8 @@
package com.caliverse.admin.dynamodb.repository;
import com.caliverse.admin.dynamodb.domain.doc.LandAuctionRefundBidPriceDoc;
import com.caliverse.admin.dynamodb.entity.DynamodbOperationResult;
public interface LandAuctionRefundBidPriceRepository extends DynamoDBRepository<LandAuctionRefundBidPriceDoc> {
DynamodbOperationResult initLandAuctionRefundBidPrice(String guid, Integer landId, Integer auctionSeq);
}

View File

@@ -3,6 +3,7 @@ package com.caliverse.admin.dynamodb.repository;
import com.caliverse.admin.domain.request.LandRequest; import com.caliverse.admin.domain.request.LandRequest;
import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionRegistryAttrib; import com.caliverse.admin.dynamodb.domain.atrrib.LandAuctionRegistryAttrib;
import com.caliverse.admin.dynamodb.domain.doc.LandAuctionRegistryDoc; import com.caliverse.admin.dynamodb.domain.doc.LandAuctionRegistryDoc;
import com.caliverse.admin.dynamodb.entity.DynamodbOperationResult;
public interface LandAuctionRegistryRepository extends DynamoDBRepository<LandAuctionRegistryDoc> { public interface LandAuctionRegistryRepository extends DynamoDBRepository<LandAuctionRegistryDoc> {
LandAuctionRegistryAttrib findRegistryAttrib(Integer landId, Integer auctionSeq); LandAuctionRegistryAttrib findRegistryAttrib(Integer landId, Integer auctionSeq);
@@ -10,4 +11,5 @@ public interface LandAuctionRegistryRepository extends DynamoDBRepository<LandAu
void insertAuction(LandRequest landRequest); void insertAuction(LandRequest landRequest);
void updateAuction(LandRequest landRequest); void updateAuction(LandRequest landRequest);
int findAuctionNumber(Integer landId); int findAuctionNumber(Integer landId);
DynamodbOperationResult initLandAuctionRegistry(Integer landId, Integer auctionSeq);
} }

View File

@@ -3,9 +3,12 @@ package com.caliverse.admin.dynamodb.repository;
import com.caliverse.admin.domain.request.LandRequest; import com.caliverse.admin.domain.request.LandRequest;
import com.caliverse.admin.dynamodb.domain.atrrib.LandAttrib; import com.caliverse.admin.dynamodb.domain.atrrib.LandAttrib;
import com.caliverse.admin.dynamodb.domain.doc.LandDoc; import com.caliverse.admin.dynamodb.domain.doc.LandDoc;
import com.caliverse.admin.dynamodb.entity.DynamodbOperationResult;
public interface LandRepository extends DynamoDBRepository<LandDoc> { public interface LandRepository extends DynamoDBRepository<LandDoc> {
LandAttrib findLandAttrib(Integer landId); LandAttrib findLandAttrib(Integer landId);
void insertLand(LandRequest landRequest); void insertLand(LandRequest landRequest);
void updateLand(LandRequest landRequest); void updateLand(LandRequest landRequest);
DynamodbOperationResult initLandOwner(int landId);
DynamodbOperationResult initLandDesc(int landId);
} }

Some files were not shown because too many files have changed in this diff Show More