프로젝트

24. 계약

uni5948 2022. 1. 7. 11:54

24. 계약

  • 계약 entity 생성

계약 entity

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_CONTRACT_NUM", sequenceName = "SEQ_CONTRACT_NUM", initialValue = 1, allocationSize = 1)
@Table(name = "CONTRACT")
public class Contract {
   
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_CONTRACT_NUM")
    @Column(name = "CONTRACTNO")
    private Long contractno = 0L;

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

    @ManyToOne
    @JoinColumn
    private Scout scout;
}
  • 계약 저장소 생성

계약 저장소 생성

package com.example.repository;

import com.example.entity.Contract;

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

@Repository
public interface ContractRepository extends JpaRepository<Contract, Long>{
   
}
 
  • 계약 서비스 생성, 계약하기 생성

계약 서비스 생성

ContractService

    //계약하기
    public void insertContract(Contract contract);
   
ContractServiceImpl
 
    //계약하기
    @Override
    public void insertContract(Contract contract) {
        cRepository.save(contract);
    }
 
  • 계약하기 생성(ContractController)

계약하기가 생성되면 해당 계약에 사용된 scout의 playerno 를 0 으로 수정한다.

1. scout 수정하기 생성

 

ScoutService

    // 스카우터 목록 수정
    public void updateScout(Scout scout);
 
ScoutServiceImpl
 
    // 스카우터 목록 수정
    @Override
    public void updateScout(Scout scout) {
        sRepository.save(scout);
    }

2. 계약하기 생성

계약 컨트롤러 생성

package com.example.controller;

더보기
import java.util.HashMap;
import java.util.Map;
import com.example.entity.Contract;
import com.example.entity.Member;
import com.example.entity.Scout;
import com.example.jwt.JwtUtil;
import com.example.service.ContractService;
import com.example.service.MemberService;
import com.example.service.ScoutService;
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.RestController;
@RestController
public class ContractController {
   
    @Autowired
    JwtUtil jwtUtil;
    @Autowired
    ContractService cService;
    @Autowired
    ScoutService sService;
    @Autowired
    MemberService mService;

    //계약하기
    // 127.0.0.1:8080/REST/contractinsert
    @RequestMapping(value = "/contractinsert", method = {RequestMethod.POST},
    consumes = MediaType.ALL_VALUE,
    produces = MediaType.APPLICATION_JSON_VALUE)
    public Map<String, Object> contractinsertPOST(
        @RequestBody Contract contract,
        @RequestHeader("token") String token){
        Map<String, Object> map = new HashMap<String, Object>();
        try{
            String memberid = jwtUtil.extractUsername(token); // 토큰을 통해 회원 정보 찾기
            Long sno = contract.getScout().getScoutno(); // scout 정보 찾기
            Scout scout = sService.getScoutOne(sno);
            String scoutId = sService.getScoutOne(sno).getMember().getUserid(); // scout에서 member 정보 찾기
            if(memberid.equals(scoutId)){ // 로그인 memberid와 scout에서 찾은 memberid가 일치하는지 확인
                contract.setScout(scout);
                cService.insertContract(contract);
                if(contract.getContractno() != null){
                // System.out.println(sno);
                // 계약이 성공하면 해당 scout의 정보를 null로 수정한다.
                scout.setPlayer(null);
                sService.updateScout(scout);
            }
                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. 스카우트 하지 않은 member로 계약할 경우

스카우트 한 member = u1, 로그인한 member = u2

u2 로그인
계약 불가

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

26. 선수 조회(몸값)  (0) 2022.01.08
25. 스카우트 중복 조회  (0) 2022.01.07
23. 스카우터 목록 삭제  (0) 2022.01.06
22. member 별 스카우트 목록 조회  (0) 2022.01.06
21. 스카우트 목록 추가  (0) 2022.01.06