Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
@EnableWebSecurity
public class SecurityConfig {
private final String[] possibleAccess = {"/api/auth/signUp", "/api/auth/emailVerification", "/api/auth/login",
"/api/error", "/api", "/error", "/auth/**"};
"/api/error", "/api", "/error", "/auth/**", "/api/tree/**", "/tree/**"};

@Bean
public PasswordEncoder passwordEncoder() {
Expand Down
31 changes: 31 additions & 0 deletions src/main/java/kwthon_1team/kwthon/controller/TreeController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package kwthon_1team.kwthon.controller;

import kwthon_1team.kwthon.common.BaseErrorResponse;
import kwthon_1team.kwthon.domian.dto.response.TreeResponseDto;
import kwthon_1team.kwthon.exception.BaseException;
import kwthon_1team.kwthon.service.TreeService;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/tree")
public class TreeController {

private final TreeService treeService;

public TreeController(TreeService treeService) {
this.treeService = treeService;
}

@GetMapping("/{studentId}")
public ResponseEntity<TreeResponseDto> getTreeInfo(@PathVariable Long studentId) {
try {
TreeResponseDto responseDto = treeService.getTreeInfo(studentId);
return new ResponseEntity<>(responseDto, HttpStatus.valueOf(responseDto.getStatus()));
} catch (Exception e) {
TreeResponseDto errorResponse = new TreeResponseDto(500, "서버 오류가 발생했습니다. 잠시 후 다시 시도해 주세요.", null);
return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package kwthon_1team.kwthon.domian.dto.response;

import lombok.*;

@Data
public class TreeDataDto {
private int treeLevel;

public TreeDataDto(int treeLevel) {
this.treeLevel = treeLevel;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package kwthon_1team.kwthon.domian.dto.response;

import lombok.*;

@Data
public class TreeResponseDto {
private int status;
private String message;
private TreeDataDto data;

public TreeResponseDto(int status, String message, TreeDataDto data) {
this.status = status;
this.message = message;
this.data = data;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
import kwthon_1team.kwthon.domian.entity.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.Optional;

@Repository
public interface MemberRepository extends JpaRepository<Member, Long> {
Member findByStudentId(Long studentId); // studentId로 수정
}

40 changes: 40 additions & 0 deletions src/main/java/kwthon_1team/kwthon/service/TreeService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package kwthon_1team.kwthon.service;

import kwthon_1team.kwthon.domian.dto.response.TreeDataDto;
import kwthon_1team.kwthon.domian.dto.response.TreeResponseDto;
import kwthon_1team.kwthon.domian.entity.Member;
import kwthon_1team.kwthon.repository.MemberRepository;
import org.springframework.stereotype.Service;

@Service
public class TreeService {

private final MemberRepository memberRepository;

public TreeService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}

public TreeResponseDto getTreeInfo(Long studentId) {
// 접근 권한 검증 로직
boolean hasAccess = checkAccessPermission(String.valueOf(studentId));
if (!hasAccess) {
return new TreeResponseDto(403, "이 트리 정보에 대한 접근 권한이 없습니다.", null);
}

// 트리 데이터를 데이터베이스에서 불러오기
Member member = memberRepository.findByStudentId(studentId); // memberId로 조회
if (member == null) {
return new TreeResponseDto(404, "트리 정보를 찾을 수 없습니다.", null);
}

// 트리 레벨을 TreeDataDto로 반환
TreeDataDto treeData = new TreeDataDto(member.getTreeLevel());
return new TreeResponseDto(200, "내 트리 정보를 불러왔습니다", treeData);
}

private boolean checkAccessPermission(String memberId) { // String으로 변경
// 접근 권한 검증 로직
return memberId != null && !memberId.isEmpty();
}
}
4 changes: 4 additions & 0 deletions src/main/resources/application-db.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/kwtree?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=1234
17 changes: 17 additions & 0 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
spring.application.name=kwthon

#properties
spring.profiles.include=db, email, S3

# Security : temporary password
spring.security.user.password=1

server.port=8080
server.address=0.0.0.0

#hibernate
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.session.store-type=jdbc