diff --git a/customer-vue/src/api/store.js b/customer-vue/src/api/store.js
index 90062da..e67e52f 100644
--- a/customer-vue/src/api/store.js
+++ b/customer-vue/src/api/store.js
@@ -41,5 +41,12 @@ export default {
},
requestStore(storeId) {
return axios.get(process.env.VUE_APP_CUSTOMER_SERVICE_BASEURL + "/store-service/store/" + storeId);
+ },
+ getFavoriteStoreByStoreId(storeId) {
+ return axios.get(process.env.VUE_APP_CUSTOMER_SERVICE_BASEURL + "/store-service/api/customer/favoriteStore/" + storeId);
+ },
+ markStar(storeId) {
+ return axios.patch(process.env.VUE_APP_CUSTOMER_SERVICE_BASEURL + "/store-service/api/customer/favoriteStore/" + storeId);
}
+
}
\ No newline at end of file
diff --git a/customer-vue/src/components/StoreNavigation.vue b/customer-vue/src/components/StoreNavigation.vue
index b6e22a7..62f9164 100644
--- a/customer-vue/src/components/StoreNavigation.vue
+++ b/customer-vue/src/components/StoreNavigation.vue
@@ -15,16 +15,69 @@
{{store.name}}
-
- mdi-magnify
+
+ {{ favoriteStore.icon }}
diff --git a/customer-vue/src/views/ItemDetail.vue b/customer-vue/src/views/ItemDetail.vue
index 440397c..1bd15b1 100644
--- a/customer-vue/src/views/ItemDetail.vue
+++ b/customer-vue/src/views/ItemDetail.vue
@@ -36,6 +36,7 @@
=0? this.setItem.count+v: 0;
+ this.setItem.count+v >=1? this.setItem.count+v: 1;
},
addItem: function(){
+ if(!this.validItem())
+ return;
+
orderApi.addItemToBasket(this.setItem)
.then(response=>{
console.log(response)
@@ -156,7 +160,16 @@ export default {
.catch(error=>{
console.log(error.response)
})
+ },
+ validItem(){
+ if(this.setItem.count <= 0 || isNaN(this.setItem.count)){
+ alert("수량이 잘못되었습니다.")
+ this.setItem.count =1
+ return false
+ }
+
}
+
},
}
diff --git a/customer-vue/src/views/OrderPage.vue b/customer-vue/src/views/OrderPage.vue
index be4fc9c..b756c9c 100644
--- a/customer-vue/src/views/OrderPage.vue
+++ b/customer-vue/src/views/OrderPage.vue
@@ -56,11 +56,6 @@
@click="saveOrder"
color="primary"
>주문하기
-
-
-
-
-
@@ -90,6 +85,7 @@ export default {
orderApi.saveOrder()
.then(()=>{
+ this.$emit('plusCount')
alert('주문되었습니다.')
this.$router.push("/history")
})
diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/favoritestore/dto/GetFavoriteStoreByStoreIdDto.java b/store-service/src/main/java/com/justpickup/storeservice/domain/favoritestore/dto/GetFavoriteStoreByStoreIdDto.java
new file mode 100644
index 0000000..c3b1290
--- /dev/null
+++ b/store-service/src/main/java/com/justpickup/storeservice/domain/favoritestore/dto/GetFavoriteStoreByStoreIdDto.java
@@ -0,0 +1,14 @@
+package com.justpickup.storeservice.domain.favoritestore.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class GetFavoriteStoreByStoreIdDto {
+
+ private Long userId;
+ private Long storeId;
+ private boolean isExist;
+
+}
diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/favoritestore/repository/FavoriteStoreRepository.java b/store-service/src/main/java/com/justpickup/storeservice/domain/favoritestore/repository/FavoriteStoreRepository.java
index 1fe08b7..845fe30 100644
--- a/store-service/src/main/java/com/justpickup/storeservice/domain/favoritestore/repository/FavoriteStoreRepository.java
+++ b/store-service/src/main/java/com/justpickup/storeservice/domain/favoritestore/repository/FavoriteStoreRepository.java
@@ -1,7 +1,12 @@
package com.justpickup.storeservice.domain.favoritestore.repository;
import com.justpickup.storeservice.domain.favoritestore.entity.FavoriteStore;
+import com.justpickup.storeservice.domain.store.entity.Store;
import org.springframework.data.jpa.repository.JpaRepository;
+import java.util.Optional;
+
public interface FavoriteStoreRepository extends JpaRepository {
+
+ Optional findByUserIdAndStore(Long userId, Store store);
}
diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/favoritestore/service/FavoriteStoreService.java b/store-service/src/main/java/com/justpickup/storeservice/domain/favoritestore/service/FavoriteStoreService.java
new file mode 100644
index 0000000..51ec173
--- /dev/null
+++ b/store-service/src/main/java/com/justpickup/storeservice/domain/favoritestore/service/FavoriteStoreService.java
@@ -0,0 +1,55 @@
+package com.justpickup.storeservice.domain.favoritestore.service;
+
+import com.justpickup.storeservice.domain.favoritestore.dto.GetFavoriteStoreByStoreIdDto;
+import com.justpickup.storeservice.domain.favoritestore.entity.FavoriteStore;
+import com.justpickup.storeservice.domain.favoritestore.repository.FavoriteStoreRepository;
+import com.justpickup.storeservice.domain.store.entity.Store;
+import com.justpickup.storeservice.domain.store.exception.NotExistStoreException;
+import com.justpickup.storeservice.domain.store.repository.StoreRepository;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Optional;
+import java.util.concurrent.atomic.AtomicReference;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class FavoriteStoreService {
+
+ private final FavoriteStoreRepository favoriteStoreRepository;
+ private final StoreRepository storeRepository;
+
+ @Transactional
+ public void patchFavoriteStore(Long userId, Long storeId){
+ Store store = storeRepository.findById(storeId)
+ .orElseThrow(()-> new NotExistStoreException("매장이 존재하지않습니다."));
+
+ favoriteStoreRepository
+ .findByUserIdAndStore(userId, store)
+ .ifPresentOrElse(
+ favoriteStoreRepository::delete,
+ ()->favoriteStoreRepository.save(FavoriteStore.of(userId, store))
+ );
+
+ }
+
+ @Transactional
+ public GetFavoriteStoreByStoreIdDto getFavoriteStoreByStoreId(Long userId, Long storeId){
+ Store store = storeRepository.findById(storeId)
+ .orElseThrow(()-> new NotExistStoreException("매장이 존재하지않습니다."));
+
+ Optional byUserIdAndStore = favoriteStoreRepository
+ .findByUserIdAndStore(userId, store);
+
+ if(byUserIdAndStore.isPresent()){
+ return new GetFavoriteStoreByStoreIdDto(userId,storeId, true);
+ }else {
+ return new GetFavoriteStoreByStoreIdDto(userId,storeId, false);
+ }
+
+ }
+
+}
diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/favoritestore/web/FavoriteStoreCustomerApiController.java b/store-service/src/main/java/com/justpickup/storeservice/domain/favoritestore/web/FavoriteStoreCustomerApiController.java
new file mode 100644
index 0000000..f9b1918
--- /dev/null
+++ b/store-service/src/main/java/com/justpickup/storeservice/domain/favoritestore/web/FavoriteStoreCustomerApiController.java
@@ -0,0 +1,40 @@
+package com.justpickup.storeservice.domain.favoritestore.web;
+
+import com.justpickup.storeservice.domain.favoritestore.dto.GetFavoriteStoreByStoreIdDto;
+import com.justpickup.storeservice.domain.favoritestore.service.FavoriteStoreService;
+import com.justpickup.storeservice.global.dto.Result;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@Slf4j
+@RequiredArgsConstructor
+@RequestMapping("/api/customer/favoriteStore")
+public class FavoriteStoreCustomerApiController {
+
+ private final FavoriteStoreService favoriteStoreService;
+
+ @GetMapping("/{storeId}")
+ public ResponseEntity getFavoriteStoreByStoreId(@RequestHeader(value = "user-id") String userId, @PathVariable Long storeId){
+
+ GetFavoriteStoreByStoreIdDto favoriteStoreByStoreId = favoriteStoreService.getFavoriteStoreByStoreId(Long.parseLong(userId), storeId);
+
+ return ResponseEntity
+ .status(HttpStatus.OK)
+ .body(Result.createSuccessResult(favoriteStoreByStoreId));
+ }
+
+
+ @PatchMapping("/{storeId}")
+ public ResponseEntity patchFavoriteStore(@RequestHeader(value = "user-id") String userId, @PathVariable Long storeId){
+
+ favoriteStoreService.patchFavoriteStore(Long.parseLong(userId),storeId);
+
+ return ResponseEntity
+ .status(HttpStatus.NO_CONTENT)
+ .body(Result.success());
+ }
+}