Skip to content

Commit

Permalink
Merge pull request #4 from SWM-M3PRO/feature/M3-117-getIndividualMode…
Browse files Browse the repository at this point in the history
…Pixels

M3-117 Feat : 개인전 픽셀 가져오는 API 구현 완료
  • Loading branch information
qjvk2880 authored Jun 25, 2024
2 parents de39e36 + c077787 commit e6b52f5
Show file tree
Hide file tree
Showing 6 changed files with 94 additions and 4 deletions.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1 +1,31 @@
package com.m3pro.groundflip.controller;import org.springframework.web.bind.annotation.RestController;import com.m3pro.groundflip.service.PixelService;import lombok.RequiredArgsConstructor;@RestController@RequiredArgsConstructorpublic class PixelController { private final PixelService pixelService;}
package com.m3pro.groundflip.controller;

import java.util.List;

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 com.m3pro.groundflip.domain.dto.Response;
import com.m3pro.groundflip.domain.dto.pixel.IndividualPixelResponse;
import com.m3pro.groundflip.service.PixelService;

import lombok.RequiredArgsConstructor;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/pixels")
public class PixelController {
private final PixelService pixelService;

@GetMapping("/individual")
public Response<List<IndividualPixelResponse>> getNearIndividualPixels(
@RequestParam(name = "current-x") int currentX,
@RequestParam(name = "current-y") int currentY,
@RequestParam(name = "x-range", required = false, defaultValue = "20") int xRange,
@RequestParam(name = "y-range", required = false, defaultValue = "10") int yRange) {
return Response.createSuccess(pixelService.getNearIndividualPixels(currentX, currentY, xRange, yRange));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.m3pro.groundflip.domain.dto.pixel;

import com.m3pro.groundflip.domain.entity.Pixel;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@AllArgsConstructor
@NoArgsConstructor
@Data
public class IndividualPixelResponse {
private double latitude;
private double longitude;
private double x;
private double y;

public static IndividualPixelResponse from(Pixel pixel) {
return new IndividualPixelResponse(pixel.getLatitude(), pixel.getLongitude(), pixel.getX(), pixel.getY());
}
}
3 changes: 2 additions & 1 deletion src/main/java/com/m3pro/groundflip/domain/entity/Pixel.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Index;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
Expand All @@ -19,7 +20,7 @@

@Getter
@Entity
@Table(name = "pixel")
@Table(name = "pixel", indexes = @Index(name = "index__x__y", columnList = "x, y"))
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Builder
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1,17 @@
package com.m3pro.groundflip.repository;import org.springframework.data.jpa.repository.JpaRepository;import com.m3pro.groundflip.domain.entity.Pixel;public interface PixelRepository extends JpaRepository<Pixel, Long> {}
package com.m3pro.groundflip.repository;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import com.m3pro.groundflip.domain.entity.Pixel;

public interface PixelRepository extends JpaRepository<Pixel, Long> {
@Query(value = "select pixel from Pixel pixel "
+ "where pixel.x between :currentX - :xRange / 2 and :currentX + :xRange / 2 "
+ "and pixel.y between :currentY - :yRange / 2 and :currentY + :yRange / 2 ")
List<Pixel> findAllNearPixels(@Param("currentX") int currentX, @Param("currentY") int currentY,
@Param("xRange") int xRange, @Param("yRange") int yRange);
}
24 changes: 23 additions & 1 deletion src/main/java/com/m3pro/groundflip/service/PixelService.java
Original file line number Diff line number Diff line change
@@ -1 +1,23 @@
package com.m3pro.groundflip.service;import org.springframework.stereotype.Service;import lombok.RequiredArgsConstructor;@Service@RequiredArgsConstructorpublic class PixelService {}
package com.m3pro.groundflip.service;

import java.util.List;

import org.springframework.stereotype.Service;

import com.m3pro.groundflip.domain.dto.pixel.IndividualPixelResponse;
import com.m3pro.groundflip.repository.PixelRepository;

import lombok.RequiredArgsConstructor;

@Service
@RequiredArgsConstructor
public class PixelService {
private final PixelRepository pixelRepository;

public List<IndividualPixelResponse> getNearIndividualPixels(int currentX, int currentY, int xRange, int yRange) {
return pixelRepository.findAllNearPixels(currentX, currentY, xRange, yRange)
.stream()
.map(IndividualPixelResponse::from)
.toList();
}
}

0 comments on commit e6b52f5

Please sign in to comment.