Skip to content

[release] MNG-11, MNG-19 #271

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Mar 12, 2024
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
16 changes: 12 additions & 4 deletions .deploy/deploy_dev.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
#!/bin/bash

DOCKER_APP_NAME=meetup
DOCKER_USERNAME=modagbul

# 최신 이미지 가져오기
docker pull ${DOCKER_USERNAME}/moing_dev:blue
docker pull ${DOCKER_USERNAME}/moing_dev:green

# 로그 디렉토리 설정
LOG_DIR=$(pwd)/logs/logback
mkdir -p $LOG_DIR

# 현재 실행 중인 컨테이너를 확인 (blue 또는 green)
EXIST_BLUE=$(docker ps --filter name=${DOCKER_APP_NAME}-blue --filter status=running -q)
EXIST_GREEN=$(docker ps --filter name=${DOCKER_APP_NAME}-green --filter status=running -q)
Expand All @@ -18,7 +24,8 @@ if [ -z "$EXIST_BLUE" ] && [ -z "$EXIST_GREEN" ]; then
docker rm ${DOCKER_APP_NAME}-blue
fi

docker run -d --name ${DOCKER_APP_NAME}-blue -p 8081:8080 -e TZ=Asia/Seoul ${DOCKER_USERNAME}/moing_dev:blue
docker run -d --name ${DOCKER_APP_NAME}-blue -p 8081:8080 -e TZ=Asia/Seoul \
-v $LOG_DIR:/logs/logback ${DOCKER_USERNAME}/moing_dev:blue
BEFORE_COMPOSE_COLOR="green"
AFTER_COMPOSE_COLOR="blue"
elif [ -z "$EXIST_BLUE" ]; then
Expand All @@ -29,7 +36,8 @@ elif [ -z "$EXIST_BLUE" ]; then
docker rm ${DOCKER_APP_NAME}-blue
fi

docker run -d --name ${DOCKER_APP_NAME}-blue -p 8081:8080 -e TZ=Asia/Seoul ${DOCKER_USERNAME}/moing_dev:blue
docker run -d --name ${DOCKER_APP_NAME}-blue -p 8081:8080 -e TZ=Asia/Seoul \
-v $LOG_DIR:/logs/logback ${DOCKER_USERNAME}/moing_dev:blue
BEFORE_COMPOSE_COLOR="green"
AFTER_COMPOSE_COLOR="blue"
else
Expand All @@ -40,12 +48,12 @@ else
docker rm ${DOCKER_APP_NAME}-green
fi

docker run -d --name ${DOCKER_APP_NAME}-green -p 8082:8080 -e TZ=Asia/Seoul ${DOCKER_USERNAME}/moing_dev:green
docker run -d --name ${DOCKER_APP_NAME}-green -p 8082:8080 -e TZ=Asia/Seoul \
-v $LOG_DIR:/logs/logback ${DOCKER_USERNAME}/moing_dev:green
BEFORE_COMPOSE_COLOR="blue"
AFTER_COMPOSE_COLOR="green"
fi


sleep 40

# 새로운 컨테이너가 제대로 실행되었는지 확인
Expand Down
16 changes: 12 additions & 4 deletions .deploy/deploy_prod.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
#!/bin/bash

DOCKER_APP_NAME=meetup
DOCKER_USERNAME=modagbul

# 최신 이미지 가져오기
docker pull ${DOCKER_USERNAME}/moing_prod:blue
docker pull ${DOCKER_USERNAME}/moing_prod:green

# 로그 디렉토리 설정
LOG_DIR=$(pwd)/logs/logback
mkdir -p $LOG_DIR

# 현재 실행 중인 컨테이너를 확인 (blue 또는 green)
EXIST_BLUE=$(docker ps --filter name=${DOCKER_APP_NAME}-blue --filter status=running -q)
EXIST_GREEN=$(docker ps --filter name=${DOCKER_APP_NAME}-green --filter status=running -q)
Expand All @@ -18,7 +24,8 @@ if [ -z "$EXIST_BLUE" ] && [ -z "$EXIST_GREEN" ]; then
docker rm ${DOCKER_APP_NAME}-blue
fi

