본문 바로가기
카테고리 없음

인프런 워밍업 클럽 1기_BE 7일차 과제

by 엔 터 2024. 5. 16.

 

Controller

package com.group.libraryapp.ex.day7.controller;

import com.group.libraryapp.ex.day7.service.FruitService2;
import com.group.libraryapp.ex.fruitstore.dto.request.FruitRequest;
import com.group.libraryapp.ex.fruitstore.dto.request.SellInfoRequest;
import com.group.libraryapp.ex.fruitstore.dto.response.CountResponse;
import com.group.libraryapp.ex.fruitstore.dto.response.ShowFruitResponse;
import org.springframework.web.bind.annotation.*;

@RestController
public class FruitController2 {

    private final FruitService2 fruitService2;

    public FruitController2(FruitService2 fruitService2) {
        this.fruitService2 = fruitService2;
    }

    @PostMapping("/api/v3/fruit")
    public void saveFruitInfo(@RequestBody FruitRequest request) {
        fruitService2.saveFruitInfo(request);
    }

    @PutMapping("/api/v3/fruit")
    public void sellFruit(@RequestBody SellInfoRequest request) {
        fruitService2.sellFruit(request);
    }

    @GetMapping("/api/v3/fruit/stat")
    public ShowFruitResponse showFruitInfo(@RequestParam String name) {
        ShowFruitResponse response = fruitService2.showFruitInfo(name);
        return response;
        }
    }

 

Service

package com.group.libraryapp.ex.day7.service;

import com.group.libraryapp.ex.day7.domain.Fruit2;
import com.group.libraryapp.ex.day7.domain.FruitRepository2;
import com.group.libraryapp.ex.fruitstore.dto.request.FruitRequest;
import com.group.libraryapp.ex.fruitstore.dto.request.SellInfoRequest;
import com.group.libraryapp.ex.fruitstore.dto.response.CountResponse;
import com.group.libraryapp.ex.fruitstore.dto.response.ShowFruitResponse;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class FruitService2 {

    private final FruitRepository2 fruitRepository2;

    public FruitService2(FruitRepository2 fruitRepository2) {
        this.fruitRepository2 = fruitRepository2;
    }

    @Transactional
    public void saveFruitInfo(FruitRequest request) {
        fruitRepository2.save(new Fruit2(request));
    }
    @Transactional
    public void sellFruit(SellInfoRequest request) {
        Fruit2 fruit2 = fruitRepository2.findById(request.getId())
                .orElseThrow(IllegalAccessError::new);
        fruit2.updateStatus(fruit2.getId());
    }

    @Transactional
    public ShowFruitResponse showFruitInfo(String name) {
        long salesAmount = fruitRepository2.findTotalPriceOfActiveFruits();
        long notSalesAmount = fruitRepository2.findTotalPriceOfInactiveFruits();
        ShowFruitResponse response = new ShowFruitResponse(salesAmount, notSalesAmount);

        return response;

        }
    }

 

Repository

package com.group.libraryapp.ex.day7.domain;

import com.group.libraryapp.ex.fruitstore.dto.response.CountResponse;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

public interface FruitRepository2 extends JpaRepository<Fruit2, Long> {
    @Query("SELECT SUM(f.price) FROM Fruit2 f WHERE f.status = TRUE")
    public long findTotalPriceOfActiveFruits();

    @Query("SELECT SUM(f.price) FROM Fruit2 f WHERE f.status = FALSE")
    public long findTotalPriceOfInactiveFruits();
    }

 

 

Controller

@GetMapping("/api/v1/fruit/count")
public CountResponse CountFruit(@RequestParam String name) {
    long count = fruitService2.countFruit(name);
    CountResponse response = new CountResponse(count);
    return response;
}

 

Service

@Transactional
public long countFruit(String name) {
    return fruitRepository2.countByName(name);
}

 

Repository

@Query("SELECT COUNT(f) FROM Fruit2 f WHERE f.name = :name")
long countByName(String name);

 

ResponseDTO

package com.group.libraryapp.ex.fruitstore.dto.response;

public class CountResponse {
    private long count;

    public CountResponse(long count) {
        this.count = count;
    }

    public void setCount(long count) {
        this.count = count;
    }
}

 

Response

Not Acceptable이 나오는데 왜 그런지 모르겠다..

 

문제 3은 건드리지도 못하겠다..
나중에 시간을 좀 더 가지고 풀어봐야겠다

출처

https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EC%84%9C%EB%B2%84%EA%B0%9C%EB%B0%9C-%EC%98%AC%EC%9D%B8%EC%9B%90#

 

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인

최태현 | Java와 Spring Boot, JPA, MySQL, AWS를 이용해 서버를 개발하고 배포합니다. 웹 애플리케이션을 개발하며 서버 개발에 필요한 배경지식과 이론, 다양한 기술들을 모두 학습할 뿐 아니라, 다양한

www.inflearn.com