Skip to content

Commit

Permalink
[11주차 코드 PR] Week to Dev (#238) (#245)
Browse files Browse the repository at this point in the history
* [농장] 사업자 번호 칼럼 추가 (#126)

* feat: 사업자 등록 번호 추가
#125

* test: 테스트 코드 수정
- Request에 param 한개 추가
#125

* test: 테스트코드 오류 제거
#125

* 재배환경 추가, 배송비 위치 변경 (#131)

* feat: 재배환경 추가, 배송비 위치 변경

* style: 정렬

* 농산물 소개 폼 (#132)

* feat: product intro 생성

* style: 아 맞다 정렬

* feat: owner phone삭제

* feat: product intro를 product와 함께 입력받도록 수정

* feat: store get 요청 secured 해제 (#163)

자잘한 버그 수정

* 배포 환경에서 blacklist와 storage type을 redis로 변경 #94

* chore: statistic 폴더 생성 #80

* getMemberProfileById 수정 #167

* refactor: validator 농장, 멤버 프로필 수정 #167

* feat: ProductIntro이미지 주인 검증 추가 #167

* refactor: 이미지 unique제약조건 변경 #167

* feat: ProductIntro 이미지 개수 제한 #167

* feat: ProductIntro 이미지 Linker 구현 #167

* refactor: deletelinker 및 validator 리팩토링 #167

* feat: ProductIntro deleteLinker 구현 #167

* feat: ImageRequest 검증 추가 #77

* feat: 멤버 관련 request 검증 추가 #77

* feat: s3PresignedUrlPutRequest 검증 추가 #77

* feat: 토큰 재발급 request 검증 추가 #77

* product_intro 이미지 입력 수정, service에서 다른 repo참조 수정 (#169)

* feat: service-repo연관을 service-service연관으로 풀기

* feat: ProductIntro 이미지 등록 이미지에서 받게 입력 수정

* feat: product등록에도 수정

* feat: product등록에도 수정22

* [STORE] 테스트코드 에러 해결 (#184)

* chore: 필요없는 인자 삭제
#183

* chore: 코드 스타일 일부 수정
#183

* test: 안돌아가는 코드 주석 처리
#183

* [농장 체험] 결제 작업 & 결제 부분 Product 의존성 삭제 (#182)

* refactor: product 메소드 분리
#177

* refactor: payment 도메인 위치 수정
- _payment -> payment
#177

* refactor: 농장 사전 주문 분리
#177

* refactor: throw 반복되는 부분 제거
#177

* refactor: ProductPayment
- paymentService로 분리
#177

* refactor: api 분리
- 사전 주문 생성 API 위치 수정
- prefix: pre로 통일(reservation,order)
#177

* chore: 공백 제거
#177

* refactor: 결제 시스템 interface
- portone을 구현체로 수정
#177

* refactor: PaymentError -> ApplicationError
#177

* refactor: 결제 후 검증 로직
- 결제 상태 수정
#177

* refactor: 사전 결제 처리/사후결제처리 수정
- 결제하기 전에 마지막으로 수량을 확인한다.
- 결제 후에 금액을 확인하고, 실제로 포트원 서버에 있는지 체크하고 결제했다면 결제처리 시켜준다.
#177

* chore: BigDecimal로 수정
#177

* test: 풍헌님 테스트 오류 해결
#177

* JwtUtil 리팩토링 (#178)

* refactor: generateTokenInFilter 삭제 #127

* refactor: getEmailFromTokenInFilter 이름 변경 #127

* refactor: validateTokenInFilter 삭제 #127

* refactor: getAccessTokenExpiration 삭제 #127

---------



* 회원탈퇴,계정복구,계정정지 (#173)

* feat: 회원 탈퇴 구현 #134

* feat: 회원 계정 복구 구현 #134

* feat: 회원 계정 정지 구현 #134

* S3 개선 (#181)

* refactor: 주석 제거 #78

* refactor: createPresignedPutUrl GET 요청으로 변경 #78

* fix: StoreServiceTest 오류 수정 #78

---------



* feat : logout을 위한 handler
- cookie에 accesstoken과 refreshtoken을 제거함
#175

* [CICD] Oauth2 Key값 추가 (#185)

* build: 카카오 OAuth 설정 프로덕션 환경 키 추가
#176

* build: docker & deploy-ecs.yml
- KAKAO_CLIENT_ID
- KAKAO_CLIENT_SECRET
#176

* review - orderedproduct, reservation fix (#179)

* feat: review를 OrderedProduct, reservation으로 수정

* fix: 잡버그 수정

* 버그 수정 (#186)

* feat: review를 OrderedProduct, reservation으로 수정

* fix: 잡버그 수정

* fix: 실수

* [농장] 카테고리 생성 및 누락 칼럼 추가 (#187)

* feat: 농장 누락 칼럼 추가
- 작물 유형
- 전화번호
#148

* feat: 농장 카테고리 조회
#148

* feat: 농장 카테고리 조회 API 작업
#148

* feat: 농장 카테고리 넘기도록 수정
#148

* feat: 카테고리 추가
#148

* fix: intro 코드 지워진거 복구 #167

* refactor: 농부로 전환시 주소정보 삭제 #135

* 회원 탈퇴 PUT요청으로 변환 #135

* refactor: ImageResponse 추가 #135

* refactor: 회원 요약 조회 @secured 제거 #135

* refactor: 멤버 업데이트 엔드포인트 수정 #135

* refactor: 회원 탈퇴 DELETE로 변환 #135

* test: 멤버 회원가입 성공, 실패 테스트 코드 추가 #135

* chore: RefreshTokenStorageService로 이름 변경 #193

* chore: whiltelist로 네임 변경 #193

* AccessTokenBlacklistService 생성 및 RefreshTokenWhitelistService 수정 #193

* refactor: JwtUtil 의존 객체 변경 #193

* [사업자 등록] 사업자 등록증 OCR 검증 및 BIZ 프로필 추가 (#192)

* feat: 사업자 프로필 추가
#136

* feat: RestClient 도입
#136

* feat: OCR 인터페이스 정의
#136

* feat: Naver OCR 구현체 정의
#136

* feat: 지원하지 않는 OCR 플랫폼 대응
#136

* feat: 이미지 포맷 추가
#136

* feat: naver ocr 명세 설정
#136

* feat: naver ocr 명세 설정
#136

* feat: naver ocr 사업자 확인 성공시 프로필 업로드
#136

* feat: OCR 추출 실패 시 관리자가 관리하도록 전환
#136

* build: naver ocr 키 값 추가
#136

* feat: 관리자가 임의로 사업자 업그레이드 허용시키는 API
#136

* refactor: Optional 반환 시점 수정
#136

* refactor: 사업자명 삭제
#136

* refactor: 사업자명 삭제 및 요청 수정
#136

* feat: 사업자 등록증 조회
#136

* refactor: 엔드포인트 수정 (#195)

#190

* feat: 엔드포인트 수정

* refactor: 엔드포인트 to-customer로 변경 #135

* [농장] 농장 설명 추가 (#191)

* fix: 농장 수정 API 명세에서 farmId 삭제
#148

* fix: validation 추가
#148

* fix: 재배 환경 추가
#148

* feat: 체험 비용 추가
#148

* refactor: 네이밍 수정
#188

* feat: 농장 소개 엔티티 추가
#188

* feat: 빌더 추가
#188

* feat: 빌더 추가
#188

* feat: 농장 소개 관련 메소드 추가
#188

* feat: 농장 소개 삭제 관련 메소드
#188

* refactor 메소드 위치 수정
#188

* feat: 농장 설명 추가 API 추가
#188

* feat: 농장 단건 / 다건 조회
- 농장 설명 추가
#188

* feat: 농장 단건 / 다건 조회
- 농장 설명 추가
#188

* feat: 농장 이미지 추가 Validation 추가
- 메인이 없을 경우 예외 처리
#188

* feat: 메인 이미지는 설명 x, 서브 이미지는 설명 필요
#188

* chore: 멤버 컨트롤러, 서비스 role별로 구분 #135

* test: 잠시 중지 #135

* fix: 에러 해결 #193

* test: MemberServiceTest 작성 및 restoreAccount 오류 해결 #135

* test: 회원 정지 테스트 오류 해결 #135

* test: MemberFarmerServiceTest 작성 #135

* feat : 사용하지 않는 handler 삭제
#175

* feat : 테스트 컨트롤러(삭제 예정)
#175

* feat : security filter 구현
#175

* feat : oauth2인증관련
#175

* feat : oauth2 인증 실패 핸들러
#175

* feat : 토큰 재발급 변경
#175

* feat : 시큐리티 설정 (나중에 각자 열어주세요)
#175

* feat : - 멤버 빌더패턴 이름 추가
 - jwt util 안쓰는 메서드 삭제
 - 블랙리스트 메서드 변경
#175

* test: MemberCustomerServiceTest 초안 작성 및 x,y 좌표 Double로 변경 #135

* fix: 이름 변경 #193

* build: oauth2 키 수정 (#202)

#201

* fix: existsByTokenKeyAndExpiredAtAfter로 변경 #193

* feat : application-prod.yml 경로

* refactor: AccessTokenBlacklistService와 RefreshTokenWhitelistService 사용하도록 변경 #193

* feat: cart 요청 변경 후 preorder만들기 (#205)

stock 충분한지 검사

* [농장] 명세 수정 작업 (#200)

* feat: 농장 등록 API 명세 수정
#196

* feat: 농장 수정 API
#196

* test: 테스트 코드 수정
#196

* feat: 농장 등록 API 수정
#196

* feat: 농장 명세 수정
#196

* test: 통과시키도록 수정
#196

* feat: 사업자 등록 번호 추가
#196

* test: 회원 주소 업데이트 테스트 수정 #135

* refactor: 이미지, 멤버 엔드포인트 수정 #135

* 컬럼 추가, 상품 이미지 수정, 컨트롤러 경로 수정 (#208)

* feat: 상품에 컬럼 추가,
컨트롤러 엔드포인트 수정
주문할 때 최대개수보다 적은지 체크
상품 내 이미지 변경

* feat: 빼먹은거 추가

* 팜컨트롤러경로수정 (#209)

* feat: 상품에 컬럼 추가,
컨트롤러 엔드포인트 수정
주문할 때 최대개수보다 적은지 체크
상품 내 이미지 변경

* feat: 빼먹은거 추가

* feat: 팜 컨트롤러 경로 수정

* feat : prod 수정

* feat: 등록할 때 아이디 반환 (#217)

* 이미지 Response 생성 및 멤버 프로필 id도 반환하도록 수정 #216

* test: 이미지 저장 성공 테스트 #219

* test: 이미지 저장 실패 LimitExceed 테스트 #219

* test: 이미지 수정, 삭제 테스트 #219

* test: 이미지 업데이트 검증 로직 추가 및 테스트 코드 추가 #219

* refactor: Product에서 preRemove 추가 #206

* feat: 농부로 전환 시 스토어 가짐 #222

* test: S3 test #80

* fix: s3 테스트 코드 수정 #80

* [농장] 농장 생성시 시작날짜/종료날짜/시작시간/종료날짜 (#211)

* feat: farm_schedule의 status 삭제
#121

* feat: 농장 상세 조회 스케쥴 추가
- 농장 상세 조회에서 스케쥴 추가
#121

* feat: 농장 등록 시 스케쥴도 동시에 등록하도록 수정
#207

* [위시] 농장 위시리스트 추가 (#210)

* feat: 위시리스트 API security 적용
#121

* feat: 위시리스트에 ServiceType 추가
#121

* feat: 위시리스트 조회 API 수정
- 상품 타입 추가
#207

* [TEST] 농장 예약 관련 테스트 코드 (#234)

* test: ReservationFarmerServiceTest 생성
- 농장 예약 조회
- 예약이 없는 경우
#231

* test: ReservationPlatformServiceTest 생성
- 농장 조회
- 농장 인원
- 예약 취소
#231

* 화이트리스트, 블랙리스트 테스트 코드 작성 (#235)

* test: AccessTokenBlacklistServiceTest 작성 #228

* test: RefreshTokenWhitelistServiceTest 작성 #228

* fix: 에러 해결 #228

* fix: 에러 해결 #228

* 멤버 프로필 테스트 코드 작성 (#233)

* test: 멤버 프로필 테스트 코드 작성 #227

* fix: 회원가입 테스트 이름 변경 #227

* chore: 엔드포인트 수정

* chore: 엔드포인트 수정

* chore: 엔드포인트 수정

* feat: 통계 컨트롤러 삭제 #225

* Feature/issue 232 (#241)

* feat: category test

* feat: cart test

* fix: s3 요청 형식 수정 #242

* Feature/issue 175 (#243)

* feat : Farm과 Order의 분리
- 분리에 따른 패키지 구조 변경

* feat : 패키지 구조 대변경

* feat: sqs생성

* feat: 단건 조회 후 payment 상태 변경

* feat : order, payment, afterservice entity 대규모 변경

* feat : order, payment, afterservice entity 대규모 변경

* feat : push sqs

* feat : 배포

* feat : week11 최종

* feat : week11 최종

* feat : week11 최종

---------




---------

Co-authored-by: canyos <[email protected]>
Co-authored-by: 정진택 <[email protected]>
Co-authored-by: amm0124 <[email protected]>
Co-authored-by: amm0124 <[email protected]>
Co-authored-by: canyos <[email protected]>
  • Loading branch information
6 people authored Nov 15, 2024
1 parent 2c6c25b commit 009b7fa
Show file tree
Hide file tree
Showing 300 changed files with 7,082 additions and 3,660 deletions.
5 changes: 5 additions & 0 deletions .github/workflows/deploy-ecs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,11 @@ jobs:
AWS_SECRET_KEY=${{ secrets.AWS_SECRET_KEY }}
IMP_API_KEY=${{ secrets.IMP_API_KEY }}
IMP_SECRET_KEY=${{ secrets.IMP_SECRET_KEY }}
KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }}
KAKAO_CLIENT_SECRET=${{ secrets.KAKAO_CLIENT_SECRET }}
NAVER_OCR_SECRET=${{ secrets.NAVER_OCR_SECRET }}
NAVER_OCR_INVOKE=${{ secrets.NAVER_OCR_INVOKE }}
NAVER_OCR_TEMPLATE=${{ secrets.NAVER_OCR_TEMPLATE }}
cache-from: type=gha
cache-to: type=gha,mode=min,ignore-error=true

Expand Down
16 changes: 16 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ ARG AWS_ACCESS_KEY
ARG AWS_SECRET_KEY
ARG IMP_API_KEY
ARG IMP_SECRET_KEY
ARG KAKAO_CLIENT_ID
ARG KAKAO_CLIENT_SECRET
ARG NAVER_OCR_SECRET
ARG NAVER_OCR_INVOKE
ARG NAVER_OCR_TEMPLATE

# 환경 변수 설정
ENV SPRING_DATASOURCE_URL=$SPRING_DATASOURCE_URL
Expand All @@ -31,6 +36,12 @@ ENV AWS_ACCESS_KEY=$AWS_ACCESS_KEY
ENV AWS_SECRET_KEY=$AWS_SECRET_KEY
ENV IMP_API_KEY=$IMP_API_KEY
ENV IMP_SECRET_KEY=$IMP_SECRET_KEY
ENV KAKAO_CLIENT_ID=$KAKAO_CLIENT_ID
ENV KAKAO_CLIENT_SECRET=$KAKAO_CLIENT_SECRET
ENV NAVER_OCR_SECRET=$NAVER_OCR_SECRET
ENV NAVER_OCR_INVOKE=$NAVER_OCR_INVOKE
ENV NAVER_OCR_TEMPLATE=$NAVER_OCR_TEMPLATE


COPY build/libs/*.jar app.jar

Expand All @@ -49,4 +60,9 @@ ENTRYPOINT ["java", "-Duser.timezone=Asia/Seoul", \
"-Daws.secret=${AWS_SECRET_KEY}", \
"-Dimp.api.key=${IMP_API_KEY}", \
"-Dimp.api.secretKey=${IMP_SECRET_KEY}", \
"-Dkakao.client.id=${KAKAO_CLIENT_ID}", \
"-Dkakao.client.secret=${KAKAO_CLIENT_SECRET}", \
"-Dnaver.ocr.secret=${NAVER_OCR_SECRET}", \
"-Dnaver.ocr.invoke=${NAVER_OCR_INVOKE}", \
"-Dnaver.ocr.template=${NAVER_OCR_TEMPLATE}", \
"-jar", "/app.jar"]
5 changes: 4 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ dependencies {
// JSON
implementation 'org.json:json:20210307'
implementation 'com.google.code.gson:gson:2.10.1'

implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2'
// JWT
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
Expand All @@ -66,6 +66,9 @@ dependencies {
implementation(platform("software.amazon.awssdk:bom:2.27.21"))
implementation("software.amazon.awssdk:s3")

implementation platform("io.awspring.cloud:spring-cloud-aws-dependencies:3.0.1")
implementation 'io.awspring.cloud:spring-cloud-aws-starter-sqs'

// 아임포트 및 아임포트 웹훅
implementation 'com.github.iamport:iamport-rest-client-java:0.2.23'

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package poomasi.domain.aftersales.controller;

import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.annotation.Secured;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import poomasi.domain.aftersales.dto.cancel.request.FarmCancelRequest;
import poomasi.domain.aftersales.dto.cancel.request.ProductCancelRequest;
import poomasi.domain.aftersales.dto.refund.request.ProductRefundRequest;
import poomasi.domain.aftersales.dto.refund.request.ProductRefundRequestApprovalRequest;
import poomasi.domain.aftersales.service.FarmAfterSalesService;
import poomasi.domain.aftersales.service.ProductAfterSalesService;

@RestController
@RequestMapping("/api/aftersales")
@RequiredArgsConstructor
public class AfterSalesController {

private final ProductAfterSalesService productAfterSalesService;
private final FarmAfterSalesService farmAfterSalesService;

@Secured({"ROLE_CUSTOMER", "ROLE_FARMER"})
@PostMapping("/products/cancel")
public ResponseEntity<?> productCancel(@RequestBody ProductCancelRequest productCancelRequest) {
return ResponseEntity.ok(
productAfterSalesService.cancel(productCancelRequest)
);
}

@Secured({"ROLE_CUSTOMER", "ROLE_FARMER"})
@PostMapping("/products/refund-request")
public ResponseEntity<?> requestRefund(@RequestBody ProductRefundRequest productRefundRequest) {
return ResponseEntity.ok(
productAfterSalesService.
refund(productRefundRequest)
);
}

@Secured({"ROLE_FARMER"})
@PostMapping("/approve-products-refund")
public ResponseEntity<?> approveRefund(@RequestBody ProductRefundRequestApprovalRequest productRefundRequestApprovalRequest) {
return ResponseEntity.ok(
productAfterSalesService.processRefundApproval(productRefundRequestApprovalRequest)
);
}

@Secured({"ROLE_CUSTOMER", "ROLE_FARMER"})
@PostMapping("/farms/cancel")
public ResponseEntity<?> farmCancel(@RequestBody FarmCancelRequest farmCancelRequest){
return ResponseEntity.ok(
farmAfterSalesService.cancel(farmCancelRequest)
);
}




}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package poomasi.domain.aftersales.dto.cancel.request;

public record FarmCancelRequest(Long reservationId) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package poomasi.domain.aftersales.dto.cancel.request;

public record ProductCancelRequest(Long orderedProductId) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package poomasi.domain.aftersales.dto.cancel.response;

import poomasi.domain.reservation.entity.ReservationStatus;

import java.math.BigDecimal;

public record FarmCancelResponse(Long reservationId,
ReservationStatus reservationStatus,
BigDecimal finalCancelAmount) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package poomasi.domain.aftersales.dto.cancel.response;

import poomasi.domain.order.entity.OrderedProductStatus;

import java.math.BigDecimal;

public record ProductCancelResponse(
Long orderedProductId,
OrderedProductStatus orderedProductStatus,
BigDecimal finalCancelAmount) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package poomasi.domain.aftersales.dto.refund.request;

import jakarta.validation.constraints.NotNull;

public record ProductRefundRequest(
@NotNull Long orderedProductId
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package poomasi.domain.aftersales.dto.refund.request;

public record ProductRefundRequestApprovalRequest(Long productAfterSalesId) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package poomasi.domain.aftersales.dto.refund.response;

import poomasi.domain.order.entity.OrderedProductStatus;

import java.math.BigDecimal;

public record ProductRefundRequestApprovalResponse(
Long orderedProductId,
OrderedProductStatus orderedProductStatus,
BigDecimal refundAmount
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package poomasi.domain.aftersales.dto.refund.response;

import poomasi.domain.order.entity.OrderedProductStatus;

import java.math.BigDecimal;

public record ProductRefundResponse(
Long orderedProductId,
OrderedProductStatus orderedProductStatus,
BigDecimal finalRefundAmount
) {
}


Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package poomasi.domain.aftersales.entity;

public enum AfterSalesType {
REFUND,
CANCEL
}


51 changes: 51 additions & 0 deletions src/main/java/poomasi/domain/aftersales/entity/FarmAfterSales.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package poomasi.domain.aftersales.entity;


import jakarta.persistence.*;
import jdk.jfr.Description;
import jdk.jfr.Timestamp;
import lombok.Builder;
import lombok.Data;
import org.hibernate.annotations.UpdateTimestamp;
import poomasi.domain.reservation.entity.Reservation;

import java.math.BigDecimal;
import java.time.LocalDateTime;

@Entity
@Table
@Data
public class FarmAfterSales {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;

@Description("금액")
private BigDecimal afterSalesAmount;

@Column(name = "created_at")
@UpdateTimestamp
private LocalDateTime createdAt = LocalDateTime.now();

@Column(name = "updated_at")
@UpdateTimestamp
private LocalDateTime updateAt = LocalDateTime.now();

@Column(name = "deleted_at")
@Timestamp
private LocalDateTime deletedAt;

@OneToOne
private Reservation reservation;

public FarmAfterSales(){

}

@Builder
public FarmAfterSales(BigDecimal afterSalesAmount, Reservation reservation) {
this.afterSalesAmount = afterSalesAmount;
this.reservation = reservation;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package poomasi.domain.aftersales.entity;

import jakarta.persistence.*;
import jdk.jfr.Description;
import jdk.jfr.Timestamp;
import lombok.Builder;
import lombok.Data;
import org.hibernate.annotations.UpdateTimestamp;
import poomasi.domain.order.entity.OrderedProduct;

import java.math.BigDecimal;
import java.time.LocalDateTime;

@Data
@Entity
@Table(name="product_after_sales")
public class ProductAfterSales {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Description("금액")
private BigDecimal afterSalesAmount;

@Description("타입")
private AfterSalesType afterSalesType;

@Column(name = "created_at")
@UpdateTimestamp
private LocalDateTime createdAt = LocalDateTime.now();

@Column(name = "updated_at")
@UpdateTimestamp
private LocalDateTime updateAt = LocalDateTime.now();

@Column(name = "deleted_at")
@Timestamp
private LocalDateTime deletedAt;

@OneToOne
private OrderedProduct orderedProduct;

public ProductAfterSales(){
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package poomasi.domain.aftersales.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import poomasi.domain.aftersales.entity.FarmAfterSales;

public interface FarmAfterSalesRepository extends JpaRepository<FarmAfterSales, Long> {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package poomasi.domain.aftersales.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import poomasi.domain.aftersales.entity.ProductAfterSales;

@Repository
public interface ProductAfterSalesRepository extends JpaRepository<ProductAfterSales, Long> {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package poomasi.domain.aftersales.service;

public interface CancelService<T, P> {
T cancel(P parameter);
}
Loading

0 comments on commit 009b7fa

Please sign in to comment.