프로젝트

15. REVIEW 등록

uni5948 2022. 1. 4. 14:06

15. REVIEW 등록

  • REVIEW entity 등록

시퀀스를 생성하여 자동으로 ID가 증가 되도록 한다.

 

package com.example.entity;

더보기
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import org.hibernate.annotations.CreationTimestamp;
import org.springframework.format.annotation.DateTimeFormat;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@Entity
@Setter
@Getter
@NoArgsConstructor
@ToString
@SequenceGenerator(name = "SEQ_REVIEW_NUM", sequenceName = "SEQ_REVIEW_NUM", initialValue = 1, allocationSize = 1)
@Table(name = "REVIEW")
public class Review {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_REVIEW_NUM")
    @Column(name = "REVIEWNO")
    private Long reviewno = 0L;

    @Column(name = "CONTENT")
    private String content = null;

    @Column(name = "RATING")
    private long rating =  0L;

    @CreationTimestamp
    @Column(updatable = false, name = "REGDATE")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date reviewdate = null;
   
    @ManyToOne
    @JoinColumn
    private Player player;

    @ManyToOne
    @JoinColumn
    private Member member;

}
  • REVIEW 저장소 생성

REVIEW 저장소 생성

package com.example.repository;

import com.example.entity.Review;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ReviewRepository extends JpaRepository<Review, Long>{
   
}
  • REVIEW 서비스 생성, REVIEW 등록 구현

REVIEW 서비스 생성

ReviewService

package com.example.service;

더보기
import com.example.entity.Review;
import org.springframework.stereotype.Service;

@Service
public interface ReviewService {
   
    // 리뷰 등록
    public void insertReview(Review review);
}
ReviewServiceImpl
package com.example.service;

더보기
import com.example.entity.Review;
import com.example.repository.ReviewRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class ReviewServiceImpl implements ReviewService{
   
    @Autowired
    ReviewRepository rRepository;

    // 리뷰 등록
    @Override
    public void insertReview(Review review) {
        rRepository.save(review);
    }
}
 
  • 리뷰 등록

1. controller 생성(ReviewController.java)

controller 생성

2. 리뷰 등록 생성

리뷰 등록은 member만 등록 가능하다.

토큰 값을 이용하여 member 확인.

package com.example.controller;

더보기
import java.util.HashMap;
import java.util.Map;
import com.example.entity.Member;
import com.example.entity.Player;
import com.example.entity.Review;
import com.example.jwt.JwtUtil;
import com.example.service.MemberService;
import com.example.service.PlayerService;
import com.example.service.ReviewService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ReviewController {
    @Autowired
    JwtUtil jwtUtil;
   
    @Autowired
    ReviewService rService;
    @Autowired
    MemberService mService;
    @Autowired
    PlayerService pService;

    // 리뷰 등록
    //127.0.0.1:8080/REST/reviewinsert?pno=
    @RequestMapping(value = "/reviewinsert", method = {RequestMethod.POST},
    consumes = MediaType.ALL_VALUE,
    produces = MediaType.APPLICATION_JSON_VALUE)
    public Map<String, Object> playerinsertPOST(
        @RequestBody Review review,
        @RequestParam(name = "pno", defaultValue = "0")long playerNo,
        @RequestHeader("token") String token){
        Map<String, Object> map = new HashMap<String, Object>();
        try{
            String memberid = jwtUtil.extractUsername(token); // 토큰을 통해 회원 정보 찾기
            Member member = mService.selectUserOne(memberid); // member 정보 찾기
            Player player = pService.getPlayerOne(playerNo); //player 정보 찾기
            if(memberid.equals(member.getUserid())){
                review.setMember(member);
                review.setPlayer(player);
                rService.insertReview(review);
                map.put("status", 200);
            }
            else{
                map.put("status", 300);
            }
        }
        catch(Exception e){
            e.printStackTrace();
            map.put("status", e.hashCode());
        }
        return map;
    }
}
  • 리뷰 등록

1. member 로그인 한 뒤 토큰값을 받아온다.

member 로그인

2. 리뷰 등록하기

headers에 토큰값을 입력한 뒤 등록한다.

 

리뷰 등록

3. 리뷰 확인

리뷰 등록 확인

 

'프로젝트' 카테고리의 다른 글

17. REVIEW 삭제  (0) 2022.01.04
16. REVIEW 수정  (0) 2022.01.04
14. 에이전트 번호 별 선수 조회  (0) 2022.01.04
13. 팀 번호 별 선수 조회  (0) 2022.01.04
12. 선수 1명, 전체 조회  (0) 2021.12.07