diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..709f9c03 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/../../../../../../../:\Users\multicampus\Desktop\SSAFY_third\s03p31a303\.idea/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 00000000..721d6e9b --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 00000000..6010c780 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,18 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 00000000..03d9549e --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 00000000..fdc392fe --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..a909147f --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..ccab8741 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/s03p31a303.iml b/.idea/s03p31a303.iml new file mode 100644 index 00000000..d6ebd480 --- /dev/null +++ b/.idea/s03p31a303.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..35eb1ddf --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/controller/RunningController.java b/backend/RunWithMe/src/main/java/kr/co/rwm/controller/RunningController.java index deaf339f..5f206a95 100644 --- a/backend/RunWithMe/src/main/java/kr/co/rwm/controller/RunningController.java +++ b/backend/RunWithMe/src/main/java/kr/co/rwm/controller/RunningController.java @@ -63,8 +63,8 @@ public ResponseEntity getTempRecord(@PathVariable int userId) { System.out.println("running/controller/temp/getRecord"); User loginUser = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); - List records = recordTempRepository.findRecordByUserId(userId); // 토큰X -// List records = recordTempRepository.findRecordByUserId(loginUser.getUserId()); // 토큰O 추후에 이렇게 바꿀것 +// List records = recordTempRepository.findRecordByUserId(userId); // 토큰X + List records = recordTempRepository.findRecordByUserId(loginUser.getUserId()); // 토큰O 추후에 이렇게 바꿀것 return new ResponseEntity(new Response(StatusCode.OK, ResponseMessage.RUNNING_GPS_SUCCESS, records), HttpStatus.OK); } diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/controller/UserController.java b/backend/RunWithMe/src/main/java/kr/co/rwm/controller/UserController.java index 81d4cc54..0c1a238a 100644 --- a/backend/RunWithMe/src/main/java/kr/co/rwm/controller/UserController.java +++ b/backend/RunWithMe/src/main/java/kr/co/rwm/controller/UserController.java @@ -32,6 +32,7 @@ import kr.co.rwm.model.StatusCode; import kr.co.rwm.service.AreaService; import kr.co.rwm.service.JwtTokenProvider; +import kr.co.rwm.service.RanksService; import kr.co.rwm.service.S3Service; import kr.co.rwm.service.UserService; import lombok.RequiredArgsConstructor; @@ -61,9 +62,8 @@ public class UserController { private final RedisTemplate logoutRedis; private final S3Service s3Service; private final AreaService areaService; - - @Autowired - private UserService userService; + private final UserService userService; + private final RanksService rankService; /** * 회원가입 - 이메일 중복 여부 True/False를 판단하고, True일 경우 JSON 객체 기반으로 회원가입을 진행한다. @@ -85,7 +85,8 @@ public ResponseEntity signup(@RequestBody User user, MultipartFile profile){ }else { Gugun gugun = areaService.findGugunByGugunId(user.getGugunId().getGugunId()); user.setGugunId(gugun); - userService.join(user, passwordEncoder.encode(user.getPassword())); + User result = userService.join(user, passwordEncoder.encode(user.getPassword())); + rankService.join(result); return new ResponseEntity(new Response(StatusCode.CREATED,ResponseMessage.SIGNUP_SUCCESS),HttpStatus.CREATED); } diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Gugun.java b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Gugun.java index fb4b0f1b..4c36622d 100644 --- a/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Gugun.java +++ b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Gugun.java @@ -1,5 +1,7 @@ package kr.co.rwm.entity; +import java.io.Serializable; + import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; @@ -18,18 +20,22 @@ @Getter @Setter @Builder -public class Gugun { +public class Gugun implements Serializable { - @Id - @Column(name = "gugun_id") - private Integer gugunId; - - @Column(name = "gugun_name") - private String gugunName; - - @ManyToOne - @JoinColumn(name = "sido_id", nullable = false) - private Sido sidoId; - -} + /** + * + */ + private static final long serialVersionUID = 11L; + @Id + @Column(name = "gugun_id") + private Integer gugunId; + + @Column(name = "gugun_name") + private String gugunName; + + @ManyToOne + @JoinColumn(name = "sido_id", nullable = false) + private Sido sidoId; + +} diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Ranks.java b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Ranks.java new file mode 100644 index 00000000..1ed90828 --- /dev/null +++ b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Ranks.java @@ -0,0 +1,56 @@ +package kr.co.rwm.entity; + + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToOne; + +import com.fasterxml.jackson.annotation.JsonIdentityInfo; +import com.fasterxml.jackson.annotation.ObjectIdGenerators; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@NoArgsConstructor +@AllArgsConstructor +@Getter +@Setter +@Builder +public class Ranks { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name="rank_id") + private Integer rankId; + + @OneToOne(cascade = CascadeType.ALL) + @JoinColumn(name="user_id",referencedColumnName = "user_id") + private User userId; + + @ManyToOne + @JoinColumn(name="gugun_id", nullable = false) + private Gugun gugunId; + + @Column(name = "race_exp", nullable = false) + private double raceExp; + + @Column(name = "donate_exp", nullable = false) + private double donateExp; + + + @Column(name = "total_exp", nullable = false) + private double totalExp; + + + +} diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Record.java b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Record.java index 893b47d0..671d141a 100644 --- a/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Record.java +++ b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Record.java @@ -26,34 +26,34 @@ @Setter @Builder public class Record implements Serializable { - - /** - * Redis에 올리려면 Serializable 필요 - */ - private static final long serialVersionUID = 1L; + + /** + * Redis에 올리려면 Serializable 필요 + */ + private static final long serialVersionUID = 1L; - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "record_id") - private Integer recordId; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "record_id") + private Integer recordId; - @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) - @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST}) - @JoinColumn(name = "running_id") - private Running runningId; + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE) + @JoinColumn(name = "running_id") + private Running runningId; - @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) - @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST}) - @JoinColumn(name = "user_id", nullable = false) - private User userId; - - @Column(name = "accumulated_distance", nullable = false) - private double accDistance; - - @Column(name = "accumulated_time", nullable = false) - private double accTime; - - @Column(name = "speed") - private double speed; - + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE) + @JoinColumn(name = "user_id", nullable = false) + private User userId; + + @Column(name = "accumulated_distance", nullable = false) + private double accDistance; + + @Column(name = "accumulated_time", nullable = false) + private double accTime; + + @Column(name = "speed") + private double speed; + } \ No newline at end of file diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Sido.java b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Sido.java index d248c407..bc5f5200 100644 --- a/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Sido.java +++ b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/Sido.java @@ -1,5 +1,7 @@ package kr.co.rwm.entity; +import java.io.Serializable; + import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; @@ -16,13 +18,18 @@ @Getter @Setter @Builder -public class Sido { +public class Sido implements Serializable { + + /** + * Redis에 올리려면 Serializable 필요 + */ + private static final long serialVersionUID = 13L; - @Id - @Column(name = "sido_id") - private Integer sidoId; - - @Column(name = "sido_name") - private String sidoName; - -} + @Id + @Column(name = "sido_id") + private Integer sidoId; + + @Column(name = "sido_name") + private String sidoName; + +} \ No newline at end of file diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/entity/User.java b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/User.java index a0d3cf36..6b514f4f 100644 --- a/backend/RunWithMe/src/main/java/kr/co/rwm/entity/User.java +++ b/backend/RunWithMe/src/main/java/kr/co/rwm/entity/User.java @@ -23,41 +23,45 @@ @Getter @Setter @Builder -public class User implements UserDetails{ - +public class User implements UserDetails { + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "user_id") private Integer userId; - + @OneToOne @JoinColumn(name = "gugunId") private Gugun gugunId; - + @Column(name = "user_email", nullable = false) private String userEmail; - + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) @Column(name = "user_pw", nullable = false) private String userPw; - + @Column(name = "user_name", nullable = false) private String userName; - + @Column(name = "profile") private String profile; - + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) @Column(name = "auth", columnDefinition = "boolean default false") private boolean emailAuth; - + +// @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) +// @OneToOne(fetch = FetchType.LAZY, mappedBy="userId", cascade = CascadeType.ALL) +// private Ranks rank; + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) private String changePw; - + public String getChangePw() { return this.changePw; } - + public void setUserPw(String userPw) { this.userPw = userPw; } @@ -67,53 +71,48 @@ public void setUserPw(String userPw) { private List roles = new ArrayList<>(); @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) - @Override - public Collection getAuthorities() { - return this.roles.stream() - .map(SimpleGrantedAuthority::new) - .collect(Collectors.toList()); - } - - @Override - public String getUsername() { - return this.userName; - } - + @Override + public Collection getAuthorities() { + return this.roles.stream().map(SimpleGrantedAuthority::new).collect(Collectors.toList()); + } + + @Override + public String getUsername() { + return this.userName; + } + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) - @Override - public String getPassword() { - return this.userPw; - } - - public boolean getAuth() { - return this.emailAuth; - } - - @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) - @Override - public boolean isAccountNonExpired() { - return true; - } - - @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) - @Override - public boolean isAccountNonLocked() { - return true; - } - - @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) - @Override - public boolean isCredentialsNonExpired() { - return true; - } - - @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) - @Override - public boolean isEnabled() { - return true; - } - - - - + @Override + public String getPassword() { + return this.userPw; + } + + public boolean getAuth() { + return this.emailAuth; + } + + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + @Override + public boolean isAccountNonExpired() { + return true; + } + + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + @Override + public boolean isAccountNonLocked() { + return true; + } + + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + @Override + public boolean isEnabled() { + return true; + } + } diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/repo/RanksRepository.java b/backend/RunWithMe/src/main/java/kr/co/rwm/repo/RanksRepository.java new file mode 100644 index 00000000..3c922972 --- /dev/null +++ b/backend/RunWithMe/src/main/java/kr/co/rwm/repo/RanksRepository.java @@ -0,0 +1,19 @@ +package kr.co.rwm.repo; + +import java.util.List; +import java.util.Optional; + +import org.springframework.data.jpa.repository.JpaRepository; + +import kr.co.rwm.entity.Ranks; +import kr.co.rwm.entity.User; + +public interface RanksRepository extends JpaRepository{ + Optional findByRankId(int rankId); + Optional findByUserId(int userId); + List findTop10ByOrderByRaceExpDesc(); + List findTop10ByOrderByDonateExpDesc(); + List findTop10ByOrderByTotalExpDesc(); + List findAllByOrderByTotalExpDesc(); + +} diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/service/RanksService.java b/backend/RunWithMe/src/main/java/kr/co/rwm/service/RanksService.java new file mode 100644 index 00000000..d90c4e52 --- /dev/null +++ b/backend/RunWithMe/src/main/java/kr/co/rwm/service/RanksService.java @@ -0,0 +1,39 @@ +package kr.co.rwm.service; + +import java.util.List; +import java.util.Optional; + +import kr.co.rwm.entity.Ranks; +import kr.co.rwm.entity.User; + +public interface RanksService { + // 회원가입 동시에 rank 테이블에 생성 + void join(User user); + + // 경험치 쌓기(기록) - 기록id로 분석해서 점수 책정 + void getRaceExp(int userId,int recordId); + + // 경험치 쌓기(기부) - 챌린지 달성하면 무조건 쌓임 + void getDonateExp(int userId); + + // 경험치 top 10 (기록) - 사용자 이름, 점수, + List raceTop(); + + // 경험치 top 10 (기부) + List donateTop(); + + // 경험치 top 10 (total) + List totalTop(); + + // 경험치 top 10 (total) - 지역별 + List totalTopByRegion(int gugunId); + + // 경험치 전체 목록 + List totalRank(); + + // userName으로 다른 사용자 랭킹 조회 + Optional findByUserName(String userName); + + // 사용자 랭킹관련 정보 조회 + Optional findByUserId(int userId); +} diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/service/RanksServiceImpl.java b/backend/RunWithMe/src/main/java/kr/co/rwm/service/RanksServiceImpl.java new file mode 100644 index 00000000..130ff6e2 --- /dev/null +++ b/backend/RunWithMe/src/main/java/kr/co/rwm/service/RanksServiceImpl.java @@ -0,0 +1,78 @@ +package kr.co.rwm.service; + +import java.util.List; +import java.util.Optional; + +import org.springframework.stereotype.Service; + +import kr.co.rwm.entity.Ranks; +import kr.co.rwm.entity.User; +import kr.co.rwm.repo.RanksRepository; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor +@Service +public class RanksServiceImpl implements RanksService{ + private final RanksRepository rankRepository; + private final int DEFAULT_EXP = 0; + + // 회원가입시 활용 및 매달 스코어 초기화시 사용 + @Override + public void join(User user) { + rankRepository.save(Ranks.builder().gugunId(user.getGugunId()).userId(user).raceExp(DEFAULT_EXP).donateExp(DEFAULT_EXP).totalExp(DEFAULT_EXP).build()); + } + + @Override + public void getRaceExp(int userId, int recordId) { + + } + + @Override + public void getDonateExp(int userId) { + // TODO Auto-generated method stub + + } + + @Override + public List raceTop() { + // TODO Auto-generated method stub + return null; + } + + @Override + public List donateTop() { + // TODO Auto-generated method stub + return null; + } + + @Override + public List totalTop() { + // TODO Auto-generated method stub + return null; + } + + @Override + public List totalTopByRegion(int regionId) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List totalRank() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Optional findByUserName(String userName) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Optional findByUserId(int userId) { + // TODO Auto-generated method stub + return null; + } + +} \ No newline at end of file diff --git a/backend/RunWithMe/src/main/java/kr/co/rwm/service/UserService.java b/backend/RunWithMe/src/main/java/kr/co/rwm/service/UserService.java index ae6a310a..10ad3ab9 100644 --- a/backend/RunWithMe/src/main/java/kr/co/rwm/service/UserService.java +++ b/backend/RunWithMe/src/main/java/kr/co/rwm/service/UserService.java @@ -32,8 +32,8 @@ public Optional findByUserEmail(String userEmail) { return userRepository.findByUserEmail(userEmail); } - public void join(User user, String password) { - userRepository.save(User.builder().gugunId(user.getGugunId()).userEmail(user.getUserEmail()) + public User join(User user, String password) { + return userRepository.save(User.builder().gugunId(user.getGugunId()).userEmail(user.getUserEmail()) .userName(user.getUsername()).userPw(password).roles(Collections.singletonList("USER")).build()); } diff --git "a/doc/WireFrame/\352\267\270\353\243\271 \354\261\204\355\214\205 \353\252\251\353\241\235 (o).png" "b/doc/WireFrame/\352\267\270\353\243\271 \354\261\204\355\214\205 \353\252\251\353\241\235 (o).png" new file mode 100644 index 00000000..9b82779f Binary files /dev/null and "b/doc/WireFrame/\352\267\270\353\243\271 \354\261\204\355\214\205 \353\252\251\353\241\235 (o).png" differ diff --git "a/doc/WireFrame/\352\267\270\353\243\271\354\261\204\355\214\205 (o).png" "b/doc/WireFrame/\352\267\270\353\243\271\354\261\204\355\214\205 (o).png" new file mode 100644 index 00000000..6f079fe7 Binary files /dev/null and "b/doc/WireFrame/\352\267\270\353\243\271\354\261\204\355\214\205 (o).png" differ diff --git "a/doc/WireFrame/\352\270\260\353\266\200 \354\261\214\353\246\260\354\247\200 - \352\262\260\354\240\234(o).png" "b/doc/WireFrame/\352\270\260\353\266\200 \354\261\214\353\246\260\354\247\200 - \352\262\260\354\240\234(o).png" new file mode 100644 index 00000000..848f8126 Binary files /dev/null and "b/doc/WireFrame/\352\270\260\353\266\200 \354\261\214\353\246\260\354\247\200 - \352\262\260\354\240\234(o).png" differ diff --git "a/doc/WireFrame/\352\270\260\353\266\200 \355\230\204\355\231\251 View (o).png" "b/doc/WireFrame/\352\270\260\353\266\200 \355\230\204\355\231\251 View (o).png" new file mode 100644 index 00000000..cec6d44c Binary files /dev/null and "b/doc/WireFrame/\352\270\260\353\266\200 \355\230\204\355\231\251 View (o).png" differ diff --git "a/doc/WireFrame/\353\236\255\355\202\271\354\213\234\354\212\244\355\205\234(o).png" "b/doc/WireFrame/\353\236\255\355\202\271\354\213\234\354\212\244\355\205\234(o).png" new file mode 100644 index 00000000..7f1bd52a Binary files /dev/null and "b/doc/WireFrame/\353\236\255\355\202\271\354\213\234\354\212\244\355\205\234(o).png" differ diff --git "a/doc/WireFrame/\353\237\260\353\213\235 \352\270\260\353\241\235 \355\224\274\353\223\234 (o).png" "b/doc/WireFrame/\353\237\260\353\213\235 \352\270\260\353\241\235 \355\224\274\353\223\234 (o).png" new file mode 100644 index 00000000..0c9fad14 Binary files /dev/null and "b/doc/WireFrame/\353\237\260\353\213\235 \352\270\260\353\241\235 \355\224\274\353\223\234 (o).png" differ diff --git "a/doc/WireFrame/\353\237\260\353\213\235 \353\266\204\354\204\235(o).png" "b/doc/WireFrame/\353\237\260\353\213\235 \353\266\204\354\204\235(o).png" new file mode 100644 index 00000000..05034dc1 Binary files /dev/null and "b/doc/WireFrame/\353\237\260\353\213\235 \353\266\204\354\204\235(o).png" differ diff --git "a/doc/WireFrame/\353\237\260\353\213\235(Finish).png" "b/doc/WireFrame/\353\237\260\353\213\235(Finish).png" new file mode 100644 index 00000000..a927e56b Binary files /dev/null and "b/doc/WireFrame/\353\237\260\353\213\235(Finish).png" differ diff --git "a/doc/WireFrame/\353\237\260\353\213\235(ing) (o).png" "b/doc/WireFrame/\353\237\260\353\213\235(ing) (o).png" new file mode 100644 index 00000000..09a9f802 Binary files /dev/null and "b/doc/WireFrame/\353\237\260\353\213\235(ing) (o).png" differ diff --git "a/doc/WireFrame/\353\241\234\352\267\270\354\235\270(o).png" "b/doc/WireFrame/\353\241\234\352\267\270\354\235\270(o).png" new file mode 100644 index 00000000..ad73c7c7 Binary files /dev/null and "b/doc/WireFrame/\353\241\234\352\267\270\354\235\270(o).png" differ diff --git "a/doc/WireFrame/\353\247\210\354\235\264\355\216\230\354\235\264\354\247\200 (\355\232\214\354\233\220\354\240\225\353\263\264\352\264\200\353\240\250) (o).png" "b/doc/WireFrame/\353\247\210\354\235\264\355\216\230\354\235\264\354\247\200 (\355\232\214\354\233\220\354\240\225\353\263\264\352\264\200\353\240\250) (o).png" new file mode 100644 index 00000000..86957098 Binary files /dev/null and "b/doc/WireFrame/\353\247\210\354\235\264\355\216\230\354\235\264\354\247\200 (\355\232\214\354\233\220\354\240\225\353\263\264\352\264\200\353\240\250) (o).png" differ diff --git "a/doc/WireFrame/\353\247\244\354\271\255 _ \354\261\204\355\214\205(o).png" "b/doc/WireFrame/\353\247\244\354\271\255 _ \354\261\204\355\214\205(o).png" new file mode 100644 index 00000000..1600296c Binary files /dev/null and "b/doc/WireFrame/\353\247\244\354\271\255 _ \354\261\204\355\214\205(o).png" differ diff --git "a/doc/WireFrame/\353\251\224\354\235\270 \355\231\224\353\251\264(o).png" "b/doc/WireFrame/\353\251\224\354\235\270 \355\231\224\353\251\264(o).png" new file mode 100644 index 00000000..d5899c7e Binary files /dev/null and "b/doc/WireFrame/\353\251\224\354\235\270 \355\231\224\353\251\264(o).png" differ diff --git "a/doc/WireFrame/\353\251\224\354\235\270 \355\231\224\353\251\264_\355\226\204\353\262\204\352\261\260\353\260\224(o) .png" "b/doc/WireFrame/\353\251\224\354\235\270 \355\231\224\353\251\264_\355\226\204\353\262\204\352\261\260\353\260\224(o) .png" new file mode 100644 index 00000000..aa51d4db Binary files /dev/null and "b/doc/WireFrame/\353\251\224\354\235\270 \355\231\224\353\251\264_\355\226\204\353\262\204\352\261\260\353\260\224(o) .png" differ diff --git "a/doc/WireFrame/\354\225\214\353\246\274_\353\251\224\354\235\270 \355\231\224\353\251\264(o).png" "b/doc/WireFrame/\354\225\214\353\246\274_\353\251\224\354\235\270 \355\231\224\353\251\264(o).png" new file mode 100644 index 00000000..e38e90de Binary files /dev/null and "b/doc/WireFrame/\354\225\214\353\246\274_\353\251\224\354\235\270 \355\231\224\353\251\264(o).png" differ diff --git "a/doc/WireFrame/\354\261\214\353\246\260\354\247\200View(\354\271\264\355\205\214\352\263\240\353\246\254\353\263\204)(o).png" "b/doc/WireFrame/\354\261\214\353\246\260\354\247\200View(\354\271\264\355\205\214\352\263\240\353\246\254\353\263\204)(o).png" new file mode 100644 index 00000000..cd627e94 Binary files /dev/null and "b/doc/WireFrame/\354\261\214\353\246\260\354\247\200View(\354\271\264\355\205\214\352\263\240\353\246\254\353\263\204)(o).png" differ diff --git "a/doc/WireFrame/\354\261\214\353\246\260\354\247\200detail View(o).png" "b/doc/WireFrame/\354\261\214\353\246\260\354\247\200detail View(o).png" new file mode 100644 index 00000000..7be35844 Binary files /dev/null and "b/doc/WireFrame/\354\261\214\353\246\260\354\247\200detail View(o).png" differ diff --git "a/doc/WireFrame/\354\271\234\352\265\254\353\252\251\353\241\235(o).png" "b/doc/WireFrame/\354\271\234\352\265\254\353\252\251\353\241\235(o).png" new file mode 100644 index 00000000..f2b4cde3 Binary files /dev/null and "b/doc/WireFrame/\354\271\234\352\265\254\353\252\251\353\241\235(o).png" differ diff --git "a/doc/WireFrame/\354\273\244\353\256\244\353\213\210\355\213\260 (o).png" "b/doc/WireFrame/\354\273\244\353\256\244\353\213\210\355\213\260 (o).png" new file mode 100644 index 00000000..882f47a7 Binary files /dev/null and "b/doc/WireFrame/\354\273\244\353\256\244\353\213\210\355\213\260 (o).png" differ diff --git "a/doc/\355\224\204\353\241\234\354\240\235\355\212\270 \352\263\204\355\232\215\354\204\234/\353\236\255\355\202\271 \354\213\234\354\212\244\355\205\234 \354\204\244\352\263\204_\352\271\200\355\230\225\355\203\235.txt" "b/doc/\355\224\204\353\241\234\354\240\235\355\212\270 \352\263\204\355\232\215\354\204\234/\353\236\255\355\202\271 \354\213\234\354\212\244\355\205\234 \354\204\244\352\263\204_\352\271\200\355\230\225\355\203\235.txt" new file mode 100644 index 00000000..52e61470 --- /dev/null +++ "b/doc/\355\224\204\353\241\234\354\240\235\355\212\270 \352\263\204\355\232\215\354\204\234/\353\236\255\355\202\271 \354\213\234\354\212\244\355\205\234 \354\204\244\352\263\204_\352\271\200\355\230\225\355\203\235.txt" @@ -0,0 +1,21 @@ +��ŷ +# ��ο� +- �� ��� ���� �� �ִ� score - 10 �� +�޼�O ���� ȹ�� +�޼�X ���� ��ȹ�� + +# ��Ͽ� +- �Ϸ��� ���̽� ���� +�Ÿ� ��� �ӷ� +1. �� �� �Ÿ��� ����� �ӷ¿� ������ �ο� +km�� �ӷ� - 1km �������� ��ռӷ��� ���� ex) 1km - 6km/h - 6�� | 2km = 6 + 6km/h/*1.2 | => m�� / record ���̺� +1km *1 +2km *1.2 +.... +��ռӵ��� 20km/h �̻��̸鼭 3�� �̻� ����? üũ x => �ڰ� �ƴ϶� Ż���� �̿����� ���ɼ��� ���� + +# Total (1�� ����) - reset / ���� or ������ / +��� + ��� = �� + +rank table +rankID, ����ID, ���� ����, ��� ����ġ, ��� ����ġ, ��Ż ����ġ