-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* [dependency] add AWS dependency * [feat] configure AwsConfig.java * [feat] create S3Service.java * [fix] add address in Store.java * [feat] create dtos for post store api * [fix] change name of dtos used for heart post and delete * [fix] change controller due to changed dto name * [fix] add bucket-endpoint in when uploading image * [fix] add validation in Store post request * [feat] add all args constructor in Point.java * [feat] add static factory method in entities * [feat] add method for checking existence of store by latitude and longitude in StoreRepository.java * [feat] add method for checking store existence in StoreFinder.java * [feat] add method for finding university in UniversityFinder.java * [feat] create MenuUpdater * [feat] create ReportUpdater * [feat] create StoreImageUpdater * [feat] create StoreUpdater * [feat] create UniversityStoreUpdater * [fix] add validation in MenuPostRequest.java * [feat] create University error code * [feat] add error codes in StoreErrorCode.java * [feat] create command for Store post api * [feat] add exceptions in GlobalExceptionHandler.java * [feat] create store post logic * [feat] create post store api * [refac] add final keyword in method parameter * [refac] fix menu create method's signature * [refac] add toEntityMethod in StorePostCommand.java * [refac] add final keyword in StorePostResponse.java * [refac] delete unused static factory method in Store.java
- Loading branch information
Showing
32 changed files
with
586 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
19 changes: 19 additions & 0 deletions
19
src/main/java/org/hankki/hankkiserver/api/menu/service/MenuUpdater.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package org.hankki.hankkiserver.api.menu.service; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.hankki.hankkiserver.domain.menu.model.Menu; | ||
import org.hankki.hankkiserver.domain.menu.repository.MenuRepository; | ||
import org.springframework.stereotype.Component; | ||
|
||
import java.util.List; | ||
|
||
@Component | ||
@RequiredArgsConstructor | ||
public class MenuUpdater { | ||
|
||
private final MenuRepository menuRepository; | ||
|
||
public void saveAll(final List<Menu> menus) { | ||
menuRepository.saveAll(menus); | ||
} | ||
} |
17 changes: 17 additions & 0 deletions
17
src/main/java/org/hankki/hankkiserver/api/report/service/ReportUpdater.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package org.hankki.hankkiserver.api.report.service; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.hankki.hankkiserver.domain.report.model.Report; | ||
import org.hankki.hankkiserver.domain.report.repository.ReportRepository; | ||
import org.springframework.stereotype.Component; | ||
|
||
@Component | ||
@RequiredArgsConstructor | ||
public class ReportUpdater { | ||
|
||
private final ReportRepository repository; | ||
|
||
public void save(final Report report) { | ||
repository.save(report); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
13 changes: 13 additions & 0 deletions
13
src/main/java/org/hankki/hankkiserver/api/store/controller/request/MenuPostRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package org.hankki.hankkiserver.api.store.controller.request; | ||
|
||
import jakarta.validation.constraints.Max; | ||
import jakarta.validation.constraints.NotBlank; | ||
import jakarta.validation.constraints.Size; | ||
|
||
public record MenuPostRequest( | ||
@NotBlank @Size(max = 30) | ||
String name, | ||
@Max(8000) | ||
int price | ||
) { | ||
} |
19 changes: 19 additions & 0 deletions
19
src/main/java/org/hankki/hankkiserver/api/store/controller/request/StorePostRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package org.hankki.hankkiserver.api.store.controller.request; | ||
|
||
import jakarta.validation.Valid; | ||
import jakarta.validation.constraints.Size; | ||
import org.hankki.hankkiserver.domain.store.model.StoreCategory; | ||
|
||
import java.util.List; | ||
|
||
public record StorePostRequest( | ||
String name, | ||
StoreCategory category, | ||
String address, | ||
double latitude, | ||
double longitude, | ||
long universityId, | ||
@Size(min = 1) @Valid | ||
List<MenuPostRequest> menus | ||
) { | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
90 changes: 90 additions & 0 deletions
90
src/main/java/org/hankki/hankkiserver/api/store/service/StoreCommandService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
package org.hankki.hankkiserver.api.store.service; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.hankki.hankkiserver.api.auth.service.UserFinder; | ||
import org.hankki.hankkiserver.api.menu.service.MenuUpdater; | ||
import org.hankki.hankkiserver.api.report.service.ReportUpdater; | ||
import org.hankki.hankkiserver.api.store.service.command.StorePostCommand; | ||
import org.hankki.hankkiserver.api.store.service.response.StorePostResponse; | ||
import org.hankki.hankkiserver.api.university.service.UniversityFinder; | ||
import org.hankki.hankkiserver.api.universitystore.service.UniversityStoreUpdater; | ||
import org.hankki.hankkiserver.common.code.StoreErrorCode; | ||
import org.hankki.hankkiserver.common.exception.BadRequestException; | ||
import org.hankki.hankkiserver.domain.menu.model.Menu; | ||
import org.hankki.hankkiserver.domain.report.model.Report; | ||
import org.hankki.hankkiserver.domain.store.model.Store; | ||
import org.hankki.hankkiserver.domain.store.model.StoreImage; | ||
import org.hankki.hankkiserver.domain.university.model.University; | ||
import org.hankki.hankkiserver.domain.universitystore.model.UniversityStore; | ||
import org.hankki.hankkiserver.external.s3.S3Service; | ||
import org.springframework.beans.factory.annotation.Value; | ||
import org.springframework.stereotype.Service; | ||
import org.springframework.transaction.annotation.Transactional; | ||
|
||
import java.io.IOException; | ||
import java.util.List; | ||
|
||
@Service | ||
@RequiredArgsConstructor | ||
public class StoreCommandService { | ||
|
||
@Value("${store.default-image}") | ||
private String DEFAULT_IMAGE_URL; | ||
|
||
private static final String STORE_IMAGE_DIRECTORY = "store/"; | ||
|
||
private final StoreUpdater storeUpdater; | ||
private final MenuUpdater menuUpdater; | ||
private final StoreImageUpdater storeImageUpdater; | ||
private final S3Service s3Service; | ||
private final UniversityStoreUpdater universityStoreUpdater; | ||
private final UniversityFinder universityFinder; | ||
private final ReportUpdater reportUpdater; | ||
private final UserFinder userFinder; | ||
private final StoreFinder storeFinder; | ||
|
||
@Transactional(rollbackFor = Exception.class) | ||
public StorePostResponse createStore(final StorePostCommand command) { | ||
if (storeExists(command.latitude(), command.longitude())) { | ||
throw new BadRequestException(StoreErrorCode.BAD_STORE_INFO); | ||
} | ||
|
||
Store store = storeUpdater.save(command.toEntity()); | ||
saveImages(command, store); | ||
menuUpdater.saveAll(getMenus(command, store)); | ||
|
||
University university = universityFinder.findById(command.universityId()); | ||
universityStoreUpdater.save(UniversityStore.create(store, university)); | ||
reportUpdater.save(Report.create(userFinder.getUser(command.userId()), store, university)); | ||
|
||
return StorePostResponse.of(store); | ||
} | ||
|
||
private boolean storeExists(final double latitude, final double longitude) { | ||
return storeFinder.existsByLatitudeAndLongitude(latitude, longitude); | ||
} | ||
|
||
private void saveImages(final StorePostCommand command, final Store store) { | ||
if (isNullOrEmptyImage(command)) { | ||
storeImageUpdater.saveImage(StoreImage.createImage(store, DEFAULT_IMAGE_URL)); | ||
} | ||
else { | ||
try { | ||
String imageUrl = s3Service.uploadImage(STORE_IMAGE_DIRECTORY, command.image()); | ||
storeImageUpdater.saveImage(StoreImage.createImage(store, imageUrl)); | ||
} catch (IOException e) { | ||
storeImageUpdater.saveImage(StoreImage.createImage(store, DEFAULT_IMAGE_URL)); | ||
} | ||
} | ||
} | ||
|
||
private boolean isNullOrEmptyImage(final StorePostCommand command) { | ||
return command.image() == null || command.image().isEmpty(); | ||
} | ||
|
||
private List<Menu> getMenus(final StorePostCommand command, final Store store) { | ||
return command.menus().stream()//메뉴를 엔티티로 저장한다. | ||
.map(menuPostRequest -> Menu.create(store, menuPostRequest.name(), menuPostRequest.price())) | ||
.toList(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
17 changes: 17 additions & 0 deletions
17
src/main/java/org/hankki/hankkiserver/api/store/service/StoreImageUpdater.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package org.hankki.hankkiserver.api.store.service; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.hankki.hankkiserver.domain.store.model.StoreImage; | ||
import org.hankki.hankkiserver.domain.store.repository.StoreImageRepository; | ||
import org.springframework.stereotype.Component; | ||
|
||
@Component | ||
@RequiredArgsConstructor | ||
public class StoreImageUpdater { | ||
|
||
private final StoreImageRepository storeImageRepository; | ||
|
||
public void saveImage(final StoreImage image) { | ||
storeImageRepository.save(image); | ||
} | ||
} |
17 changes: 17 additions & 0 deletions
17
src/main/java/org/hankki/hankkiserver/api/store/service/StoreUpdater.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package org.hankki.hankkiserver.api.store.service; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.hankki.hankkiserver.domain.store.model.Store; | ||
import org.hankki.hankkiserver.domain.store.repository.StoreRepository; | ||
import org.springframework.stereotype.Component; | ||
|
||
@Component | ||
@RequiredArgsConstructor | ||
public class StoreUpdater { | ||
|
||
private final StoreRepository storeRepository; | ||
|
||
public Store save(final Store store) { | ||
return storeRepository.save(store); | ||
} | ||
} |
Oops, something went wrong.