This repository has been archived by the owner on Nov 9, 2017. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* feature: member basic api - 회원 기본 API - Service Layer CRUD(only member) -Controller Layer * refactor: member basic api - import 수정 - protected -> private 로 수정 - 삭제
- Loading branch information
Showing
11 changed files
with
407 additions
and
63 deletions.
There are no files selected for viewing
73 changes: 73 additions & 0 deletions
73
src/main/java/io/codechobo/member/application/MemberService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
package io.codechobo.member.application; | ||
|
||
import io.codechobo.member.domain.Member; | ||
import io.codechobo.member.domain.PointPerLevel; | ||
import io.codechobo.member.domain.repository.MemberRepository; | ||
import io.codechobo.member.domain.support.MemberDto; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
|
||
import javax.validation.constraints.NotNull; | ||
import java.util.Calendar; | ||
import java.util.List; | ||
import java.util.stream.Collectors; | ||
|
||
/** | ||
* @author loustler | ||
* @since 10/02/2016 10:12 | ||
*/ | ||
public class MemberService { | ||
@Autowired | ||
private MemberRepository memberRepository; | ||
|
||
public List<MemberDto> getMembers() { | ||
List<Member> member = memberRepository.findAll(); | ||
|
||
return member.stream() | ||
.map(m -> new MemberDto(m.getSeq(), m.getId(), m.getPassword(), m.getEmail(), m.getNickName(), m.getRegistrationDate(), m.getPoint())) | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong. |
||
.collect(Collectors.toList()); | ||
} | ||
|
||
public MemberDto getMember(final Long sequence) { | ||
Member member = memberRepository.findOne(sequence); | ||
|
||
if(member == null) return null; | ||
|
||
return new MemberDto(member.getSeq(), member.getId(), member.getPassword(), member.getEmail(), member.getNickName(), member.getRegistrationDate(), member.getPoint()); | ||
} | ||
|
||
public MemberDto createMember(final MemberDto memberDto) { | ||
Member member = new Member(memberDto); | ||
|
||
if(member.getPoint() == null) | ||
This comment has been minimized.
Sorry, something went wrong.
devsejong
Contributor
|
||
member.setPoint(new Integer(0)); | ||
|
||
if(member.getRegistrationDate() == null) | ||
member.setRegistrationDate(Calendar.getInstance().getTime()); | ||
|
||
member.setLevel(PointPerLevel.valueOf(member.getPoint())); | ||
|
||
member = memberRepository.save(member); | ||
|
||
return new MemberDto(member.getSeq(), member.getId(), member.getPassword(), member.getEmail(), member.getNickName(), member.getRegistrationDate(), member.getPoint()); | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
loustler
Author
Contributor
|
||
} | ||
|
||
public MemberDto updateMember(MemberDto memberDto) { | ||
if(memberDto.getSequence() == null || !memberRepository.exists(memberDto.getSequence())) { | ||
throw new IllegalArgumentException(); | ||
} | ||
|
||
memberDto.setLevel(PointPerLevel.valueOf(memberDto.getPoint())); | ||
|
||
Member member = memberRepository.save(new Member(memberDto)); | ||
|
||
return new MemberDto(member.getSeq(), member.getId(), member.getPassword(), member.getEmail(), member.getNickName(), member.getRegistrationDate(), member.getPoint()); | ||
} | ||
|
||
public void deleteMember(@NotNull final Long memberSequence) { | ||
if(memberSequence == null) { | ||
throw new IllegalArgumentException(); | ||
} | ||
|
||
memberRepository.delete(memberSequence); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
49 changes: 49 additions & 0 deletions
49
src/main/java/io/codechobo/member/domain/support/MemberDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
package io.codechobo.member.domain.support; | ||
|
||
import io.codechobo.member.domain.PointPerLevel; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import lombok.Setter; | ||
|
||
import java.util.Date; | ||
|
||
/** | ||
* @author loustler | ||
* @since 10/02/2016 10:13 | ||
*/ | ||
@Getter | ||
@Setter | ||
@NoArgsConstructor | ||
public class MemberDto { | ||
private Long sequence; | ||
private String id; | ||
private String password; | ||
private String email; | ||
private String nickName; | ||
private Date regiDate; | ||
private Integer point; | ||
private PointPerLevel level; | ||
|
||
public MemberDto(final Long sequence) { | ||
this.sequence = sequence; | ||
} | ||
|
||
public MemberDto(final String id, final String password, final String email, final String nickName) { | ||
this(null, id, password, email, nickName, null, 0); | ||
} | ||
|
||
public MemberDto(final String id, final String password, final String email, final String nickName, final Date regiDate, final Integer point) { | ||
this(null, id, password, email, nickName, regiDate, point); | ||
} | ||
|
||
public MemberDto(final Long sequence, final String id, final String password, final String email, final String nickName, final Date regiDate, final Integer point) { | ||
this.sequence = sequence; | ||
this.id = id; | ||
this.password = password; | ||
this.email = email; | ||
this.nickName = nickName; | ||
this.regiDate = regiDate; | ||
this.point = point; | ||
this.level = PointPerLevel.valueOf(this.point); | ||
} | ||
} |
34 changes: 34 additions & 0 deletions
34
src/main/java/io/codechobo/member/domain/support/SocialDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
package io.codechobo.member.domain.support; | ||
|
||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import lombok.Setter; | ||
|
||
/** | ||
* @author loustler | ||
* @since 10/02/2016 10:15 | ||
*/ | ||
@Getter | ||
@Setter | ||
@NoArgsConstructor | ||
public class SocialDto { | ||
private Long sequence; | ||
private String type; | ||
private String token; | ||
private Long memberSequence; | ||
|
||
public SocialDto(final Long sequence) { | ||
this.sequence = sequence; | ||
} | ||
|
||
public SocialDto(final String type, final String token, final Long memberSequence) { | ||
this(null, type, token, memberSequence); | ||
} | ||
|
||
public SocialDto(final Long sequence, final String type, final String token, final Long memberSequence) { | ||
this.sequence = sequence; | ||
this.type = type; | ||
this.token = token; | ||
this.memberSequence = memberSequence; | ||
} | ||
} |
46 changes: 46 additions & 0 deletions
46
src/main/java/io/codechobo/member/interfaces/api/MemberRestController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
package io.codechobo.member.interfaces.api; | ||
|
||
import io.codechobo.member.application.MemberService; | ||
import io.codechobo.member.domain.support.MemberDto; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.http.HttpStatus; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.*; | ||
|
||
/** | ||
* @author loustler | ||
* @since 10/02/2016 10:17 | ||
*/ | ||
@RestController | ||
@RequestMapping("/api/member") | ||
public class MemberRestController { | ||
@Autowired | ||
MemberService memberService; | ||
|
||
@RequestMapping(value = {"","/"}, method = RequestMethod.POST) | ||
public ResponseEntity save(@RequestBody MemberDto memberDto) { | ||
return new ResponseEntity(memberService.createMember(memberDto), HttpStatus.CREATED); | ||
} | ||
|
||
@RequestMapping(value = {"", "/"}, method = RequestMethod.GET) | ||
public ResponseEntity show() { | ||
return new ResponseEntity(memberService.getMembers(), HttpStatus.OK); | ||
} | ||
|
||
@RequestMapping(value = "/{seq}", method = RequestMethod.GET) | ||
public ResponseEntity show(@PathVariable Long seq) { | ||
return new ResponseEntity(memberService.getMember(seq), HttpStatus.OK); | ||
} | ||
|
||
@RequestMapping(value = "/{seq}", method = RequestMethod.PUT) | ||
public ResponseEntity update(@PathVariable Long seq, @RequestBody MemberDto memberDto) { | ||
memberDto.setSequence(seq); | ||
return new ResponseEntity(memberService.updateMember(memberDto), HttpStatus.OK); | ||
} | ||
|
||
@RequestMapping(value = "/{seq}", method = RequestMethod.DELETE) | ||
public ResponseEntity delete(@PathVariable Long seq) { | ||
memberService.deleteMember(seq); | ||
return new ResponseEntity(HttpStatus.OK); | ||
} | ||
} |
63 changes: 63 additions & 0 deletions
63
src/test/java/io/codechobo/member/application/MemberServiceIntegrationTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
package io.codechobo.member.application; | ||
|
||
import io.codechobo.member.domain.PointPerLevel; | ||
import io.codechobo.member.domain.support.MemberDto; | ||
import org.junit.Test; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
|
||
import java.util.Calendar; | ||
|
||
import static org.hamcrest.Matchers.is; | ||
import static org.junit.Assert.assertNotNull; | ||
import static org.junit.Assert.assertNull; | ||
import static org.junit.Assert.assertThat; | ||
|
||
/** | ||
* @author loustler | ||
* @since 10/02/2016 10:19 | ||
*/ | ||
public class MemberServiceIntegrationTest { | ||
@Autowired | ||
MemberService memberService; | ||
|
||
@Test | ||
public void 멤버등록_테스트_crate_member() { | ||
final MemberDto dto = generateData(); | ||
final MemberDto member = memberService.createMember(dto); | ||
|
||
assertNotNull(member); | ||
assertThat(member.getNickName(), is("nickName")); | ||
System.out.println(member.getLevel()); | ||
} | ||
|
||
@Test | ||
public void 멤버_업데이트_update_member() { | ||
final MemberDto dto = generateData(); | ||
final MemberDto member = memberService.createMember(dto); | ||
|
||
final MemberDto updateDto = new MemberDto(member.getSequence(), member.getId(), "another password", "loustler@gmail.com", "loustler", Calendar.getInstance().getTime(), new Integer(100)); | ||
memberService.updateMember(updateDto); | ||
|
||
final MemberDto updateMember = memberService.getMember(member.getSequence()); | ||
|
||
assertNotNull(updateMember); | ||
assertThat(updateMember.getNickName(), is("loustler")); | ||
assertThat(updateMember.getLevel(), is(PointPerLevel.STANDARD)); | ||
} | ||
|
||
@Test | ||
public void 멤버_삭제_remove_member() { | ||
final MemberDto dto = generateData(); | ||
final MemberDto member = memberService.createMember(dto); | ||
|
||
memberService.deleteMember(member.getSequence()); | ||
|
||
MemberDto after = memberService.getMember(member.getSequence()); | ||
|
||
assertNull(after); | ||
} | ||
|
||
private MemberDto generateData() { | ||
return new MemberDto("id", "password", "email@gmail.com", "nickName", Calendar.getInstance().getTime(), new Integer(0)); | ||
} | ||
} |
Oops, something went wrong.
여기는 modelMapper 쓰면 좋을 것 같아요.
http://modelmapper.org/