Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
49b41e2
git initialize
HwuanPage Jun 30, 2025
537c984
feature/swagger-03-gunwoong (#5)
gunwoong1630 Jul 4, 2025
94cd99e
feature/base domain 04 gunwoong (#6)
gunwoong1630 Jul 4, 2025
a0ada69
feature/OpenAPI Test/02-HwuanPage
HwuanPage Jul 4, 2025
7694e75
feature/EntityInit-13-HwuanPage
HwuanPage Jul 7, 2025
34a65bf
feat: entity, repositor κ΅¬ν˜„
johnhuh619 Jul 8, 2025
eebd4ac
feat: μ˜ˆμƒ dto κ΅¬ν˜„
johnhuh619 Jul 8, 2025
36fd789
chore: μ˜μ‘΄μ„± μΆ”κ°€
johnhuh619 Jul 8, 2025
175200c
feat: 둜그인 κ΅¬ν˜„ & 이후 토큰 λ°œκΈ‰ 둜직 κ΅¬ν˜„
johnhuh619 Jul 8, 2025
0adafb8
fix: AuthCotnroller μˆ˜μ •
johnhuh619 Jul 8, 2025
b72262b
fix: ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μΉ΄μΉ΄μ˜€μ—μ„œ μ½”λ“œλ₯Ό λ°›μ•„ μ„œλ²„λ‘œ post ν•˜κ²Œ μˆ˜μ •
johnhuh619 Jul 8, 2025
306d47a
feat: 토큰 검증
johnhuh619 Jul 8, 2025
d6e9a8f
feat: refresh token λΈ”λž™λ¦¬μŠ€νŠΈ 처리 둜직 κ΅¬ν˜„
johnhuh619 Jul 8, 2025
2afab70
feat: refresh 토큰 λΈ”λž™λ¦¬μŠ€νŠΈ 처리 & μž¬λ°œκΈ‰ 둜직 κ΅¬ν˜„
johnhuh619 Jul 8, 2025
5e29204
feat: SecurityFilterChain μ—”λ“œ 포인트 ν—ˆμš©
johnhuh619 Jul 9, 2025
911358b
feat: refresh 토큰 λΈ”λž™λ¦¬μŠ€νŠΈ 검증 둜직 κ΅¬ν˜„
johnhuh619 Jul 9, 2025
4e94e82
feat: redisμ—μ„œ refreshToken λΈ”λž™λ¦¬μŠ€νŠΈ 검증
johnhuh619 Jul 9, 2025
a8c95cb
refactor: controller에 κ°•ν•˜κ²Œ κ²°ν•© λ˜μ–΄ 있던 λ‘œμ§λ“€ 뢄리
johnhuh619 Jul 9, 2025
36efc22
test: member κ΄€λ ¨ ν…ŒμŠ€νŠΈ
johnhuh619 Jul 9, 2025
7a5b753
chore: ν•˜λ“œμ½”λ”©ν•œ μ€‘μš” κ°’ Intellij IDEA ν™˜κ²½λ³€μˆ˜λ‘œ μ„€μ •
johnhuh619 Jul 9, 2025
c968016
refactor: state 관리λ₯Ό μœ„ν•΄ μ„Έμ…˜ μΆ”κ°€
johnhuh619 Jul 9, 2025
cb4d897
feat: member 정보 μ‘°νšŒν•˜λŠ” μ„œλΉ„μŠ€ 둜직 κ΅¬ν˜„
johnhuh619 Jul 10, 2025
3d0c45a
feat: member 정보 μ‘°νšŒν•˜λŠ” μ„œλΉ„μŠ€ 둜직 κ΅¬ν˜„
johnhuh619 Jul 10, 2025
9c4e3b2
format: naver formatter둜 ν¬λ§€νŒ…
johnhuh619 Jul 10, 2025
9a3057b
chore: application-dev
johnhuh619 Jul 10, 2025
07b1b3d
fix: customException 처리
johnhuh619 Jul 10, 2025
df194fb
Feat/meeting interface (#19)
garusitell Jul 7, 2025
2214b68
Feature/FavoritesAndAlertInterface-16-HwuanPage
HwuanPage Jul 7, 2025
d8bdb16
feature/CustomExceptionInit-22-HwuanPage
HwuanPage Jul 7, 2025
8ad8409
Refactor application.yml ν™˜κ²½λ³€μˆ˜ μ„€μ • (#25)
audwls239 Jul 8, 2025
28b9b51
Feature/spot service interface 29 gunwoong (#30)
gunwoong1630 Jul 8, 2025
c81e4ad
Feature/api scheduler 15 gunwoong (#28)
gunwoong1630 Jul 8, 2025
2214a36
feat: spot service (#34)
gunwoong1630 Jul 10, 2025
991bba3
hotfix: duplicated controller method
gunwoong1630 Jul 10, 2025
d0874a6
feature/FavoriteCRUD-33-HwuanPage
HwuanPage Jul 11, 2025
832541e
Feature/spot preview 40 gunwoong (#41)
gunwoong1630 Jul 11, 2025
6e82141
hotfix: jpa metamodel fix
gunwoong1630 Jul 11, 2025
757c6fb
fix: error fix
gunwoong1630 Jul 11, 2025
496de94
fix: μ†Œμ…œ 둜그인 μž¬μ‹œλ„ μ‹œ λ‹‰λ„€μž„ UNIQUE μ œμ•½ μœ„λ°˜ 였λ₯˜ λ°œμƒ (#42)
johnhuh619 Jul 11, 2025
12db47a
hofix: bug fix
gunwoong1630 Jul 11, 2025
e818cdd
Feature/Alert-22-HwuanPage
HwuanPage Jul 14, 2025
9af7855
feat: 즐겨찾기 μΆ”κ°€ 및 λ¦¬νŒ©ν† λ§ (#49)
gunwoong1630 Jul 14, 2025
2eb0453
feat: 카카였 λ‘œκ·ΈμΈμ„ stateless ν•˜κ²Œ λ³€κ²½ν•œλ‹€ (#51)
johnhuh619 Jul 14, 2025
3121616
Feat/meeting service (#46)
garusitell Jul 14, 2025
9ba172b
Feature/integration init (#54)
HwuanPage Jul 14, 2025
008272a
Feature/activities 17 audwls239 (#56)
audwls239 Jul 14, 2025
b45b2e7
feat : ParticipantError μž…λ‹ˆλ‹€.
garusitell Jul 14, 2025
d556d53
hotfix: error fix
gunwoong1630 Jul 14, 2025
2cbdc8c
fix : Directory μˆ˜μ •μ‚¬ν•­μž…λ‹ˆλ‹€. (#57)
garusitell Jul 14, 2025
afd564a
hotfix: error fix
gunwoong1630 Jul 14, 2025
bd2923e
feat: member delete (#58)
johnhuh619 Jul 14, 2025
b101278
fix : ParticipantRepository (#59)
garusitell Jul 14, 2025
944b62f
fix : ParticipantRepository (#60)
garusitell Jul 14, 2025
db23ae1
fix: token (#61)
johnhuh619 Jul 15, 2025
4aa55cc
hotfix/fix-alert&favorites-62-HwuanPage
HwuanPage Jul 15, 2025
1f70995
fix(hotfix/Meeting) : rebase둜 μΈν•œ μ½”λ“œ λˆ„λ½ μˆ˜μ • (#65)
garusitell Jul 15, 2025
73ae7c2
hotfix: μ½”λ“œ λˆ„λ½ ν•΄κ²° (#67)
audwls239 Jul 15, 2025
a052e1e
Fix/fix 70 gunwoong (#71)
gunwoong1630 Jul 15, 2025
abaaca0
fix: application-prod.ymlμ—μ„œ μΏ ν‚€λ₯Ό μ“Έμ§€ 말지 κ²°μ •ν•  수 있게 μˆ˜μ • (#69)
johnhuh619 Jul 15, 2025
62e120b
fix: activities μ‹œνλ¦¬ν‹° μ—”λ“œν¬μΈνŠΈ ν—ˆμš©. redirecturi μˆ˜μ •
johnhuh619 Jul 16, 2025
9e484d5
Chore/docker set andvariable-68-hwuanPage
HwuanPage Jul 16, 2025
f69afe9
refactor: blacklist μ—”ν‹°ν‹°μ˜ jti에 인덱슀λ₯Ό 건닀. (#74)
johnhuh619 Jul 16, 2025
76b0998
Feat/meeting test 75 (#77)
garusitell Jul 16, 2025
a1b72fe
space prob solve
HwuanPage Jul 16, 2025
a7c6ab8
stack-trace-DEBUG
HwuanPage Jul 16, 2025
ad018cf
hotfix/data.sql deprecate-HwuanPage (#79)
HwuanPage Jul 16, 2025
16c1f7d
Xtest
HwuanPage Jul 16, 2025
68d92ca
test X
HwuanPage Jul 16, 2025
2f35102
workflow fix
HwuanPage Jul 16, 2025
9913db5
add id
HwuanPage Jul 16, 2025
9c0f685
fix docker-compose-image-root
HwuanPage Jul 16, 2025
e2bd799
release/v1-marineleisure
HwuanPage Jul 16, 2025
ac0506e
fix: blacklist μ—”ν‹°ν‹°μ˜ jti에 인덱슀λ₯Ό 건닀. (#83)
johnhuh619 Jul 17, 2025
cb66460
fix: cors ν”„λ‘ νŠΈμ—”λ“œ 배포 도메인 μΆ”κ°€ (#84)
johnhuh619 Jul 17, 2025
2d9cf4e
hotfix/method_allowed_patch-HwuanPage (#86)
HwuanPage Jul 17, 2025
8142760
Refactor/exception hwuan page (#87)
HwuanPage Jul 17, 2025
66a9059
Merge branch 'main' into dev
HwuanPage Jul 17, 2025
9842485
Feature/map service refactoring 76 gunwoong (#85)
gunwoong1630 Jul 17, 2025
dceed44
fix: yml ν™˜κ²½λ³€μˆ˜ μΆ”κ°€
gunwoong1630 Jul 17, 2025
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
5 changes: 5 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,11 @@ dependencies {

// pdf parsing
implementation 'org.apache.pdfbox:pdfbox:3.0.5'

// db migration
implementation 'org.flywaydb:flyway-core'
implementation 'org.flywaydb:flyway-mysql'

}

dependencyManagement {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import sevenstar.marineleisure.favorite.repository.FavoriteRepository;
import sevenstar.marineleisure.global.exception.CustomException;
import sevenstar.marineleisure.global.exception.enums.FavoriteErrorCode;
import sevenstar.marineleisure.global.exception.enums.SpotErrorCode;
import sevenstar.marineleisure.spot.domain.OutdoorSpot;
import sevenstar.marineleisure.spot.repository.OutdoorSpotRepository;

Expand Down Expand Up @@ -45,9 +46,8 @@ public FavoriteSpot searchFavoriteById(Long id) {
@Transactional
public Long createFavorite(Long id) {
Long currentMemberId = getCurrentUserId();
// μš°μ„  즐겨찾기λ₯Ό λͺ»μ°Ύμ•˜λ‹€κ³  λ„£μ—ˆμ§€λ§Œ, λ‚˜μ€‘μ— Spotμ—λŸ¬μ½”λ“œ μΆ”κ°€λ˜λ©΄ 그걸둜 ꡐ체 μ˜ˆμ •μž…λ‹ˆλ‹€.
OutdoorSpot outdoorSpot = spotRepository.findById(id)
.orElseThrow(() -> new CustomException(FavoriteErrorCode.FAVORITE_NOT_FOUND));
.orElseThrow(() -> new CustomException(SpotErrorCode.SPOT_NOT_FOUND));

FavoriteSpot createdFavoriteSpot = FavoriteSpot.builder()
.memberId(currentMemberId)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,32 @@
package sevenstar.marineleisure.global.api.config;

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestTemplateConfig {
@Value("${kakao.login.api_key}")
private String kakaoRestApiKey;

@Bean
public RestTemplate restTemplate() {
public RestTemplate apiRestTemplate() {
return new RestTemplate();
}

@Bean
public RestTemplate kakaoRestTemplate() {
RestTemplate restTemplate = new RestTemplate();

ClientHttpRequestInterceptor interceptor = (request, body, execution) -> {
request.getHeaders().add("Authorization", String.format("KakaoAK %s", kakaoRestApiKey));
return execution.execute(request, body);
};

restTemplate.getInterceptors().add(interceptor);
return restTemplate;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package sevenstar.marineleisure.global.api.kakao;

import java.net.URI;

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

import lombok.RequiredArgsConstructor;
import sevenstar.marineleisure.global.api.kakao.dto.RegionResponse;
import sevenstar.marineleisure.global.utils.UriBuilder;

@Component
@RequiredArgsConstructor
public class KakaoApiClient {
@Value("${kakao.map.uri}")
private String kakaoMapUri;

private final RestTemplate kakaoRestTemplate;

public ResponseEntity<RegionResponse> get(float latitude, float longitude) {
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("y", String.valueOf(latitude));
params.add("x", String.valueOf(longitude));

URI uri = UriBuilder.buildQueryParameter(kakaoMapUri, params);

return kakaoRestTemplate.exchange(uri, HttpMethod.GET, null, RegionResponse.class);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package sevenstar.marineleisure.global.api.kakao.dto;

import java.util.List;

import lombok.Data;

@Data
public class RegionResponse {
private Meta meta;
private List<Document> documents;

@Data
public static class Meta {
private int total_count;
}

@Data
public static class Document {
private String region_type;
private String code;
private String address_name;
private String region_1depth_name;
private String region_2depth_name;
private String region_3depth_name;
private String region_4depth_name;
private double x;
private double y;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package sevenstar.marineleisure.global.api.kakao.service;

import java.time.LocalDate;

import org.springframework.stereotype.Service;

import lombok.RequiredArgsConstructor;
import sevenstar.marineleisure.global.enums.Region;
import sevenstar.marineleisure.global.enums.TotalIndex;
import sevenstar.marineleisure.spot.domain.BestSpot;
import sevenstar.marineleisure.spot.repository.OutdoorSpotRepository;
import sevenstar.marineleisure.spot.repository.SpotPresetRepository;

@Service
@RequiredArgsConstructor
public class PresetSchedulerService {
private static final double PRESET_RADIUS = 200_000;
private final OutdoorSpotRepository outdoorSpotRepository;
private final SpotPresetRepository spotPresetRepository;

public void updateRegionApi() {
LocalDate now = LocalDate.now();
BestSpot emptySpot = new BestSpot(-1L, "μ—†λŠ” μ§€μ—­μž…λ‹ˆλ‹€", TotalIndex.NONE);
for (Region region : Region.getAllKoreaRegion()) {
BestSpot bestSpotInFishing = outdoorSpotRepository.findBestSpotInFishing(region.getLatitude(),
region.getLongitude(), now, PRESET_RADIUS).map(BestSpot::new).orElse(emptySpot);
BestSpot bestSpotInMudflat = outdoorSpotRepository.findBestSpotInMudflat(region.getLatitude(),
region.getLongitude(), now, PRESET_RADIUS).map(BestSpot::new).orElse(emptySpot);
BestSpot bestSpotInScuba = outdoorSpotRepository.findBestSpotInScuba(region.getLatitude(),
region.getLongitude(), now, PRESET_RADIUS).map(BestSpot::new).orElse(emptySpot);
BestSpot bestSpotInSurfing = outdoorSpotRepository.findBestSpotInSurfing(region.getLatitude(),
region.getLongitude(), now, PRESET_RADIUS).map(BestSpot::new).orElse(emptySpot);

spotPresetRepository.upsert(region.name(), bestSpotInFishing.getSpotId(), bestSpotInFishing.getName(),
bestSpotInFishing.getTotalIndex().name(), bestSpotInMudflat.getSpotId(), bestSpotInMudflat.getName(),
bestSpotInMudflat.getTotalIndex().name(), bestSpotInScuba.getSpotId(), bestSpotInScuba.getName(),
bestSpotInScuba.getTotalIndex().name(), bestSpotInSurfing.getSpotId(), bestSpotInSurfing.getName(),
bestSpotInSurfing.getTotalIndex().name());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@

import lombok.RequiredArgsConstructor;
import sevenstar.marineleisure.global.api.config.properties.KhoaProperties;
import sevenstar.marineleisure.global.api.khoa.dto.common.ApiResponse;
import sevenstar.marineleisure.global.api.khoa.dto.item.FishingItem;
import sevenstar.marineleisure.global.enums.ActivityCategory;
import sevenstar.marineleisure.global.enums.FishingType;
import sevenstar.marineleisure.global.utils.DateUtils;
Expand All @@ -21,11 +19,11 @@
@Component
@RequiredArgsConstructor
public class KhoaApiClient {
private final RestTemplate restTemplate;
private final RestTemplate apiRestTemplate;
private final KhoaProperties khoaProperties;

/**
* khoa api get μš”μ²­(κ°―λ²Œμ²΄ν—˜, μ„œν•‘, μŠ€μΏ λ²„λ‹€μ΄λΉ™)
* khoa api get μš”μ²­(λ‚šμ‹œ, κ°―λ²Œμ²΄ν—˜, μ„œν•‘, μŠ€μΏ λ²„λ‹€μ΄λΉ™)
* @param responseType response νƒ€μž…
* @param reqDate μš”μ²­ 일자
* @param page
Expand All @@ -35,31 +33,16 @@ public class KhoaApiClient {
* @param <T>
*/
public <T> ResponseEntity<T> get(ParameterizedTypeReference<T> responseType, LocalDate reqDate, int page, int size,
ActivityCategory category) {
ActivityCategory category, FishingType gubun) {
URI uri;
if (category == ActivityCategory.FISHING) {
// TODO : handling exception
// throw new IllegalAccessException();
uri = UriBuilder.buildQueryParameter(khoaProperties.getBaseUrl(),
khoaProperties.getPath(ActivityCategory.FISHING),
khoaProperties.getParams(DateUtils.formatTime(reqDate), page, size, gubun.getDescription()));
} else {
uri = UriBuilder.buildQueryParameter(khoaProperties.getBaseUrl(), khoaProperties.getPath(category),
khoaProperties.getParams(DateUtils.formatTime(reqDate), page, size));
}
URI uri = UriBuilder.buildQueryParameter(khoaProperties.getBaseUrl(), khoaProperties.getPath(category),
khoaProperties.getParams(DateUtils.formatTime(reqDate), page, size));
return restTemplate.exchange(uri, HttpMethod.GET, null, responseType);
return apiRestTemplate.exchange(uri, HttpMethod.GET, null, responseType);
}

/**
* khoa api get μš”μ²­(λ‚šμ‹œ)
* @param responseType response νƒ€μž…
* @param reqDate μš”μ²­ 일자
* @param page
* @param size
* @param gubun 선상 / κ°―λ°”μœ„ 쀑 ν•˜λ‚˜
* @return response
*/
public ResponseEntity<ApiResponse<FishingItem>> get(
ParameterizedTypeReference<ApiResponse<FishingItem>> responseType, LocalDate reqDate, int page, int size,
FishingType gubun) {
URI uri = UriBuilder.buildQueryParameter(khoaProperties.getBaseUrl(),
khoaProperties.getPath(ActivityCategory.FISHING), khoaProperties.getParams(DateUtils.formatTime(reqDate), page, size, gubun.getDescription()));
return restTemplate.exchange(uri, HttpMethod.GET, null, responseType);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@
import java.time.LocalDate;

import lombok.Getter;
import lombok.NoArgsConstructor;
import sevenstar.marineleisure.global.enums.ActivityCategory;
import sevenstar.marineleisure.global.utils.DateUtils;

@Getter
@NoArgsConstructor
public class FishingItem implements KhoaItem {
private String seafsPstnNm;
private double lat;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@
import java.time.LocalDate;

import lombok.Getter;
import lombok.NoArgsConstructor;
import sevenstar.marineleisure.global.enums.ActivityCategory;
import sevenstar.marineleisure.global.utils.DateUtils;

@Getter
@NoArgsConstructor
public class MudflatItem implements KhoaItem {
private String mdftExpcnVlgNm; // λ§ˆμ„ 이름
private double lat; // μœ„λ„
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@
import java.time.LocalDate;

import lombok.Getter;
import lombok.NoArgsConstructor;
import sevenstar.marineleisure.global.enums.ActivityCategory;
import sevenstar.marineleisure.global.utils.DateUtils;

@Getter
@NoArgsConstructor
public class ScubaItem implements KhoaItem {
private String skscExpcnRgnNm; // μ²΄ν—˜ μ§€μ—­λͺ…
private double lat; // μœ„λ„
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@
import java.time.LocalDate;

import lombok.Getter;
import lombok.NoArgsConstructor;
import sevenstar.marineleisure.global.enums.ActivityCategory;
import sevenstar.marineleisure.global.utils.DateUtils;

@Getter
@NoArgsConstructor
public class SurfingItem implements KhoaItem {
private String surfPlcNm;
private double lat;
Expand Down
Loading
Loading