docker run -d --name ${DOCKER_APP_NAME}-blue -p 8081:8080 -e TZ=Asia/Seoul ${DOCKER_USERNAME}/moing_prod:blue
docker run -d --name ${DOCKER_APP_NAME}-blue -p 8081:8080 -e TZ=Asia/Seoul \
-v $LOG_DIR:/logs/logback ${DOCKER_USERNAME}/moing_prod:blue
BEFORE_COMPOSE_COLOR="green"
AFTER_COMPOSE_COLOR="blue"
elif [ -z "$EXIST_BLUE" ]; then
Expand All @@ -29,7 +36,8 @@ elif [ -z "$EXIST_BLUE" ]; then
docker rm ${DOCKER_APP_NAME}-blue
fi

docker run -d --name ${DOCKER_APP_NAME}-blue -p 8081:8080 -e TZ=Asia/Seoul ${DOCKER_USERNAME}/moing_prod:blue
docker run -d --name ${DOCKER_APP_NAME}-blue -p 8081:8080 -e TZ=Asia/Seoul \
-v $LOG_DIR:/logs/logback ${DOCKER_USERNAME}/moing_prod:blue
BEFORE_COMPOSE_COLOR="green"
AFTER_COMPOSE_COLOR="blue"
else
Expand All @@ -40,12 +48,12 @@ else
docker rm ${DOCKER_APP_NAME}-green
fi

docker run -d --name ${DOCKER_APP_NAME}-green -p 8082:8080 -e TZ=Asia/Seoul ${DOCKER_USERNAME}/moing_prod:green
docker run -d --name ${DOCKER_APP_NAME}-green -p 8082:8080 -e TZ=Asia/Seoul \
-v $LOG_DIR:/logs/logback ${DOCKER_USERNAME}/moing_prod:green
BEFORE_COMPOSE_COLOR="blue"
AFTER_COMPOSE_COLOR="green"
fi


sleep 40

# 새로운 컨테이너가 제대로 실행되었는지 확인
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/CD-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ jobs:

# 설정 파일 생성
- run: |
mkdir ./src/main/resources
cd ./src/main/resources
touch ./application.yml
echo "${{env.APPLICATION}}" > ./application.yml
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/CD-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ jobs:

# 설정 파일 생성
- run: |
mkdir ./src/main/resources
cd ./src/main/resources
touch ./application.yml
echo "${{env.APPLICATION}}" > ./application.yml
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/CI-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ jobs:

# 설정 파일 생성
- run: |
mkdir ./src/main/resources
cd ./src/main/resources
touch ./application.yml
echo "${{env.APPLICATION}}" > ./application.yml
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/CI-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ jobs:

