Skip to content

Commit

Permalink
feat: ItemDevController 위치 수정 api
Browse files Browse the repository at this point in the history
  • Loading branch information
thgr8ganzi committed Apr 6, 2024
1 parent 867bba0 commit ed662da
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 4 deletions.
15 changes: 11 additions & 4 deletions src/main/java/com/core/api/item/controller/ItemDevController.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.core.api.item.controller;

import com.core.api.common.dto.ResponseDto;
import com.core.api.item.dto.request.ItemModifyDevDto;
import com.core.api.item.dto.response.ItemCommentDevResponse;
import com.core.api.item.dto.response.ItemDevResponse;
import com.core.api.item.dto.response.ItemLikeDevResponse;
Expand All @@ -10,10 +11,7 @@
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;

import java.util.List;

Expand Down Expand Up @@ -65,4 +63,13 @@ public ResponseEntity<ResponseDto<List<ItemLikeDevResponse>>> getAllItemLikes(
var response = itemDevService.getAllItemLikes(ids);
return ResponseDto.ok(response);
}

@Operation(summary = "목탁 위치 수정")
@GetMapping("/api/v1/dev/item-location")
public ResponseEntity<Void> modifyItemLocation(
@RequestBody ItemModifyDevDto itemModifyDevDto
) {
itemDevService.modifyItemLocation(itemModifyDevDto);
return ResponseDto.noContent();
}
}
14 changes: 14 additions & 0 deletions src/main/java/com/core/api/item/dto/request/ItemModifyDevDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.core.api.item.dto.request;

import lombok.Builder;
import lombok.Data;

import java.math.BigDecimal;

@Data
@Builder
public class ItemModifyDevDto {
private BigDecimal latitude;
private BigDecimal longitude;
private Long itemId;
}
6 changes: 6 additions & 0 deletions src/main/java/com/core/api/item/entity/Item.java
Original file line number Diff line number Diff line change
Expand Up @@ -74,4 +74,10 @@ public Item(Long uid, ItemSaveDto itemSaveDto, String address) {
public void upgrade(ItemType type) {
this.currentType = type;
}

public void modifyLocation(String addressName, BigDecimal latitude, BigDecimal longitude) {
this.address = addressName;
this.latitude = latitude;
this.longitude = longitude;
}
}
23 changes: 23 additions & 0 deletions src/main/java/com/core/api/item/service/ItemDevService.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package com.core.api.item.service;

import com.amazonaws.services.ec2.model.Address;
import com.core.api.client.AddressClient;
import com.core.api.client.KakaoApiResponse;
import com.core.api.item.dto.request.ItemModifyDevDto;
import com.core.api.item.dto.response.ItemCommentDevResponse;
import com.core.api.item.dto.response.ItemDevResponse;
import com.core.api.item.dto.response.ItemLikeDevResponse;
Expand All @@ -9,10 +13,12 @@
import com.core.api.item.repository.ItemCommentRepository;
import com.core.api.item.repository.ItemLikeRepository;
import com.core.api.item.repository.ItemRepository;
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

@Service
Expand All @@ -21,6 +27,7 @@ public class ItemDevService {
private final ItemRepository itemRepository;
private final ItemCommentRepository itemCommentRepository;
private final ItemLikeRepository itemLikeRepository;
private final AddressClient addressClient;

public List<ItemDevResponse> getAllItems(List<Long> ids) {
var isEmptyOrNull = ids == null || ids.isEmpty();
Expand Down Expand Up @@ -51,4 +58,20 @@ public List<ItemLikeDevResponse> getAllItemLikes(List<Long> ids) {
.map(ItemLikeDevResponse::from)
.collect(Collectors.toList());
}

@Transactional
public void modifyItemLocation(ItemModifyDevDto itemModifyDevDto) {
Item item = itemRepository.findById(itemModifyDevDto.getItemId())
.orElseThrow(() -> new IllegalArgumentException("Item not found"));

KakaoApiResponse search = addressClient.search(itemModifyDevDto.getLatitude(), itemModifyDevDto.getLongitude());

Optional<KakaoApiResponse.Document> first = search.getDocuments().stream()
.findFirst();

if (first.isPresent()) {
item.modifyLocation(first.get().getAddressName(), itemModifyDevDto.getLatitude(), itemModifyDevDto.getLongitude());
itemRepository.save(item);
}
}
}

0 comments on commit ed662da

Please sign in to comment.