Notice
Recent Posts
Recent Comments
Link
반응형
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Spring Boot
- 자바스크립트 기초
- javaspring
- 처음만나는자바스크립트
- java
- 리액트세팅
- 기초코딩
- 구글캘린더api
- react
- 자바스크립트
- springboot
- spring
- CSS
- 자바스크립트기초
- 리액트초기세팅
- 웹앱
- 웹
- HTML
- Javascript
- 자바
- 구글 oauth
- 코딩
- mybatis
- js
- 스프링부트
- 마이바티스
- 전자정부 서버세팅
- 리액트프로젝트세팅
- 기초 코딩
- 자바스크립트기초문법
Archives
- Today
- Total
인생 디벨로퍼
[1단계] Company Update Form 본문
728x90
반응형
Controller
@GetMapping("/company/updateform")
public ResponseEntity<?> updateForm(@AuthenticationPrincipal MyUserDetails myUserDetails) {
CompanyUpdateFormOutDTO companyResponseOutDTO = companyService
.getUpdateForm(myUserDetails.getUser().getId());
return ResponseEntity.ok().body(new ResponseDto<>().data(companyResponseOutDTO));
}
Service
public CompanyUpdateFormOutDTO getUpdateForm(Long id) {
User user = userRepository.findById(id).orElseThrow(() -> {
throw new Exception400("존재하지 않는 유저 입니다");
});
CompanyUpdateFormOutDTO companyUpdateFormOutDTO = userRepository.findByCompanyUserId(id);
companyUpdateFormOutDTO.setCompanyInfo(companyInfoRepository.findCompanyInfoByUserId(id));
return companyUpdateFormOutDTO;
}
DTO
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode
public class CompanyUpdateFormOutDTO {
private Long id;
private String nickname;
private String email;
private String password;
private CompanyInfoResponseDTO companyInfo;
@QueryProjection
public CompanyUpdateFormOutDTO(Long id, String nickname, String email, String password) {
this.id = id;
this.nickname = nickname;
this.email = email;
this.password = password;
}
public CompanyUpdateFormOutDTO(CompanyInfoResponseDTO companyInfo) {
this.companyInfo = companyInfo;
}
}
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode
public class CompanyInfoResponseDTO {
private Long id;
private String tel;
private String businessAdress;
private String businessNumber;
@QueryProjection
public CompanyInfoResponseDTO(Long id, String tel, String businessAdress, String businessNumber) {
this.id = id;
this.tel = tel;
this.businessAdress = businessAdress;
this.businessNumber = businessNumber;
}
}
Repository
public interface CompanyInfoCustomRepository {
CompanyInfoResponseDTO findCompanyInfoByUserId(@Param("id") Long id);
}
@Repository
@RequiredArgsConstructor
@Transactional
public class CompanyInfoRepositoryImpl implements CompanyInfoCustomRepository {
private final JPAQueryFactory jpaQueryFactory;
@Override
public CompanyInfoResponseDTO findCompanyInfoByUserId(Long id) {
QCompanyInfo qCompanyInfo = QCompanyInfo.companyInfo;
JPAQuery<CompanyInfoResponseDTO> query = jpaQueryFactory
.select(new QCompanyInfoResponseDTO(
qCompanyInfo.id, qCompanyInfo.tel, qCompanyInfo.businessAdress,
qCompanyInfo.businessNumber))
.from(qCompanyInfo)
.where(qCompanyInfo.user.id.eq(id));
return query.fetchOne();
}
}
public interface UserCustomRepository {
CompanyUpdateFormOutDTO findByCompanyUserId(@Param("id") Long id);
}
결과
요청주소 (get)
http://localhost:8080/api/company/{id}
요청 바디
- jwt token
응답 바디
{
"status": 200,
"msg": "성공",
"data": {
"id": 4,
"nickname": "user512",
"email": "love@nate.com",
"password": "$2a$10$AnO40455ZBKSalBx0YJ26eo4/a0J6UZPtYgRmdirjkn1GbgNeB/JW",
"companyInfo": {
"id": 2,
"tel": "",
"businessAdress": "",
"businessNumber": "",
"sourceFile": {
"id": 4,
"fileUrl": "https://3-sporting.s3.ap-northeast-2.amazonaws.com/CompanyProfile/company.jpg"
}
}
}
}
728x90
반응형
'Project > Final Project - Sporting (매칭)' 카테고리의 다른 글
[2단계] Admin page Court view (0) | 2023.05.01 |
---|---|
[1단계] Stadium Detail (0) | 2023.05.01 |
[3단계] sentry.io 적용 (0) | 2023.05.01 |
[1단계] 기업 회원가입 (0) | 2023.04.26 |
[0단계] JPA Repository Test (0) | 2023.04.26 |