Toggle navigation
Toggle navigation
This project
Loading...
Sign in
jiujian
/
client-customer-order-api
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
孟苏慧
2026-04-10 13:28:01 +0800
Browse Files
Options
Browse Files
Download
Plain Diff
Commit
7beca7b9bb3935452d7f9463098a1ae746cfebef
7beca7b9
2 parents
eabdde29
4644b62e
Merge branch 'feat/nongxin-notifications' into 'master'
fix: 订餐提醒日期fix See merge request
!16
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
38 additions
and
8 deletions
src/main/java/com/infoloop/tianting/logic/task/OrderReminderTask.java
src/main/java/com/infoloop/tianting/logic/task/OrderReminderTask.java
View file @
7beca7b
...
...
@@ -12,6 +12,10 @@ import org.springframework.beans.factory.annotation.Qualifier;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
java.time.DayOfWeek
;
import
java.time.LocalDate
;
import
java.time.ZoneId
;
import
java.time.format.DateTimeFormatter
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
...
...
@@ -76,7 +80,7 @@ public class OrderReminderTask {
/**
* 每周一 9:00 执行订餐提醒推送
*/
@Scheduled
(
cron
=
"${task.orderReminder.cron:0 0 9 * * MON}"
)
@Scheduled
(
cron
=
"${task.orderReminder.cron:0 0 9 * * MON}"
,
zone
=
"Asia/Shanghai"
)
public
void
executeTask
()
{
log
.
info
(
"OrderReminderTask started"
);
...
...
@@ -178,7 +182,9 @@ public class OrderReminderTask {
/**
* 从配送规则配置中获取订餐时间配置
* 返回订餐时间,格式:yyyy年MM月dd日 HH:mm~HH:mm
* 根据配送规则中的星期开关(monday~sunday)计算本周对应的具体日期,
* 第一个启用的星期作为开始日期,最后一个启用的星期作为结束日期。
* 返回订餐时间,格式:yyyy年MM月dd日 HH:mm~yyyy年MM月dd日 HH:mm
*/
private
OrderTimeConfig
getOrderTimeConfigFromRule
()
{
try
{
...
...
@@ -197,18 +203,42 @@ public class OrderReminderTask {
return
null
;
}
// 根据配置中的星期开关,收集所有启用的星期
final
List
<
DayOfWeek
>
enabledDays
=
new
ArrayList
<>();
if
(
cfg
.
getMonday
())
enabledDays
.
add
(
DayOfWeek
.
MONDAY
);
if
(
cfg
.
getTuesday
())
enabledDays
.
add
(
DayOfWeek
.
TUESDAY
);
if
(
cfg
.
getWednesday
())
enabledDays
.
add
(
DayOfWeek
.
WEDNESDAY
);
if
(
cfg
.
getThursday
())
enabledDays
.
add
(
DayOfWeek
.
THURSDAY
);
if
(
cfg
.
getFriday
())
enabledDays
.
add
(
DayOfWeek
.
FRIDAY
);
if
(
cfg
.
getSaturday
())
enabledDays
.
add
(
DayOfWeek
.
SATURDAY
);
if
(
cfg
.
getSunday
())
enabledDays
.
add
(
DayOfWeek
.
SUNDAY
);
if
(
enabledDays
.
isEmpty
())
{
log
.
warn
(
"Delivery rule has no enabled days"
);
return
null
;
}
// 格式化时间(去掉秒)
String
startTime
=
formatTime
(
startTimeStr
);
String
endTime
=
formatTime
(
endTimeStr
);
// 获取当前日期,格式化为 yyyy年MM月dd日 HH:mm
java
.
time
.
LocalDate
today
=
java
.
time
.
LocalDate
.
now
();
java
.
time
.
format
.
DateTimeFormatter
dateFormatter
=
java
.
time
.
format
.
DateTimeFormatter
.
ofPattern
(
"yyyy年MM月dd日"
);
String
dateStr
=
today
.
format
(
dateFormatter
);
// 根据脚本执行日期计算本周对应星期的具体日期
final
ZoneId
zone
=
ZoneId
.
of
(
"Asia/Shanghai"
);
final
LocalDate
today
=
LocalDate
.
now
(
zone
);
final
DayOfWeek
firstEnabledDay
=
Collections
.
min
(
enabledDays
);
final
DayOfWeek
lastEnabledDay
=
Collections
.
max
(
enabledDays
);
// 计算本周对应星期的日期(以本周一为基准)
final
LocalDate
mondayOfThisWeek
=
today
.
with
(
DayOfWeek
.
MONDAY
);
final
LocalDate
startDate
=
mondayOfThisWeek
.
plusDays
(
firstEnabledDay
.
getValue
()
-
1L
);
final
LocalDate
endDate
=
mondayOfThisWeek
.
plusDays
(
lastEnabledDay
.
getValue
()
-
1L
);
final
DateTimeFormatter
dateFormatter
=
DateTimeFormatter
.
ofPattern
(
"yyyy年MM月dd日"
);
String
startDateStr
=
startDate
.
format
(
dateFormatter
);
String
endDateStr
=
endDate
.
format
(
dateFormatter
);
// 返回订餐时间,格式:yyyy年MM月dd日 HH:mm~yyyy年MM月dd日 HH:mm
String
orderTime
=
dateStr
+
" "
+
startTime
+
"~"
+
dateStr
+
" "
+
endTime
;
String
orderTime
=
startDateStr
+
" "
+
startTime
+
"~"
+
endDateStr
+
" "
+
endTime
;
return
new
OrderTimeConfig
(
orderTime
);
}
catch
(
Exception
e
)
{
...
...
Please
register
or
login
to post a comment