Skip to content

Commit

Permalink
Merge branch 'dev' into 4-feat-마이페이지를-구현합니다
Browse files Browse the repository at this point in the history
  • Loading branch information
RudyLuvIt authored Nov 21, 2024
2 parents 09eee75 + ed00afc commit ead5c3b
Show file tree
Hide file tree
Showing 52 changed files with 1,532 additions and 21 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,4 @@ out/
.vscode/

### Application.yml ###
/src/main/resources/*
/src/main/resources/application-dev.yml
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,12 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'jakarta.persistence:jakarta.persistence-api:3.1.0'
implementation 'org.mapstruct:mapstruct:1.5.5.Final'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.5.Final'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
Expand Down
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
@@ -1 +1 @@
rootProject.name = 'dorundorun-Be'
//rootProject.name = 'dorundorun-BE'
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package com.alom.dorundorunbe.domain.RunningRecord.mapper;

import com.alom.dorundorunbe.domain.RunningRecord.domain.RunningRecord;
import com.alom.dorundorunbe.domain.RunningRecord.dto.RunningRecordEndRequestDto;
import com.alom.dorundorunbe.domain.RunningRecord.dto.RunningRecordResponseDto;
import com.alom.dorundorunbe.domain.RunningRecord.dto.RunningRecordStartRequestDto;
import javax.annotation.processing.Generated;
import org.springframework.stereotype.Component;

@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2024-11-19T21:28:17+0900",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component
public class RunningRecordMapperImpl implements RunningRecordMapper {

@Override
public RunningRecordResponseDto toResponseDto(RunningRecord runningRecord) {
if ( runningRecord == null ) {
return null;
}

RunningRecordResponseDto.RunningRecordResponseDtoBuilder runningRecordResponseDto = RunningRecordResponseDto.builder();

runningRecordResponseDto.id( runningRecord.getId() );
runningRecordResponseDto.date( runningRecord.getDate() );
runningRecordResponseDto.startTime( runningRecord.getStartTime() );
runningRecordResponseDto.endTime( runningRecord.getEndTime() );
runningRecordResponseDto.distance( runningRecord.getDistance() );
runningRecordResponseDto.cadence( runningRecord.getCadence() );
runningRecordResponseDto.elapsedTime( runningRecord.getElapsedTime() );
runningRecordResponseDto.speed( runningRecord.getSpeed() );

return runningRecordResponseDto.build();
}

@Override
public RunningRecord toEntityFromStartRequestDto(RunningRecordStartRequestDto startRequestDto) {
if ( startRequestDto == null ) {
return null;
}

RunningRecord.RunningRecordBuilder runningRecord = RunningRecord.builder();

runningRecord.date( startRequestDto.getDate() );
runningRecord.startTime( startRequestDto.getStartTime() );

return runningRecord.build();
}

@Override
public RunningRecord toEntityFromEndRequestDto(RunningRecordEndRequestDto endRequestDto) {
if ( endRequestDto == null ) {
return null;
}

RunningRecord.RunningRecordBuilder runningRecord = RunningRecord.builder();

runningRecord.id( endRequestDto.getId() );
runningRecord.endTime( endRequestDto.getEndTime() );
runningRecord.distance( endRequestDto.getDistance() );
runningRecord.cadence( endRequestDto.getCadence() );
runningRecord.elapsedTime( endRequestDto.getElapsedTime() );
runningRecord.speed( endRequestDto.getSpeed() );

return runningRecord.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package com.alom.dorundorunbe.domain.RunningRecord.controller;

import com.alom.dorundorunbe.domain.RunningRecord.dto.ResponseDto;
import com.alom.dorundorunbe.domain.RunningRecord.dto.RunningRecordEndRequestDto;
import com.alom.dorundorunbe.domain.RunningRecord.dto.RunningRecordResponseDto;
import com.alom.dorundorunbe.domain.RunningRecord.dto.RunningRecordStartRequestDto;
import com.alom.dorundorunbe.domain.RunningRecord.service.RunningRecordService;
import lombok.AllArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
@AllArgsConstructor
@RequestMapping("/records")
public class RunningRecordController {
private final RunningRecordService runningRecordService;

@PostMapping
public ResponseEntity<ResponseDto<RunningRecordResponseDto>> createStartRunningRecord(RunningRecordStartRequestDto startRequestDto){
RunningRecordResponseDto result = runningRecordService.saveStartRecord(startRequestDto);
ResponseDto<RunningRecordResponseDto> response = new ResponseDto<>();
response.setSuccess(true);
response.setCode(HttpStatus.CREATED.value());
response.setMessage("러닝 시작 시간이 성공적으로 저장되었습니다.");
response.setResult(result);

return new ResponseEntity<>(response, HttpStatus.CREATED);
}

@PostMapping("/end")
public ResponseEntity<ResponseDto<RunningRecordResponseDto>> createEndRunningRecord(RunningRecordEndRequestDto endRequestDto){
RunningRecordResponseDto result = runningRecordService.saveEndRecord(endRequestDto);
ResponseDto<RunningRecordResponseDto> response = new ResponseDto<>();
response.setSuccess(true);
response.setCode(HttpStatus.CREATED.value());
response.setMessage("러닝 기록이 성공적으로 생성되었습니다.");
response.setResult(result);

return new ResponseEntity<>(response, HttpStatus.CREATED);
}

@GetMapping("/{id}")
public ResponseEntity<ResponseDto<RunningRecordResponseDto>> fetchRunningRecord(@PathVariable Long id){
RunningRecordResponseDto result = runningRecordService.findRunningRecord(id);
ResponseDto<RunningRecordResponseDto> response = new ResponseDto<>();
response.setSuccess(true);
response.setCode(HttpStatus.OK.value());
response.setMessage("요청에 성공하였습니다.");
response.setResult(result);

return new ResponseEntity<>(response, HttpStatus.OK);
}

// @GetMapping("/{userId}")
// public ResponseEntity<ResponseDto<RunningRecordResponseDto>> fetchRunningRecords(@PathVariable Long userId,
// @RequestParam(defaultValue = "0") int page,
// @RequestParam(defaultValue = "5") int size){
// Pageable pageable = PageRequest.of(page, size);
// Page<RunningRecordResponseDto> result = runningRecordService.findRunningRecords(userId, pageable);
// ResponseDto<RunningRecordResponseDto> response = new ResponseDto<>();
// response.setSuccess(true);
// response.setCode(HttpStatus.OK.value());
// response.setMessage("요청에 성공하였습니다.");
// response.setResult(result);
//
// return new ResponseEntity<>(response, HttpStatus.OK);
// }


}
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,15 @@
import com.alom.dorundorunbe.domain.user.domain.User;
import com.alom.dorundorunbe.global.util.BaseEntity;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.*;

import java.time.LocalDateTime;

import static jakarta.persistence.FetchType.LAZY;

@Entity @Getter
@Entity
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
Expand All @@ -29,9 +28,17 @@ public class RunningRecord extends BaseEntity {

private LocalDateTime date;

private long distance;
private LocalDateTime startTime;

private LocalDateTime endTime;

private double distance;

private int cadence;

private long time;
private long elapsedTime;

private double speed;

private boolean isFinished = false;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.alom.dorundorunbe.domain.RunningRecord.dto;

import lombok.*;

@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ResponseDto<T> {
private boolean isSuccess;
private int code;
private String message;
private T result;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.alom.dorundorunbe.domain.RunningRecord.dto;

import jakarta.persistence.Entity;
import lombok.*;

import java.time.LocalDateTime;


@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class RunningRecordEndRequestDto {
private Long id;

private double distance;

private int cadence;

private long elapsedTime;

private LocalDateTime endTime;

private double speed;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.alom.dorundorunbe.domain.RunningRecord.dto;

import lombok.*;

import java.time.LocalDateTime;

@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class RunningRecordResponseDto {
private Long id;

private LocalDateTime date;

private LocalDateTime startTime;

private LocalDateTime endTime;

private double distance;

private int cadence;

private long elapsedTime;

private double speed;

private boolean isFinished;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.alom.dorundorunbe.domain.RunningRecord.dto;

import lombok.*;

import java.time.LocalDateTime;

@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class RunningRecordStartRequestDto {
private Long userId;

private LocalDateTime date;

private LocalDateTime startTime;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.alom.dorundorunbe.domain.RunningRecord.mapper;

import com.alom.dorundorunbe.domain.RunningRecord.domain.RunningRecord;
import com.alom.dorundorunbe.domain.RunningRecord.dto.RunningRecordEndRequestDto;
import com.alom.dorundorunbe.domain.RunningRecord.dto.RunningRecordResponseDto;
import com.alom.dorundorunbe.domain.RunningRecord.dto.RunningRecordStartRequestDto;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;

@Mapper(componentModel = "spring")
public interface RunningRecordMapper {
RunningRecordResponseDto toResponseDto(RunningRecord runningRecord);
@Mapping(target = "id", ignore = true)
RunningRecord toEntityFromStartRequestDto(RunningRecordStartRequestDto startRequestDto);
RunningRecord toEntityFromEndRequestDto(RunningRecordEndRequestDto endRequestDto);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.alom.dorundorunbe.domain.RunningRecord.repository;

import com.alom.dorundorunbe.domain.RunningRecord.domain.RunningRecord;
import com.alom.dorundorunbe.domain.user.domain.User;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface RunningRecordRepository extends JpaRepository<RunningRecord, Long> {
Page<RunningRecord> findByUser(User user, Pageable pageable);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.alom.dorundorunbe.domain.RunningRecord.service;

import com.alom.dorundorunbe.domain.RunningRecord.domain.RunningRecord;
import com.alom.dorundorunbe.domain.RunningRecord.dto.RunningRecordEndRequestDto;
import com.alom.dorundorunbe.domain.RunningRecord.dto.RunningRecordResponseDto;
import com.alom.dorundorunbe.domain.RunningRecord.dto.RunningRecordStartRequestDto;
import com.alom.dorundorunbe.domain.RunningRecord.mapper.RunningRecordMapper;
import com.alom.dorundorunbe.domain.RunningRecord.repository.RunningRecordRepository;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@AllArgsConstructor
public class RunningRecordService {
private final RunningRecordRepository runningRecordRepository;
private final RunningRecordMapper runningRecordMapper;
// private final UserRepository userRepository;

public RunningRecordResponseDto saveStartRecord(RunningRecordStartRequestDto startRequestDto){
// User user = userRepository.findById(startRequestDto.getUserId());
RunningRecord runningRecord = runningRecordMapper.toEntityFromStartRequestDto(startRequestDto);
// runningRecord.setUser(user);
return runningRecordMapper.toResponseDto(runningRecordRepository.save(runningRecord));
}

public RunningRecordResponseDto saveEndRecord(RunningRecordEndRequestDto endRequestDto){
RunningRecord runningRecord = runningRecordMapper.toEntityFromEndRequestDto(endRequestDto);
runningRecord.setFinished(true);
return runningRecordMapper.toResponseDto(runningRecord);
}

// user별 최신순 특정 개수의 기록 조회
// public Page<RunningRecordResponseDto> findRunningRecords(Long userId, Pageable pageable){
// User user = userRepository.findById(userId);
// Page<RunningRecord> records = runningRecordRepository.findByUser(user, pageable);
// return records.map(runningRecordMapper::toResponseDto);
// }

// 특정 기록의 상세 조회
public RunningRecordResponseDto findRunningRecord(Long id){
return runningRecordMapper.toResponseDto(runningRecordRepository.findById(id)
.orElseThrow(() -> new IllegalStateException("Running record with id "+id+" does not exist")));
}
}
Loading

0 comments on commit ead5c3b

Please sign in to comment.