Skip to content

Commit 6f236df

Browse files
committed
Merge branch 'release/v1.0'
2 parents d22ccd8 + 6ef4ecf commit 6f236df

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+2435
-0
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,4 +184,7 @@ gradle-app.setting
184184
### Gradle Patch ###
185185
# Java heap dump
186186
*.hprof
187+
188+
application.yml
189+
keystore.p12
187190
# End of https://www.toptal.com/developers/gitignore/api/macos,windows,intellij+iml,gradle,java,vim,git

build.gradle

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,17 @@ dependencies {
2626
runtimeOnly 'com.mysql:mysql-connector-j'
2727
annotationProcessor 'org.projectlombok:lombok'
2828
testImplementation 'org.springframework.boot:spring-boot-starter-test'
29+
30+
//시큐리티
31+
implementation 'org.springframework.boot:spring-boot-starter-security'
32+
testImplementation 'org.springframework.security:spring-security-test'
33+
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
34+
35+
//jwt
36+
implementation 'io.jsonwebtoken:jjwt:0.9.1'
37+
38+
//mail
39+
implementation 'org.springframework.boot:spring-boot-starter-mail'
2940
}
3041

3142
tasks.named('test') {
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.example.miniprojectbe.controller;
2+
3+
import com.example.miniprojectbe.service.BasketService;
4+
import lombok.RequiredArgsConstructor;
5+
import org.springframework.web.bind.annotation.*;
6+
7+
import java.util.HashMap;
8+
9+
@RestController
10+
@RequiredArgsConstructor
11+
@CrossOrigin(origins = "*")
12+
public class BasketController {
13+
14+
private final BasketService basketService;
15+
16+
// 상품 장바구니 담기
17+
@PostMapping("/wish")
18+
public HashMap<String, String> addCart(@RequestHeader(name = "Authorization") String header, Long itemId) {
19+
return basketService.addCart(header, itemId);
20+
}
21+
22+
// 장바구니 조회 (예적금)
23+
@GetMapping("/wish_list/deposit")
24+
public HashMap<String, Object> getDepositCartList(@RequestHeader(name = "Authorization") String header, @RequestParam int page) {
25+
return basketService.getDepositCartList(header, page);
26+
}
27+
28+
// 장바구니 조회 (대출)
29+
@GetMapping("/wish_list/loan")
30+
public HashMap<String, Object> getLoanCartList(@RequestHeader(name = "Authorization") String header, @RequestParam int page) {
31+
return basketService.getLoanCartList(header, page);
32+
}
33+
34+
// 장바구니 상품 삭제 (1개)
35+
@DeleteMapping("/wish/delete/{basketId}")
36+
public HashMap<String, String> deleteCartByBasketId(@PathVariable Long basketId) {
37+
return basketService.deleteCartByBasketId(basketId);
38+
}
39+
40+
// 장바구니 비우기 (나의 장바구니에 담긴 상품 전체 삭제)
41+
@DeleteMapping("/wish/delete_all")
42+
public HashMap<String, String> deleteAllCartsByHeader(@RequestHeader(name = "Authorization") String header) {
43+
return basketService.deleteAllCartsByHeader(header);
44+
}
45+
}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package com.example.miniprojectbe.controller;
2+
3+
import com.example.miniprojectbe.dto.MailDTO;
4+
import com.example.miniprojectbe.dto.MemberRequestDTO;
5+
import com.example.miniprojectbe.dto.MemberLoginDTO;
6+
import com.example.miniprojectbe.dto.MemberUpdateRequestDTO;
7+
import com.example.miniprojectbe.service.MemberService;
8+
import com.example.miniprojectbe.service.impl.CreateMailAndUpdatePwServiceImpl;
9+
import com.example.miniprojectbe.service.impl.SendMailServiceImpl;
10+
import lombok.RequiredArgsConstructor;
11+
import org.springframework.http.ResponseEntity;
12+
import org.springframework.web.bind.annotation.*;
13+
14+
15+
import java.util.HashMap;
16+
17+
@RestController
18+
@RequiredArgsConstructor
19+
@CrossOrigin(origins = "*")
20+
public class MemberController {
21+
22+
private final MemberService memberService;
23+
private final SendMailServiceImpl sendMailServiceImpl;
24+
private final CreateMailAndUpdatePwServiceImpl createMailAndUpdatePwServiceImpl;
25+
26+
@PostMapping("/signup")
27+
public HashMap<String, String> signup(MemberRequestDTO memberRequestDTO){
28+
return memberService.memberSignup(memberRequestDTO);
29+
}
30+
31+
@PostMapping("/login")
32+
public HashMap<String, String> login(MemberLoginDTO memberLoginDTO) {
33+
return memberService.login(memberLoginDTO);
34+
}
35+
36+
@PostMapping("/logout")
37+
public HashMap<String, String> logout(@RequestHeader(name = "Authorization") String header) {
38+
return memberService.saveHeaderTokenToBlackList(header);
39+
}
40+
41+
@PostMapping("/duplication/{memberId}")
42+
public ResponseEntity<Boolean> checkEmailDuplicate(@PathVariable String memberId) {
43+
return ResponseEntity.ok(memberService.checkEmailDuplicate(memberId));
44+
}
45+
46+
@GetMapping("/find_password")
47+
public HashMap<String, String> findPassword(@RequestParam(name = "memberId") String memberId,
48+
@RequestParam(name = "name") String name) {
49+
HashMap<String, String>result= new HashMap<>();
50+
String resultCode = memberService.findPassword(memberId, name);
51+
result.put("resultCode", resultCode);
52+
return result;
53+
}
54+
55+
@PostMapping("/find_password/send_mail")
56+
public HashMap<String, String> sendMail(@RequestParam(name = "memberId") String memberId,
57+
@RequestParam(name = "name") String name) {
58+
HashMap<String, String> result = new HashMap<>();
59+
60+
MailDTO mailDTO = createMailAndUpdatePwServiceImpl.createMailAndChangePassword(memberId, name);
61+
62+
try {
63+
sendMailServiceImpl.sendMail(mailDTO);
64+
result.put("resultCode", "success");
65+
} catch (Exception e) {
66+
e.printStackTrace();
67+
result.put("resultCode", "failed");
68+
}
69+
70+
return result;
71+
}
72+
73+
@PatchMapping("/member/update")
74+
public HashMap<String, String> updateMemberInfo(@RequestHeader(name = "Authorization") String header, MemberUpdateRequestDTO memberUpdateRequestDTO) {
75+
return memberService.updateMemberInfo(header, memberUpdateRequestDTO);
76+
}
77+
78+
@PostMapping("/member/info")
79+
public HashMap<String, Object> getMemberInfo(@RequestHeader(name = "Authorization") String header) {
80+
return memberService.getMemberInfo(header);
81+
}
82+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.example.miniprojectbe.controller;
2+
3+
import com.example.miniprojectbe.dto.DepositProductDTO;
4+
import com.example.miniprojectbe.dto.LoanProductDTO;
5+
import com.example.miniprojectbe.service.ProductSearchService;
6+
import lombok.RequiredArgsConstructor;
7+
import org.springframework.data.domain.Slice;
8+
import org.springframework.web.bind.annotation.CrossOrigin;
9+
import org.springframework.web.bind.annotation.GetMapping;
10+
import org.springframework.web.bind.annotation.RequestParam;
11+
import org.springframework.web.bind.annotation.RestController;
12+
13+
@RestController
14+
@RequiredArgsConstructor
15+
@CrossOrigin(origins = "*")
16+
public class ProductSearchController {
17+
18+
private final ProductSearchService productSearchService;
19+
20+
@GetMapping("/search_deposit")
21+
public Slice<DepositProductDTO> searchDeposit(@RequestParam String content,@RequestParam int page){
22+
return productSearchService.searchDeposit(content, page);
23+
24+
}
25+
26+
@GetMapping("/search_loan")
27+
public Slice<LoanProductDTO> searchLoan(@RequestParam String content,@RequestParam int page){
28+
return productSearchService.searchLoan(content, page);
29+
30+
}
31+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.example.miniprojectbe.controller;
2+
3+
import com.example.miniprojectbe.service.PurchaseService;
4+
import lombok.RequiredArgsConstructor;
5+
import org.springframework.web.bind.annotation.*;
6+
7+
import java.util.HashMap;
8+
9+
@RestController
10+
@RequiredArgsConstructor
11+
@CrossOrigin(origins = "*")
12+
public class PurchaseController {
13+
14+
private final PurchaseService purchaseService;
15+
16+
// 상품 구매(신청)
17+
@PostMapping("/purchase")
18+
public HashMap<String, String> addPurchase(@RequestHeader(name = "Authorization") String header, Long itemId) {
19+
return purchaseService.addPurchase(header, itemId);
20+
}
21+
22+
// 구매(신청) 조회 (예적금)
23+
@GetMapping("/deposit/purchase_list")
24+
public HashMap<String, Object> getDepositPurchaseList(@RequestHeader(name = "Authorization") String header, @RequestParam int page) {
25+
return purchaseService.getDepositPurchaseList(header, page);
26+
}
27+
28+
// 구매(신청) 조회 (대출)
29+
@GetMapping("/loan/purchase_list")
30+
public HashMap<String, Object> getLoanPurchaseList(@RequestHeader(name = "Authorization") String header, @RequestParam int page) {
31+
return purchaseService.getLoanPurchaseList(header, page);
32+
}
33+
34+
// 상품 취소(삭제) (1개)
35+
@PutMapping("/delete/purchase/{purchaseId}")
36+
public HashMap<String, String> deletePurchaseByPurchaseId(@PathVariable Long purchaseId) {
37+
return purchaseService.deletePurchaseByPurchaseId(purchaseId);
38+
}
39+
40+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.example.miniprojectbe.controller;
2+
3+
import com.example.miniprojectbe.dto.MemberInfoResponseDTO;
4+
import com.example.miniprojectbe.dto.MemberLoginDTO;
5+
import com.example.miniprojectbe.entity.Member;
6+
import com.example.miniprojectbe.jwt.JwtProvider;
7+
import com.example.miniprojectbe.service.MemberService;
8+
import com.example.miniprojectbe.service.RecommendService;
9+
import lombok.RequiredArgsConstructor;
10+
import org.springframework.web.bind.annotation.*;
11+
12+
import java.util.HashMap;
13+
14+
@RestController
15+
@RequiredArgsConstructor
16+
@CrossOrigin(origins = "*")
17+
public class RecommendController {
18+
19+
private final MemberService memberService;
20+
private final RecommendService recommendService;
21+
private final JwtProvider jwtProvider;
22+
@GetMapping("/main_recommend")
23+
public HashMap<String, Object> getRecommendList(@RequestHeader(name = "Authorization") String header) {
24+
MemberLoginDTO memberLoginDTO = jwtProvider.getMemberDTO(header);
25+
MemberInfoResponseDTO findMember = memberService.findMemberInfoByMemberId(memberLoginDTO.getMemberId());
26+
String bank = findMember.getBank();
27+
String category = findMember.getCategory();
28+
29+
if (category.equals("정기예금") || category.equals("적금")) {
30+
return recommendService.recommendDepositList(bank, category);
31+
}
32+
else {
33+
return recommendService.recommendLoanList(bank,category);
34+
}
35+
}
36+
37+
@GetMapping("/custom_recommend")
38+
public HashMap<String, Object> getCustomRecommendList(@RequestHeader(name = "Authorization") String header, @RequestParam(name = "page") int page) {
39+
MemberLoginDTO memberLoginDTO = jwtProvider.getMemberDTO(header);
40+
MemberInfoResponseDTO findMember = memberService.findMemberInfoByMemberId(memberLoginDTO.getMemberId());
41+
String bank = findMember.getBank();
42+
String category = findMember.getCategory();
43+
String preference = findMember.getDistrict();
44+
String target = findMember.getJob();
45+
46+
if (category.equals("정기예금") || category.equals("적금")) {
47+
return recommendService.recommendCustomDepositList(bank, category, preference, target, page);
48+
}
49+
else {
50+
return recommendService.recommendCustomLoanList(bank, category, preference, target, page);
51+
}
52+
}
53+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.example.miniprojectbe.controller;
2+
3+
import com.example.miniprojectbe.dto.DepositResponseDTO;
4+
import com.example.miniprojectbe.dto.SearchListRequestDTO;
5+
import com.example.miniprojectbe.dto.LoanResponseDTO;
6+
import com.example.miniprojectbe.service.SearchListService;
7+
import lombok.RequiredArgsConstructor;
8+
import org.springframework.data.domain.Slice;
9+
import org.springframework.web.bind.annotation.CrossOrigin;
10+
import org.springframework.web.bind.annotation.GetMapping;
11+
import org.springframework.web.bind.annotation.RequestParam;
12+
import org.springframework.web.bind.annotation.RestController;
13+
14+
@RestController
15+
@RequiredArgsConstructor
16+
@CrossOrigin(origins = "*")
17+
public class SearchListController {
18+
19+
private final SearchListService searchListService;
20+
21+
@GetMapping("/deposit_list")
22+
public Slice<DepositResponseDTO> depositList(@RequestParam int page){
23+
SearchListRequestDTO input = new SearchListRequestDTO();
24+
input.setCategory("정기예금");
25+
return searchListService.pagingByDeposit(input.getCategory(), page);
26+
}
27+
@GetMapping("/savings_list")
28+
public Slice<DepositResponseDTO> savingsList(@RequestParam int page){
29+
SearchListRequestDTO input = new SearchListRequestDTO();
30+
input.setCategory("적금");
31+
return searchListService.pagingByDeposit(input.getCategory(), page);
32+
}
33+
@GetMapping("/mortgage_loan")
34+
public Slice<LoanResponseDTO> mortgageLoan(@RequestParam int page){
35+
SearchListRequestDTO input = new SearchListRequestDTO();
36+
input.setCategory("주택담보대출");
37+
return searchListService.pagingByLoan(input.getCategory(),page);
38+
}
39+
@GetMapping("/charter_loan")
40+
public Slice<LoanResponseDTO> charterLoan(@RequestParam int page){
41+
SearchListRequestDTO input = new SearchListRequestDTO();
42+
input.setCategory("전세자금대출");
43+
return searchListService.pagingByLoan(input.getCategory(),page);
44+
}
45+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.example.miniprojectbe.controller;
2+
3+
import com.example.miniprojectbe.dto.DepositDetailDTO;
4+
import com.example.miniprojectbe.dto.LoanDetailDTO;
5+
import com.example.miniprojectbe.service.impl.SelectDetailServiceImpl;
6+
import lombok.RequiredArgsConstructor;
7+
import lombok.extern.slf4j.Slf4j;
8+
import org.springframework.web.bind.annotation.CrossOrigin;
9+
import org.springframework.web.bind.annotation.GetMapping;
10+
import org.springframework.web.bind.annotation.PathVariable;
11+
import org.springframework.web.bind.annotation.RestController;
12+
13+
14+
@RestController
15+
@RequiredArgsConstructor
16+
@Slf4j
17+
@CrossOrigin(origins = "*")
18+
public class SelectDetailController {
19+
20+
private final SelectDetailServiceImpl selectDetailService;
21+
22+
@GetMapping("/search/deposit/detail/{itemId}")
23+
public DepositDetailDTO searchDeposit(@PathVariable Long itemId){
24+
25+
return selectDetailService.selectDetailDeposit(itemId);
26+
}
27+
28+
@GetMapping("/search/loan/detail/{itemId}")
29+
public LoanDetailDTO searchLoan(@PathVariable Long itemId){
30+
31+
return selectDetailService.selectDetailLoan(itemId);
32+
}
33+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.example.miniprojectbe.dto;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.EqualsAndHashCode;
5+
import lombok.Getter;
6+
import lombok.NoArgsConstructor;
7+
8+
import java.io.Serializable;
9+
@NoArgsConstructor
10+
@AllArgsConstructor
11+
@Getter
12+
@EqualsAndHashCode
13+
public class BasketId implements Serializable {
14+
15+
private String member;
16+
private Long item;
17+
}

0 commit comments

Comments
 (0)