Skip to content

Commit

Permalink
[feat] : 자치기구 회원가입 수정
Browse files Browse the repository at this point in the history
[feat] : 자치기구 회원가입 수정
  • Loading branch information
Jeoongu authored Aug 29, 2024
2 parents eda2f44 + e7b1ac3 commit fd849a9
Show file tree
Hide file tree
Showing 7 changed files with 55 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,13 @@
import ussum.homepage.application.admin.service.dto.request.CouncilSignInRequest;
import ussum.homepage.domain.group.Group;
import ussum.homepage.domain.group.service.GroupReader;
import ussum.homepage.domain.member.Member;
import ussum.homepage.domain.member.service.MemberAppender;
import ussum.homepage.domain.user.User;
import ussum.homepage.domain.user.service.UserAppender;
import ussum.homepage.infra.csvBatch.JobLauncherRunner;
import ussum.homepage.infra.utils.S3utils;

import java.nio.file.attribute.GroupPrincipal;
import java.util.List;

@Service
@RequiredArgsConstructor
Expand All @@ -41,10 +40,9 @@ public void uploadCsvFromS3ToProject(String fileName) {

public void councilSignIn(CouncilSignInRequest request){
String password = passwordEncoder.encode(request.password());
User user = User.createCouncilUser(request.accountId(), password);
User user = User.createCouncilUser(request, password);
User savedUser = userAppender.createUser(user);
Group group = groupReader.getGroupByGroupId(request.groupId());
Member member = Member.of(null, true, request.memberCode(), request.majorCode(), savedUser.getId(), group.getId());
memberAppender.saveMember(member);
List<Group> groupList = groupReader.getGroupsByGroupIdList(request.groupIdList());
memberAppender.saveMemberList(groupList, request, savedUser);
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package ussum.homepage.application.admin.service.dto.request;

import java.util.List;

public record CouncilSignInRequest(
String accountId,
String password,
Long groupId,
String councilName,
List<Long> groupIdList,
String memberCode,
String majorCode
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

import ussum.homepage.infra.jpa.group.entity.GroupCode;

import java.util.List;
import java.util.Optional;

public interface GroupRepository {
Optional<Group> findByGroupId(Long groupId);
Optional<Group> findByGroupCode(GroupCode groupCodeEnum);
List<Group> findAllByGroupIdList(List<Long> groupIdList);
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import ussum.homepage.domain.group.exception.GroupNotFoundException;
import ussum.homepage.infra.jpa.group.entity.GroupCode;

import java.util.List;

import static ussum.homepage.global.error.status.ErrorStatus.GROUP_NOT_FOUND;

@Service
Expand All @@ -18,6 +20,10 @@ public Group getGroupByGroupId(Long groupId) {
return groupRepository.findByGroupId(groupId).orElseThrow(() -> new GroupNotFoundException(GROUP_NOT_FOUND));
}

public List<Group> getGroupsByGroupIdList(List<Long> groupIdList) {
return groupRepository.findAllByGroupIdList(groupIdList);
}

public Group getGroupByGroupCode(GroupCode groupCodeEnum) {
return groupRepository.findByGroupCode(groupCodeEnum).orElseThrow(() -> new GroupNotFoundException(GROUP_NOT_FOUND));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package ussum.homepage.domain.member.service;

import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import ussum.homepage.application.user.service.dto.request.OnBoardingRequest;
import ussum.homepage.application.admin.service.dto.request.CouncilSignInRequest;
import ussum.homepage.domain.group.Group;
import ussum.homepage.domain.member.Member;
import ussum.homepage.domain.member.MemberRepository;
import ussum.homepage.domain.user.User;

import java.util.List;

@Service
@RequiredArgsConstructor
Expand All @@ -15,4 +18,19 @@ public class MemberAppender {
public void saveMember(Member member) {
memberRepository.save(member);
}

public void saveMemberList(List<Group> groupList, CouncilSignInRequest request, User savedUser) {
List<Member> memberList = groupList.stream()
.map(group -> Member.of(
null,
true,
request.memberCode(),
request.majorCode(),
savedUser.getId(),
group.getId()
))
.toList();

memberList.forEach(this::saveMember);
}
}
5 changes: 3 additions & 2 deletions src/main/java/ussum/homepage/domain/user/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,11 @@ public static User createUser(KakaoUserInfoResponseDto userInfoResponseDto) {
.build();
}

public static User createCouncilUser(String accountId, String password){
public static User createCouncilUser(CouncilSignInRequest request, String password){
return User.builder()
.accountId(accountId)
.accountId(request.accountId())
.password(password)
.name(request.councilName())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,24 @@
package ussum.homepage.infra.jpa.group;

import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import ussum.homepage.domain.group.Group;
import ussum.homepage.domain.group.GroupRepository;
import ussum.homepage.infra.jpa.group.entity.GroupCode;
import ussum.homepage.infra.jpa.group.repository.GroupJpaRepository;

import java.util.List;
import java.util.Optional;

import static ussum.homepage.infra.jpa.group.entity.QGroupEntity.groupEntity;

@Repository
@RequiredArgsConstructor
public class GroupRepositoryImpl implements GroupRepository{
private final GroupJpaRepository groupJpaRepository;
private final GroupMapper groupMapper;
private final JPAQueryFactory queryFactory;

@Override
public Optional<Group> findByGroupId(Long groupId) {
Expand All @@ -25,4 +30,15 @@ public Optional<Group> findByGroupCode(GroupCode groupCodeEnum) {
return groupJpaRepository.findByGroupCode(groupCodeEnum).map(groupMapper::toDomain);
}

@Override
public List<Group> findAllByGroupIdList(List<Long> groupIdList) {
return queryFactory
.selectFrom(groupEntity)
.where(groupEntity.id.in(groupIdList))
.fetch()
.stream()
.map(groupMapper::toDomain)
.toList();
}

}

0 comments on commit fd849a9

Please sign in to comment.