Skip to content

Commit

Permalink
feat : Geocoder을 이용한 공고 위치 좌표 설정 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
MyunghyunNero committed Nov 23, 2023
1 parent 5df977a commit 4a2c859
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 0 deletions.
57 changes: 57 additions & 0 deletions src/main/java/kusitms/gallae/global/GeocoderService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package kusitms.gallae.global;

import lombok.NoArgsConstructor;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

@Service
@NoArgsConstructor
public class GeocoderService {

@Value("${google.api-key}")
private String api_key;

public Map<String, String> getGeoDataByAddress(String completeAddress) {
try {
String API_KEY = api_key;
String surl = "https://maps.googleapis.com/maps/api/geocode/json?address="+ URLEncoder.encode(completeAddress, "UTF-8")+"&key="+API_KEY;
URL url = new URL(surl);
InputStream is = url.openConnection().getInputStream();

BufferedReader streamReader = new BufferedReader(new InputStreamReader(is, "UTF-8"));

StringBuilder responseStrBuilder = new StringBuilder();
String inputStr;
while ((inputStr = streamReader.readLine()) != null) {
responseStrBuilder.append(inputStr);
}

JSONObject jo = new JSONObject(responseStrBuilder.toString());
JSONArray results = jo.getJSONArray("results");
Map<String, String> ret = new HashMap<String, String>();
if(results.length() > 0) {
JSONObject jsonObject;
jsonObject = results.getJSONObject(0);
Double lat = jsonObject.getJSONObject("geometry").getJSONObject("location").getDouble("lat");
Double lng = jsonObject.getJSONObject("geometry").getJSONObject("location").getDouble("lng");
ret.put("lat", lat.toString());
ret.put("lng", lng.toString());
return ret;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

}
13 changes: 13 additions & 0 deletions src/main/java/kusitms/gallae/service/admin/ManagerServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import kusitms.gallae.dto.model.PostModelGet;
import kusitms.gallae.dto.program.*;
import kusitms.gallae.global.DurationCalcurator;
import kusitms.gallae.global.GeocoderService;
import kusitms.gallae.global.S3Service;
import kusitms.gallae.global.jwt.AuthUtil;
import kusitms.gallae.repository.favorite.FavoriteRepository;
Expand All @@ -24,6 +25,7 @@
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;

Expand All @@ -43,6 +45,8 @@ public class ManagerServiceImpl implements ManagerService {

private final FavoriteRepository favoriteRepository;

private final GeocoderService geocoderService;


@Override
public PostModelGet getProgramDetail(Long id){
Expand Down Expand Up @@ -112,6 +116,9 @@ public Long postProgram(ProgramPostReq programPostReq ,String username) {
if(saveProgram.getRecruitEndDate() != null && saveProgram.getRecruitEndDate().isBefore(localdate)){
saveProgram.setStatus(Program.ProgramStatus.FINISH);
}
Map<String, String> map = geocoderService.getGeoDataByAddress(programPostReq.getLocation());
saveProgram.setLatitude(Float.valueOf(map.get("lat")));
saveProgram.setLongitude(Float.valueOf(map.get("lng")));
Program programId = programRespository.save(saveProgram);
return programId.getId();
}else { //임시 저장이 있으면
Expand All @@ -120,6 +127,9 @@ public Long postProgram(ProgramPostReq programPostReq ,String username) {
if(saveProgram.getRecruitEndDate() != null && saveProgram.getRecruitEndDate().isBefore(localdate)){
saveProgram.setStatus(Program.ProgramStatus.FINISH);
}
Map<String, String> map = geocoderService.getGeoDataByAddress(programPostReq.getLocation());
saveProgram.setLatitude(Float.valueOf(map.get("lat")));
saveProgram.setLongitude(Float.valueOf(map.get("lng")));
return tempProgram.getId();
}
}
Expand All @@ -138,6 +148,9 @@ public Long editProgram(ProgramPostReq programPostReq ,String username) {
if(saveProgram.getRecruitEndDate() != null && saveProgram.getRecruitEndDate().isBefore(localdate)){
saveProgram.setStatus(Program.ProgramStatus.FINISH);
}
Map<String, String> map = geocoderService.getGeoDataByAddress(programPostReq.getLocation());
saveProgram.setLatitude(Float.valueOf(map.get("lat")));
saveProgram.setLongitude(Float.valueOf(map.get("lng")));
saveProgram.setStatus(Program.ProgramStatus.SAVE);
Program programId = programRespository.save(saveProgram);
return programId.getId();
Expand Down

0 comments on commit 4a2c859

Please sign in to comment.