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 @@ -3,7 +3,6 @@

import jakarta.persistence.*;
import lombok.*;
import org.example.kukathonbackend.domain.user.domain.User;
import org.example.kukathonbackend.domain.week.domain.Week;

import java.time.LocalDate;
Expand All @@ -27,7 +26,7 @@ public class Commuting {
@Column(name = "commuting_time")
private Integer commutingTime;

@OneToOne(fetch = FetchType.LAZY)
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "week_id")
private Week week;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@

import jakarta.persistence.*;
import lombok.*;
import org.example.kukathonbackend.domain.user.domain.User;
import org.example.kukathonbackend.domain.user.domain.Users;

import java.math.BigDecimal;
import java.time.LocalDateTime;

@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
Expand All @@ -25,19 +24,19 @@ public class Route {
@Column(name = "arrive_location")
private String arriveLocation;

@Column(name = "start_latitude", precision = 10, scale = 8)
private BigDecimal startLatitude;
@Column(name = "start_latitude")
private String startLatitude;

@Column(name = "start_longitude", precision = 10, scale = 8)
private BigDecimal startLongitude;
@Column(name = "start_longitude")
private String startLongitude;

@Column(name = "arrive_latitude", precision = 10, scale = 8)
private BigDecimal arriveLatitude;
@Column(name = "arrive_latitude")
private String arriveLatitude;

@Column(name = "arrive_longitude", precision = 10, scale = 8)
private BigDecimal arriveLongitude;
@Column(name = "arrive_longitude")
private String arriveLongitude;

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "id")
private Users user;
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class TaskList {
@Column(name = "tag")
private TagEnum tag;

@OneToOne(fetch = FetchType.LAZY)
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "commuting_id")
private Commuting commuting;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package org.example.kukathonbackend.domain.user.application;

import org.example.kukathonbackend.domain.user.domain.User;
import org.example.kukathonbackend.domain.user.domain.Users;
import org.example.kukathonbackend.domain.user.domain.Users;

