Skip to content
Merged
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
@@ -1,10 +1,8 @@
package org.example.qpin.domain.parking.entity;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.*;
import lombok.*;
import org.example.qpin.domain.member.entity.Member;
import org.example.qpin.global.common.BaseEntity;

@Entity
Expand All @@ -19,4 +17,11 @@ public class Parking extends BaseEntity {
private Long parkingAreaId;

private String type;

@Column(name = "is_parking")
private boolean isParking;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id")
private Member member;
}
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ public Long deleteParking(Long memberId, Long parkingAreaId) {
Member member = findMemberById(memberId);

// μ£Όμ°¨ 정보가 μ‘΄μž¬ν•˜λŠ”μ§€ 확인
Parking parkingToDelete = parkingRepository.findParkingByParkingAreaIdAndMember(parkingAreaId, memberId)
Parking parkingToDelete = parkingRepository.findParkingByParkingAreaIdAndMember_MemberId(parkingAreaId, memberId)
.orElseThrow(() -> new BadRequestException(ExceptionCode.NOT_FOUND_PARKING));

// μ£Όμ°¨ μ‚­μ œ
Expand All @@ -209,7 +209,7 @@ public ParkingInfoResDto getParkingInfo(Long memberId) {
}

// 멀버가 μ£Όμ°¨ 쀑인 μ£Όμ°¨μž₯ 정보λ₯Ό κ°€μ Έμ˜΄
Parking parking = parkingRepository.findParkingByMemberIdAndIsParkingTrue(memberId)
Parking parking = parkingRepository.findByMember_MemberIdAndIsParkingTrue(memberId)
.orElseThrow(() -> new BadRequestException(ExceptionCode.NOT_FOUND_PARKING));

// μ£Όμ°¨ μ‹œμž‘ μ‹œκ°„ 및 기타 정보λ₯Ό κ°€μ Έμ˜΄
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,65 +21,57 @@
@RestController
@RequiredArgsConstructor
public class QrController {

private final SafePhoneNumberService safePhoneNumberService;
private final QrService qrService;

@PostMapping("/qr/create")
@Operation(summary = "QRμ½”λ“œ 생성", description = "QRμ½”λ“œ 생성")
ResponseEntity<String> createQr(@RequestBody CreateQrRequestDto request) throws WriterException, IOException {

SafePhoneNumber safePhoneNumber = safePhoneNumberService.findByPhoneNum(request.getPhoneNum());
Qr qr = qrService.createQr(safePhoneNumber,request);

// SafePhoneNumber safePhoneNumber = safePhoneNumberService.findByPhoneNum(request.getPhoneNum());
qrService.createQr(request);
return ResponseEntity.status(HttpStatus.OK).body("QR 생성 μ™„λ£Œ");
}

@GetMapping("/qr/{qrId}")
@Operation(summary = "QRμ½”λ“œλ₯Ό ν•Έλ“œν°μœΌλ‘œ μ°μ—ˆμ„λ•Œ", description = "QRμ½”λ“œλ₯Ό μ‹€μ œλ‘œ ν•Έλ“œν°μœΌλ‘œ μ°μ—ˆμ„ λ•Œ μ—°κ²°λ˜λŠ” μ›ΉνŽ˜μ΄μ§€")
ResponseEntity<QrResponseDto>captureQrcode(@PathVariable("qrId") Long qrId){

Qr qr = qrService.findById(qrId);

QrResponseDto response = new QrResponseDto(qr.getSafePhoneNumber().getSafePhoneNumber(),qr.getMemo());

return ResponseEntity.status(HttpStatus.OK).body(response);

}

@GetMapping("/qr/select/{qrId}")
@Operation(summary = "QRμ½”λ“œ 단건 쑰회", description = "QRμ½”λ“œ 단건 쑰회")
ResponseEntity<CheckQrDto> checkQr(@PathVariable("qrId")Long qrId){

CheckQrDto response = qrService.toCheckQrDto(qrId);
return ResponseEntity.status(HttpStatus.OK).body(response);
}

@GetMapping("/qr/selectList/{memberId}")
@Operation(summary = "QRμ½”λ“œ 리슀트 쑰회", description = "λ©€λ²„μ˜ λͺ¨λ“  QRμ½”λ“œ 쑰회")
ResponseEntity<List<CheckQrDto>> checkQrList(@PathVariable("memberId")Long memberId){

List<CheckQrDto> response = qrService.toCheckQrDtoList(memberId);
return ResponseEntity.status(HttpStatus.OK).body(response);
}

@DeleteMapping("/qr/remove/{qrId}")
@Operation(summary = "QRμ½”λ“œ μ‚­μ œ", description = "QRμ½”λ“œ μ‚­μ œ")
ResponseEntity<String> removeQr(@PathVariable("qrId") Long qrId){

qrService.removeQr(qrId);
return ResponseEntity.status(HttpStatus.OK).body("QRμ½”λ“œ μ‚­μ œ μ™„λ£Œ");
}


@DeleteMapping("/qr/remove")
@Operation(summary = "QRμ½”λ“œ 일괄 μ‚­μ œ", description = "QRμ½”λ“œ μ—¬λŸ¬ 개λ₯Ό μ‚­μ œ")
ResponseEntity<String> removeQrs(@RequestBody List<Long> qrIds){
qrService.removeQrs(qrIds);
return ResponseEntity.status(HttpStatus.OK).body("QRμ½”λ“œ 일괄 μ‚­μ œ μ™„λ£Œ");
}

@PutMapping("qr/modify/{qrId}")
@Operation(summary = "QRμ½”λ“œ μˆ˜μ •", description = "QRμ½”λ“œ μˆ˜μ •")
ResponseEntity<String> modifyQr(@PathVariable("qrId") Long qrId,@RequestBody ModifyQrRequestDto request){


qrService.modifyQr(qrId,request);
return ResponseEntity.status(HttpStatus.OK).body("QRμ½”λ“œ μˆ˜μ • μ™„λ£Œ");
}



}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@
import lombok.Getter;
import org.example.qpin.domain.qr.entity.MyColor;
import org.example.qpin.domain.qr.entity.Sticker;
import org.example.qpin.domain.safephonenumber.entity.SafePhoneNumber;

@Builder
@Getter
public class CreateQrRequestDto {
private Long memberId; // μž„μ‹œ

private String safePhoneNum;

private String phoneNum;
Expand All @@ -19,7 +22,7 @@ public class CreateQrRequestDto {

private Sticker sticker;

private int gradation;
private String gradation;

private Long memberId; // μž„μ‹œ
private String backgroundPicture;
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,7 @@ public class ModifyQrRequestDto {

private Sticker sticker;

private int gradation;
private String gradation;

private String backGroundImage;
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
@AllArgsConstructor
@NoArgsConstructor
public class CheckQrDto {
private Long qrId;

private String safePhoneNumber;

Expand All @@ -20,8 +21,9 @@ public class CheckQrDto {

private Sticker sticker;

private int gradation; //μΆ”ν›„ κ²€ν†  ν•„μš”
private String gradation; //μΆ”ν›„ κ²€ν†  ν•„μš”

private byte[] qrImage;

private String background_picture;
}
12 changes: 7 additions & 5 deletions src/main/java/org/example/qpin/domain/qr/entity/Qr.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ public class Qr extends BaseEntity {
private Sticker sticker;

@Column
private int gradation; //μΆ”ν›„ κ²€ν†  ν•„μš”
private String gradation; //μΆ”ν›„ κ²€ν†  ν•„μš”

@Column
private String background_picture;
private String backgroundPicture;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="safe_phone_number_id")
Expand All @@ -50,13 +50,14 @@ public class Qr extends BaseEntity {
@Comment("QR 이미지")
private byte[] qrImage;

public Qr(Member member,String memo,MyColor myColor, Sticker sticker, int gradation, SafePhoneNumber safePhoneNumber){
public Qr(Member member,String memo,MyColor myColor, Sticker sticker, String gradation, String backgroundPicture, SafePhoneNumber safePhoneNumber){
this.member = member;
this.memo = memo;
this.myColor = myColor;
this.sticker = sticker;
this.gradation = gradation;
this.safePhoneNumber = safePhoneNumber;
this.backgroundPicture = backgroundPicture;
}

public void setQrUrl(String qrUrl){
Expand All @@ -67,12 +68,13 @@ public void setQrImage(byte[] qrImage) {
this.qrImage = qrImage;
}

public void modifyQr(String memo,MyColor myColor, Sticker sticker, int gradation,
SafePhoneNumber safePhoneNumber){
public void modifyQr(String memo,MyColor myColor, Sticker sticker, String gradation,
String backgroundPicture, SafePhoneNumber safePhoneNumber){
this.memo = memo;
this.myColor = myColor;
this.sticker = sticker;
this.gradation = gradation;
this.safePhoneNumber = safePhoneNumber;
this.backgroundPicture = backgroundPicture;
}
}
42 changes: 33 additions & 9 deletions src/main/java/org/example/qpin/domain/qr/service/QrService.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,17 @@ public class QrService {
private final SafePhoneNumberRepository safePhoneNumberRepository;

@Transactional
public Qr createQr(SafePhoneNumber safePhoneNumber, CreateQrRequestDto request) throws WriterException, IOException{

public Qr createQr(CreateQrRequestDto request) throws WriterException, IOException{
// μœ μ € μœ νš¨μ„± 검사
Member member = memberRepository.findById(request.getMemberId()).orElseThrow(() -> new BadRequestException(NOT_FOUND_MEMBER_ID));

SafePhoneNumber safePhoneNumber = safePhoneNumberRepository.findByPhoneNum(request.getPhoneNum());
if (safePhoneNumber == null) {
safePhoneNumber = safePhoneNumberRepository.save(new SafePhoneNumber(request.getSafePhoneNum(), request.getPhoneNum()));
}
// QR μ—”ν„°ν‹° 생성 및 μ €μž₯
Qr qr = new Qr(member, request.getMemo(), request.getMyColor(), request.getSticker(),
request.getGradation(), safePhoneNumber);
request.getGradation(), request.getBackgroundPicture() ,safePhoneNumber);
qrRepository.save(qr);

String qrUrl = "http://localhost:8080/qr/"+ qr.getQrId();
Expand All @@ -54,7 +59,6 @@ public Qr createQr(SafePhoneNumber safePhoneNumber, CreateQrRequestDto request)
byte[] qrImage = generateQRCodeImage(qrUrl);
qr.setQrImage(qrImage);

qrRepository.save(qr);
return qr;
}

Expand Down Expand Up @@ -93,9 +97,20 @@ public byte[] generateQRCodeImage(String qrUrl) throws WriterException, IOExcept

@Transactional
public CheckQrDto toCheckQrDto(Long qrId) {
Qr qr = qrRepository.findById(qrId).orElseThrow();
CheckQrDto checkQrDto = new CheckQrDto(qr.getSafePhoneNumber().getSafePhoneNumber(),qr.getMemo(),
qr.getMyColor(),qr.getSticker(),qr.getGradation(),qr.getQrImage());
Qr qr = qrRepository.findById(qrId)
.orElseThrow(() -> new IllegalArgumentException("ν•΄λ‹Ή QR μ½”λ“œκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. qrId = " + qrId));
SafePhoneNumber safePhoneNumber = qr.getSafePhoneNumber();
String safePhoneNum = (safePhoneNumber != null) ? safePhoneNumber.getSafePhoneNumber() : null;

CheckQrDto checkQrDto = new CheckQrDto(
qr.getQrId(),
safePhoneNum,
qr.getMemo(),
qr.getMyColor(),
qr.getSticker(),
qr.getGradation(),
qr.getQrImage(),
qr.getBackgroundPicture());
return checkQrDto;
}

Expand All @@ -113,12 +128,14 @@ public List<CheckQrDto> toCheckQrDtoList(Long memberId) {
List<Qr> qrList = qrRepository.findAllByMember(member);
List<CheckQrDto> checkQrDtoList = qrList.stream()
.map(qr -> new CheckQrDto(
qr.getQrId(),
qr.getSafePhoneNumber().getSafePhoneNumber(),
qr.getMemo(),
qr.getMyColor(),
qr.getSticker(),
qr.getGradation(),
qr.getQrImage()
qr.getQrImage(),
qr.getBackgroundPicture()
))
.collect(Collectors.toList());

Expand All @@ -129,12 +146,19 @@ public void removeQr(Long qrId) {
qrRepository.deleteById(qrId);
}

public void removeQrs(List<Long> qrIds) {
for (Long qrId : qrIds){
qrRepository.deleteById(qrId);
}
}


public void modifyQr(Long qrId, ModifyQrRequestDto request) {
SafePhoneNumber safePhoneNumber = safePhoneNumberRepository.findByPhoneNum(request.getPhoneNum());

Qr qr = qrRepository.findById(qrId).orElseThrow();
qr.modifyQr(request.getMemo(), request.getMyColor(), request.getSticker(),
request.getGradation(), safePhoneNumber);
request.getGradation(), request.getBackGroundImage(), safePhoneNumber);

qrRepository.save(qr);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,8 @@ public class SafePhoneNumber extends BaseEntity {
@JoinColumn(name = "member_id")
private Member member;

public SafePhoneNumber(String safePhoneNumber, String phoneNum) {
this.safePhoneNumber = safePhoneNumber;
this.phoneNum = phoneNum;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,11 @@ public class SafePhoneNumberService {
public SafePhoneNumber findByPhoneNum(String phoneNum) {
return safePhoneNumberRepository.findByPhoneNum(phoneNum);
}

public SafePhoneNumber create(String phoneNum) {
SafePhoneNumber newSafePhoneNumber = SafePhoneNumber.builder()
.safePhoneNumber(phoneNum)
.build();
return safePhoneNumberRepository.save(newSafePhoneNumber);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,9 @@ public Long postScrap(Long memberId, Long parkId) {
}

public List<ScrapResponseDto> getScrapList(Long memberId) {
findMemberById(memberId);
List<Scrap> scrapList = scrapRepository.findAllByMember(memberId);
Member member = memberRepository.findById(memberId)
.orElseThrow(() -> new RuntimeException("νšŒμ› μ—†μŒ"));
List<Scrap> scrapList = scrapRepository.findAllByMember(member);

return scrapList.stream()
.map(scrap -> ScrapResponseDto.builder()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

public interface ParkingRepository extends JpaRepository<Parking, Long> {

Optional<Parking> findParkingByParkingAreaIdAndMember(Long parkingAreaId, Long memberId);
Optional<Parking> findParkingByMemberIdAndIsParkingTrue(Long memberId);
Optional<Parking> findParkingByParkingAreaIdAndMember_MemberId(Long parkingAreaId, Long memberId);
Optional<Parking> findByMember_MemberIdAndIsParkingTrue(Long memberId);
Optional<Parking> findByParkingAreaId(Long parkingAreaId);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.example.qpin.global.common.repository;

import org.example.qpin.domain.member.entity.Member;
import org.example.qpin.domain.scrap.entity.Scrap;
import org.springframework.data.jpa.repository.JpaRepository;

Expand All @@ -8,6 +9,6 @@

public interface ScrapRepository extends JpaRepository<Scrap, Long> {

Optional<Scrap> findScrapByParkIdAndMember(Long parkId, Long member);
List<Scrap> findAllByMember(Long member);
Optional<Scrap> findByParking_ParkingAreaIdAndMember_MemberId(Long parkingId, Long memberId);
List<Scrap> findAllByMember(Member member);
}
Loading