유저부분 신규 dynamodb domain 방식으로변경

아이템 처리 관련 추가
This commit is contained in:
2025-05-01 07:09:05 +09:00
parent c8f76004ed
commit 0cd0853a63
44 changed files with 874 additions and 890 deletions

View File

@@ -1,16 +1,18 @@
package com.caliverse.admin.domain.service;
import java.util.List;
import java.util.Map;
import com.caliverse.admin.domain.adminlog.AdminItemDeleteLog;
import com.caliverse.admin.domain.adminlog.IAdminLog;
import com.caliverse.admin.domain.dao.admin.HistoryMapper;
import com.caliverse.admin.domain.entity.ItemList;
import com.caliverse.admin.domain.datacomponent.MetaDataHandler;
import com.caliverse.admin.domain.entity.ITEMLARGETYPE;
import com.caliverse.admin.domain.entity.SEARCHTYPE;
import com.caliverse.admin.domain.response.ItemDeleteResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.caliverse.admin.domain.response.UsersResponse;
import com.caliverse.admin.dynamodb.domain.atrrib.ItemAttrib;
import com.caliverse.admin.dynamodb.domain.doc.ItemDoc;
import com.caliverse.admin.dynamodb.dto.PageResult;
import com.caliverse.admin.dynamodb.service.DynamodbItemService;
import com.caliverse.admin.dynamodb.service.DynamodbUserService;
import com.caliverse.admin.global.common.code.ErrorCode;
import com.caliverse.admin.global.common.utils.CommonUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.caliverse.admin.domain.request.ItemsRequest;
@@ -21,33 +23,75 @@ import com.caliverse.admin.global.common.code.SuccessCode;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
@Slf4j
public class ItemsService {
private static final Logger logger = LoggerFactory.getLogger(ItemsService.class);
private final DynamoDBService dynamoDBService;
private final UserGameSessionService userGameSessionService;
private final DynamoDBQueryServiceBase dynamoDBQueryServiceBase;
private final HistoryMapper historyMapper;
private final DynamodbUserService dynamodbUserService;
private final DynamodbItemService dynamodbItemService;
private final MetaDataHandler metaDataHandler;
public ItemsResponse findItems(ItemsRequest itemDeleteRequest){
String guid = "";
String searchData = itemDeleteRequest.getSearchData();
// 아이템 정보 조회 GUID,item ID, item name
public ItemsResponse findItems(Map<String,String> requestParam){
String searchType = requestParam.get("search_type").toString();
String search_key = requestParam.get("search_key").toString().trim();
String guid = search_key;
if(searchType.equals(SEARCHTYPE.NAME.name())){
guid = dynamoDBService.getNickNameByGuid(search_key);
if(itemDeleteRequest.getSearchType().equals(SEARCHTYPE.NAME)){
guid = dynamodbUserService.getNameByGuid(searchData);
}else{
guid = dynamodbUserService.isUser(searchData) ? searchData: "";
}
List<ItemList> itemList = dynamoDBService.getItems(guid);
if(guid.isEmpty()){
return ItemsResponse.builder()
.status(CommonCode.ERROR.getHttpStatus())
.result(CommonCode.ERROR.getResult())
.resultData(ItemsResponse.ResultData.builder()
.message(ErrorCode.DYNAMODB_NOT_USER.name())
.build())
.build();
}
PageResult<ItemDoc> itemPageResult = dynamodbItemService.getItems(guid, itemDeleteRequest.getPageKey());
List<ItemsResponse.Item> items = new ArrayList<>();
String finalGuid = guid;
itemPageResult.getItems().forEach(itemDoc -> {
ItemAttrib attrib = CommonUtils.stringByObject(itemDoc.getAttribValue(), ItemAttrib.class);
int itemId = attrib.getItemMetaId();
String itemType = metaDataHandler.getMetaItemLargeTypeData(itemId);
ItemsResponse.Item item = ItemsResponse.Item.builder()
.userGuid(finalGuid)
.itemGuid(attrib.getItemGuid())
.id(itemId)
.itemId(itemId)
.itemName(metaDataHandler.getTextStringData(metaDataHandler.getMetaItemNameData(itemId)))
.count(attrib.getItemStackCount())
.level(attrib.getLevel())
.equipedPos(attrib.getEquipedPos())
.equipType(attrib.getEquipedIvenType())
.itemType(ITEMLARGETYPE.valueOf(itemType))
.createDt(itemDoc.getCreatedDateTime())
.build();
items.add(item);
});
return ItemsResponse.builder()
.resultData(ItemsResponse.ResultData.builder()
.list(itemList)
.itemList(items)
.pageKey(itemPageResult.getLastEvaluatedKey() == null ?
null :
itemPageResult.getLastEvaluatedKey().entrySet().stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
entry -> entry.getValue().s()
))
)
.build())
.status(CommonCode.SUCCESS.getHttpStatus())
.result(CommonCode.SUCCESS.getResult())
@@ -57,19 +101,20 @@ public class ItemsService {
@Transactional(transactionManager = "transactionManager")
public ItemDeleteResponse postItemDelete(ItemsRequest itemDeleteRequest){
var userGuid = itemDeleteRequest.getUserGuid();
var itemGuid = itemDeleteRequest.getItemGuid();
var itemCount = itemDeleteRequest.getItemCount();
String userGuid = itemDeleteRequest.getUserGuid();
String itemGuid = itemDeleteRequest.getItemGuid();
int itemCount = itemDeleteRequest.getItemCount();
int deleteCount = itemDeleteRequest.getDeleteCount();
//UserKick
userGameSessionService.kickUserSession(userGuid, "item delete");
//ItemDelete
dynamoDBQueryServiceBase.deleteUserItem(userGuid, itemGuid);
//로그 기록
IAdminLog adminLog = new AdminItemDeleteLog(userGuid, itemGuid, itemCount);
adminLog.saveLogToDB();
if(deleteCount >= itemCount){
dynamodbItemService.deleteItem(userGuid, itemGuid);
}else{
int cnt = itemCount - deleteCount;
dynamodbItemService.updateItemStack(userGuid, itemGuid, cnt);
}
return ItemDeleteResponse.builder()
.status(CommonCode.SUCCESS.getHttpStatus())