Skip to content

Commit fa2f7c1

Browse files
committed
feat(infrastructure) : 탈퇴하기 API에서 탈퇴 사유 입력 로직 추가
1 parent 17bafea commit fa2f7c1

File tree

8 files changed

+91
-6
lines changed

8 files changed

+91
-6
lines changed

src/main/java/com/neighbors/tohero/application/user/service/UserService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public BaseResponse logout(HttpSession httpSession){
5757
public BaseResponse signout(JwtUserDetails jwtUserDetails, HttpSession httpSession, SignOutRequest signOutRequest){
5858
httpSession.invalidate();
5959

60-
createUserOpinion.createSignOutOpinion(signOutRequest.reasonCategory(), signOutRequest.opinionForService());
60+
createUserOpinion.createSignOutOpinion(signOutRequest.reasonCategory(), signOutRequest.opinionForService(), jwtUserDetails.getEmail());
6161
deleteUser.signout(jwtUserDetails.getUserId());
6262

6363
return new BaseResponse<>(
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
11
package com.neighbors.tohero.domain.domain.user.model;
22

3+
import lombok.Builder;
4+
import lombok.Getter;
5+
6+
@Getter
7+
@Builder
38
public class UserOpinion {
9+
private int opinionId;
10+
private String signOutCategory;
11+
private String adviceForService;
12+
private String userEmail;
413
}
Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.neighbors.tohero.domain.domain.user.service;
22

33
import com.neighbors.tohero.common.annotaion.DomainService;
4+
import com.neighbors.tohero.domain.domain.user.model.UserOpinion;
45
import com.neighbors.tohero.domain.query.UserOpinionRepository;
56
import lombok.RequiredArgsConstructor;
67

@@ -10,7 +11,14 @@ public class CreateUserOpinion {
1011

1112
private final UserOpinionRepository userOpinionRepository;
1213

13-
public void createSignOutOpinion(String signOutCategory, String adviceForService){
14-
userOpinionRepository.createSignOutOpinion(signOutCategory, adviceForService);
14+
public void createSignOutOpinion(String signOutCategory, String adviceForService, String email){
15+
16+
UserOpinion userOpinion = UserOpinion.builder()
17+
.signOutCategory(signOutCategory)
18+
.adviceForService(adviceForService)
19+
.userEmail(email)
20+
.build();
21+
22+
userOpinionRepository.createSignOutOpinion(userOpinion);
1523
}
1624
}
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.neighbors.tohero.domain.query;
22

3+
import com.neighbors.tohero.domain.domain.user.model.UserOpinion;
4+
35
public interface UserOpinionRepository {
4-
void createSignOutOpinion(String signOutCategory, String adviceForService);
6+
void createSignOutOpinion(UserOpinion userOpinion);
57
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.neighbors.tohero.infrastructure.entity;
2+
3+
import jakarta.persistence.*;
4+
import lombok.Builder;
5+
6+
@Entity
7+
@Table(name = "`UserOpinion`")
8+
public class UserOpinionEntity {
9+
10+
@Id
11+
@GeneratedValue(strategy = GenerationType.IDENTITY)
12+
@Column(name = "user_opinion_id")
13+
long userOpinionId;
14+
15+
@Column(name = "signout_category")
16+
String signOutCategory;
17+
18+
@Column(name = "advice_for_service")
19+
String adviceForService;
20+
21+
@Column(name = "user_email")
22+
String userEmail;
23+
24+
private UserOpinionEntity(String signOutCategory, String adviceForService, String email){
25+
this.signOutCategory = signOutCategory;
26+
this.adviceForService = adviceForService;
27+
this.userEmail = email;
28+
}
29+
30+
public static UserOpinionEntity of(String signOutCategory, String adviceForService, String email) {
31+
return new UserOpinionEntity(signOutCategory, adviceForService, email);
32+
}
33+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.neighbors.tohero.infrastructure.mapper;
2+
3+
import com.neighbors.tohero.domain.domain.user.model.UserOpinion;
4+
import com.neighbors.tohero.infrastructure.entity.UserOpinionEntity;
5+
import org.springframework.stereotype.Component;
6+
7+
@Component
8+
public class UserOpinionMapper {
9+
10+
public UserOpinionEntity toEntity(UserOpinion userOpinion) {
11+
return UserOpinionEntity.of(userOpinion.getSignOutCategory(), userOpinion.getAdviceForService(), userOpinion.getUserEmail());
12+
}
13+
}
Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,23 @@
11
package com.neighbors.tohero.infrastructure.query.impl;
22

3+
import com.neighbors.tohero.domain.domain.user.model.UserOpinion;
34
import com.neighbors.tohero.domain.query.UserOpinionRepository;
5+
import com.neighbors.tohero.infrastructure.entity.UserOpinionEntity;
6+
import com.neighbors.tohero.infrastructure.mapper.UserOpinionMapper;
7+
import com.neighbors.tohero.infrastructure.repository.UserOpinionEntityRepository;
8+
import lombok.RequiredArgsConstructor;
49
import org.springframework.stereotype.Repository;
510

611
@Repository
12+
@RequiredArgsConstructor
713
public class UserOpinionRepositoryImpl implements UserOpinionRepository {
8-
@Override
9-
public void createSignOutOpinion(String signOutCategory, String adviceForService) {
1014

15+
private final UserOpinionMapper userOpinionMapper;
16+
private final UserOpinionEntityRepository userOpinionEntityRepository;
17+
18+
@Override
19+
public void createSignOutOpinion(UserOpinion userOpinion) {
20+
UserOpinionEntity userOpinionEntity = userOpinionMapper.toEntity(userOpinion);
21+
userOpinionEntityRepository.save(userOpinionEntity);
1122
}
1223
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.neighbors.tohero.infrastructure.repository;
2+
3+
import com.neighbors.tohero.infrastructure.entity.UserOpinionEntity;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.stereotype.Repository;
6+
7+
@Repository
8+
public interface UserOpinionEntityRepository extends JpaRepository<UserOpinionEntity, Long> {
9+
}

0 commit comments

Comments
 (0)