Skip to content

Commit 1c30ade

Browse files
authored
Merge pull request #361 from BCSDLab/develop
v2.0.4
2 parents d0712bd + f829bf6 commit 1c30ade

7 files changed

Lines changed: 67 additions & 5 deletions

File tree

src/main/java/koreatech/in/controller/BusController.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import koreatech.in.domain.Bus.BusTimetable;
77
import koreatech.in.domain.Bus.SchoolBusCourse;
88
import koreatech.in.domain.Bus.SingleBusTime;
9+
import koreatech.in.dto.normal.bus.BusTimetableResponse;
910
import koreatech.in.service.BusService;
1011
import org.springframework.beans.factory.annotation.Autowired;
1112
import org.springframework.http.HttpStatus;
@@ -60,4 +61,13 @@ ResponseEntity<List<SingleBusTime>> getTimetable(@ApiParam(value = "yyyy-MM-dd",
6061

6162
return new ResponseEntity<>(busService.searchTimetable(date, time, depart, arrival), HttpStatus.OK);
6263
}
64+
65+
@RequestMapping(value = "/timetable/v2", method = RequestMethod.GET)
66+
public @ResponseBody
67+
ResponseEntity<BusTimetableResponse> getTimetableV2(@ApiParam(value = "버스 종류(shuttle, commuting, express)", required = true) @RequestParam(value = "bus_type") String busType,
68+
@ApiParam(value = "등/하교(to, from)", required = true) @RequestParam(value = "direction") String direction,
69+
@ApiParam(value = "버스 노선 지역") @RequestParam(value = "region", required = false) String region) {
70+
71+
return new ResponseEntity<>(busService.getTimetableWithUpdatedAt(busType, direction, region), HttpStatus.OK);
72+
}
6373
}

src/main/java/koreatech/in/controller/admin/AdminUserController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ ResponseEntity<OwnerResponse> getOwner(@ApiParam(value = "owner_id", required =
343343
@ApiResponse(code = 409, message = "- 조회한 회원의 신원이 사장님이 아닐 때 (code: 101018) \n" +
344344
"- 중복된 닉네임일 때 (code: 101002)", response = ExceptionResponse.class),
345345
@ApiResponse(code = 422, message = "- 유효한 성별이 아닐 때 (code: 101020) \n" +
346-
"- 유효한 이메일이 아닐 때 (code: 101013) \n" +
346+
"- 유효한 이메일이 아닐 때 (code: 101013) \n" +
347347
"- 유효한 사업자 번호가 아닐 때(code: 101021)", response = ExceptionResponse.class)
348348
})
349349
@ParamValid
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package koreatech.in.dto.normal.bus;
2+
3+
import java.util.Date;
4+
import java.util.List;
5+
6+
import com.fasterxml.jackson.annotation.JsonFormat;
7+
import com.fasterxml.jackson.databind.PropertyNamingStrategy.SnakeCaseStrategy;
8+
import com.fasterxml.jackson.databind.annotation.JsonNaming;
9+
10+
import koreatech.in.domain.Bus.BusTimetable;
11+
import lombok.Builder;
12+
import lombok.Getter;
13+
14+
@Getter
15+
@Builder
16+
@JsonNaming(SnakeCaseStrategy.class)
17+
public class BusTimetableResponse {
18+
private List<? extends BusTimetable> busTimetables;
19+
20+
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "Asia/Seoul")
21+
private Date updatedAt;
22+
}

src/main/java/koreatech/in/dto/normal/user/owner/request/OwnerRegisterRequest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,10 @@ public class OwnerRegisterRequest extends UserRegisterRequest {
4646
)
4747
private String companyNumber;
4848

