@GetMapping("/product/coupon")
@ResponseBody
public List<CouponDTO> coupon(@RequestParam String company) {
List<CouponDTO> couponDTOList = productCouponService.findAllByCompany(company);
return couponDTOList;
}
기술 설명
- @GetMapping("/product/coupon"): GET 요청을
/product/coupon경로로 매핑.- @ResponseBody: 반환값을 View가 아닌 JSON 형태로 직렬화하여 응답.
- @RequestParam String company: 요청 파라미터
company를 추출(판매자명).- productCouponService.findAllByCompany(company): 해당 판매자명으로 사용 가능한 쿠폰 리스트(
List<CouponDTO>) 조회.- return couponDTOList: 조회된 쿠폰 정보를 클라이언트에 JSON으로 반환.
@GetMapping("/product/ViewLoginCheck")
public String viewLoginCheck(@RequestParam("prodNo") String prodNo) {
return "redirect:/product/view?prodNo=" + prodNo;
}
기술 설명
- @GetMapping("/product/ViewLoginCheck"): GET 요청을
/product/ViewLoginCheck경로로 매핑.- @RequestParam("prodNo") String prodNo: 요청 파라미터
prodNo(상품 번호) 추출.- return "redirect:/product/view?prodNo=" + prodNo: 로그인 후 다시 상품 상세 페이지(
/product/view?prodNo=…)로 리다이렉트.
@PostMapping("/product/couponIssue")
@ResponseBody
public ResponseEntity<String> couponIssue(
@RequestParam List<Long> cno,
@AuthenticationPrincipal UserDetails userDetails) {
int result = productCouponService.couponIssue(cno, userDetails);
if (result == 1) {
return ResponseEntity.ok("쿠폰이 발급되었습니다.");
} else {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body("쿠폰 발급 중 오류가 발생했습니다.");
}
}
기술 설명
- @PostMapping("/product/couponIssue"): POST 요청을
/product/couponIssue경로로 매핑.- @ResponseBody: 반환값을 View가 아닌 HTTP 응답 바디에 직접 문자열로 삽입.
- @RequestParam List cno: 요청 파라미터
cno(발급할 쿠폰 ID 목록)를List<Long>로 바인딩.- @AuthenticationPrincipal UserDetails userDetails: 현재 로그인된 사용자의 정보를
UserDetails로 주입받음.- productCouponService.couponIssue(cno, userDetails): 서비스 계층에서 쿠폰 발급 로직 실행.
- 발급 성공 시
1반환- 실패 시 다른 값 반환
- ResponseEntity.ok("쿠폰이 발급되었습니다."):
result == 1인 경우 HTTP 200 OK 상태에 성공 메시지 포함 응답.- ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("쿠폰 발급 중 오류가 발생했습니다."): 발급 실패 시 HTTP 500 상태에 오류 메시지 포함 응답.