# 설정 파일 생성
- run: |
mkdir ./src/main/resources
cd ./src/main/resources
touch ./application.yml
echo "${{env.APPLICATION}}" > ./application.yml
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ dependencies {

//log
implementation 'org.springframework.boot:spring-boot-starter-logging'

implementation 'org.springframework.boot:spring-boot-starter-aop'
implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("io.micrometer:micrometer-registry-prometheus") // 프로메테우스 마이크로미터

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


import com.moing.backend.domain.fire.application.dto.res.FireReceiveRes;
import com.moing.backend.domain.fire.domain.entity.Fire;
import com.moing.backend.domain.member.domain.entity.Member;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;
import java.util.Optional;
Expand All @@ -13,5 +10,6 @@ public interface FireCustomRepository {

boolean hasFireCreatedWithinOneHour(Long throwMemberId, Long receiveMemberId);
Optional<List<FireReceiveRes>> getFireReceivers(Long teamId, Long missionId, Long memberId);

}
Long getTodayFires();
Long getYesterdayFires();
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.temporal.TemporalAdjusters;
import java.util.List;
import java.util.Optional;
Expand Down Expand Up @@ -74,6 +75,36 @@ public Optional<List<FireReceiveRes>> getFireReceivers(Long teamId, Long mission

}

@Override
public Long getTodayFires() {
LocalDateTime now = LocalDateTime.now(ZoneId.of("Asia/Seoul"));
LocalDateTime startOfToday = now.toLocalDate().atStartOfDay();
LocalDateTime endOfToday = startOfToday.plusDays(1);
LocalDateTime startOfYesterday = startOfToday.minusDays(1);

long todayFires = queryFactory
.selectFrom(fire)
.where(fire.createdDate.between(startOfToday, endOfToday))
.fetchCount();

return todayFires;
}

@Override
public Long getYesterdayFires(){
LocalDateTime now = LocalDateTime.now(ZoneId.of("Asia/Seoul"));
LocalDateTime startOfToday = now.toLocalDate().atStartOfDay();
LocalDateTime endOfToday = startOfToday.plusDays(1);
LocalDateTime startOfYesterday = startOfToday.minusDays(1);

long yesterdayFires = queryFactory
.selectFrom(fire)
.where(fire.createdDate.between(startOfYesterday, startOfToday))
.fetchCount();

return yesterdayFires;
}


private BooleanExpression createRepeatTypeConditionByArchive() {
LocalDate now = LocalDate.now();
Expand All @@ -84,6 +115,7 @@ private BooleanExpression createRepeatTypeConditionByArchive() {
return missionArchive.createdDate.goe(startOfWeek.atStartOfDay())
.and(missionArchive.createdDate.loe(endOfWeek.atStartOfDay().plusDays(1).minusNanos(1)));
}

private BooleanExpression hasAlreadyVerifiedToday() {
LocalDateTime today = LocalDateTime.now();
LocalDateTime startOfToday = today.withHour(0).withMinute(0).withSecond(0).withNano(0);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
package com.moing.backend.domain.fire.domain.service;

import com.moing.backend.domain.fire.application.dto.res.FireReceiveRes;
import com.moing.backend.domain.fire.domain.entity.Fire;
import com.moing.backend.domain.fire.domain.repository.FireCustomRepository;
import com.moing.backend.domain.fire.domain.repository.FireRepository;
import com.moing.backend.domain.fire.exception.NotFoundFireException;
import com.moing.backend.domain.fire.exception.NotFoundFireReceiversException;
import com.moing.backend.domain.member.domain.entity.Member;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

Expand All @@ -26,4 +22,10 @@ public List<FireReceiveRes> getNotYetMissionMember(Long teamId, Long missionId,
return fireRepository.getFireReceivers(teamId, missionId,memberId).orElseThrow(NotFoundFireReceiversException::new);
}

public Long getTodayFires(){
return fireRepository.getTodayFires();
}
public Long getYesterdayFires(){
return fireRepository.getYesterdayFires();
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.moing.backend.domain.member.domain.repository;

import com.moing.backend.domain.member.domain.entity.Member;
import com.moing.backend.domain.statistics.application.dto.DailyStats;

import java.util.List;
import java.util.Optional;
Expand All @@ -12,7 +11,7 @@ public interface MemberCustomRepository {
Optional<Member> findNotDeletedBySocialId(String socialId);
Optional<Member> findNotDeletedByEmail(String email);
Optional<Member> findNotDeletedByMemberId(Long id);
DailyStats getDailyStats();

Long getTodayNewMembers();
Long getYesterdayNewMembers();
Optional<List<Member>> findAllMemberOnPushAlarm();
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package com.moing.backend.domain.member.domain.repository;

import com.moing.backend.domain.member.domain.entity.Member;
import com.moing.backend.domain.mission.domain.entity.constant.MissionType;
import com.moing.backend.domain.statistics.application.dto.DailyStats;
import com.querydsl.jpa.impl.JPAQueryFactory;

import javax.persistence.EntityManager;
Expand All @@ -12,8 +10,6 @@
import java.util.Optional;

import static com.moing.backend.domain.member.domain.entity.QMember.member;
import static com.moing.backend.domain.mission.domain.entity.QMission.mission;
import static com.moing.backend.domain.team.domain.entity.QTeam.team;

public class MemberCustomRepositoryImpl implements MemberCustomRepository {

Expand Down Expand Up @@ -61,7 +57,7 @@ public Optional<Member> findNotDeletedByMemberId(Long id) {
}

@Override
public DailyStats getDailyStats() {
public Long getTodayNewMembers() {
LocalDateTime now = LocalDateTime.now(ZoneId.of("Asia/Seoul"));
LocalDateTime startOfToday = now.toLocalDate().atStartOfDay();
LocalDateTime endOfToday = startOfToday.plusDays(1);
Expand All @@ -72,58 +68,23 @@ public DailyStats getDailyStats() {
.where(member.createdDate.between(startOfToday, endOfToday))
.fetchCount();

long yesterdayNewMembers = queryFactory
.selectFrom(member)
.where(member.createdDate.between(startOfYesterday, startOfToday))
.fetchCount();

long todayNewTeams = queryFactory
.selectFrom(team)
.where(team.createdDate.between(startOfToday, endOfToday))
.fetchCount();

long yesterdayNewTeams = queryFactory
.selectFrom(team)
.where(team.createdDate.between(startOfYesterday, startOfToday))
.fetchCount();

long todayRepeatMissions = queryFactory
.select(mission)
.from(mission)
.where(mission.createdDate.between(startOfToday, endOfToday)
.and(mission.type.eq(MissionType.REPEAT)))
.fetchCount();
return todayNewMembers;
}

long yesterdayRepeatMissions = queryFactory
.select(mission)
.from(mission)
.where(mission.createdDate.between(startOfYesterday, startOfToday)
.and(mission.type.eq(MissionType.REPEAT)))
.fetchCount();
@Override
public Long getYesterdayNewMembers() {
LocalDateTime now = LocalDateTime.now(ZoneId.of("Asia/Seoul"));
LocalDateTime startOfToday = now.toLocalDate().atStartOfDay();
LocalDateTime endOfToday = startOfToday.plusDays(1);
LocalDateTime startOfYesterday = startOfToday.minusDays(1);

long todayOnceMissions = queryFactory
.select(mission)
.from(mission)
.where(mission.createdDate.between(startOfToday, endOfToday)
.and(mission.type.eq(MissionType.ONCE)))
.fetchCount();

long yesterdayOnceMissions = queryFactory
.select(mission)
.from(mission)
.where(mission.createdDate.between(startOfYesterday, startOfToday)
.and(mission.type.eq(MissionType.ONCE)))
long yesterdayNewMembers = queryFactory
.selectFrom(member)
.where(member.createdDate.between(startOfYesterday, startOfToday))
.fetchCount();

return new DailyStats(
todayNewMembers,
yesterdayNewMembers,
todayNewTeams,
yesterdayNewTeams,
todayRepeatMissions,
yesterdayRepeatMissions,
todayOnceMissions,
yesterdayOnceMissions);
return yesterdayNewMembers;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,10 @@
import com.moing.backend.domain.member.domain.repository.MemberRepository;
import com.moing.backend.domain.member.exception.NotFoundBySocialIdException;
import com.moing.backend.domain.member.exception.NotFoundRemindAlarmException;
import com.moing.backend.domain.statistics.application.dto.DailyStats;
import com.moing.backend.global.annotation.DomainService;
import lombok.RequiredArgsConstructor;

import javax.transaction.Transactional;
import java.math.BigInteger;
import java.util.List;

@DomainService
Expand All @@ -26,10 +24,15 @@ public Member getMemberByMemberId(Long memberId) {
return memberRepository.findNotDeletedByMemberId(memberId).orElseThrow(()->new NotFoundBySocialIdException());
}

public DailyStats getDailyStats(){
return memberRepository.getDailyStats();
public Long getTodayNewMembers(){
return memberRepository.getTodayNewMembers();
}

public Long getYesterdayNewMembers(){
return memberRepository.getYesterdayNewMembers();
}


public List<Member> getAllMemberOfPushAlarm() {
return memberRepository.findAllMemberOnPushAlarm().orElseThrow(NotFoundRemindAlarmException::new);
}
Expand Down
Loading
Loading