49-
@Size(min = 3, max = 5, message = "이미지는 사업자등록증, 영업신고증, 통장사본을 포함하여 최소 3개 최대 5개까지 가능합니다.")
49+
@Size(min = 1, max = 5, message = "이미지는 사업자등록증, 영업신고증, 통장사본을 포함하여 최소 1개 최대 5개까지 가능합니다.")
5050
@ApiModelProperty(notes = "첨부 이미지들 \n"
5151
+ "- required = false \n"
52-
+ "- 이미지는 최소 3개 최대 5개까지 허용됨 \n"
52+
+ "- 이미지는 최소 1개 최대 5개까지 허용됨 \n"
5353
+ "- 모든 이미지들이 코인 이미지 형식이어야 함 \n"
5454
, dataType = "[Lkoreatech.in.dto.global.AttachmentUrlRequest;"
5555
, required = false

src/main/java/koreatech/in/dto/normal/user/owner/request/OwnerUpdateRequest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
public class OwnerUpdateRequest // extends UserUpdateRequest // 사장님 Update에 대한 요청이 정확히 확인되지 않아, 필수적인 첨부파일만 넘기도록 함.
1818
{
1919

20-
@Size(min = 3, max = 5, message = "이미지는 사업자등록증, 영업신고증, 통장사본을 포함하여 최소 3개 최대 5개까지 가능합니다.")
20+
@Size(min = 1, max = 5, message = "이미지는 사업자등록증, 영업신고증, 통장사본을 포함하여 최소 1개 최대 5개까지 가능합니다.")
2121
@ApiModelProperty(notes = "첨부 이미지들 \n"
2222
+ "- not null \n"
23-
+ "- 이미지는 최소 3개 최대 5개까지 허용됨 \n"
23+
+ "- 이미지는 최소 1개 최대 5개까지 허용됨 \n"
2424
+ "- 모든 이미지들이 코인 이미지 형식이어야 함 \n"
2525
, dataType = "[Lkoreatech.in.dto.global.AttachmentUrlRequest;"
2626
)

src/main/java/koreatech/in/service/BusService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import koreatech.in.domain.Bus.BusRemainTime;
55
import koreatech.in.domain.Bus.SchoolBusCourse;
66
import koreatech.in.domain.Bus.SingleBusTime;
7+
import koreatech.in.dto.normal.bus.BusTimetableResponse;
78

89
import java.util.List;
910

@@ -16,4 +17,6 @@ public interface BusService {
1617
List<? extends BusTimetable> getTimetable(String busType, String direction, String region);
1718

1819
List<SingleBusTime> searchTimetable(String date, String time, String depart, String arrival);
20+
21+
BusTimetableResponse getTimetableWithUpdatedAt(String busType, String direction, String region);
1922
}

src/main/java/koreatech/in/service/BusServiceImpl.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,15 @@
22

33
import koreatech.in.domain.Bus.*;
44
import koreatech.in.domain.ErrorMessage;
5+
import koreatech.in.domain.Version.Version;
6+
import koreatech.in.dto.normal.bus.BusTimetableResponse;
7+
import koreatech.in.exception.BaseException;
8+
import koreatech.in.exception.ExceptionInformation;
59
import koreatech.in.exception.PreconditionFailedException;
610
import koreatech.in.mapstruct.normal.bus.SchoolBusCourseConverter;
711
import koreatech.in.repository.BusRepository;
12+
import koreatech.in.repository.VersionMapper;
13+
814
import org.springframework.beans.factory.annotation.Autowired;
915
import org.springframework.stereotype.Service;
1016
import org.springframework.util.StringUtils;
@@ -16,13 +22,17 @@
1622
import java.util.ArrayList;
1723
import java.util.List;
1824
import java.util.Objects;
25+
import java.util.Optional;
1926

2027
@Service
2128
public class BusServiceImpl implements BusService {
2229

2330
@Autowired
2431
private BusRepository busRepository;
2532

33+
@Autowired
34+
private VersionMapper versionMapper;
35+
2636
@Override
2737
public BusRemainTime getRemainTime(String busType, String depart, String arrival) {
2838

@@ -81,4 +91,21 @@ public List<SingleBusTime> searchTimetable(String date, String time, String depa
8191

8292
return result;
8393
}
94+
95+
@Override
96+
public BusTimetableResponse getTimetableWithUpdatedAt(String busType, String direction, String region) {
97+
List<? extends BusTimetable> busTimetables = getTimetable(busType, direction, region);
98+
99+
if (busType.equalsIgnoreCase("commuting")) {
100+
busType = "shuttle";
101+
}
102+
103+
Version version = Optional.ofNullable(versionMapper.getVersion(busType + "_bus_timetable"))
104+
.orElseThrow(() -> new BaseException(ExceptionInformation.VERSION_NOT_FOUND));
105+
106+
return BusTimetableResponse.builder()
107+
.busTimetables(busTimetables)
108+
.updatedAt(version.getUpdated_at())
109+
.build();
110+
}
84111
}

0 commit comments

Comments
 (0)