Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.Optional;

@Repository
public interface NoteRepository extends JpaRepository<Note, Long> {

Optional<Note> findByName(String name);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,9 @@
import com.perfumepedia.perfumepedia.domain.note.entity.RequestNote;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;

public interface RequestNoteRepository extends JpaRepository<RequestNote, Long> {

Optional<RequestNote> findByName(String name);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.perfumepedia.perfumepedia.domain.brand.controller;

import com.perfumepedia.perfumepedia.domain.brand.service.BrandService;
import com.perfumepedia.perfumepedia.global.response.Response;
import com.perfumepedia.perfumepedia.global.response.SuccessResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

@RestController
@Tag(name = "관리자 대시보드", description = "관리자 대시보드 관련 API")

public class BrandController {

private final BrandService brandService;

@Autowired
public BrandController(BrandService brandService) {
this.brandService = brandService;
}

/**
* 모든 브랜드와 향수 개수 조회 api
*/
@GetMapping("/perfumes/admins/counts")
public ResponseEntity<Response<Map<String, Long>>> getBrandAndPerfumeCount() {
SuccessResponse<Map<String, Long>> response = brandService.BrandAndPerfumeCount();
return Response.success(response);
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,15 @@
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

@Repository
public interface BrandRepository extends JpaRepository<Brand, Long> {
List<Brand> findByNameContaining(String keyword);


// 해당 테이블의 모든 데이터 개수를 반환
long count();

Optional<Brand> findByName(String name);

}
Original file line number Diff line number Diff line change
@@ -1,9 +1,41 @@
package com.perfumepedia.perfumepedia.domain.brand.service;

import com.perfumepedia.perfumepedia.domain.brand.repository.BrandRepository;
import com.perfumepedia.perfumepedia.domain.perfume.repository.PerfumeRepository;
import com.perfumepedia.perfumepedia.global.response.SuccessResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;

import static com.perfumepedia.perfumepedia.global.enums.SuccessCode.REQUEST_COMPLETED;

@Service
public class BrandService {

private final BrandRepository brandRepository;
private final PerfumeRepository perfumeRepository;


@Autowired
public BrandService(BrandRepository brandRepository, PerfumeRepository perfumeRepository) {
this.brandRepository = brandRepository;
this.perfumeRepository = perfumeRepository;
}


/**
* 저장되어있는 브랜드와 향수의 개수를 반환하는 메서드
*/
public SuccessResponse<Map<String, Long>> BrandAndPerfumeCount() {
Map<String, Long> brandAndPerfumeCount = new HashMap<>();

brandAndPerfumeCount.put("brandCount", brandRepository.count());
brandAndPerfumeCount.put("perfumeCount", perfumeRepository.count());

return new SuccessResponse<>(REQUEST_COMPLETED, brandAndPerfumeCount);
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@
import com.perfumepedia.perfumepedia.domain.perfume.dto.PerfumeUpdateReq;
import com.perfumepedia.perfumepedia.domain.perfume.service.PerfumeService;
import com.perfumepedia.perfumepedia.domain.perfumeNote.dto.PerfumeDetailResponse;
import com.perfumepedia.perfumepedia.global.response.Response;
import com.perfumepedia.perfumepedia.global.response.SuccessResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;

import java.util.List;

Expand All @@ -26,22 +25,27 @@ public PerfumeController(PerfumeService perfumeService) {

/**
* 향수 검색 API (브랜드, 향수 이름, 노트 이름으로 검색)
*
* @param keyword 검색어
* @return 검색된 향수 리스트
*/
@GetMapping("/api/searchs")
public ResponseEntity<List<PerfumeUpdateReq>> searchPerfumes(@RequestParam String keyword) {
return ResponseEntity.ok(perfumeService.searchPerfumes(keyword));
@GetMapping("/search")
public ResponseEntity<Response<List<PerfumeUpdateReq>>> searchPerfumes(@RequestParam String keyword) {
SuccessResponse<List<PerfumeUpdateReq>> successResponse = perfumeService.searchPerfumes(keyword);
return Response.success(successResponse);
}


/**
* 향수 세부정보 조회 API (
*
* @param perfumeId 향수 아이디
* @return 검색된 향수 세부정보
*/
@GetMapping("/api/search/{id}")
public ResponseEntity<PerfumeDetailResponse> getPerfumeDetail(@PathVariable Long perfumeId) {
return ResponseEntity.ok(perfumeService.getPerfumeDetail(perfumeId));
@GetMapping("/search/{perfumeId}")
public ResponseEntity<Response<PerfumeDetailResponse>> getPerfumeDetail(@PathVariable Long perfumeId) {
SuccessResponse<PerfumeDetailResponse> response = perfumeService.getPerfumeDetail(perfumeId);
return Response.success(response);
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public class RequestPerfume extends BaseEntity {
@Column(name = "PRICE")
private int price;

@ManyToOne
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "REQUEST_BRAND_ID")
private RequestBrand requestBrand;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,15 @@
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

@Repository
public interface PerfumeRepository extends JpaRepository<Perfume, Long> {
List<Perfume> findByNameContaining(String keyword);
List<Perfume> findByBrandNameContaining(String keyword);

List<Perfume> findByBrand_NameContaining(String keyword);

long count();

Optional<Perfume> findByName(String name);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,9 @@
import com.perfumepedia.perfumepedia.domain.perfume.entity.RequestPerfume;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;

public interface RequestPerfumeRepository extends JpaRepository<RequestPerfume, Long> {

Optional<RequestPerfume> findById(Long requestPerfumeId);
}
Loading
Loading