Skip to content

Commit 86afcde

Browse files
authored
feat: 优化历史记录(收藏)条件查询接口,支持根据日期查询 (#772)
1 parent 0ff9f1c commit 86afcde

File tree

4 files changed

+18
-42
lines changed

4 files changed

+18
-42
lines changed

CHANGELOG.MD

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
更新日志文档,版本顺序从新到旧,最新版本在最前(上)面。
44

5+
# 0.20.11
6+
7+
- 优化历史记录(收藏)条件查询接口,支持根据日期查询
8+
59
# 0.20.10
610

711
- 新增历史记录(收藏)条件查询接口

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
version=0.20.10
1+
version=0.20.11

server/src/main/java/run/ikaros/server/core/collection/CollectionEndpoint.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public RouterFunction<ServerResponse> endpoint() {
6464
.parameter(parameterBuilder()
6565
.name("time")
6666
.implementation(String.class)
67-
.description("时间范围,格式范围类型: 2000.9-2010.8 或者 单个类型2020.8"))
67+
.description("时间范围,格式: 开始时间戳-结束时间戳"))
6868
.parameter(parameterBuilder()
6969
.name("updateTimeDesc")
7070
.implementation(Boolean.class)

server/src/main/java/run/ikaros/server/core/collection/DefaultCollectionService.java

Lines changed: 12 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33
import static run.ikaros.api.infra.utils.ReactiveBeanUtils.copyProperties;
44

5+
import java.time.Instant;
56
import java.time.LocalDateTime;
6-
import java.time.Year;
7+
import java.time.ZoneId;
78
import java.util.Objects;
89
import lombok.extern.slf4j.Slf4j;
910
import org.springframework.data.domain.PageRequest;
@@ -78,45 +79,16 @@ public Mono<PagingWrap> listCollectionsByCondition(FindCollectionCondition condi
7879
if (CollectionCategory.EPISODE == condition.getCategory()
7980
&& StringUtils.isNotBlank(time)
8081
) {
81-
if (time.indexOf('-') > 0) {
82-
// 日期范围,例如;2000.9-2010.8
83-
String[] split = time.split("-");
84-
String first = split[0];
85-
String second = split[1];
86-
LocalDateTime startTime;
87-
if (first.indexOf(".") > 0) {
88-
String[] split1 = first.split("\\.");
89-
startTime =
90-
Year.parse(split1[0]).atMonth(Integer.parseInt(split1[1])).atDay(1)
91-
.atStartOfDay();
92-
} else {
93-
startTime = Year.parse(first).atMonth(1).atDay(1).atStartOfDay();
94-
}
95-
LocalDateTime endTime;
96-
if (second.indexOf(".") > 0) {
97-
String[] split2 = second.split("\\.");
98-
endTime =
99-
Year.parse(split2[0]).atMonth(Integer.parseInt(split2[1])).atDay(1)
100-
.atStartOfDay().plusMonths(1);
101-
} else {
102-
endTime = Year.parse(second).atDay(1).atStartOfDay().plusMonths(1);
103-
}
104-
criteria = criteria.and(Criteria.where("update_time").between(startTime, endTime));
105-
} else {
106-
// 单个类型,例如:2020.8
107-
if (time.indexOf('.') > 0) {
108-
String[] split = time.split("\\.");
109-
LocalDateTime startTime =
110-
Year.parse(split[0]).atMonth(Integer.parseInt(split[1])).atDay(1)
111-
.atStartOfDay();
112-
criteria = criteria.and(
113-
Criteria.where("update_time").between(startTime, startTime.plusMonths(1)));
114-
} else {
115-
LocalDateTime startTime = Year.parse(time).atMonth(1).atDay(1).atStartOfDay();
116-
criteria = criteria.and(
117-
Criteria.where("update_time").between(startTime, startTime.plusYears(1)));
118-
}
119-
}
82+
String[] split = time.split("-");
83+
String first = split[0];
84+
String second = split[1];
85+
LocalDateTime startTime = Instant.ofEpochMilli(Long.parseLong(first))
86+
.atZone(ZoneId.systemDefault())
87+
.toLocalDateTime();
88+
LocalDateTime endTime = Instant.ofEpochMilli(Long.parseLong(second))
89+
.atZone(ZoneId.systemDefault())
90+
.toLocalDateTime();
91+
criteria = criteria.and(Criteria.where("update_time").between(startTime, endTime));
12092
}
12193

12294
Query query = Query.query(criteria);

0 commit comments

Comments
 (0)