public interface UserService {
void save(User user);
User getUserByUserId(Long userId);
User getUserByProviderId(String providerId);
void save(Users user);
Users getUserByUserId(Long userId);
Users getUserByProviderId(String providerId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

import lombok.RequiredArgsConstructor;
import org.example.kukathonbackend.domain.user.dao.UserRepository;
import org.example.kukathonbackend.domain.user.domain.User;
import org.example.kukathonbackend.domain.user.domain.Users;
import org.example.kukathonbackend.domain.user.domain.Users;
import org.springframework.stereotype.Service;

@Service
Expand All @@ -11,17 +12,17 @@ public class UserServiceImpl implements UserService {
private final UserRepository userRepository;

@Override
public void save(User user) {
public void save(Users user) {
userRepository.save(user);
}

@Override
public User getUserByUserId(Long userId) {
public Users getUserByUserId(Long userId) {
return userRepository.findById(userId).orElseThrow(() -> new RuntimeException("User not found"));
}

@Override
public User getUserByProviderId(String providerId) {
public Users getUserByProviderId(String providerId) {
return userRepository.findByProviderId(providerId);
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package org.example.kukathonbackend.domain.user.dao;

import org.example.kukathonbackend.domain.user.domain.User;
import org.example.kukathonbackend.domain.user.domain.Users;
import org.example.kukathonbackend.domain.user.domain.Users;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends JpaRepository<User,Long> {
User findByProviderId(String providerId);
public interface UserRepository extends JpaRepository<Users,Long> {
Users findByProviderId(String providerId);

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
@AllArgsConstructor
@Builder
@Data
@Table(name = "user")
public class User {
@Table(name = "users")
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
@Column(name = "users_id")
private Long id;

@Column(name = "name")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package org.example.kukathonbackend.domain.week.application;

import lombok.RequiredArgsConstructor;
import org.example.kukathonbackend.domain.user.dao.UserRepository;
import org.example.kukathonbackend.domain.user.domain.Users;
import org.example.kukathonbackend.domain.week.dao.WeekRepository;
import org.example.kukathonbackend.domain.week.domain.Week;
import org.example.kukathonbackend.domain.week.dto.request.RequestWeeklyGoalDTO;
import org.example.kukathonbackend.domain.weeklygoal.dao.WeeklyGoalRepository;
import org.example.kukathonbackend.domain.weeklygoal.domain.WeeklyGoal;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDate;
import java.time.temporal.ChronoField;
import java.time.temporal.WeekFields;
import java.util.Locale;
import java.util.Optional;

@Service
@RequiredArgsConstructor
@Transactional
public class WeekService {

private final WeekRepository weekRepository;
private final UserRepository userRepository;
private final WeeklyGoalRepository weeklyGoalRepository;

public void createWeekGoal(RequestWeeklyGoalDTO requestWeeklyGoalDTO) {

LocalDate currentDate = LocalDate.now();
WeekFields weekFields = WeekFields.of(Locale.KOREA);
int currentDayOfWeek = currentDate.get(ChronoField.DAY_OF_WEEK);
int daysToAddToStart = 1 - currentDayOfWeek; // 1: Monday, 7: Sunday

LocalDate startDay = currentDate.plusDays(daysToAddToStart);
LocalDate endDay = startDay.plusDays(6); // 6 days after Monday is Sunday

System.out.println("Start day: " + startDay);
System.out.println("End day: " + endDay);

Optional<Users> user = userRepository.findById(Long.valueOf(1));

System.out.println(user.get());

Week week = weekRepository.save(
Week.builder()
.user(user.get())
.startDay(startDay)
.endDay(endDay)
.build()
);

for(String goal : requestWeeklyGoalDTO.getGoal()){
weeklyGoalRepository.save(
WeeklyGoal.builder()
.week(week)
.goal(goal)
.goalSuccess(Boolean.FALSE)
.build()
);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.example.kukathonbackend.domain.week.dao;

import org.example.kukathonbackend.domain.week.domain.Week;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface WeekRepository extends JpaRepository<Week, Long> {

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@

import jakarta.persistence.*;
import lombok.*;
import org.example.kukathonbackend.domain.user.domain.User;
import org.example.kukathonbackend.domain.user.domain.Users;

import java.time.LocalDate;

@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
Expand All @@ -18,16 +20,15 @@ public class Week {
private Long id;

@Column(name = "start_day")
private String startDay;
private LocalDate startDay;

@Column(name = "end_day")
private String endDay;
private LocalDate endDay;

@Column(name = "goal")
private String goal;

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "id")
private Users user;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.example.kukathonbackend.domain.week.dto.request;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.List;

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class RequestWeeklyGoalDTO {
List<String> goal;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.example.kukathonbackend.domain.week.presentation;

import lombok.RequiredArgsConstructor;
import org.example.kukathonbackend.domain.week.application.WeekService;
import org.example.kukathonbackend.domain.week.dto.request.RequestWeeklyGoalDTO;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/v1/week")
@RequiredArgsConstructor
public class WeekController {

private final WeekService weekService;

@PostMapping("/goal")
public ResponseEntity<String> receiveWeeklyGoals(@RequestBody RequestWeeklyGoalDTO requestWeeklyGoalDTO) {

weekService.createWeekGoal(requestWeeklyGoalDTO);
return ResponseEntity.ok("A~YO~");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.example.kukathonbackend.domain.weeklygoal.dao;

import org.example.kukathonbackend.domain.weeklygoal.domain.WeeklyGoal;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface WeeklyGoalRepository extends JpaRepository<WeeklyGoal, Long> {

}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class WeeklyGoal {
@Column(name = "goal_success")
private Boolean goalSuccess;

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "week_id")
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "id")
private Week week;
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.example.kukathonbackend.domain.user.application.UserService;
import org.example.kukathonbackend.domain.user.domain.User;
import org.example.kukathonbackend.domain.user.domain.Users;
import org.example.kukathonbackend.domain.user.domain.Users;
import org.example.kukathonbackend.global.util.JwtUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.Authentication;
Expand Down Expand Up @@ -70,16 +71,16 @@ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletRespo
name = userAttributes.get("name").toString();
}

User existUser = userService.getUserByProviderId(providerId); // provider id 기반으로 기존 or 신규 유저 파악
Users existUser = userService.getUserByProviderId(providerId); // provider id 기반으로 기존 or 신규 유저 파악

if (existUser == null) {
// 신규 유저인 경우
log.info("신규 유저입니다. 등록을 진행합니다.");
User newUser = User.builder()
Users newUser = Users.builder()
.provider(provider)
.providerId(providerId)
.name(name)
.accessedTime(accessedTime)
.recentAccessedTime(accessedTime)
.build();

// 신규 유저 정보 저장
Expand All @@ -91,7 +92,7 @@ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletRespo
userId = existUser.getId();

// 마지막 접속 시간 변경
existUser.setAccessedTime(accessedTime);
existUser.setRecentAccessedTime(accessedTime);

// 기존 유저 정보 업데이트
userService.save(existUser);
Expand Down
2 changes: 0 additions & 2 deletions src/main/resources/data.sql

This file was deleted.