유저부분 신규 dynamodb domain 방식으로변경
아이템 처리 관련 추가
This commit is contained in:
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user