랜드 정보 조회
This commit is contained in:
@@ -3,6 +3,7 @@ package com.caliverse.admin.domain.service;
|
||||
import com.caliverse.admin.domain.dao.admin.LandMapper;
|
||||
import com.caliverse.admin.domain.datacomponent.MetaDataHandler;
|
||||
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.LandAuctionRegistryAttrib;
|
||||
import com.caliverse.admin.domain.entity.metadata.MetaBuildingData;
|
||||
@@ -11,9 +12,11 @@ import com.caliverse.admin.domain.request.LandRequest;
|
||||
import com.caliverse.admin.domain.response.LandResponse;
|
||||
import com.caliverse.admin.dynamodb.service.DynamodbLandAuctionService;
|
||||
import com.caliverse.admin.dynamodb.service.DynamodbLandService;
|
||||
import com.caliverse.admin.dynamodb.service.DynamodbUserService;
|
||||
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.CommonConstants;
|
||||
import com.caliverse.admin.global.common.constants.MysqlConstants;
|
||||
import com.caliverse.admin.global.common.utils.CommonUtils;
|
||||
import com.caliverse.admin.history.service.MysqlHistoryLogService;
|
||||
@@ -26,11 +29,12 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.time.format.DateTimeParseException;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import static com.caliverse.admin.global.common.utils.CommonUtils.convertIsoByDatetime;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@@ -39,6 +43,7 @@ public class LandService {
|
||||
// private final DynamoDBService dynamoDBService;
|
||||
private final DynamodbLandAuctionService dynamodbLandAuctionService;
|
||||
private final DynamodbLandService dynamodbLandService;
|
||||
private final DynamodbUserService dynamodbUserService;
|
||||
|
||||
private final LandMapper landMapper;
|
||||
private final MetaDataHandler metaDataHandler;
|
||||
@@ -46,7 +51,113 @@ public class LandService {
|
||||
private final ObjectMapper objectMapper;
|
||||
private final MysqlHistoryLogService mysqlHistoryLogService;
|
||||
|
||||
// 랜드 정보 조회
|
||||
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<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))
|
||||
.filter(info -> {
|
||||
boolean result = true;
|
||||
|
||||
|
||||
return result;
|
||||
})
|
||||
.sorted(orderBy.equals("DESC") ?
|
||||
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 - 1 : page;
|
||||
|
||||
List<LandInfo> pagedList = (totalItems == 0) ?
|
||||
new ArrayList<>() :
|
||||
list.subList(page * size, Math.min((page * 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){
|
||||
int landId = data.getLandId();
|
||||
LandAttrib land = dynamodbLandService.getLandInfo(landId);
|
||||
String ownerGuid = land == null ? "" : land.getOwnerUserGuid();
|
||||
String ownerName = data.getEditor().equals(CommonConstants.CALIVERSE_CODE) ? CommonConstants.CALIVERSE_NAME :
|
||||
ownerGuid.isEmpty() ? "" : dynamodbUserService.getGuidByName(ownerGuid);
|
||||
String ownerDate = ownerGuid.isEmpty() ? null : dynamodbLandService.getLandOwnerCreateDate(ownerGuid, landId); //랜드 소유 일자
|
||||
int buildingSocket = buildingData.stream()
|
||||
.filter(building -> building.getBuildingId().equals(data.getBuildingId()))
|
||||
.findFirst().get()
|
||||
.getInstanceSocket();
|
||||
|
||||
String parsedDate = null;
|
||||
if (ownerDate != null && !ownerDate.isEmpty()) {
|
||||
try {
|
||||
parsedDate = convertIsoByDatetime(ownerDate);
|
||||
} catch (DateTimeParseException e) {
|
||||
log.warn("owner_date parsing fail: " + ownerDate, e);
|
||||
}
|
||||
}
|
||||
|
||||
return LandInfo.builder()
|
||||
.id((long)landId)
|
||||
.landId(landId)
|
||||
.landName(metaDataHandler.getTextStringData(data.getLandName()))
|
||||
.landDesc(metaDataHandler.getTextStringData(data.getLandDesc()))
|
||||
.nonAuction(data.isNonAuction())
|
||||
.landSize(data.getLandSize())
|
||||
.landType(data.getLandType())
|
||||
.socket(buildingSocket)
|
||||
.ownerUserGuid(ownerGuid)
|
||||
.ownerUserNickname(ownerName)
|
||||
.ownerUserCreateDate(parsedDate)
|
||||
.build();
|
||||
}
|
||||
|
||||
// 랜드 메타데이터 정보 조회
|
||||
public LandResponse getLandList(){
|
||||
List<MetaLandData> landData = metaDataHandler.getMetaLandListData();
|
||||
List<LandResponse.Land> landList = landData.stream()
|
||||
@@ -62,7 +173,9 @@ public class LandService {
|
||||
.type(data.getLandType())
|
||||
.buildingId(data.getBuildingId())
|
||||
.build()
|
||||
).toList();
|
||||
)
|
||||
.sorted(Comparator.comparing(LandResponse.Land::getId))
|
||||
.toList();
|
||||
|
||||
return LandResponse.builder()
|
||||
.resultData(LandResponse.ResultData.builder()
|
||||
@@ -214,22 +327,6 @@ public class LandService {
|
||||
|
||||
dynamodbLandAuctionService.insertLandAuctionRegistryWithActivity(landRequest);
|
||||
|
||||
//로그 기록
|
||||
try{
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("land_id", landRequest.getLandId());
|
||||
jsonObject.put("auction_seq", landRequest.getAuctionSeq());
|
||||
jsonObject.put("start_price", landRequest.getStartPrice());
|
||||
jsonObject.put("recv_start_dt", landRequest.getResvStartDt());
|
||||
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());
|
||||
}
|
||||
|
||||
return LandResponse.builder()
|
||||
.status(CommonCode.SUCCESS.getHttpStatus())
|
||||
.result(CommonCode.SUCCESS.getResult())
|
||||
|
||||
Reference in New Issue
Block a user