랜드 정보 조회
This commit is contained in:
@@ -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){
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
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 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("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_user_price")
|
||||||
|
private String ownerUserPrice;
|
||||||
|
@JsonProperty("non_auction")
|
||||||
|
private boolean nonAuction;
|
||||||
|
private Integer socket;
|
||||||
|
private Integer editor;
|
||||||
|
private String status;
|
||||||
|
private String isUpdate;
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ 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;
|
||||||
@@ -11,9 +12,11 @@ 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.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.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.history.service.MysqlHistoryLogService;
|
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 org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.HashMap;
|
import java.time.format.DateTimeParseException;
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
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;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -39,6 +43,7 @@ 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;
|
||||||
@@ -46,7 +51,113 @@ public class LandService {
|
|||||||
private final ObjectMapper objectMapper;
|
private final ObjectMapper objectMapper;
|
||||||
private final MysqlHistoryLogService mysqlHistoryLogService;
|
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(){
|
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 +173,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()
|
||||||
@@ -214,22 +327,6 @@ public class LandService {
|
|||||||
|
|
||||||
dynamodbLandAuctionService.insertLandAuctionRegistryWithActivity(landRequest);
|
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()
|
return LandResponse.builder()
|
||||||
.status(CommonCode.SUCCESS.getHttpStatus())
|
.status(CommonCode.SUCCESS.getHttpStatus())
|
||||||
.result(CommonCode.SUCCESS.getResult())
|
.result(CommonCode.SUCCESS.getResult())
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ public class CommonConstants {
|
|||||||
public static final int BATTLE_SERVER_WAIT_TIME = 600; // (seconds) 이벤트 홍보시간이 300초인데 여유있게 처리하게 하기위해 600으로 준다.
|
public static final int BATTLE_SERVER_WAIT_TIME = 600; // (seconds) 이벤트 홍보시간이 300초인데 여유있게 처리하게 하기위해 600으로 준다.
|
||||||
public static final int BATTLE_INSTANCE_ID = 1017007;
|
public static final int BATTLE_INSTANCE_ID = 1017007;
|
||||||
public static final String CALIUM_ITEM_CODE = "19010003";
|
public static final String CALIUM_ITEM_CODE = "19010003";
|
||||||
|
public static final String CALIVERSE_CODE = "CALIVERSE";
|
||||||
|
public static final String CALIVERSE_NAME = "칼리버스";
|
||||||
|
|
||||||
public static final String FORMAT_DATE_ISO_DATETIME_MILLIS = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
|
public static final String FORMAT_DATE_ISO_DATETIME_MILLIS = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
|
||||||
public static final String FORMAT_DATE_DATETIME = "yyyy-MM-dd HH:mm:ss";
|
public static final String FORMAT_DATE_DATETIME = "yyyy-MM-dd HH:mm:ss";
|
||||||
|
|||||||
@@ -107,8 +107,8 @@ public class DynamicScheduler {
|
|||||||
map.put("id", event.getId());
|
map.put("id", event.getId());
|
||||||
|
|
||||||
if(status.equals(BattleEvent.BATTLE_STATUS.REGISTER) || status.equals(BattleEvent.BATTLE_STATUS.WAIT)){
|
if(status.equals(BattleEvent.BATTLE_STATUS.REGISTER) || status.equals(BattleEvent.BATTLE_STATUS.WAIT)){
|
||||||
if(!now.isBefore(todayStart) && !now.isAfter(todayEnd)){
|
if(!now.isBefore(start_dt) && (!now.isBefore(todayStart) && !now.isAfter(todayEnd))){
|
||||||
log.info("battle event_id: {}, todayStart: {}, todayEnd: {} STATUS CHANGE RUNNING", event.getId(), todayStart, todayEnd);
|
log.info("battle event_id: {}, start_dt: {}, todayStart: {}, todayEnd: {} STATUS CHANGE RUNNING", event.getId(), start_dt, todayStart, todayEnd);
|
||||||
change_status = BattleEvent.BATTLE_STATUS.RUNNING;
|
change_status = BattleEvent.BATTLE_STATUS.RUNNING;
|
||||||
map.put("status", change_status);
|
map.put("status", change_status);
|
||||||
battleEventService.updateBattleEventStatus(map);
|
battleEventService.updateBattleEventStatus(map);
|
||||||
@@ -120,7 +120,7 @@ public class DynamicScheduler {
|
|||||||
}else{
|
}else{
|
||||||
change_status = BattleEvent.BATTLE_STATUS.WAIT;
|
change_status = BattleEvent.BATTLE_STATUS.WAIT;
|
||||||
}
|
}
|
||||||
log.info("battle event_id: {}, todayStart: {}, todayEnd: {} STATUS CHANGE {}", event.getId(), todayStart, todayEnd, change_status);
|
log.info("battle event_id: {}, start_dt: {}, end_dt: {}, todayStart: {}, todayEnd: {} STATUS CHANGE {}", event.getId(), start_dt, end_dt, todayStart, todayEnd, change_status);
|
||||||
map.put("status", change_status);
|
map.put("status", change_status);
|
||||||
battleEventService.updateBattleEventStatus(map);
|
battleEventService.updateBattleEventStatus(map);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user