Skip to content

[Feature] 사용자 위치별 미세먼지 조회 기능 구현 #252

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 12 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,9 @@ dependencies {
// Xml
implementation "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.19.0-rc2"

// 좌표
implementation 'org.locationtech.proj4j:proj4j:1.1.1'

}

// JaCoCo 버전 설정
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,21 @@
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;

@RestController
@RequestMapping("/api/air-quality")
@RequiredArgsConstructor
public class AirQualityController {

private final AirQualityService airQualityService;
private final AirQualityService airQualityService;

@GetMapping
public ResponseEntity<ApiResponse<AirQualityResponse>> getAirQuality() {
return ResponseEntity.ok(ApiResponse.createSuccess(airQualityService.getAirQuality()));
}
@GetMapping
public ResponseEntity<ApiResponse<AirQualityResponse>> getAirQuality(
@RequestParam double lat,
@RequestParam double lng
) {
return ResponseEntity.ok(ApiResponse.createSuccess(airQualityService.getAirQuality(lat, lng)));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import lombok.RequiredArgsConstructor;
import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
import org.programmers.signalbuddyfinal.domain.air_quality.service.AirQualityService;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

Expand All @@ -21,4 +20,4 @@ public class AirQualityScheduler {
public void updateAirQuality(){
airQualityService.updateAriQuality();
}
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,11 @@

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AirQualityResponse implements Serializable {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package org.programmers.signalbuddyfinal.domain.air_quality.dto;

import lombok.Data;
import java.util.List;


public class Observatory {

@Data
public static class Response {
private Body body;
private Header header;
}

@Data
public static class Body {
private int totalCount;
private List<Item> items;
private int pageNo;
private int numOfRows;
}

@Data
public static class Item {
private String stationCode;
private double tm;
private String addr;
private String stationName;
}

@Data
public static class Header {
private String resultMsg;
private String resultCode;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package org.programmers.signalbuddyfinal.domain.air_quality.dto;

import lombok.Builder;
import lombok.Getter;

@Getter
@Builder
public class ObservatoryResponse {

private String addr;

private String stationName;

private String stationCode;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package org.programmers.signalbuddyfinal.domain.air_quality.dto;

import lombok.Builder;
import java.util.List;
import lombok.Getter;

@Builder
@Getter
public class RegionAirQuality {
private Response response;

@Builder
@Getter
public static class Response {
private Body body;
private Header header;
}

@Builder
@Getter
public static class Body {
private int totalCount;
private List<Item> items;
private int pageNo;
private int numOfRows;
}

@Builder
@Getter
public static class Item {
private String so2Grade;
private String coFlag;
private String khaiValue;
private String so2Value;
private String coValue;
private String pm25Flag;
private String pm10Flag;
private String pm10Value;
private String o3Grade;
private String khaiGrade;
private String pm25Value;
private String no2Flag;
private String no2Grade;
private String o3Flag;
private String pm25Grade;
private String so2Flag;
private String dataTime;
private String coGrade;
private String no2Value;
private String pm10Grade;
private String o3Value;
}

@Builder
@Getter
public static class Header {
private String resultMsg;
private String resultCode;
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package org.programmers.signalbuddyfinal.domain.air_quality.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import java.util.List;
import lombok.Builder;
import lombok.Getter;

@Getter
@Builder
public class SeoulAirQuality {

@JsonProperty("list_total_count")
private int totalCount;

@JsonProperty("RESULT")
private Result result;

private List<Item> row;

@Getter
@Builder
@JacksonXmlRootElement(localName = "RESULT")
public static class Result {

@JsonProperty("CODE")
@JacksonXmlProperty(localName = "CODE")
private String code;

@JsonProperty("MESSAGE")
@JacksonXmlProperty(localName = "MESSAGE")
private String message;
}

@Getter
@Builder
public static class Item{

@JsonProperty("GRADE")
private String grade;

@JsonProperty("IDEX_MVL")
private String mvl;

@JsonProperty("POLLUTANT")
private String pollutant;

@JsonProperty("NITROGEN")
private String nitrogen;

@JsonProperty("OZONE")
private String ozone;

@JsonProperty("CARBON")
private String carbon;

@JsonProperty("SULFUROUS")
private String sulfurous;

@JsonProperty("PM10")
private String pm10;

@JsonProperty("PM25")
private String pm25;

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ public enum AirQualityErrorCode implements ErrorCode {

AIR_QUALITY_SERVICE_UNAVAILABLE(HttpStatus.SERVICE_UNAVAILABLE, "20000",
"일시적인 문제로 데이터를 불러올 수 없습니다. 잠시 후 다시 시도해 주세요."),
AIR_QUALITY_DATA_NOT_READ(HttpStatus.INTERNAL_SERVER_ERROR, "20001", "미세먼지 API 데이터 파싱 에러");
AIR_QUALITY_DATA_NOT_READ(HttpStatus.INTERNAL_SERVER_ERROR, "20001", "미세먼지 API 데이터 파싱 에러"),
ALL_AIR_QUALITY_DATA_NOT_READ(HttpStatus.INTERNAL_SERVER_ERROR, "20002", "측정소별 미세먼지 API 데이터 파싱 에러"),
OBSERVATORY_DATA_NOT_READ(HttpStatus.INTERNAL_SERVER_ERROR, "20003", "관측소 API 데이터 파싱 에러");

private HttpStatus httpStatus;
private String code;
Expand Down
Loading