Skip to content
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

Refactor/gabang2/code refactoring #155

Open
wants to merge 12 commits into
base: develop
Choose a base branch
from
Open
Changes from 1 commit
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
Next Next commit
fix : generated에러
  • Loading branch information
rrosiee committed Sep 24, 2023
commit 3a5f5f52ed617065cacd2a7fc61ce059469280c9
Binary file removed dopamine
Binary file not shown.
9 changes: 7 additions & 2 deletions src/main/java/dopamine/backend/BackendApplication.java
Original file line number Diff line number Diff line change
@@ -5,8 +5,13 @@
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@EnableJpaAuditing
@SpringBootApplication
public class BackendApplication {
@SpringBootApplication(
exclude = {
org.springframework.cloud.aws.autoconfigure.context.ContextInstanceDataAutoConfiguration.class,
org.springframework.cloud.aws.autoconfigure.context.ContextStackAutoConfiguration.class,
org.springframework.cloud.aws.autoconfigure.context.ContextRegionProviderAutoConfiguration.class
}
)public class BackendApplication {

public static void main(String[] args) {
SpringApplication.run(BackendApplication.class, args);
Original file line number Diff line number Diff line change
@@ -2,16 +2,20 @@

import dopamine.backend.domain.level.entity.Level;
import dopamine.backend.domain.level.repository.LevelRepository;
import dopamine.backend.domain.level.request.LevelEditDto;
import dopamine.backend.domain.level.request.LevelRequestDto;
import dopamine.backend.domain.level.response.LevelResponseDto;
import dopamine.backend.domain.level.service.LevelService;
import dopamine.backend.global.s3.service.ImageService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

import javax.validation.constraints.Positive;
import java.util.List;

@Controller
@@ -26,6 +30,7 @@ public class LevelBackofficeController {

/**
* READ : 레벨 확인
*
* @param model
* @return
*/
@@ -38,6 +43,7 @@ public String level(Model model) {

/**
* DELETE : 레벨 삭제
*
* @param levelId
* @return
*/
@@ -47,8 +53,42 @@ public String levelDelete(@PathVariable("levelId") Long levelId) {
return "redirect:/backoffice/level";
}

@GetMapping("/{levelId}/update")
public String levelCreate(@PathVariable("levelId") Long levelId,
Model model) {
Level level = levelService.verifiedLevel(levelId);
model.addAttribute("levelNum", level.getLevelNum());
model.addAttribute("levelId", level.getLevelId());
model.addAttribute("form", LevelEditDto.builder()
.name(level.getName())
.badge(level.getBadge())
.exp(level.getExp()).build()
);
return "level/levelUpdate";
}

/**
* UPDATE : 레벨 수정
*
* @param levelId
* @return
*/
@PostMapping("/{levelId}/update")
public String editLevel(@PathVariable("levelId") Long levelId,
LevelEditDto levelEditDto,
@RequestPart("file") MultipartFile file) {
// 이미지 업로드
if (!file.isEmpty()) {
levelEditDto.setBadge(imageService.updateImage(file, "level", "badge"));
}
// 레벨 수정
levelService.editLevel(levelId, levelEditDto);
return "redirect:/backoffice/level";
}

/**
* GET : 레벨 생성 화면
*
* @param model
* @return
*/
@@ -61,15 +101,16 @@ public String levelCreate(Model model) {

/**
* CREATE : 레벨 생성
*
* @param levelRequestDto
* @param file
* @return
*/
@PostMapping("/create")
public String levelCreate(LevelRequestDto levelRequestDto,
@RequestParam("file") MultipartFile file) {
@RequestPart("file") MultipartFile file) {
// 이미지 업로드
if (file != null) {
if (!file.isEmpty()) {
levelRequestDto.setBadge(imageService.updateImage(file, "level", "badge"));
}

Original file line number Diff line number Diff line change
@@ -28,7 +28,7 @@ public abstract class BaseEntity {

@ColumnDefault("false")
@Column(name = "del_yn")
private Boolean delYn;
private Boolean delYn = false;

public void changeDelYn(Boolean delYn) {
this.delYn = delYn;
Original file line number Diff line number Diff line change
@@ -136,7 +136,6 @@ public void postFeed(@RequestPart(value = "request") FeedRequestDTO feedRequestD
@RequestHeader("Authorization") String accessToken) {

int index = 0;
log.info("피드1");
for (MultipartFile file : files) {
if (file == null) continue;

@@ -153,11 +152,8 @@ else if (index == 2)

index++;
}
log.info("피드2");
Member member = jwtService.getMemberFromAccessToken(accessToken); // member 찾기
log.info("피드3");
feedService.postFeed(member, feedRequestDTO);
log.info("피드4");
}

/**
Original file line number Diff line number Diff line change
@@ -29,7 +29,8 @@ public class FeedCustomRepositoryImpl implements FeedCustomRepository {
@Override
public List<Feed> getFeedListOrderByDate(int page) {
return jpaQueryFactory.selectFrom(feed)
.where(feed.fulfillYn.eq(true))
.where(feed.fulfillYn.eq(true),
feed.delYn.ne(true))
.orderBy(feed.createdDate.desc())
.limit(9)
.offset((long) (page - 1) * PAGEOFFSET)
@@ -47,7 +48,8 @@ public List<Feed> getFeedListOrderByLikeCount(int page) {

return jpaQueryFactory.selectFrom(feed)
.where(feed.createdDate.after(dayOffset),
feed.fulfillYn.eq(true))
feed.fulfillYn.eq(true),
feed.delYn.ne(true))
.orderBy(feed.likeCount.desc())
.limit(9)
.offset((long) (page - 1) * PAGEOFFSET)
@@ -66,7 +68,8 @@ public List<Feed> getFeedListByChallengeOrderByLikeCount(Challenge challenge) {
return jpaQueryFactory.selectFrom(feed)
.where(feed.createdDate.after(dayOffset),
feed.challenge.eq(challenge),
feed.fulfillYn.eq(true))
feed.fulfillYn.eq(true),
feed.delYn.ne(true))
.orderBy(feed.likeCount.desc())
.limit(6)
.fetch();
@@ -81,7 +84,8 @@ public List<Feed> getFeedListByChallengeOrderByLikeCount(Challenge challenge) {
public List<Feed> getFeedListByMemberOrderByDate(int page, Member member) {
return jpaQueryFactory.selectFrom(feed)
.where(feed.member.eq(member),
feed.fulfillYn.eq(true))
feed.fulfillYn.eq(true),
feed.delYn.ne(true))
.orderBy(feed.createdDate.desc())
.limit(9)
.offset((long) (page - 1) * PAGEOFFSET)
Original file line number Diff line number Diff line change
@@ -9,8 +9,7 @@
import java.util.Optional;

public interface FeedRepository extends JpaRepository<Feed, Long> {
Optional<Feed> findFeedByContent(String content);
List<Feed> findFeedByMember(Member member);
List<Feed> findFeedByMemberAndDelYn(Member member, Boolean delYn);

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FulfillYn도 고려해야하네요
수정해주셔서 감사합니다

public List<Feed> findFeedByMemberAndCreatedDateBetweenOrderByCreatedDate(Member member, LocalDateTime startDate, LocalDateTime finishDate);
public List<Feed> findFeedByMemberAndDelYnAndCreatedDateBetweenOrderByCreatedDate(Member member, Boolean delYn, LocalDateTime startDate, LocalDateTime finishDate);
}
Original file line number Diff line number Diff line change
@@ -72,6 +72,7 @@ public FeedResponseDTO getFeed(Member member, Long feedId) {
Feed feed = verifiedFeed(feedId);

if (!feed.getFulfillYn()) throw new BusinessLogicException(ExceptionCode.FEED_FULFILL_NOT_VALID);
if (feed.getDelYn()) throw new BusinessLogicException(ExceptionCode.DELETE_FEED_NOT_FOUND);

Challenge challenge = feed.getChallenge();
MemberResponseDto memberResponseDto = memberMapper.memberToMemberResponseDto(feed.getMember());
@@ -228,7 +229,7 @@ public List<FeedResponseDTO> feedListByMemberAndMonth(Member member, String mont
LocalDateTime startDate = date.withDayOfMonth(1).atStartOfDay();
LocalDateTime finishDate = date.withDayOfMonth(date.lengthOfMonth()).atTime(LocalTime.MAX);

List<Feed> findListByMemberAndDate = feedRepository.findFeedByMemberAndCreatedDateBetweenOrderByCreatedDate(member, startDate, finishDate);
List<Feed> findListByMemberAndDate = feedRepository.findFeedByMemberAndDelYnAndCreatedDateBetweenOrderByCreatedDate(member, false, startDate, finishDate);

return getFeedResponseDTOS(member, findListByMemberAndDate);
}
@@ -255,7 +256,7 @@ public List<FeedYearResponseDto> feedListByMemberAndYear(Member member, List<Str
date = LocalDate.parse(yearMonth + "-01");
startDate = date.withDayOfMonth(1).atStartOfDay();
finishDate = date.withDayOfMonth(date.lengthOfMonth()).atTime(LocalTime.MAX);
feedYn = feedRepository.findFeedByMemberAndCreatedDateBetweenOrderByCreatedDate(member, startDate, finishDate).size() != 0;
feedYn = feedRepository.findFeedByMemberAndDelYnAndCreatedDateBetweenOrderByCreatedDate(member, false, startDate, finishDate).size() != 0;
feedYearResponseDtoList.add(FeedYearResponseDto.builder().yearMonth(yearMonth).feedYn(feedYn).build());
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package dopamine.backend.domain.level.service;

import dopamine.backend.domain.member.repository.MemberRepository;
import dopamine.backend.domain.member.service.MemberService;
import dopamine.backend.global.exception.BusinessLogicException;
import dopamine.backend.global.exception.ExceptionCode;
import dopamine.backend.domain.level.repository.LevelRepository;
@@ -26,6 +28,8 @@ public class LevelService {

private final LevelRepository levelRepository;
private final LevelMapper levelMapper;
private final MemberRepository memberRepository;
private final MemberService memberService;

public static int INF = 1000000000;

@@ -47,6 +51,8 @@ public Level createLevel(LevelRequestDto levelRequestDto) {
.exp(levelRequestDto.getExp()).build();

levelRepository.save(level);
allMemberLevelChange();

return level;
}

@@ -57,8 +63,13 @@ public Level createLevel(LevelRequestDto levelRequestDto) {
*/
public void deleteLevel(Long levelId) {
Level level = verifiedLevel(levelId);
List<Member> members = memberRepository.findAllByLevel(level);
for(Member member : members) {
member.changeMember(null, null, null, 0, findLevelByLevelNum(1));
}
levelRepository.delete(level);
orderLevelNum();
allMemberLevelChange();
}

/**
@@ -87,6 +98,9 @@ public LevelResponseDto editLevel(Long levelId, LevelEditDto levelEditDto) {
if(levelEditDto.getExp() != 0) verifiedExp(level.getLevelNum(), levelEditDto.getExp());
level.changeLevel(level.getLevelNum(), levelEditDto.getName(), levelEditDto.getBadge(), levelEditDto.getExp());

// 모든 멤버에 레벨 반영
allMemberLevelChange();

// level -> responseDto
LevelResponseDto levelResponseDto = levelMapper.levelToLevelResponseDto(level);
return levelResponseDto;
@@ -102,7 +116,7 @@ public Level verifiedLevel(Long levelId) {
return level.orElseThrow(() -> new BusinessLogicException(ExceptionCode.LEVEL_NOT_FOUND));
}

public Level findMemberByLevelNum(int levelNum) {
public Level findLevelByLevelNum(int levelNum) {
Optional<Level> level = levelRepository.findLevelByLevelNum(levelNum);
return level.orElseThrow(() -> new BusinessLogicException(ExceptionCode.LEVEL_NOT_FOUND));
}
@@ -141,7 +155,6 @@ public void verifiedExp(int levelNum, int exp) {
public void orderLevelNum() {
List<Level> levels = levelRepository.findAllByOrderByLevelNumAsc();
for (int i=0; i < levels.size() ; i++) {
System.out.println(levels.get(i).getLevelId());
levels.get(i).changeLevel(i+1, null, null, 0);
}
}
@@ -161,5 +174,13 @@ public LevelDetailResponseDto memberDetailLevel(Member member) {
.expPercent(expPercent).build();
}

// Level 변경시 모든 멤버의 레벨에 반영
private void allMemberLevelChange(){
List<Member> members = memberRepository.findAll();
for (Member member : members) {
Level level = memberService.getMemberLevel(member.getExp());
member.changeMember(null, null, null, 0, level);
}
}

}
Original file line number Diff line number Diff line change
@@ -60,7 +60,7 @@ public ResponseEntity getMember(@RequestHeader("Authorization") String accessTok

LevelDetailResponseDto levelDetailResponseDto = levelService.memberDetailLevel(member);

int successCnt = feedRepository.findFeedByMember(member).size(); // todo : fullfillyn default값 추가되면 수정해야함
int successCnt = feedRepository.findFeedByMemberAndDelYn(member, false).size(); // todo : fullfillyn default값 추가되면 수정해야함

MemberDetailResponseDto response = MemberDetailResponseDto.builder()
.memberId(member.getMemberId())
4 changes: 2 additions & 2 deletions src/main/java/dopamine/backend/global/config/CorsFilter.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package dopamine.backend.global.config;

import lombok.AllArgsConstructor;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@@ -31,6 +29,8 @@ public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept, Authorization");
response.setHeader("Content-Type", "application/json");
response.setHeader("Accept", "application/json");

if("OPTIONS".equalsIgnoreCase(request.getMethod())) {
response.setStatus(HttpServletResponse.SC_OK);
16 changes: 8 additions & 8 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
server:
port: 9000
port: 443
error:
include-exception: true # 응답에 exception의 내용을 포함할지 여부
path: '/error' # 응답을 처리할 Handler의 경로
whitelabel:
enabled: true # 서버 오류 발생시 브라우저에 보여줄 기본 페이지 생성 여부
# include-message: always
# ssl:
# key-store: dopamine
# key-store-type: PKCS12
# key-password: dopamine
# key-alias: dopamine
ssl:
key-store: ${DOPAMINE_KEYSTORE}
key-store-type: PKCS12
key-alias: ${DOPAMINE_KEY_ALIAS}
key-store-password: admin1234
enabled: true

spring:

@@ -33,7 +34,7 @@ spring:
database: mysql
show-sql: false
hibernate:
ddl-auto: update
ddl-auto: none
properties:
hibernate:
format_sql: false
@@ -53,7 +54,6 @@ jwt:
secret: ${DOPAMINE_JWT_SECRET}
kakao:
client_id: ${DOPAMINE_KAKAO_CLIENT_ID}
redirect_url: ${DOPAMINE_KAKAO_REDIRECT_URL}

cloud:
aws:
Empty file added src/main/resources/keystore.p12
Empty file.
Empty file.
Loading