Skip to content

Commit

Permalink
Merge pull request #67 from Team-Greendar/develop
Browse files Browse the repository at this point in the history
Release 1.0.0
  • Loading branch information
chosunghyun18 authored Mar 19, 2023
2 parents 08784f3 + ac7924e commit d07b0be
Show file tree
Hide file tree
Showing 26 changed files with 451 additions and 172 deletions.
1 change: 1 addition & 0 deletions greendar/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-mail'
implementation 'com.google.cloud:google-cloud-storage:2.17.1'
implementation 'org.springframework.cloud:spring-cloud-gcp-starter-storage:1.2.8.RELEASE'
implementation 'junit:junit:4.13.1'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
testImplementation 'org.springframework.boot:spring-boot-starter-test'

Expand Down
3 changes: 2 additions & 1 deletion greendar/build.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
#!/bin/bash
echo "start Build!"
./gradlew build
PID="Greendar"
echo $PID kill
kill -9 $(ps -ef | grep $PID | grep -v grep | awk '{print $2 }')
./gradlew build
echo "start Application!"
nohup java -jar ./build/libs/Greendar.jar &
2 changes: 2 additions & 0 deletions greendar/src/main/java/greendar/GreendarApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@EnableJpaAuditing
@SpringBootApplication
public class GreendarApplication {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,26 @@
package greendar.domain.eventtodo.api;

import greendar.domain.eventtodo.application.EventTodoService;
import greendar.domain.eventtodo.domain.EventTodo;
import greendar.domain.eventtodo.dto.EventTodoDtos.EventTodoCompleteUpdateRequestDto;
import greendar.domain.eventtodo.dto.EventTodoDtos.MonthlyAchievementRatio;
import greendar.domain.eventtodo.dto.EventTodoResponseDto;
import greendar.domain.member.application.MemberService;
import greendar.domain.member.domain.Member;
import greendar.domain.privatetodo.domain.PrivateTodo;
import greendar.domain.privatetodo.dto.PrivateTodoDtos.DailyAchievementRatio;
import greendar.domain.privatetodo.dto.PrivateTodoDtos.PrivateTodoResponse;
import greendar.global.common.ApiResponse;
import greendar.infra.gcp.storage.application.FileService;
import java.time.LocalDate;
import java.util.List;
import java.util.TreeMap;
import java.util.stream.Collectors;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

Expand All @@ -32,26 +39,36 @@ public class EventTodoApi {
private final MemberService memberService;
private final EventTodoService eventTodoService;
private final FileService fileService;

@DeleteMapping(value = "/image")
public ApiResponse setTempoaryEventTodoImageUrl(@RequestHeader("Authorization") String firebaseToken,
@RequestParam("eventTodoItemId") Long eventTodoItemId) {
memberService.findOneByToken(firebaseToken);
EventTodo eventTodo =eventTodoService.updateEventTodo(null,"EMPTY",eventTodoItemId,firebaseToken);
if(eventTodo == null) return ApiResponse.fail(false);
return ApiResponse.success(true);
}
@PutMapping(value = "/image",consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
public ApiResponse updateEventTodoImageUrlByItemId(@RequestHeader("Authorization") String firebaseToken,
@RequestParam("event_todo_id") Long event_todo_id,
@RequestParam("file") MultipartFile file) {
Member member = memberService.findOneByToken(firebaseToken);
@RequestParam("eventTodoItemId") Long eventTodoItemId,
@RequestParam("file") MultipartFile file) {
memberService.findOneByToken(firebaseToken);
String imageUrl = fileService.uploadFile(file).getFileUrl();
return ApiResponse.success(eventTodoService.updateEventTodo(null, imageUrl,
event_todo_id, firebaseToken));
EventTodoResponseDto result = new EventTodoResponseDto(eventTodoService.updateEventTodo(null, imageUrl,
eventTodoItemId, firebaseToken));
return ApiResponse.success(result);
}
@PutMapping(value = "/complete")
public ApiResponse updateEventTodoCompleteByItemId(@RequestHeader("Authorization") String firebaseToken,
@RequestBody EventTodoCompleteUpdateRequestDto request) {
return ApiResponse.success(eventTodoService.updateEventTodo(request.getComplete(),null, request.getEventTodoItemId(),firebaseToken));
EventTodoResponseDto result = new EventTodoResponseDto(eventTodoService.updateEventTodo(request.getComplete(),null, request.getEventTodoItemId(),firebaseToken));
return ApiResponse.success(result);
}

@GetMapping(value = "/{date}")
public ApiResponse getEventTodoByDate(@RequestHeader("Authorization") String firebaseToken,
@PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date) {
Member member = memberService.findOneByToken(firebaseToken);
if(member == null) return ApiResponse.fail("NoMember");
return ApiResponse.success(eventTodoService.getAllEventTodoByOneDay(date,member));
}
@GetMapping(value = "/monthly/{date}")
Expand All @@ -61,18 +78,25 @@ public ApiResponse getEventTodoByMonthlyDate(@RequestHeader("Authorization") Str
if(member == null) return ApiResponse.fail("NoMember");
return ApiResponse.success(eventTodoService.getAllEventTodoByOneMonth(date,member));
}
@GetMapping(value = "/monthly/ratio/{date}")
public ApiResponse getEventTodoRatioByDate(@RequestHeader("Authorization") String firebaseToken,
@GetMapping(value = "/monthly/daily/ratio/{date}")
public ApiResponse getEventTodoDailyRatioByDate(@RequestHeader("Authorization") String firebaseToken,
@PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date) {

Member member = memberService.findOneByToken(firebaseToken);

TreeMap<LocalDate, Float> result =eventTodoService.getRatioByDailyInMonth(date,member);
TreeMap<LocalDate, Float> result =eventTodoService.getDailyRatioByMonth(date,member);
List<DailyAchievementRatio> dailyAchievementRatios = result.entrySet()
.stream()
.map(DailyAchievementRatio::new)
.collect(Collectors.toList());
return ApiResponse.success(dailyAchievementRatios);
}
@GetMapping(value = "/monthly/ratio/{date}")
public ApiResponse getEventTodoRatioByDate(@RequestHeader("Authorization") String firebaseToken,
@PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date) {

Member member = memberService.findOneByToken(firebaseToken);
double result = eventTodoService.getMonthlyRatio(date,member);
return ApiResponse.success(new MonthlyAchievementRatio(date,Math.round(result*100)/100.0));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ public EventTodo updateEventTodo(Boolean complete , String imageUrl, Long eventT
Member member = memberRepository.fineOneByToken(token);
EventTodoItem eventTodoItem = eventTodoItemRepository.findOneById(eventTodoItemId);
EventTodo eventTodo = eventTodoRepository.findOneByEventTodoItemIdMemberId(member.getId(),eventTodoItem.getId());

// 생성
if(eventTodo==null) {
if(complete == null)
Expand All @@ -53,20 +54,24 @@ public EventTodo updateEventTodo(Boolean complete , String imageUrl, Long eventT
}

}
public TreeMap<LocalDate, Float> getRatioByDailyInMonth(LocalDate date, Member member) {

public TreeMap<LocalDate, Float> getDailyRatioByMonth(LocalDate date, Member member) {
List<DailyAchievement> dailyAchievements = getEventTodoDailyAchievements(date, member);
return privateTodoService.calculateRatio(dailyAchievements);
}
public double getMonthlyRatio(LocalDate date, Member member) {
List<DailyAchievement> dailyAchievements = getEventTodoDailyAchievements(date, member);
return privateTodoService.calculateMonthlyRatio(dailyAchievements);
}
public List<DailyAchievement> getEventTodoDailyAchievements(LocalDate date, Member member){
List<EventTodoItem> eventTodoItems = eventTodoItemRepository.findAllByMonth(date);
List<EventTodoResponseDto> eventTodos = eventTodoRepository.findAllByMonth(date,member);

List<EventTodoResponseDto> eventTodoResponses = getEventTodoResponsesByCompare(eventTodoItems,eventTodos);
List<DailyAchievement> dailyAchievements = eventTodoResponses.stream()
return eventTodoResponses.stream()
.map(DailyAchievement::new)
.collect(Collectors.toList());
System.out.println("!--!");
System.out.println(dailyAchievements);
System.out.println("!--!");
return privateTodoService.calculateRatio(dailyAchievements);
}


public List<EventTodoResponseDto> getAllEventTodoByOneDay(LocalDate date , Member member) {

List<EventTodoItem> eventTodoItems = eventTodoItemRepository.findAllByDay(date);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import greendar.domain.eventtodoitem.domain.EventTodoItem;
import greendar.domain.member.domain.Member;
import greendar.domain.model.BaseTimeEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
Expand All @@ -17,7 +18,7 @@
@Entity
@Getter
@Setter
public class EventTodo {
public class EventTodo extends BaseTimeEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="event_todo_id")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,28 @@
package greendar.domain.eventtodo.dto;

import java.time.LocalDate;
import javax.validation.constraints.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;

public class EventTodoDtos {
@Data
@NoArgsConstructor
public static class EventTodoCompleteUpdateRequestDto
{
private Boolean complete;
{ @NotNull
private Long eventTodoItemId;
@NotNull
private Boolean complete;
}

@Data
public static class MonthlyAchievementRatio {
private LocalDate date;
private double ratio;

public MonthlyAchievementRatio(LocalDate date, double ratio) {
this.date = date;
this.ratio = ratio * 100;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,16 @@
import greendar.domain.eventtodo.domain.EventTodo;
import greendar.domain.eventtodoitem.domain.EventTodoItem;
import java.time.LocalDate;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;


@Getter
@Setter
public class EventTodoResponseDto{
private Long eventTodoItemId ;
private String task;
private LocalDate date;
private String imageUrl;
private Boolean complete;
final private Long eventTodoItemId ;
final private String task;
final private LocalDate date;
final private String imageUrl;
final private Boolean complete;

public EventTodoResponseDto(EventTodo eventTodo) {
this.task = eventTodo.getEventTodoItem().getTask();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import greendar.global.common.ApiResponse;
import java.time.LocalDate;
import java.util.List;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.GetMapping;
Expand All @@ -29,10 +30,15 @@ public ApiResponse getEvenTodoItems(){
return ApiResponse.success(eventTodoItems);
}
@PostMapping(produces = "application/json;charset=UTF-8")
public ApiResponse addEventTodo(@RequestBody EventTodoPostItemRequestDto request) {
public ApiResponse addEventTodoDate(@Valid @RequestBody EventTodoPostItemRequestDto request) {
eventTodoItemService.saveTodo(request.getTask(),request.getDate());
return ApiResponse.success("ok");
}
@PostMapping(value = "/week", produces = "application/json;charset=UTF-8")
public ApiResponse addEventTodoDateWeek(@Valid @RequestBody EventTodoPostItemRequestDto request) {
eventTodoItemService.saveTodoAddWeek(request.getTask(),request.getDate());
return ApiResponse.success("ok");
}
@GetMapping(value = "/monthly/{date}",produces = "application/json;charset=UTF-8")
public ApiResponse getEventTodoItemByMonthlyDate(@PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date){
return ApiResponse.success(eventTodoItemService.findAllByMonth(date));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package greendar.domain.eventtodoitem.domain;

import greendar.domain.model.BaseTimeEntity;
import java.time.LocalDate;
import javax.persistence.Column;
import javax.persistence.Entity;
Expand All @@ -13,7 +14,7 @@
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class EventTodoItem {
public class EventTodoItem extends BaseTimeEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="event_todo_item_id")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import greendar.domain.eventtodoitem.domain.EventTodoItem;
import java.time.LocalDate;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.AccessLevel;
import lombok.Data;
import lombok.NoArgsConstructor;
Expand All @@ -11,13 +13,15 @@ public class EventTodoItemDtos {
@Data
@NoArgsConstructor
public static class EventTodoPostItemRequestDto
{
{ @NotEmpty
String task;
@NotNull
LocalDate date;
}
@Data
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public static class EventTodoItemResponseDto{

private Long event_todo_item_id ;
private String task;
private LocalDate date;
Expand Down
16 changes: 11 additions & 5 deletions greendar/src/main/java/greendar/domain/member/api/MemberApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class MemberApi {
private final MemberService memberService;
private final FileService fileService;

@GetMapping(value = "/list",produces = "application/json;charset=UTF-8")
@GetMapping(value = "/list", produces = "application/json;charset=UTF-8")
public ApiResponse getMembers() {
List<Member> findMembers = memberService.getAll();
List<MemberResponse> response = findMembers.stream().map(MemberResponse::new).collect(Collectors.toList());
Expand All @@ -34,22 +34,28 @@ public ApiResponse getMembers() {

@PostMapping(produces = "application/json;charset=UTF-8")
public ApiResponse postMember(@RequestBody MemberPostRequestDto request) {
if(memberService.isNameRedundant(request.getName())){
if (memberService.isNameRedundant(request.getName())) {
return ApiResponse.redundantName(false);
}
Member savedMember = memberService.saveMember(request.getName(), request.getPassword(), request.getEmail(), "EMPTY", "HELLO", request.getFirebaseToken());
Member savedMember = memberService.saveMember(request.getName(), request.getPassword(), request.getEmail(), request.getImageUrl(), request.getMessage(), request.getFirebaseToken());
return ApiResponse.success(new MemberResponse(savedMember));
}

@DeleteMapping(produces = "application/json;charset=UTF-8")
public ApiResponse deleteOneMember(@RequestHeader("Authorization") String firebaseToken) {
memberService.deleteMember(firebaseToken);
return ApiResponse.success("success");
}

@GetMapping(produces = "application/json;charset=UTF-8")
public ApiResponse getMember(@RequestHeader("Authorization") String firebaseToken) {
Member member = memberService.findOneByToken(firebaseToken);
return ApiResponse.success(member);
}

@PostMapping(value = "/validity",produces = "application/json;charset=UTF-8")
@PostMapping(value = "/validity", produces = "application/json;charset=UTF-8")
public ApiResponse checkMemberVaild(@RequestHeader("Authorization") String firebaseToken) {
if(memberService.isTokenExists(firebaseToken)){
if (memberService.isTokenExists(firebaseToken)) {
Member member = memberService.findOneByToken(firebaseToken);
return ApiResponse.success(new MemberResponse(member));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ public Member saveMember(String name, String password, String email, String imag
return memberRepository.saveMember(name, password, email, imageUrl, message, token);
}

@Transactional
public void deleteMember(String token) {
memberRepository.deleteMember(token);
}

@Transactional
public Member updateProfile(String token, String name, String message) {
return memberRepository.updateMemberProfile(token, name, message);
Expand All @@ -39,13 +44,14 @@ public Member findOneByToken(String token) {
return memberRepository.fineOneByToken(token);
}

public boolean isNameRedundant(String name){
public boolean isNameRedundant(String name) {
return memberRepository.isMemberNameExists(name);
}

public boolean isTokenExists(String token){
public boolean isTokenExists(String token) {
return memberRepository.isMemberTokenExists(token);
}

public Member findOne(Long memberId) {
return memberRepository.findOne(memberId);
}
Expand Down
Loading

0 comments on commit d07b0be

Please sign in to comment.