From 936bf253fc48d4b8bf1055259a70f7b9ccf73679 Mon Sep 17 00:00:00 2001 From: jack ning Date: Thu, 3 Jul 2025 12:15:52 +0800 Subject: [PATCH] update modules/kbase: add 2 mod 330 files --- .../com/bytedesk/ai/robot/RobotExcel.java | 6 +- .../ai/robot_message/RobotMessageUtils.java | 6 +- .../controller/SpringAIToolsController.java | 2 +- .../service/SpringAIVectorStoreService.java | 6 +- .../ai/utils/tools/DateTimeTools.java | 8 +- .../bytedesk/core/action/ActionResponse.java | 2 +- .../com/bytedesk/core/base/BaseEntity.java | 20 +-- .../bytedesk/core/base/BaseEntityNoOrg.java | 13 +- .../com/bytedesk/core/base/BaseResponse.java | 6 +- .../bytedesk/core/base/BaseResponseNoOrg.java | 6 +- .../core/black/BlackAccessInterceptor.java | 2 +- .../com/bytedesk/core/black/BlackEntity.java | 6 +- .../core/black/BlackEventListener.java | 4 +- .../com/bytedesk/core/black/BlackExcel.java | 8 +- .../bytedesk/core/black/BlackRepository.java | 4 +- .../com/bytedesk/core/black/BlackRequest.java | 6 +- .../bytedesk/core/black/BlackResponse.java | 6 +- .../bytedesk/core/black/BlackRestService.java | 4 +- .../core/clipboard/ClipboardResponse.java | 2 +- .../core/favorite/FavoriteResponse.java | 2 +- .../gray_release/GrayReleaseController.java | 6 +- .../core/gray_release/GrayReleaseEntity.java | 8 +- .../core/gray_release/GrayReleaseMetrics.java | 4 +- .../GrayReleaseMetricsService.java | 6 +- .../gray_release/GrayReleaseRepository.java | 10 +- .../core/gray_release/GrayReleaseService.java | 16 +-- .../core/gray_release/GrayReleaseStatus.java | 6 +- .../gray_release/GrayReleaseStrategy.java | 12 +- .../com/bytedesk/core/group/GroupEntity.java | 2 +- .../group_invite/GroupInviteResponse.java | 2 +- .../group_notice/GroupNoticeResponse.java | 2 +- .../core/ip/access/IpAccessEntity.java | 6 +- .../core/ip/access/IpAccessRepository.java | 4 +- .../core/ip/access/IpAccessResponse.java | 6 +- .../core/ip/access/IpAccessRestService.java | 10 +- .../core/ip/black/IpBlacklistEntity.java | 6 +- .../core/ip/black/IpBlacklistRepository.java | 4 +- .../core/ip/black/IpBlacklistRequest.java | 6 +- .../core/ip/black/IpBlacklistResponse.java | 6 +- .../core/ip/black/IpBlacklistRestService.java | 6 +- .../bytedesk/core/jms/JmsArtemisConfig.java | 2 +- .../com/bytedesk/core/menu/MenuResponse.java | 2 +- .../bytedesk/core/message/MessageExcel.java | 4 +- .../core/message/MessageProtobuf.java | 7 +- .../bytedesk/core/message/MessageService.java | 7 +- .../bytedesk/core/message/MessageUtils.java | 13 +- .../com/bytedesk/core/push/PushResponse.java | 4 +- .../bytedesk/core/push/PushRestService.java | 8 +- .../bytedesk/core/quartz/QuartzResponse.java | 2 +- .../bytedesk/core/rbac/auth/AuthService.java | 6 +- .../OrganizationApplyExcel.java | 6 +- .../OrganizationApplyResponse.java | 2 +- .../bytedesk/core/rbac/token/TokenEntity.java | 8 +- .../core/rbac/token/TokenRepository.java | 4 +- .../core/rbac/token/TokenRequest.java | 4 +- .../core/rbac/token/TokenResponse.java | 4 +- .../core/rbac/token/TokenRestService.java | 2 +- .../core/rbac/user/UserDetailsImpl.java | 13 +- .../bytedesk/core/rbac/user/UserEntity.java | 6 +- .../rbac/user/UserOrganizationRoleEntity.java | 6 +- .../java/com/bytedesk/core/tag/TagExcel.java | 6 +- .../com/bytedesk/core/thread/ThreadExcel.java | 4 +- .../core/thread/ThreadSpecification.java | 16 +-- .../bytedesk/core/uid/utils/DateUtils.java | 2 +- .../com/bytedesk/core/url/UrlResponse.java | 2 +- .../com/bytedesk/core/utils/BdDateUtils.java | 43 +++--- .../workflow_result/WorkflowResultExcel.java | 6 +- .../forum/post/PostSpecification.java | 6 +- .../kbase/article/AbstractArticleEntity.java | 6 +- .../kbase/article/ArticleRequest.java | 6 +- .../kbase/article/ArticleResponse.java | 6 +- .../kbase/article/elastic/ArticleElastic.java | 6 +- .../elastic/ArticleElasticService.java | 6 +- .../kbase/article/vector/ArticleVector.java | 6 +- .../ArticleArchiveRequest.java | 6 +- .../ArticleArchiveResponse.java | 10 +- .../fixed/AutoReplyFixedEntity.java | 6 +- .../fixed/AutoReplyFixedRequest.java | 6 +- .../fixed/AutoReplyFixedResponse.java | 6 +- .../keyword/AutoReplyKeywordEntity.java | 6 +- .../keyword/AutoReplyKeywordRequest.java | 6 +- .../keyword/AutoReplyKeywordResponse.java | 8 +- .../kbase/comment/CommentRequest.java | 6 +- .../kbase/comment/CommentResponse.java | 4 +- .../com/bytedesk/kbase/faq/FaqEntity.java | 6 +- .../java/com/bytedesk/kbase/faq/FaqExcel.java | 6 +- .../com/bytedesk/kbase/faq/FaqRequest.java | 6 +- .../com/bytedesk/kbase/faq/FaqResponse.java | 6 +- .../bytedesk/kbase/faq/FaqRestService.java | 10 +- .../bytedesk/kbase/faq/FaqSpecification.java | 4 +- .../kbase/faq/elastic/FaqElastic.java | 10 +- .../kbase/faq/elastic/FaqElasticService.java | 10 +- .../bytedesk/kbase/faq/vector/FaqVector.java | 6 +- .../com/bytedesk/kbase/file/FileEntity.java | 6 +- .../com/bytedesk/kbase/file/FileExcel.java | 8 +- .../com/bytedesk/kbase/file/FileRequest.java | 6 +- .../com/bytedesk/kbase/file/FileResponse.java | 10 +- .../bytedesk/kbase/file/FileRestService.java | 4 +- .../com/bytedesk/kbase/kbase/KbaseEntity.java | 6 +- .../bytedesk/kbase/kbase/KbaseRequest.java | 6 +- .../bytedesk/kbase/kbase/KbaseResponse.java | 6 +- .../kbase_invite/KbaseInviteResponse.java | 2 +- .../bytedesk/kbase/llm_chunk/ChunkEntity.java | 6 +- .../kbase/llm_chunk/ChunkEventListener.java | 6 +- .../bytedesk/kbase/llm_chunk/ChunkExcel.java | 8 +- .../kbase/llm_chunk/ChunkRequest.java | 6 +- .../kbase/llm_chunk/ChunkResponse.java | 6 +- .../kbase/llm_chunk/ChunkRestService.java | 6 +- .../kbase/llm_chunk/elastic/ChunkElastic.java | 10 +- .../elastic/ChunkElasticService.java | 6 +- .../kbase/llm_chunk/vector/ChunkVector.java | 6 +- .../bytedesk/kbase/llm_text/TextEntity.java | 6 +- .../bytedesk/kbase/llm_text/TextExcel.java | 8 +- .../bytedesk/kbase/llm_text/TextRequest.java | 6 +- .../bytedesk/kbase/llm_text/TextResponse.java | 6 +- .../kbase/llm_text/TextRestService.java | 6 +- .../kbase/llm_text/elastic/TextElastic.java | 14 +- .../llm_text/elastic/TextElasticService.java | 6 +- .../kbase/llm_text/vector/TextVector.java | 6 +- .../kbase/llm_webpage/WebpageEntity.java | 6 +- .../kbase/llm_webpage/WebpageRequest.java | 6 +- .../kbase/llm_webpage/WebpageResponse.java | 6 +- .../llm_webpage/elastic/WebpageElastic.java | 6 +- .../elastic/WebpageElasticService.java | 6 +- .../llm_webpage/vector/WebpageVector.java | 6 +- .../kbase/llm_website/WebsiteEntity.java | 6 +- .../kbase/llm_website/WebsiteRequest.java | 6 +- .../kbase/llm_website/WebsiteResponse.java | 6 +- .../kbase/material/MaterialExcel.java | 6 +- .../kbase/quick_reply/QuickReplyEntity.java | 6 +- .../kbase/quick_reply/QuickReplyRequest.java | 6 +- .../kbase/quick_reply/QuickReplyResponse.java | 6 +- .../elastic/QuickReplyElastic.java | 6 +- .../elastic/QuickReplyElasticService.java | 6 +- .../quick_reply/vector/QuickReplyVector.java | 6 +- .../vector/QuickReplyVectorService.java | 6 +- .../kbase/settings/ServiceSettings.java | 6 +- .../settings/ServiceSettingsRequest.java | 6 +- .../settings/ServiceSettingsResponse.java | 6 +- .../IntentionSettingsResponse.java | 2 +- .../InviteSettingsResponse.java | 2 +- .../ServiceSettingsEntity.java | 4 +- .../ServiceSettingsResponse.java | 2 +- .../taboo_message/TabooMessageRequest.java | 6 +- .../taboo_message/TabooMessageResponse.java | 10 +- .../kbase/faq/FaqBulkIndexTester.java | 4 +- modules/pom.xml | 2 +- .../service/customer/CustomerEntity.java | 6 +- .../com/bytedesk/service/form/FormEntity.java | 6 +- .../service/form_result/FormResultExcel.java | 6 +- .../message_leave/MessageLeaveEntity.java | 4 +- .../message_leave/MessageLeaveRequest.java | 4 +- .../message_leave/MessageLeaveResponse.java | 4 +- .../MessageLeaveRestService.java | 4 +- .../bytedesk/service/queue/QueueService.java | 14 +- .../queue_member/QueueMemberEntity.java | 55 ++++---- .../QueueMemberEventListener.java | 10 +- .../queue_member/QueueMemberExcel.java | 14 +- .../queue_member/QueueMemberRepository.java | 8 +- .../queue_member/QueueMemberRequest.java | 28 ++-- .../queue_member/QueueMemberResponse.java | 42 +++--- .../queue_member/QueueMemberRestService.java | 2 +- .../queue_member/mq/QueueMemberConsumer.java | 4 +- .../queue_member/mq/QueueMemberMessage.java | 10 +- .../AgentThreadRoutingStrategy.java | 6 +- .../RobotThreadRoutingStrategy.java | 4 +- .../WorkgroupThreadRoutingStrategy.java | 4 +- .../service/template/TemplateExcel.java | 6 +- .../service/utils/ThreadMessageUtil.java | 34 ++--- .../service/visitor/VisitorEventListener.java | 6 +- .../service/visitor/VisitorExcel.java | 4 +- .../service/visitor/VisitorResponse.java | 2 +- .../VisitorThreadEventListener.java | 15 +- .../visitor_thread/VisitorThreadResponse.java | 2 +- .../visitor_thread/VisitorThreadService.java | 8 +- .../settings/WorktimeSettingResponse.java | 2 +- .../ticket/process/TicketProcessResponse.java | 4 +- ...ThreadHumanIdleTimeoutServiceDelegate.java | 4 +- ...ThreadRobotIdleTimeoutServiceDelegate.java | 4 +- .../bytedesk/ticket/ticket/TicketEntity.java | 6 +- .../ticket/ticket/TicketRepository.java | 10 +- .../bytedesk/ticket/ticket/TicketService.java | 8 +- .../ticket/ticket/TicketSpecification.java | 6 +- .../delegate/TicketAutoCloseDelegate.java | 4 +- .../ticket/delegate/TicketCloseDelegate.java | 4 +- .../ticket/ticket/sla/TicketSLAService.java | 8 +- .../voc/feedback/dto/FeedbackResponse.java | 6 +- .../stats/FeedbackStatsController.java | 18 +-- .../feedback/stats/FeedbackStatsService.java | 14 +- .../stats/FeedbackStatsServiceImpl.java | 28 ++-- .../agent/FreeSwitchAgentEntity.java | 4 +- .../agent/FreeSwitchAgentService.java | 16 +-- .../freeswitch/call/FreeSwitchCallEntity.java | 6 +- .../call/FreeSwitchCallEventListener.java | 2 +- .../call/FreeSwitchCallRepository.java | 14 +- .../call/FreeSwitchCallService.java | 10 +- .../cdr/FreeSwitchCdrController.java | 10 +- .../freeswitch/cdr/FreeSwitchCdrEntity.java | 8 +- .../freeswitch/cdr/FreeSwitchCdrExcel.java | 10 +- .../cdr/FreeSwitchCdrRepository.java | 12 +- .../freeswitch/cdr/FreeSwitchCdrRequest.java | 6 +- .../freeswitch/cdr/FreeSwitchCdrResponse.java | 8 +- .../freeswitch/cdr/FreeSwitchCdrService.java | 16 +-- .../conference/FreeSwitchConferenceExcel.java | 6 +- .../config/FreeSwitchEventListener.java | 10 +- .../config/FreeSwitchHealthIndicator.java | 4 +- .../gateway/FreeSwitchGatewayExcel.java | 6 +- .../number/FreeSwitchNumberEntity.java | 6 +- .../number/FreeSwitchNumberExcel.java | 8 +- .../number/FreeSwitchNumberRepository.java | 12 +- .../number/FreeSwitchNumberResponse.java | 4 +- .../number/FreeSwitchNumberService.java | 10 +- .../queue/FreeSwitchQueueService.java | 12 +- .../webrtc/FreeSwitchWebRTCExcel.java | 6 +- .../src/main/resources/docs/agent/README.md | 2 +- .../main/resources/docs/agent/README.zh_CN.md | 2 +- .../main/resources/docs/agent/README.zh_TW.md | 2 +- .../src/main/resources/docs/call/README.md | 2 +- .../main/resources/docs/call/README.zh_CN.md | 2 +- .../main/resources/docs/call/README.zh_TW.md | 2 +- .../src/main/resources/docs/cdr/README.md | 2 +- .../main/resources/docs/cdr/README.zh_CN.md | 2 +- .../main/resources/docs/cdr/README.zh_TW.md | 2 +- .../kanban/module/ModuleResponse.java | 4 +- .../kanban/project/ProjectResponse.java | 4 +- .../project_invite/ProjectInviteResponse.java | 2 +- .../kanban/report/ReportResponse.java | 2 +- .../bytedesk/kanban/task/TaskResponse.java | 4 +- .../kanban/todo_list/TodoListResponse.java | 4 +- .../starter/service/SystemStatusService.java | 4 +- .../main/resources/db/changelog/master.xml | 1 + .../250703_upgrade_timestamp_to_zoned.xml | 131 ++++++++++++++++++ 232 files changed, 940 insertions(+), 808 deletions(-) create mode 100644 starter/src/main/resources/db/changelog/migration/250703_upgrade_timestamp_to_zoned.xml diff --git a/modules/ai/src/main/java/com/bytedesk/ai/robot/RobotExcel.java b/modules/ai/src/main/java/com/bytedesk/ai/robot/RobotExcel.java index 14c7f4d013..6a6c36dc4a 100644 --- a/modules/ai/src/main/java/com/bytedesk/ai/robot/RobotExcel.java +++ b/modules/ai/src/main/java/com/bytedesk/ai/robot/RobotExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.ai.robot; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -40,10 +40,10 @@ public class RobotExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(index = 3, value = "创建时间") @ColumnWidth(20) - private LocalDateTime createdAt; + private ZonedDateTime createdAt; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(index = 4, value = "修改时间") @ColumnWidth(20) - private LocalDateTime updatedAt; + private ZonedDateTime updatedAt; } diff --git a/modules/ai/src/main/java/com/bytedesk/ai/robot_message/RobotMessageUtils.java b/modules/ai/src/main/java/com/bytedesk/ai/robot_message/RobotMessageUtils.java index 79032f9614..0576e1027f 100644 --- a/modules/ai/src/main/java/com/bytedesk/ai/robot_message/RobotMessageUtils.java +++ b/modules/ai/src/main/java/com/bytedesk/ai/robot_message/RobotMessageUtils.java @@ -13,7 +13,7 @@ */ package com.bytedesk.ai.robot_message; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.bytedesk.ai.robot.RobotProtobuf; import com.bytedesk.core.enums.ClientEnum; @@ -34,7 +34,7 @@ public class RobotMessageUtils { .user(robot.toUserProtobuf()) .client(ClientEnum.SYSTEM) .extra(messageProtobuf.getExtra()) - .createdAt(LocalDateTime.now()) + .createdAt(ZonedDateTime.now()) .build(); } @@ -58,7 +58,7 @@ public class RobotMessageUtils { // .user(user) // .client(ClientEnum.ROBOT) // .extra(JSONObject.toJSONString(extraObject)) - // .createdAt(LocalDateTime.now()) + // .createdAt(ZonedDateTime.now()) // .build(); // return message; // } diff --git a/modules/ai/src/main/java/com/bytedesk/ai/springai/controller/SpringAIToolsController.java b/modules/ai/src/main/java/com/bytedesk/ai/springai/controller/SpringAIToolsController.java index 0d347f7e98..5585a9defa 100644 --- a/modules/ai/src/main/java/com/bytedesk/ai/springai/controller/SpringAIToolsController.java +++ b/modules/ai/src/main/java/com/bytedesk/ai/springai/controller/SpringAIToolsController.java @@ -79,7 +79,7 @@ public class SpringAIToolsController { // what day tomorrow is. log.info("response: {}", response); log.info("currentDateTime: {}, ZonedDateTime: {}, ZoneId: {}", - BdDateUtils.getCurrentLocalDateTime(), + BdDateUtils.getCurrentZonedDateTime(), BdDateUtils.getCurrentZonedDateTime(), BdDateUtils.getCurrentZoneId()); diff --git a/modules/ai/src/main/java/com/bytedesk/ai/springai/service/SpringAIVectorStoreService.java b/modules/ai/src/main/java/com/bytedesk/ai/springai/service/SpringAIVectorStoreService.java index 13cc72c2ff..5f9cbc7ff6 100644 --- a/modules/ai/src/main/java/com/bytedesk/ai/springai/service/SpringAIVectorStoreService.java +++ b/modules/ai/src/main/java/com/bytedesk/ai/springai/service/SpringAIVectorStoreService.java @@ -75,7 +75,7 @@ public class SpringAIVectorStoreService { // List contentList = similarDocuments.stream().map(Document::getText).toList(); // 获取当前时间,用于内存中过滤日期 - // LocalDateTime currentTime = LocalDateTime.now(); + // ZonedDateTime currentTime = ZonedDateTime.now(); // // 在内存中过滤日期范围 // List dateFilteredDocuments = similarDocuments.stream() @@ -85,7 +85,7 @@ public class SpringAIVectorStoreService { // if (startDateObj != null) { // try { // String startDateStr = String.valueOf(startDateObj); - // LocalDateTime startDate = LocalDateTime.parse(startDateStr); + // ZonedDateTime startDate = ZonedDateTime.parse(startDateStr); // if (startDate.isAfter(currentTime)) { // return false; // 如果开始日期在当前时间之后,则过滤掉 // } @@ -99,7 +99,7 @@ public class SpringAIVectorStoreService { // if (endDateObj != null) { // try { // String endDateStr = String.valueOf(endDateObj); - // LocalDateTime endDate = LocalDateTime.parse(endDateStr); + // ZonedDateTime endDate = ZonedDateTime.parse(endDateStr); // if (endDate.isBefore(currentTime)) { // return false; // 如果结束日期在当前时间之前,则过滤掉 // } diff --git a/modules/ai/src/main/java/com/bytedesk/ai/utils/tools/DateTimeTools.java b/modules/ai/src/main/java/com/bytedesk/ai/utils/tools/DateTimeTools.java index 6bc03508ad..d4d109d38f 100644 --- a/modules/ai/src/main/java/com/bytedesk/ai/utils/tools/DateTimeTools.java +++ b/modules/ai/src/main/java/com/bytedesk/ai/utils/tools/DateTimeTools.java @@ -13,7 +13,7 @@ */ package com.bytedesk.ai.utils.tools; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.TimeZone; @@ -35,18 +35,18 @@ public class DateTimeTools { TimeZone timeZone = LocaleContextHolder.getTimeZone(); log.info("timeZone: {}", timeZone); // 将当前时间转换为指定时区的日期时间 - return LocalDateTime.now().atZone(timeZone.toZoneId()).toString(); + return ZonedDateTime.now().atZone(timeZone.toZoneId()).toString(); } @Tool(description = "Set a user alarm for the given time") void setAlarm(@ToolParam(description = "Time in ISO-8601 format") String time) { - LocalDateTime alarmTime = LocalDateTime.parse(time, DateTimeFormatter.ISO_DATE_TIME); + ZonedDateTime alarmTime = ZonedDateTime.parse(time, DateTimeFormatter.ISO_DATE_TIME); log.info("Alarm set for " + alarmTime); } // MethodToolCallback String getCurrentDateTimeMethodToolCallback() { - return LocalDateTime.now().atZone(LocaleContextHolder.getTimeZone().toZoneId()).toString(); + return ZonedDateTime.now().atZone(LocaleContextHolder.getTimeZone().toZoneId()).toString(); } } diff --git a/modules/core/src/main/java/com/bytedesk/core/action/ActionResponse.java b/modules/core/src/main/java/com/bytedesk/core/action/ActionResponse.java index cf3b328888..cdedba8405 100644 --- a/modules/core/src/main/java/com/bytedesk/core/action/ActionResponse.java +++ b/modules/core/src/main/java/com/bytedesk/core/action/ActionResponse.java @@ -50,5 +50,5 @@ public class ActionResponse extends BaseResponse { private UserProtobuf user; - // public LocalDateTime createdAt; + // public ZonedDateTime createdAt; } diff --git a/modules/core/src/main/java/com/bytedesk/core/base/BaseEntity.java b/modules/core/src/main/java/com/bytedesk/core/base/BaseEntity.java index 49f06410f2..7821b1e4b9 100644 --- a/modules/core/src/main/java/com/bytedesk/core/base/BaseEntity.java +++ b/modules/core/src/main/java/com/bytedesk/core/base/BaseEntity.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-01-29 16:21:24 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-06-17 18:05:00 + * @LastEditTime: 2025-07-03 12:02:16 * @Description: bytedesk.com https://github.com/Bytedesk/bytedesa * Please be aware of the BSL license restrictions before installing Bytedesk IM – * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. @@ -29,9 +29,8 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener; import com.bytedesk.core.enums.LevelEnum; import com.bytedesk.core.enums.PlatformEnum; -import com.bytedesk.core.utils.BdDateUtils; -// import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Getter; import lombok.AllArgsConstructor; @@ -41,9 +40,8 @@ import lombok.Setter; import lombok.experimental.SuperBuilder; import java.io.Serializable; -import java.time.LocalDateTime; -// import java.time.ZonedDateTime; -// import java.time.LocalDateTime; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; /** * Date -> ZonedDateTime ? @@ -95,12 +93,14 @@ public abstract class BaseEntity implements Serializable { // @Temporal(TemporalType.TIMESTAMP) @Column(name = "created_at", updatable = false) @CreatedDate - private LocalDateTime createdAt; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX") + private ZonedDateTime createdAt; // @Temporal(TemporalType.TIMESTAMP) @Column(name = "updated_at") @LastModifiedDate - private LocalDateTime updatedAt; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX") + private ZonedDateTime updatedAt; // soft delete @Builder.Default @@ -123,11 +123,11 @@ public abstract class BaseEntity implements Serializable { private String platform = PlatformEnum.BYTEDESK.name(); public String getCreatedAtString() { - return BdDateUtils.formatDatetimeToString(createdAt); + return createdAt != null ? createdAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : null; } public String getUpdatedAtString() { - return BdDateUtils.formatDatetimeToString(updatedAt); + return updatedAt != null ? updatedAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : null; } } diff --git a/modules/core/src/main/java/com/bytedesk/core/base/BaseEntityNoOrg.java b/modules/core/src/main/java/com/bytedesk/core/base/BaseEntityNoOrg.java index edfc249d71..bd627e4f5e 100644 --- a/modules/core/src/main/java/com/bytedesk/core/base/BaseEntityNoOrg.java +++ b/modules/core/src/main/java/com/bytedesk/core/base/BaseEntityNoOrg.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-01-29 16:21:24 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-05-29 16:58:21 + * @LastEditTime: 2025-07-03 12:02:57 * @Description: bytedesk.com https://github.com/Bytedesk/bytedesa * Please be aware of the BSL license restrictions before installing Bytedesk IM – * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. @@ -29,6 +29,7 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener; import com.bytedesk.core.enums.LevelEnum; import com.bytedesk.core.enums.PlatformEnum; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; @@ -38,9 +39,9 @@ import lombok.Setter; import lombok.experimental.SuperBuilder; import java.io.Serializable; -import java.time.LocalDateTime; // import java.time.ZonedDateTime; -// import java.time.LocalDateTime; +// import java.time.ZonedDateTime; +import java.time.ZonedDateTime; /** * Date -> ZonedDateTime ? @@ -83,12 +84,14 @@ public abstract class BaseEntityNoOrg implements Serializable { // @Temporal(TemporalType.TIMESTAMP) @Column(name = "created_at", updatable = false) @CreatedDate - private LocalDateTime createdAt; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX") + private ZonedDateTime createdAt; // @Temporal(TemporalType.TIMESTAMP) @Column(name = "updated_at") @LastModifiedDate - private LocalDateTime updatedAt; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX") + private ZonedDateTime updatedAt; @Builder.Default @Column(name = "is_deleted") diff --git a/modules/core/src/main/java/com/bytedesk/core/base/BaseResponse.java b/modules/core/src/main/java/com/bytedesk/core/base/BaseResponse.java index 0a68343f97..5ecfc31c4f 100644 --- a/modules/core/src/main/java/com/bytedesk/core/base/BaseResponse.java +++ b/modules/core/src/main/java/com/bytedesk/core/base/BaseResponse.java @@ -14,7 +14,7 @@ package com.bytedesk.core.base; import java.io.Serializable; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.fastjson2.JSON; import com.bytedesk.core.utils.BdDateUtils; @@ -40,9 +40,9 @@ public abstract class BaseResponse implements Serializable { private String platform; - protected LocalDateTime createdAt; + protected ZonedDateTime createdAt; - protected LocalDateTime updatedAt; + protected ZonedDateTime updatedAt; public String getCreatedAt() { return BdDateUtils.formatDatetimeToString(createdAt); diff --git a/modules/core/src/main/java/com/bytedesk/core/base/BaseResponseNoOrg.java b/modules/core/src/main/java/com/bytedesk/core/base/BaseResponseNoOrg.java index df1b17abc2..f0260e5037 100644 --- a/modules/core/src/main/java/com/bytedesk/core/base/BaseResponseNoOrg.java +++ b/modules/core/src/main/java/com/bytedesk/core/base/BaseResponseNoOrg.java @@ -14,7 +14,7 @@ package com.bytedesk.core.base; import java.io.Serializable; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.fastjson2.JSON; import com.bytedesk.core.utils.BdDateUtils; @@ -32,9 +32,9 @@ public abstract class BaseResponseNoOrg implements Serializable { private String platform; - private LocalDateTime createdAt; + private ZonedDateTime createdAt; - private LocalDateTime updatedAt; + private ZonedDateTime updatedAt; public String getCreatedAt() { return BdDateUtils.formatDatetimeToString(createdAt); diff --git a/modules/core/src/main/java/com/bytedesk/core/black/BlackAccessInterceptor.java b/modules/core/src/main/java/com/bytedesk/core/black/BlackAccessInterceptor.java index ddad0870d6..f4b2384ea5 100644 --- a/modules/core/src/main/java/com/bytedesk/core/black/BlackAccessInterceptor.java +++ b/modules/core/src/main/java/com/bytedesk/core/black/BlackAccessInterceptor.java @@ -50,7 +50,7 @@ package com.bytedesk.core.black; // // BlackEntity black = blackOpt.get(); // // // 检查黑名单是否在有效期内 // // if (black.getEndTime() == null || -// // black.getEndTime().isAfter(LocalDateTime.now())) { +// // black.getEndTime().isAfter(ZonedDateTime.now())) { // // response.sendError( // // HttpServletResponse.SC_FORBIDDEN, // // "Access denied for visitor: " + uid + " in org: " + orgUid); diff --git a/modules/core/src/main/java/com/bytedesk/core/black/BlackEntity.java b/modules/core/src/main/java/com/bytedesk/core/black/BlackEntity.java index b6c5ddc045..440ce7b0a9 100644 --- a/modules/core/src/main/java/com/bytedesk/core/black/BlackEntity.java +++ b/modules/core/src/main/java/com/bytedesk/core/black/BlackEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.black; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.bytedesk.core.base.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; @@ -79,12 +79,12 @@ public class BlackEntity extends BaseEntity { // 开始时间 @Builder.Default @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime startTime = LocalDateTime.now(); + private ZonedDateTime startTime = ZonedDateTime.now(); // 结束时间 @Builder.Default @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime endTime = LocalDateTime.now().plusHours(24); + private ZonedDateTime endTime = ZonedDateTime.now().plusHours(24); // 被拉黑是的 会话uid private String threadUid; diff --git a/modules/core/src/main/java/com/bytedesk/core/black/BlackEventListener.java b/modules/core/src/main/java/com/bytedesk/core/black/BlackEventListener.java index 704f817c2b..f2b2f02b48 100644 --- a/modules/core/src/main/java/com/bytedesk/core/black/BlackEventListener.java +++ b/modules/core/src/main/java/com/bytedesk/core/black/BlackEventListener.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.black; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; @@ -31,7 +31,7 @@ public class BlackEventListener { @EventListener public void onQuartzDay0Event(QuartzDay0Event event) { // 每天0点,检查到期的黑名单,并清理 - blackRestService.findByEndTimeBefore(LocalDateTime.now()).forEach(black -> { + blackRestService.findByEndTimeBefore(ZonedDateTime.now()).forEach(black -> { blackRestService.deleteByUid(black.getUid()); }); } diff --git a/modules/core/src/main/java/com/bytedesk/core/black/BlackExcel.java b/modules/core/src/main/java/com/bytedesk/core/black/BlackExcel.java index e2391327b6..57b62f45f5 100644 --- a/modules/core/src/main/java/com/bytedesk/core/black/BlackExcel.java +++ b/modules/core/src/main/java/com/bytedesk/core/black/BlackExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.black; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -61,15 +61,15 @@ public class BlackExcel extends BaseExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "开始时间") @ColumnWidth(25) - private LocalDateTime startTime; + private ZonedDateTime startTime; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "结束时间") @ColumnWidth(25) - private LocalDateTime endTime; + private ZonedDateTime endTime; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "拉黑时间") @ColumnWidth(25) - private LocalDateTime createdAt; + private ZonedDateTime createdAt; } diff --git a/modules/core/src/main/java/com/bytedesk/core/black/BlackRepository.java b/modules/core/src/main/java/com/bytedesk/core/black/BlackRepository.java index 0e819a19e7..4f2826d3b0 100644 --- a/modules/core/src/main/java/com/bytedesk/core/black/BlackRepository.java +++ b/modules/core/src/main/java/com/bytedesk/core/black/BlackRepository.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.black; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.Optional; @@ -26,7 +26,7 @@ public interface BlackRepository extends JpaRepository, Jpa Optional findFirstByBlackUidAndDeletedFalse(String blackUid); - List findByEndTimeBeforeAndDeletedFalse(LocalDateTime endTime); + List findByEndTimeBeforeAndDeletedFalse(ZonedDateTime endTime); Optional findByBlackUidAndOrgUidAndDeletedFalse(String blackUid, String orgUid); } diff --git a/modules/core/src/main/java/com/bytedesk/core/black/BlackRequest.java b/modules/core/src/main/java/com/bytedesk/core/black/BlackRequest.java index c3ac1efff9..50d1fd4bbc 100644 --- a/modules/core/src/main/java/com/bytedesk/core/black/BlackRequest.java +++ b/modules/core/src/main/java/com/bytedesk/core/black/BlackRequest.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.black; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.bytedesk.core.base.BaseRequest; import com.fasterxml.jackson.annotation.JsonFormat; @@ -64,12 +64,12 @@ public class BlackRequest extends BaseRequest { // 开始时间 @Builder.Default @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime startTime = LocalDateTime.now(); + private ZonedDateTime startTime = ZonedDateTime.now(); // 结束时间 @Builder.Default @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime endTime = LocalDateTime.now().plusHours(24); + private ZonedDateTime endTime = ZonedDateTime.now().plusHours(24); // 被拉黑是的 会话uid private String threadUid; diff --git a/modules/core/src/main/java/com/bytedesk/core/black/BlackResponse.java b/modules/core/src/main/java/com/bytedesk/core/black/BlackResponse.java index b562ee1b65..850ac89b61 100644 --- a/modules/core/src/main/java/com/bytedesk/core/black/BlackResponse.java +++ b/modules/core/src/main/java/com/bytedesk/core/black/BlackResponse.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.black; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.bytedesk.core.base.BaseResponse; @@ -56,10 +56,10 @@ public class BlackResponse extends BaseResponse { private String userAvatar; // 开始时间 - private LocalDateTime startTime; + private ZonedDateTime startTime; // 结束时间 - private LocalDateTime endTime; + private ZonedDateTime endTime; // 被拉黑是的 会话uid private String threadUid; diff --git a/modules/core/src/main/java/com/bytedesk/core/black/BlackRestService.java b/modules/core/src/main/java/com/bytedesk/core/black/BlackRestService.java index 5dcc3356a2..f0aae170a7 100644 --- a/modules/core/src/main/java/com/bytedesk/core/black/BlackRestService.java +++ b/modules/core/src/main/java/com/bytedesk/core/black/BlackRestService.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.black; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.Optional; @@ -75,7 +75,7 @@ public class BlackRestService extends BaseRestServiceWithExcel findByEndTimeBefore(LocalDateTime endTime) { + public List findByEndTimeBefore(ZonedDateTime endTime) { return repository.findByEndTimeBeforeAndDeletedFalse(endTime); } // 根据黑名单用户uid查询 diff --git a/modules/core/src/main/java/com/bytedesk/core/clipboard/ClipboardResponse.java b/modules/core/src/main/java/com/bytedesk/core/clipboard/ClipboardResponse.java index c328ead6dc..ef36cc89e1 100644 --- a/modules/core/src/main/java/com/bytedesk/core/clipboard/ClipboardResponse.java +++ b/modules/core/src/main/java/com/bytedesk/core/clipboard/ClipboardResponse.java @@ -31,5 +31,5 @@ public class ClipboardResponse extends BaseResponse { private MessageTypeEnum type; - // private LocalDateTime updatedAt; + // private ZonedDateTime updatedAt; } diff --git a/modules/core/src/main/java/com/bytedesk/core/favorite/FavoriteResponse.java b/modules/core/src/main/java/com/bytedesk/core/favorite/FavoriteResponse.java index aba923f3b4..dcd160b538 100644 --- a/modules/core/src/main/java/com/bytedesk/core/favorite/FavoriteResponse.java +++ b/modules/core/src/main/java/com/bytedesk/core/favorite/FavoriteResponse.java @@ -36,5 +36,5 @@ public class FavoriteResponse extends BaseResponse { // private String color; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; } diff --git a/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseController.java b/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseController.java index bcb3c34ef9..17221dd555 100644 --- a/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseController.java +++ b/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseController.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.gray_release; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -124,8 +124,8 @@ public class GrayReleaseController { @PathVariable String feature, @RequestParam(required = false) Integer hours) { - LocalDateTime end = LocalDateTime.now(); - LocalDateTime start = end.minusHours(hours != null ? hours : 24); + ZonedDateTime end = ZonedDateTime.now(); + ZonedDateTime start = end.minusHours(hours != null ? hours : 24); GrayReleaseFeature grayFeature = GrayReleaseFeature.getByCode(feature); if (grayFeature == null) { diff --git a/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseEntity.java b/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseEntity.java index a549e2748d..df3fcf22d2 100644 --- a/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseEntity.java +++ b/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseEntity.java @@ -1,6 +1,6 @@ package com.bytedesk.core.gray_release; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import com.alibaba.fastjson2.JSON; @@ -55,10 +55,10 @@ public class GrayReleaseEntity extends BaseEntity { // 灰度时间 @Column(name = "gray_release_start_time") - private LocalDateTime startTime; // 灰度开始时间 + private ZonedDateTime startTime; // 灰度开始时间 @Column(name = "gray_release_end_time") - private LocalDateTime endTime; // 灰度结束时间 + private ZonedDateTime endTime; // 灰度结束时间 // 灰度状态 @Builder.Default @@ -89,7 +89,7 @@ public class GrayReleaseEntity extends BaseEntity { } // 4. 检查灰度时间 - LocalDateTime now = LocalDateTime.now(); + ZonedDateTime now = ZonedDateTime.now(); if (startTime != null && now.isBefore(startTime)) { return false; // 灰度未开始 } diff --git a/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseMetrics.java b/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseMetrics.java index 22d4055025..46dfa0cd13 100644 --- a/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseMetrics.java +++ b/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseMetrics.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.gray_release; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.bytedesk.core.base.BaseEntity; @@ -48,7 +48,7 @@ public class GrayReleaseMetrics extends BaseEntity { private Boolean success; // 是否成功 @Column(nullable = false) - private LocalDateTime timestamp; // 记录时间 + private ZonedDateTime timestamp; // 记录时间 @Column(length = 512) private String errorMessage; // 错误信息(如果有) diff --git a/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseMetricsService.java b/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseMetricsService.java index c23940c7fe..57128db58f 100644 --- a/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseMetricsService.java +++ b/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseMetricsService.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.gray_release; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import org.springframework.stereotype.Service; @@ -40,7 +40,7 @@ public class GrayReleaseMetricsService { .userUid(userUid) .feature(feature.getCode()) .success(success) - .timestamp(LocalDateTime.now()) + .timestamp(ZonedDateTime.now()) .build(); grayReleaseRepository.save(metrics); @@ -55,7 +55,7 @@ public class GrayReleaseMetricsService { * 获取功能的使用统计 */ public GrayReleaseFeatureStatistics getFeatureStatistics(GrayReleaseFeature feature, - LocalDateTime start, LocalDateTime end) { + ZonedDateTime start, ZonedDateTime end) { List metrics = grayReleaseRepository .findByFeatureAndTimestampBetween(feature.getCode(), start, end); diff --git a/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseRepository.java b/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseRepository.java index 6f999693c1..4b4fa2e4de 100644 --- a/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseRepository.java +++ b/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseRepository.java @@ -1,6 +1,6 @@ package com.bytedesk.core.gray_release; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; @@ -12,7 +12,7 @@ public interface GrayReleaseRepository extends JpaRepository findByFeatureAndTimestampBetween( - String feature, LocalDateTime start, LocalDateTime end); + String feature, ZonedDateTime start, ZonedDateTime end); // 根据用户和功能查询最近的使用记录 GrayReleaseMetrics findFirstByUserUidAndFeatureOrderByTimestampDesc( @@ -21,15 +21,15 @@ public interface GrayReleaseRepository extends JpaRepository 0.1) { @@ -102,7 +102,7 @@ public class GrayReleaseService { .enabled(true) .percentage(0) .status(GrayReleaseStatus.STATUS_PENDING) - .startTime(LocalDateTime.now()) + .startTime(ZonedDateTime.now()) .build(); // 更新缓存 @@ -139,7 +139,7 @@ public class GrayReleaseService { status.setPercentage(targetPercentage); if (targetPercentage >= 100) { status.setStatus(GrayReleaseStatus.STATUS_COMPLETED); - status.setEndTime(LocalDateTime.now()); + status.setEndTime(ZonedDateTime.now()); } // 更新缓存 @@ -202,7 +202,7 @@ public class GrayReleaseService { status.setStatus(GrayReleaseStatus.STATUS_COMPLETED); status.setPercentage(100); - status.setEndTime(LocalDateTime.now()); + status.setEndTime(ZonedDateTime.now()); featureStatusCache.put(feature, status); log.info("Completed rollout for feature: {}", feature); @@ -233,8 +233,8 @@ public class GrayReleaseService { } // 缓存未命中,从数据库加载 - LocalDateTime now = LocalDateTime.now(); - LocalDateTime dayStart = now.minusDays(1); + ZonedDateTime now = ZonedDateTime.now(); + ZonedDateTime dayStart = now.minusDays(1); // 获取最近24小时的统计数据 GrayReleaseFeatureStatistics stats = metricsService.getFeatureStatistics( diff --git a/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseStatus.java b/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseStatus.java index 8cc57ca9e8..9fff31de85 100644 --- a/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseStatus.java +++ b/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseStatus.java @@ -1,6 +1,6 @@ package com.bytedesk.core.gray_release; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import jakarta.persistence.Column; import jakarta.persistence.Embeddable; @@ -45,10 +45,10 @@ public class GrayReleaseStatus { private double failureRate; // 失败率 @Column(name = "gray_start_time") - private LocalDateTime startTime; // 开始时间 + private ZonedDateTime startTime; // 开始时间 @Column(name = "gray_end_time") - private LocalDateTime endTime; // 结束时间 + private ZonedDateTime endTime; // 结束时间 // 状态常量 public static final String STATUS_PENDING = "pending"; // 待发布 diff --git a/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseStrategy.java b/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseStrategy.java index 43a48d5122..dccd6349e2 100644 --- a/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseStrategy.java +++ b/modules/core/src/main/java/com/bytedesk/core/gray_release/GrayReleaseStrategy.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.gray_release; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import org.springframework.stereotype.Component; import lombok.RequiredArgsConstructor; @@ -43,8 +43,8 @@ public class GrayReleaseStrategy { // @Scheduled(cron = "0 0 * * * *") // public void autoAdjustRollout() { // List features = Arrays.asList(GrayReleaseFeature.values()); - // // LocalDateTime end = LocalDateTime.now(); - // // LocalDateTime start = end.minusHours(1); + // // ZonedDateTime end = ZonedDateTime.now(); + // // ZonedDateTime start = end.minusHours(1); // for (GrayReleaseFeature feature : features) { // try { @@ -59,7 +59,7 @@ public class GrayReleaseStrategy { * 调整单个功能的灰度比例 */ public void adjustFeatureRollout(GrayReleaseFeature feature, - LocalDateTime start, LocalDateTime end) { + ZonedDateTime start, ZonedDateTime end) { GrayReleaseFeatureStatistics stats = metricsService.getFeatureStatistics(feature, start, end); @@ -89,8 +89,8 @@ public class GrayReleaseStrategy { * 检查是否可以启动灰度发布 */ public Boolean canStartRollout(GrayReleaseFeature feature) { - LocalDateTime end = LocalDateTime.now(); - LocalDateTime start = end.minusDays(1); + ZonedDateTime end = ZonedDateTime.now(); + ZonedDateTime start = end.minusDays(1); GrayReleaseFeatureStatistics stats = metricsService.getFeatureStatistics(feature, start, end); diff --git a/modules/core/src/main/java/com/bytedesk/core/group/GroupEntity.java b/modules/core/src/main/java/com/bytedesk/core/group/GroupEntity.java index 2e2ec28ba4..3fa74be89d 100644 --- a/modules/core/src/main/java/com/bytedesk/core/group/GroupEntity.java +++ b/modules/core/src/main/java/com/bytedesk/core/group/GroupEntity.java @@ -116,7 +116,7 @@ public class GroupEntity extends BaseEntity { // MemberEntity member = MemberEntity.builder() // .user(user) // .group(this) - // .joinTime(LocalDateTime.now()) + // .joinTime(ZonedDateTime.now()) // .build(); // members.add(member); // } diff --git a/modules/core/src/main/java/com/bytedesk/core/group_invite/GroupInviteResponse.java b/modules/core/src/main/java/com/bytedesk/core/group_invite/GroupInviteResponse.java index 8a27d4b7fe..25ad6bbfa4 100644 --- a/modules/core/src/main/java/com/bytedesk/core/group_invite/GroupInviteResponse.java +++ b/modules/core/src/main/java/com/bytedesk/core/group_invite/GroupInviteResponse.java @@ -40,5 +40,5 @@ public class GroupInviteResponse extends BaseResponse { private Integer order; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; } diff --git a/modules/core/src/main/java/com/bytedesk/core/group_notice/GroupNoticeResponse.java b/modules/core/src/main/java/com/bytedesk/core/group_notice/GroupNoticeResponse.java index 9b8922c3cf..968269f920 100644 --- a/modules/core/src/main/java/com/bytedesk/core/group_notice/GroupNoticeResponse.java +++ b/modules/core/src/main/java/com/bytedesk/core/group_notice/GroupNoticeResponse.java @@ -40,5 +40,5 @@ public class GroupNoticeResponse extends BaseResponse { private Integer order; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; } diff --git a/modules/core/src/main/java/com/bytedesk/core/ip/access/IpAccessEntity.java b/modules/core/src/main/java/com/bytedesk/core/ip/access/IpAccessEntity.java index 5726681e4b..351e8a0bbc 100644 --- a/modules/core/src/main/java/com/bytedesk/core/ip/access/IpAccessEntity.java +++ b/modules/core/src/main/java/com/bytedesk/core/ip/access/IpAccessEntity.java @@ -20,7 +20,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.bytedesk.core.base.BaseEntity; import com.bytedesk.core.constant.TypeConsts; @@ -43,7 +43,7 @@ public class IpAccessEntity extends BaseEntity { @Column(columnDefinition = TypeConsts.COLUMN_TYPE_TEXT) private String params; // 访问的参数 - private LocalDateTime accessTime; + private ZonedDateTime accessTime; private Integer accessCount; // 访问次数 - private LocalDateTime lastAccessTime; + private ZonedDateTime lastAccessTime; } \ No newline at end of file diff --git a/modules/core/src/main/java/com/bytedesk/core/ip/access/IpAccessRepository.java b/modules/core/src/main/java/com/bytedesk/core/ip/access/IpAccessRepository.java index 5ce15703d9..ed66bb8fa2 100644 --- a/modules/core/src/main/java/com/bytedesk/core/ip/access/IpAccessRepository.java +++ b/modules/core/src/main/java/com/bytedesk/core/ip/access/IpAccessRepository.java @@ -14,10 +14,10 @@ package com.bytedesk.core.ip.access; import org.springframework.data.jpa.repository.JpaRepository; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.Optional; public interface IpAccessRepository extends JpaRepository { - Optional findFirstByIpAndEndpointAndAccessTimeAfter(String ip, String endpoint, LocalDateTime time); + Optional findFirstByIpAndEndpointAndAccessTimeAfter(String ip, String endpoint, ZonedDateTime time); } \ No newline at end of file diff --git a/modules/core/src/main/java/com/bytedesk/core/ip/access/IpAccessResponse.java b/modules/core/src/main/java/com/bytedesk/core/ip/access/IpAccessResponse.java index 32debc9d36..35cf10c12f 100644 --- a/modules/core/src/main/java/com/bytedesk/core/ip/access/IpAccessResponse.java +++ b/modules/core/src/main/java/com/bytedesk/core/ip/access/IpAccessResponse.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.ip.access; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.bytedesk.core.base.BaseResponse; @@ -35,8 +35,8 @@ public class IpAccessResponse extends BaseResponse { private String endpoint; // 访问的接口 private String params; // 访问的参数 - private LocalDateTime accessTime; + private ZonedDateTime accessTime; private Integer accessCount; // 访问次数 - private LocalDateTime lastAccessTime; + private ZonedDateTime lastAccessTime; // } diff --git a/modules/core/src/main/java/com/bytedesk/core/ip/access/IpAccessRestService.java b/modules/core/src/main/java/com/bytedesk/core/ip/access/IpAccessRestService.java index d120caa0ea..43b09cd63d 100644 --- a/modules/core/src/main/java/com/bytedesk/core/ip/access/IpAccessRestService.java +++ b/modules/core/src/main/java/com/bytedesk/core/ip/access/IpAccessRestService.java @@ -29,7 +29,7 @@ import com.bytedesk.core.base.BaseRestService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.Optional; @Slf4j @@ -59,7 +59,7 @@ public class IpAccessRestService extends BaseRestService blacklist = ipBlacklistService.findByIp(ip); - if (blacklist.isPresent() && blacklist.get().getEndTime().isAfter(LocalDateTime.now())) { + if (blacklist.isPresent() && blacklist.get().getEndTime().isAfter(ZonedDateTime.now())) { return true; } @@ -77,8 +77,8 @@ public class IpAccessRestService extends BaseRestService accessOptional = ipAccessRepository @@ -141,7 +141,7 @@ public class IpAccessRestService extends BaseRestService findByUidAndDeletedFalse(String uid); - List findByEndTimeBeforeAndDeletedFalse(LocalDateTime endTime); + List findByEndTimeBeforeAndDeletedFalse(ZonedDateTime endTime); } diff --git a/modules/core/src/main/java/com/bytedesk/core/ip/black/IpBlacklistRequest.java b/modules/core/src/main/java/com/bytedesk/core/ip/black/IpBlacklistRequest.java index bbdb97fea4..9a0ff38df4 100644 --- a/modules/core/src/main/java/com/bytedesk/core/ip/black/IpBlacklistRequest.java +++ b/modules/core/src/main/java/com/bytedesk/core/ip/black/IpBlacklistRequest.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.ip.black; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.bytedesk.core.base.BaseRequest; import com.fasterxml.jackson.annotation.JsonFormat; @@ -38,12 +38,12 @@ public class IpBlacklistRequest extends BaseRequest { // 开始时间 @Builder.Default @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime startTime = LocalDateTime.now(); + private ZonedDateTime startTime = ZonedDateTime.now(); // 结束时间 @Builder.Default @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime endTime = LocalDateTime.now().plusHours(24); + private ZonedDateTime endTime = ZonedDateTime.now().plusHours(24); // private String reason; // diff --git a/modules/core/src/main/java/com/bytedesk/core/ip/black/IpBlacklistResponse.java b/modules/core/src/main/java/com/bytedesk/core/ip/black/IpBlacklistResponse.java index 74f4aad8a4..761616a457 100644 --- a/modules/core/src/main/java/com/bytedesk/core/ip/black/IpBlacklistResponse.java +++ b/modules/core/src/main/java/com/bytedesk/core/ip/black/IpBlacklistResponse.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.ip.black; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.bytedesk.core.base.BaseResponse; @@ -32,8 +32,8 @@ public class IpBlacklistResponse extends BaseResponse { // private String ip; private String ipLocation; - private LocalDateTime startTime; - private LocalDateTime endTime; + private ZonedDateTime startTime; + private ZonedDateTime endTime; private String reason; // private String blackUid; diff --git a/modules/core/src/main/java/com/bytedesk/core/ip/black/IpBlacklistRestService.java b/modules/core/src/main/java/com/bytedesk/core/ip/black/IpBlacklistRestService.java index 9260887fae..484f2dcab9 100644 --- a/modules/core/src/main/java/com/bytedesk/core/ip/black/IpBlacklistRestService.java +++ b/modules/core/src/main/java/com/bytedesk/core/ip/black/IpBlacklistRestService.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.ip.black; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.Optional; @@ -85,7 +85,7 @@ public class IpBlacklistRestService extends BaseRestServiceWithExcel findByEndTimeBefore(LocalDateTime dateTime) { + public List findByEndTimeBefore(ZonedDateTime dateTime) { return ipBlacklistRepository.findByEndTimeBeforeAndDeletedFalse(dateTime); } @@ -93,7 +93,7 @@ public class IpBlacklistRestService extends BaseRestServiceWithExcel { // 计算两个日期之间的毫秒差 // long diffInMilliseconds = Math.abs(new Date().getTime() - push.getUpdatedAt().getTime()); - // 将LocalDateTime转换为时间戳 + // 将ZonedDateTime转换为时间戳 long currentTimeMillis = System.currentTimeMillis(); - ZoneId systemZone = ZoneId.systemDefault(); // 获取系统默认时区 - long updatedAtMillis = push.getUpdatedAt().atZone(systemZone).toInstant().toEpochMilli(); + // ZoneId systemZone = ZoneId.systemDefault(); // 获取系统默认时区 + long updatedAtMillis = push.getUpdatedAt().toInstant().toEpochMilli(); long diffInMilliseconds = Math.abs(currentTimeMillis - updatedAtMillis); // 转换为分钟 diff --git a/modules/core/src/main/java/com/bytedesk/core/quartz/QuartzResponse.java b/modules/core/src/main/java/com/bytedesk/core/quartz/QuartzResponse.java index dc7d612baa..15f36b5650 100644 --- a/modules/core/src/main/java/com/bytedesk/core/quartz/QuartzResponse.java +++ b/modules/core/src/main/java/com/bytedesk/core/quartz/QuartzResponse.java @@ -67,6 +67,6 @@ public class QuartzResponse extends BaseResponse { // private String orgUid; // - // private LocalDateTime updatedAt; + // private ZonedDateTime updatedAt; } diff --git a/modules/core/src/main/java/com/bytedesk/core/rbac/auth/AuthService.java b/modules/core/src/main/java/com/bytedesk/core/rbac/auth/AuthService.java index c177205b8d..63eafaaaaa 100644 --- a/modules/core/src/main/java/com/bytedesk/core/rbac/auth/AuthService.java +++ b/modules/core/src/main/java/com/bytedesk/core/rbac/auth/AuthService.java @@ -14,7 +14,7 @@ */ package com.bytedesk.core.rbac.auth; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import org.modelmapper.ModelMapper; import org.springframework.lang.NonNull; @@ -142,9 +142,9 @@ public class AuthService { .build(); // 只有当client中含有web字样时,expiresAt有效期24小时,否则为365天 if (client.toLowerCase().contains("web")) { - tokenRequest.setExpiresAt(LocalDateTime.now().plusDays(30)); // 默认30天过期 + tokenRequest.setExpiresAt(ZonedDateTime.now().plusDays(30)); // 默认30天过期 } else { - tokenRequest.setExpiresAt(LocalDateTime.now().plusDays(365)); // 其他客户端默认365天过期 + tokenRequest.setExpiresAt(ZonedDateTime.now().plusDays(365)); // 其他客户端默认365天过期 } tokenRestService.create(tokenRequest); diff --git a/modules/core/src/main/java/com/bytedesk/core/rbac/organization_apply/OrganizationApplyExcel.java b/modules/core/src/main/java/com/bytedesk/core/rbac/organization_apply/OrganizationApplyExcel.java index 80c897ee99..e3295e4721 100644 --- a/modules/core/src/main/java/com/bytedesk/core/rbac/organization_apply/OrganizationApplyExcel.java +++ b/modules/core/src/main/java/com/bytedesk/core/rbac/organization_apply/OrganizationApplyExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.rbac.organization_apply; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -42,11 +42,11 @@ public class OrganizationApplyExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "创建时间") @ColumnWidth(20) - private LocalDateTime createdAt; + private ZonedDateTime createdAt; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "修改时间") @ColumnWidth(20) - private LocalDateTime updatedAt; + private ZonedDateTime updatedAt; } diff --git a/modules/core/src/main/java/com/bytedesk/core/rbac/organization_apply/OrganizationApplyResponse.java b/modules/core/src/main/java/com/bytedesk/core/rbac/organization_apply/OrganizationApplyResponse.java index 59a88798ed..389bdb8d35 100644 --- a/modules/core/src/main/java/com/bytedesk/core/rbac/organization_apply/OrganizationApplyResponse.java +++ b/modules/core/src/main/java/com/bytedesk/core/rbac/organization_apply/OrganizationApplyResponse.java @@ -41,5 +41,5 @@ public class OrganizationApplyResponse extends BaseResponse { private Integer order; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; } diff --git a/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenEntity.java b/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenEntity.java index d700a6b908..0e4eccb2d7 100644 --- a/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenEntity.java +++ b/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.rbac.token; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.bytedesk.core.base.BaseEntityNoOrg; import com.bytedesk.core.enums.ClientEnum; @@ -61,7 +61,7 @@ public class TokenEntity extends BaseEntityNoOrg { @Column(name = "token_type") private String type = TokenTypeEnum.LOGIN.name(); - private LocalDateTime expiresAt; + private ZonedDateTime expiresAt; @Builder.Default @Column(name = "is_revoked") @@ -75,7 +75,7 @@ public class TokenEntity extends BaseEntityNoOrg { // 验证token是否有效 public Boolean isValid() { - return !revoked && expiresAt.isAfter(LocalDateTime.now()); + return !revoked && expiresAt.isAfter(ZonedDateTime.now()); } // 撤销token @@ -84,7 +84,7 @@ public class TokenEntity extends BaseEntityNoOrg { } // 刷新token过期时间 - public void refresh(LocalDateTime newExpiresAt) { + public void refresh(ZonedDateTime newExpiresAt) { this.expiresAt = newExpiresAt; } diff --git a/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenRepository.java b/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenRepository.java index 9eaff206cf..1d0870b461 100644 --- a/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenRepository.java +++ b/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenRepository.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.rbac.token; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.Optional; @@ -38,5 +38,5 @@ public interface TokenRepository extends JpaRepository, JpaSp * @param now 当前时间 * @return 有效令牌列表 */ - List findByUserUidAndTypeAndRevokedFalseAndExpiresAtAfter(String userUid, String type, LocalDateTime now); + List findByUserUidAndTypeAndRevokedFalseAndExpiresAtAfter(String userUid, String type, ZonedDateTime now); } diff --git a/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenRequest.java b/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenRequest.java index cc017eeaa3..1ad1eb316c 100644 --- a/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenRequest.java +++ b/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenRequest.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.rbac.token; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.bytedesk.core.base.BaseRequest; import com.bytedesk.core.enums.ClientEnum; @@ -43,7 +43,7 @@ public class TokenRequest extends BaseRequest { @Builder.Default private String type = TokenTypeEnum.LOGIN.name(); - private LocalDateTime expiresAt; + private ZonedDateTime expiresAt; @Builder.Default private Boolean revoked = false; diff --git a/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenResponse.java b/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenResponse.java index 9d76cf0a20..cfe0430e9f 100644 --- a/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenResponse.java +++ b/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenResponse.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.rbac.token; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.bytedesk.core.base.BaseResponse; @@ -40,7 +40,7 @@ public class TokenResponse extends BaseResponse { private String type; - private LocalDateTime expiresAt; + private ZonedDateTime expiresAt; private Boolean revoked; diff --git a/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenRestService.java b/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenRestService.java index 26e9edcbd1..3075e0984e 100644 --- a/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenRestService.java +++ b/modules/core/src/main/java/com/bytedesk/core/rbac/token/TokenRestService.java @@ -145,6 +145,6 @@ public class TokenRestService extends BaseRestService findValidTokensByUserUidAndType(String userUid, // String type) { // return tokenRepository.findByUserUidAndTypeAndRevokedFalseAndExpiresAtAfter( - // userUid, type, LocalDateTime.now()); + // userUid, type, ZonedDateTime.now()); // } } diff --git a/modules/core/src/main/java/com/bytedesk/core/rbac/user/UserDetailsImpl.java b/modules/core/src/main/java/com/bytedesk/core/rbac/user/UserDetailsImpl.java index a6bb4a7b2f..eeffe339d3 100644 --- a/modules/core/src/main/java/com/bytedesk/core/rbac/user/UserDetailsImpl.java +++ b/modules/core/src/main/java/com/bytedesk/core/rbac/user/UserDetailsImpl.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-01-23 07:53:01 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-05-22 16:23:17 + * @LastEditTime: 2025-07-03 12:05:34 * @Description: bytedesk.com https://github.com/Bytedesk/bytedesk * Please be aware of the BSL license restrictions before installing Bytedesk IM – * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. @@ -23,7 +23,8 @@ import com.bytedesk.core.rbac.role.RoleEntity; import lombok.Data; import lombok.extern.slf4j.Slf4j; -import java.time.LocalDateTime; +// import java.time.ZonedDateTime; +import java.time.ZonedDateTime; import java.util.Collection; import java.util.Set; @@ -54,8 +55,8 @@ public class UserDetailsImpl implements UserDetails { private String device; // private String orgUid; - private LocalDateTime createdAt; - private LocalDateTime updatedAt; + private ZonedDateTime createdAt; + private ZonedDateTime updatedAt; // private OrganizationEntity currentOrganization; private Set userOrganizationRoles; @@ -83,8 +84,8 @@ public class UserDetailsImpl implements UserDetails { String client, String device, String orgUid, - LocalDateTime createdAt, - LocalDateTime updatedAt, + ZonedDateTime createdAt, + ZonedDateTime updatedAt, // Collection authorities, OrganizationEntity currentOrganization, diff --git a/modules/core/src/main/java/com/bytedesk/core/rbac/user/UserEntity.java b/modules/core/src/main/java/com/bytedesk/core/rbac/user/UserEntity.java index 014dca4cb4..0543ba90ea 100644 --- a/modules/core/src/main/java/com/bytedesk/core/rbac/user/UserEntity.java +++ b/modules/core/src/main/java/com/bytedesk/core/rbac/user/UserEntity.java @@ -1,6 +1,6 @@ package com.bytedesk.core.rbac.user; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.HashSet; import java.util.Optional; import java.util.Set; @@ -152,8 +152,8 @@ public class UserEntity extends BaseEntityNoOrg { }); // 2. 设置角色有效期 - uor.setStartDate(LocalDateTime.now()); - uor.setEndDate(LocalDateTime.now().plusYears(100)); + uor.setStartDate(ZonedDateTime.now()); + uor.setEndDate(ZonedDateTime.now().plusYears(100)); // 3. 检查是否已存在该角色ID Long roleId = role.getId(); diff --git a/modules/core/src/main/java/com/bytedesk/core/rbac/user/UserOrganizationRoleEntity.java b/modules/core/src/main/java/com/bytedesk/core/rbac/user/UserOrganizationRoleEntity.java index ee8b1006a4..596f86cf9b 100644 --- a/modules/core/src/main/java/com/bytedesk/core/rbac/user/UserOrganizationRoleEntity.java +++ b/modules/core/src/main/java/com/bytedesk/core/rbac/user/UserOrganizationRoleEntity.java @@ -14,7 +14,7 @@ package com.bytedesk.core.rbac.user; import java.io.Serializable; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.HashSet; import java.util.Set; @@ -72,8 +72,8 @@ public class UserOrganizationRoleEntity implements Serializable { private Set roles = new HashSet<>(); // 用户角色有效期 - private LocalDateTime startDate; - private LocalDateTime endDate; + private ZonedDateTime startDate; + private ZonedDateTime endDate; // 可能还有其他字段,如权限等 diff --git a/modules/core/src/main/java/com/bytedesk/core/tag/TagExcel.java b/modules/core/src/main/java/com/bytedesk/core/tag/TagExcel.java index a6a8acafea..222a638fb6 100644 --- a/modules/core/src/main/java/com/bytedesk/core/tag/TagExcel.java +++ b/modules/core/src/main/java/com/bytedesk/core/tag/TagExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.tag; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -42,11 +42,11 @@ public class TagExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "创建时间") @ColumnWidth(25) - private LocalDateTime createdAt; + private ZonedDateTime createdAt; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "修改时间") @ColumnWidth(25) - private LocalDateTime updatedAt; + private ZonedDateTime updatedAt; } diff --git a/modules/core/src/main/java/com/bytedesk/core/thread/ThreadExcel.java b/modules/core/src/main/java/com/bytedesk/core/thread/ThreadExcel.java index f7d4071c3d..0e10ada0f0 100644 --- a/modules/core/src/main/java/com/bytedesk/core/thread/ThreadExcel.java +++ b/modules/core/src/main/java/com/bytedesk/core/thread/ThreadExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.thread; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -60,6 +60,6 @@ public class ThreadExcel extends BaseExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "创建时间") @ColumnWidth(28) - private LocalDateTime createdAt; + private ZonedDateTime createdAt; } diff --git a/modules/core/src/main/java/com/bytedesk/core/thread/ThreadSpecification.java b/modules/core/src/main/java/com/bytedesk/core/thread/ThreadSpecification.java index 453aa997f0..e2a40b988e 100644 --- a/modules/core/src/main/java/com/bytedesk/core/thread/ThreadSpecification.java +++ b/modules/core/src/main/java/com/bytedesk/core/thread/ThreadSpecification.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.thread; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -46,12 +46,12 @@ public class ThreadSpecification extends BaseSpecification { // 仅当mergeByTopic为true时才应用topic合并逻辑 if (Boolean.TRUE.equals(request.getMergeByTopic())) { // 创建子查询获取每个topic的最新记录的updatedAt时间 - Subquery maxDateSubquery = query.subquery(LocalDateTime.class); + Subquery maxDateSubquery = query.subquery(ZonedDateTime.class); var subRoot = maxDateSubquery.from(ThreadEntity.class); - // 明确指定类型为 LocalDateTime - Path updatedAtPath = subRoot.get("updatedAt"); - Expression maxExpression = criteriaBuilder.greatest(updatedAtPath); + // 明确指定类型为 ZonedDateTime + Path updatedAtPath = subRoot.get("updatedAt"); + Expression maxExpression = criteriaBuilder.greatest(updatedAtPath); maxDateSubquery.select(maxExpression) .where(criteriaBuilder.equal(subRoot.get("topic"), root.get("topic"))); @@ -59,11 +59,11 @@ public class ThreadSpecification extends BaseSpecification { // 如果ownerUid不为空,优先选择owner不为空的记录 if (StringUtils.hasText(request.getOwnerUid())) { // 创建子查询来获取同一topic中匹配ownerUid的最新记录 - Subquery ownerMaxDateSubquery = query.subquery(LocalDateTime.class); + Subquery ownerMaxDateSubquery = query.subquery(ZonedDateTime.class); var ownerSubRoot = ownerMaxDateSubquery.from(ThreadEntity.class); - Path ownerUpdatedAtPath = ownerSubRoot.get("updatedAt"); - Expression ownerMaxExpression = criteriaBuilder.greatest(ownerUpdatedAtPath); + Path ownerUpdatedAtPath = ownerSubRoot.get("updatedAt"); + Expression ownerMaxExpression = criteriaBuilder.greatest(ownerUpdatedAtPath); ownerMaxDateSubquery.select(ownerMaxExpression) .where(criteriaBuilder.and( diff --git a/modules/core/src/main/java/com/bytedesk/core/uid/utils/DateUtils.java b/modules/core/src/main/java/com/bytedesk/core/uid/utils/DateUtils.java index 3a8f0aa4d0..454d32963e 100644 --- a/modules/core/src/main/java/com/bytedesk/core/uid/utils/DateUtils.java +++ b/modules/core/src/main/java/com/bytedesk/core/uid/utils/DateUtils.java @@ -17,7 +17,7 @@ // import java.text.ParseException; // import java.util.Calendar; -// import java.time.LocalDateTime; +// import java.time.ZonedDateTime; // import org.apache.commons.lang3.time.DateFormatUtils; diff --git a/modules/core/src/main/java/com/bytedesk/core/url/UrlResponse.java b/modules/core/src/main/java/com/bytedesk/core/url/UrlResponse.java index 59cd41f05b..b6ce1778f2 100644 --- a/modules/core/src/main/java/com/bytedesk/core/url/UrlResponse.java +++ b/modules/core/src/main/java/com/bytedesk/core/url/UrlResponse.java @@ -33,5 +33,5 @@ public class UrlResponse extends BaseResponse { private String userUid; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; } diff --git a/modules/core/src/main/java/com/bytedesk/core/utils/BdDateUtils.java b/modules/core/src/main/java/com/bytedesk/core/utils/BdDateUtils.java index c4f541824e..07b6ee8e94 100644 --- a/modules/core/src/main/java/com/bytedesk/core/utils/BdDateUtils.java +++ b/modules/core/src/main/java/com/bytedesk/core/utils/BdDateUtils.java @@ -2,9 +2,8 @@ package com.bytedesk.core.utils; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.time.LocalDateTime; -import java.time.ZoneId; import java.time.ZonedDateTime; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; @@ -43,26 +42,24 @@ public class BdDateUtils { } /** - * 将 LocalDateTime 转换为格式化的日期时间字符串 - * @param localDateTime LocalDateTime对象 + * 将 ZonedDateTime 转换为格式化的日期时间字符串 + * @param ZonedDateTime ZonedDateTime对象 * @return 格式化的日期时间字符串 (yyyy-MM-dd HH:mm:ss) */ - public static String formatDatetimeToString(LocalDateTime localDateTime) { - if (localDateTime == null) { + public static String formatDatetimeToString(ZonedDateTime ZonedDateTime) { + if (ZonedDateTime == null) { return null; } - // 使用 DateTimeFormatter 直接格式化 LocalDateTime - // return localDateTime.format(DateTimeFormatter.ofPattern(datetimeFormat)); + // 使用 DateTimeFormatter 直接格式化 ZonedDateTime + // return ZonedDateTime.format(DateTimeFormatter.ofPattern(datetimeFormat)); // 使用应用配置的时区 - // ZonedDateTime zonedDateTime = localDateTime.atZone(LocaleContextHolder.getTimeZone().toZoneId()); + // 使用应用配置的时区 + ZonedDateTime zonedDateTime = java.time.ZonedDateTime.ofInstant(ZonedDateTime.toInstant(), LocaleContextHolder.getTimeZone().toZoneId()); // 或者固定使用中国时区 - ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.of("Asia/Shanghai")); + // ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(ZonedDateTime.toInstant(), ZoneId.of("Asia/Shanghai")); return DateTimeFormatter.ofPattern(datetimeFormat).format(zonedDateTime); - - // 或者如果一定要使用 SimpleDateFormat,可以这样转换: - // try { - // Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); + // Date date = Date.from(ZonedDateTime.atZone(ZoneId.systemDefault()).toInstant()); // SimpleDateFormat formatter = new SimpleDateFormat(datetimeFormat); // return formatter.format(date); // } catch (Exception e) { @@ -200,20 +197,16 @@ public class BdDateUtils { return DateTimeFormatter.ofPattern("yyyy-MM-dd"); } - public static LocalDateTime parseLocalDateTime(String dateTime) { - return LocalDateTime.parse(dateTime, BdDateUtils.getDateTimeFormatter()); + public static ZonedDateTime parseZonedDateTime(String dateTime) { + return ZonedDateTime.parse(dateTime, BdDateUtils.getDateTimeFormatter()); } - public static LocalDateTime parseLocalDateTime(String dateTime, DateTimeFormatter formatter) { - return LocalDateTime.parse(dateTime, formatter); + public static ZonedDateTime parseZonedDateTime(String dateTime, DateTimeFormatter formatter) { + return ZonedDateTime.parse(dateTime, formatter); } - - public static String getCurrentLocalDateTime() { - return LocalDateTime.now().atZone(LocaleContextHolder.getTimeZone().toZoneId()).toString(); - } - - public static ZonedDateTime getCurrentZonedDateTime() { - return LocalDateTime.now().atZone(LocaleContextHolder.getTimeZone().toZoneId()); + + public static String getCurrentZonedDateTime() { + return ZonedDateTime.now(LocaleContextHolder.getTimeZone().toZoneId()).toString(); } public static ZoneId getCurrentZoneId() { diff --git a/modules/core/src/main/java/com/bytedesk/core/workflow_result/WorkflowResultExcel.java b/modules/core/src/main/java/com/bytedesk/core/workflow_result/WorkflowResultExcel.java index af0b35d0c8..1767e68f31 100644 --- a/modules/core/src/main/java/com/bytedesk/core/workflow_result/WorkflowResultExcel.java +++ b/modules/core/src/main/java/com/bytedesk/core/workflow_result/WorkflowResultExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.core.workflow_result; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -34,11 +34,11 @@ public class WorkflowResultExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "创建时间") @ColumnWidth(25) - private LocalDateTime createdAt; + private ZonedDateTime createdAt; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "修改时间") @ColumnWidth(25) - private LocalDateTime updatedAt; + private ZonedDateTime updatedAt; } diff --git a/modules/forum/src/main/java/com/bytedesk/forum/post/PostSpecification.java b/modules/forum/src/main/java/com/bytedesk/forum/post/PostSpecification.java index dd8814ff76..6f6b898a13 100644 --- a/modules/forum/src/main/java/com/bytedesk/forum/post/PostSpecification.java +++ b/modules/forum/src/main/java/com/bytedesk/forum/post/PostSpecification.java @@ -2,7 +2,7 @@ package com.bytedesk.forum.post; import org.springframework.data.jpa.domain.Specification; import jakarta.persistence.criteria.Predicate; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; @@ -40,12 +40,12 @@ public class PostSpecification { // 日期范围搜索 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); if (criteria.getStartDate() != null && !criteria.getStartDate().isEmpty()) { - LocalDateTime startDate = LocalDateTime.parse(criteria.getStartDate(), formatter); + ZonedDateTime startDate = ZonedDateTime.parse(criteria.getStartDate(), formatter); predicates.add(cb.greaterThanOrEqualTo(root.get("createdAt"), startDate)); } if (criteria.getEndDate() != null && !criteria.getEndDate().isEmpty()) { - LocalDateTime endDate = LocalDateTime.parse(criteria.getEndDate(), formatter); + ZonedDateTime endDate = ZonedDateTime.parse(criteria.getEndDate(), formatter); predicates.add(cb.lessThanOrEqualTo(root.get("createdAt"), endDate)); } diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/article/AbstractArticleEntity.java b/modules/kbase/src/main/java/com/bytedesk/kbase/article/AbstractArticleEntity.java index 227808dbf5..b1bd24d3f3 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/article/AbstractArticleEntity.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/article/AbstractArticleEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.article; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -92,10 +92,10 @@ public abstract class AbstractArticleEntity extends BaseEntity { private String editor = BytedeskConsts.EMPTY_STRING; // 有效开始日期 - private LocalDateTime startDate; + private ZonedDateTime startDate; // 有效结束日期 - private LocalDateTime endDate; + private ZonedDateTime endDate; // 是否需要审核 @Column(name = "need_audit") diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/article/ArticleRequest.java b/modules/kbase/src/main/java/com/bytedesk/kbase/article/ArticleRequest.java index 71b798f454..af4aef1200 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/article/ArticleRequest.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/article/ArticleRequest.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.article; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -58,9 +58,9 @@ public class ArticleRequest extends BaseRequest { @Column(columnDefinition = TypeConsts.COLUMN_TYPE_TEXT) private List tagList = new ArrayList<>(); - private LocalDateTime startDate; + private ZonedDateTime startDate; - private LocalDateTime endDate; + private ZonedDateTime endDate; @Builder.Default private Boolean top = false; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/article/ArticleResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/article/ArticleResponse.java index 1bf3f895d3..191ea7de42 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/article/ArticleResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/article/ArticleResponse.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.article; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import com.bytedesk.core.base.BaseResponse; @@ -44,10 +44,10 @@ public class ArticleResponse extends BaseResponse { private List tagList; // 有效开始日期 - private LocalDateTime startDate; + private ZonedDateTime startDate; // 有效结束日期 - private LocalDateTime endDate; + private ZonedDateTime endDate; private Boolean top; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/article/elastic/ArticleElastic.java b/modules/kbase/src/main/java/com/bytedesk/kbase/article/elastic/ArticleElastic.java index cf27e73d6b..01084251a8 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/article/elastic/ArticleElastic.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/article/elastic/ArticleElastic.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.article.elastic; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import org.springframework.data.annotation.Id; @@ -82,10 +82,10 @@ public class ArticleElastic { private String categoryUid; @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime startDate; + private ZonedDateTime startDate; @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime endDate; + private ZonedDateTime endDate; @Field(type = FieldType.Integer) private Integer readCount; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/article/elastic/ArticleElasticService.java b/modules/kbase/src/main/java/com/bytedesk/kbase/article/elastic/ArticleElasticService.java index 99fd58c874..0daeaf6339 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/article/elastic/ArticleElasticService.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/article/elastic/ArticleElasticService.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.article.elastic; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; @@ -174,8 +174,8 @@ public class ArticleElasticService { // 添加过滤条件:发布状态 boolQueryBuilder.filter(QueryBuilders.term().field("published").value(true).build()._toQuery()); - // 添加日期范围过滤 - 将LocalDateTime转换为ISO格式的字符串 - LocalDateTime currentTime = LocalDateTime.now(); + // 添加日期范围过滤 - 将ZonedDateTime转换为ISO格式的字符串 + ZonedDateTime currentTime = ZonedDateTime.now(); String currentTimeStr = currentTime.format(DateTimeFormatter.ISO_DATE_TIME); // 创建startDate范围查询 diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/article/vector/ArticleVector.java b/modules/kbase/src/main/java/com/bytedesk/kbase/article/vector/ArticleVector.java index cd3a37b5ca..bc9dab7b37 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/article/vector/ArticleVector.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/article/vector/ArticleVector.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.article.vector; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import org.springframework.data.annotation.Id; @@ -83,10 +83,10 @@ public class ArticleVector { // 有效日期范围 @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime startDate; + private ZonedDateTime startDate; @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime endDate; + private ZonedDateTime endDate; // 统计数据 @Field(type = FieldType.Integer) diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/article_archive/ArticleArchiveRequest.java b/modules/kbase/src/main/java/com/bytedesk/kbase/article_archive/ArticleArchiveRequest.java index a20b00467b..bb3116d12c 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/article_archive/ArticleArchiveRequest.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/article_archive/ArticleArchiveRequest.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.article_archive; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -58,9 +58,9 @@ public class ArticleArchiveRequest extends BaseRequest { @Column(columnDefinition = TypeConsts.COLUMN_TYPE_TEXT) private List tagList = new ArrayList<>(); - private LocalDateTime startDate; + private ZonedDateTime startDate; - private LocalDateTime endDate; + private ZonedDateTime endDate; @Builder.Default diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/article_archive/ArticleArchiveResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/article_archive/ArticleArchiveResponse.java index 3eee79c43d..4ecfde958c 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/article_archive/ArticleArchiveResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/article_archive/ArticleArchiveResponse.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.article_archive; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import com.bytedesk.core.base.BaseResponse; @@ -45,10 +45,10 @@ public class ArticleArchiveResponse extends BaseResponse { private List tagList; // 有效开始日期 - private LocalDateTime startDate; + private ZonedDateTime startDate; // 有效结束日期 - private LocalDateTime endDate; + private ZonedDateTime endDate; private Boolean top; @@ -84,9 +84,9 @@ public class ArticleArchiveResponse extends BaseResponse { // private String orgUid; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; - // private LocalDateTime updatedAt; + // private ZonedDateTime updatedAt; private UserProtobuf user; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/fixed/AutoReplyFixedEntity.java b/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/fixed/AutoReplyFixedEntity.java index d0f8c4db12..523d3045d1 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/fixed/AutoReplyFixedEntity.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/fixed/AutoReplyFixedEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.auto_reply.fixed; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -72,10 +72,10 @@ public class AutoReplyFixedEntity extends BaseEntity { private Integer replyCount = 0; // 有效开始日期 - private LocalDateTime startDate; + private ZonedDateTime startDate; // 有效结束日期 - private LocalDateTime endDate; + private ZonedDateTime endDate; private String categoryUid; // 文章分类。生成页面时,先查询分类,后通过分类查询相关文章。 diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/fixed/AutoReplyFixedRequest.java b/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/fixed/AutoReplyFixedRequest.java index ddcee68055..ffc2920f67 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/fixed/AutoReplyFixedRequest.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/fixed/AutoReplyFixedRequest.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.auto_reply.fixed; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.ArrayList; @@ -44,9 +44,9 @@ public class AutoReplyFixedRequest extends BaseRequest { @Builder.Default private Boolean enabled = true; - private LocalDateTime startDate; + private ZonedDateTime startDate; - private LocalDateTime endDate; + private ZonedDateTime endDate; private String categoryUid; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/fixed/AutoReplyFixedResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/fixed/AutoReplyFixedResponse.java index a23709e2bf..1fc8fefb90 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/fixed/AutoReplyFixedResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/fixed/AutoReplyFixedResponse.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.auto_reply.fixed; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import com.bytedesk.core.base.BaseResponse; @@ -43,10 +43,10 @@ public class AutoReplyFixedResponse extends BaseResponse { private Boolean enabled; // 有效开始日期 - private LocalDateTime startDate; + private ZonedDateTime startDate; // 有效结束日期 - private LocalDateTime endDate; + private ZonedDateTime endDate; private String categoryUid; // 文章分类 diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/keyword/AutoReplyKeywordEntity.java b/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/keyword/AutoReplyKeywordEntity.java index b5d07c1bc7..abdd64a490 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/keyword/AutoReplyKeywordEntity.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/keyword/AutoReplyKeywordEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.auto_reply.keyword; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -86,10 +86,10 @@ public class AutoReplyKeywordEntity extends BaseEntity { private Integer replyCount = 0; // 有效开始日期 - private LocalDateTime startDate; + private ZonedDateTime startDate; // 有效结束日期 - private LocalDateTime endDate; + private ZonedDateTime endDate; private String categoryUid; // 文章分类 diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/keyword/AutoReplyKeywordRequest.java b/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/keyword/AutoReplyKeywordRequest.java index 75f09dd994..2f26afea88 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/keyword/AutoReplyKeywordRequest.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/keyword/AutoReplyKeywordRequest.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.auto_reply.keyword; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -54,9 +54,9 @@ public class AutoReplyKeywordRequest extends BaseRequest { @Builder.Default private Integer replyCount = 0; - private LocalDateTime startDate; + private ZonedDateTime startDate; - private LocalDateTime endDate; + private ZonedDateTime endDate; private Boolean enabled; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/keyword/AutoReplyKeywordResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/keyword/AutoReplyKeywordResponse.java index d4550aa6af..0949350263 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/keyword/AutoReplyKeywordResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/auto_reply/keyword/AutoReplyKeywordResponse.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.auto_reply.keyword; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import com.bytedesk.core.base.BaseResponse; @@ -48,10 +48,10 @@ public class AutoReplyKeywordResponse extends BaseResponse { private Integer replyCount; // 有效开始日期 - private LocalDateTime startDate; + private ZonedDateTime startDate; // 有效结束日期 - private LocalDateTime endDate; + private ZonedDateTime endDate; private Boolean enabled; @@ -61,5 +61,5 @@ public class AutoReplyKeywordResponse extends BaseResponse { private String kbUid; // 对应知识库 - // private LocalDateTime updatedAt; + // private ZonedDateTime updatedAt; } diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/comment/CommentRequest.java b/modules/kbase/src/main/java/com/bytedesk/kbase/comment/CommentRequest.java index 12b385930f..743f17f694 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/comment/CommentRequest.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/comment/CommentRequest.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.comment; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -52,9 +52,9 @@ public class CommentRequest extends BaseRequest { @Column(columnDefinition = TypeConsts.COLUMN_TYPE_TEXT) private List tagList = new ArrayList<>(); - private LocalDateTime startDate; + private ZonedDateTime startDate; - private LocalDateTime endDate; + private ZonedDateTime endDate; // @Builder.Default // private String level = LevelEnum.ORGANIZATION.name(); diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/comment/CommentResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/comment/CommentResponse.java index 14c550fdd6..50cde66195 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/comment/CommentResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/comment/CommentResponse.java @@ -53,8 +53,8 @@ public class CommentResponse extends BaseResponse { // 评论者 private String user; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; - // private LocalDateTime updatedAt; + // private ZonedDateTime updatedAt; } diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqEntity.java b/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqEntity.java index b884139fce..b6d9485c5c 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqEntity.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.faq; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -149,12 +149,12 @@ public class FaqEntity extends BaseEntity { // 有效开始日期 @Builder.Default - private LocalDateTime startDate = LocalDateTime.now(); + private ZonedDateTime startDate = ZonedDateTime.now(); // 有效结束日期 // 当前 + 100 年 @Builder.Default - private LocalDateTime endDate = LocalDateTime.now().plusYears(100); + private ZonedDateTime endDate = ZonedDateTime.now().plusYears(100); // 分类 private String categoryUid; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqExcel.java b/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqExcel.java index 11e68f1d43..7b59513d56 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqExcel.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.faq; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -71,12 +71,12 @@ public class FaqExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "有效开始日期") @ColumnWidth(25) - private LocalDateTime startDate; + private ZonedDateTime startDate; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "有效结束日期") @ColumnWidth(25) - private LocalDateTime endDate; + private ZonedDateTime endDate; @ExcelProperty(value = "扩展问答") @ColumnWidth(20) diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqRequest.java b/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqRequest.java index 6b6151fb9b..c2456e2a6e 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqRequest.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqRequest.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.faq; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -104,11 +104,11 @@ public class FaqRequest extends BaseRequest { private List tagList = new ArrayList<>(); @Builder.Default - private LocalDateTime startDate = LocalDateTime.now(); + private ZonedDateTime startDate = ZonedDateTime.now(); // 当前 + 100 年 @Builder.Default - private LocalDateTime endDate = LocalDateTime.now().plusYears(100); + private ZonedDateTime endDate = ZonedDateTime.now().plusYears(100); private String categoryUid; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqResponse.java index 839da6a4df..989ee59a84 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqResponse.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.faq; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -80,10 +80,10 @@ public class FaqResponse extends BaseResponse { private List tagList; // 有效开始日期 - private LocalDateTime startDate; + private ZonedDateTime startDate; // 有效结束日期 - private LocalDateTime endDate; + private ZonedDateTime endDate; private String categoryUid; // 分类 diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqRestService.java b/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqRestService.java index 8483df5272..c3220da0ca 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqRestService.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/faq/FaqRestService.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.faq; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -665,8 +665,8 @@ public class FaqRestService extends BaseRestServiceWithExcel startDate && 当前时间 < endDate - LocalDateTime now = LocalDateTime.now(); + ZonedDateTime now = ZonedDateTime.now(); predicates.add(criteriaBuilder.greaterThanOrEqualTo(root.get("startDate"), now)); predicates.add(criteriaBuilder.lessThanOrEqualTo(root.get("endDate"), now)); } diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/faq/elastic/FaqElastic.java b/modules/kbase/src/main/java/com/bytedesk/kbase/faq/elastic/FaqElastic.java index c98341360a..959ea52851 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/faq/elastic/FaqElastic.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/faq/elastic/FaqElastic.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.faq.elastic; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import org.springframework.data.annotation.Id; @@ -65,17 +65,17 @@ public class FaqElastic { // startDate @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime startDate; + private ZonedDateTime startDate; // endDate @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime endDate; + private ZonedDateTime endDate; // @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; // @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - // private LocalDateTime updatedAt; + // private ZonedDateTime updatedAt; @Field(type = FieldType.Integer) private Integer viewCount; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/faq/elastic/FaqElasticService.java b/modules/kbase/src/main/java/com/bytedesk/kbase/faq/elastic/FaqElasticService.java index 4915ae382a..69b317f2ce 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/faq/elastic/FaqElasticService.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/faq/elastic/FaqElasticService.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.faq.elastic; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; @@ -174,8 +174,8 @@ public class FaqElasticService { // 添加过滤条件:启用状态 boolQueryBuilder.filter(QueryBuilders.term().field("enabled").value(true).build()._toQuery()); - // 添加日期范围过滤 - 将LocalDateTime转换为ISO格式的字符串 - LocalDateTime currentTime = LocalDateTime.now(); + // 添加日期范围过滤 - 将ZonedDateTime转换为ISO格式的字符串 + ZonedDateTime currentTime = ZonedDateTime.now(); String currentTimeStr = currentTime.format(DateTimeFormatter.ISO_DATE_TIME); // 创建startDate范围查询 @@ -273,8 +273,8 @@ public class FaqElasticService { // 添加过滤条件:启用状态 // boolQueryBuilder.filter(QueryBuilders.term().field("enabled").value(true).build()._toQuery()); - // 添加日期范围过滤 - 将LocalDateTime转换为ISO格式的字符串 - // LocalDateTime currentTime = LocalDateTime.now(); + // 添加日期范围过滤 - 将ZonedDateTime转换为ISO格式的字符串 + // ZonedDateTime currentTime = ZonedDateTime.now(); // String currentTimeStr = currentTime.format(DateTimeFormatter.ISO_DATE_TIME); // // 创建startDate范围查询 diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/faq/vector/FaqVector.java b/modules/kbase/src/main/java/com/bytedesk/kbase/faq/vector/FaqVector.java index 635e910379..1c0cd02989 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/faq/vector/FaqVector.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/faq/vector/FaqVector.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.faq.vector; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import org.springframework.data.annotation.Id; @@ -81,10 +81,10 @@ public class FaqVector { // 有效日期范围 @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime startDate; + private ZonedDateTime startDate; @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime endDate; + private ZonedDateTime endDate; // 统计数据 @Field(type = FieldType.Integer) diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileEntity.java b/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileEntity.java index da64e425b6..3a5ff5ff0d 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileEntity.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.file; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -70,12 +70,12 @@ public class FileEntity extends BaseEntity { // 有效开始日期 @Builder.Default - private LocalDateTime startDate = LocalDateTime.now(); + private ZonedDateTime startDate = ZonedDateTime.now(); // 有效结束日期 // 当前 + 100 年 @Builder.Default - private LocalDateTime endDate = LocalDateTime.now().plusYears(100); + private ZonedDateTime endDate = ZonedDateTime.now().plusYears(100); @Builder.Default private String elasticStatus = ChunkStatusEnum.NEW.name(); diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileExcel.java b/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileExcel.java index 5579c6ea0a..62027e6b61 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileExcel.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.file; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -59,12 +59,12 @@ public class FileExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "有效开始日期") @ColumnWidth(25) - private LocalDateTime startDate; + private ZonedDateTime startDate; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "有效结束日期") @ColumnWidth(25) - private LocalDateTime endDate; + private ZonedDateTime endDate; @ExcelProperty(value = "知识库") @ColumnWidth(20) @@ -73,5 +73,5 @@ public class FileExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "创建时间") @ColumnWidth(25) - private LocalDateTime createdAt; + private ZonedDateTime createdAt; } diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileRequest.java b/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileRequest.java index 8e0cb9557d..4859a0bce4 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileRequest.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileRequest.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.file; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.ArrayList; @@ -49,12 +49,12 @@ public class FileRequest extends BaseRequest { // 有效开始日期 @Builder.Default - private LocalDateTime startDate = LocalDateTime.now(); + private ZonedDateTime startDate = ZonedDateTime.now(); // 有效结束日期 // 当前 + 100 年 @Builder.Default - private LocalDateTime endDate = LocalDateTime.now().plusYears(100); + private ZonedDateTime endDate = ZonedDateTime.now().plusYears(100); @Builder.Default private String elasticStatus = ChunkStatusEnum.NEW.name(); diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileResponse.java index 94d337bdb5..bc7ccf727b 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileResponse.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.file; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import com.bytedesk.core.base.BaseResponse; @@ -50,10 +50,10 @@ public class FileResponse extends BaseResponse { private List tagList; // 有效开始日期 - private LocalDateTime startDate; + private ZonedDateTime startDate; // 有效结束日期 - private LocalDateTime endDate; + private ZonedDateTime endDate; private Boolean enabled; @@ -93,7 +93,7 @@ public class FileResponse extends BaseResponse { // 上传用户 private String userUid; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; - // private LocalDateTime updatedAt; + // private ZonedDateTime updatedAt; } diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileRestService.java b/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileRestService.java index 7077111024..71894c1b9b 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileRestService.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/file/FileRestService.java @@ -270,8 +270,8 @@ public class FileRestService extends BaseRestServiceWithExcel kbase = kbaseRestService.findByUid(kbUid); diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/kbase/KbaseEntity.java b/modules/kbase/src/main/java/com/bytedesk/kbase/kbase/KbaseEntity.java index e6496d59d2..7b9db9cda9 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/kbase/KbaseEntity.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/kbase/KbaseEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.kbase; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -148,10 +148,10 @@ public class KbaseEntity extends BaseEntity { private String language = LanguageEnum.ZH_CN.name(); // 有效开始日期 - private LocalDateTime startDate; + private ZonedDateTime startDate; // 有效结束日期 - private LocalDateTime endDate; + private ZonedDateTime endDate; @Builder.Default @Convert(converter = StringListConverter.class) diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/kbase/KbaseRequest.java b/modules/kbase/src/main/java/com/bytedesk/kbase/kbase/KbaseRequest.java index f1d9d098b0..99c87ce8c1 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/kbase/KbaseRequest.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/kbase/KbaseRequest.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.kbase; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -140,9 +140,9 @@ public class KbaseRequest extends BaseRequest { @Column(columnDefinition = TypeConsts.COLUMN_TYPE_TEXT) private List tagList = new ArrayList<>(); - private LocalDateTime startDate; + private ZonedDateTime startDate; - private LocalDateTime endDate; + private ZonedDateTime endDate; // 大模型知识库-嵌入向量提供者 @Builder.Default diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/kbase/KbaseResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/kbase/KbaseResponse.java index d638c2f395..81469ad20d 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/kbase/KbaseResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/kbase/KbaseResponse.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.kbase; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import com.bytedesk.core.base.BaseResponse; @@ -94,10 +94,10 @@ public class KbaseResponse extends BaseResponse { private Boolean published; // 有效开始日期 - private LocalDateTime startDate; + private ZonedDateTime startDate; // 有效结束日期 - private LocalDateTime endDate; + private ZonedDateTime endDate; // 大模型知识库-嵌入向量提供者 private String embeddingProvider; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/kbase_invite/KbaseInviteResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/kbase_invite/KbaseInviteResponse.java index fb3af85084..7d23689c50 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/kbase_invite/KbaseInviteResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/kbase_invite/KbaseInviteResponse.java @@ -40,5 +40,5 @@ public class KbaseInviteResponse extends BaseResponse { private Integer order; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; } diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkEntity.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkEntity.java index cddadbbe9c..ed8abd96db 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkEntity.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_chunk; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -82,12 +82,12 @@ public class ChunkEntity extends BaseEntity { // 有效开始日期 @Builder.Default - private LocalDateTime startDate = LocalDateTime.now(); + private ZonedDateTime startDate = ZonedDateTime.now(); // 有效结束日期 // 当前 + 100 年 @Builder.Default - private LocalDateTime endDate = LocalDateTime.now().plusYears(100); + private ZonedDateTime endDate = ZonedDateTime.now().plusYears(100); // 对应 拆分 document 的 id private String docId; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkEventListener.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkEventListener.java index 0b531d5e1b..6b6e9ac73d 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkEventListener.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkEventListener.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_chunk; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -79,8 +79,8 @@ public class ChunkEventListener { .userUid(fileResponse.getUserUid()) .orgUid(fileResponse.getOrgUid()) .enabled(true) // 使用文件的启用状态,默认为true - .startDate(LocalDateTime.now()) // 使用文件的开始日期,默认为当前时间 - .endDate(LocalDateTime.now().plusYears(100)) // 使用文件的结束日期,默认为100年后 + .startDate(ZonedDateTime.now()) // 使用文件的开始日期,默认为当前时间 + .endDate(ZonedDateTime.now().plusYears(100)) // 使用文件的结束日期,默认为100年后 .build(); chunkRestService.create(splitRequest); } diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkExcel.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkExcel.java index 5cd37430de..bf77217cea 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkExcel.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_chunk; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -54,12 +54,12 @@ public class ChunkExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "有效开始日期") @ColumnWidth(25) - private LocalDateTime startDate; + private ZonedDateTime startDate; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "有效结束日期") @ColumnWidth(25) - private LocalDateTime endDate; + private ZonedDateTime endDate; @ExcelProperty(value = "文件名称") @ColumnWidth(20) @@ -72,5 +72,5 @@ public class ChunkExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "创建时间") @ColumnWidth(25) - private LocalDateTime createdAt; + private ZonedDateTime createdAt; } diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkRequest.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkRequest.java index f42927ffdd..7279d4fef0 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkRequest.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkRequest.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_chunk; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.ArrayList; @@ -54,12 +54,12 @@ public class ChunkRequest extends BaseRequest { // 有效开始日期 @Builder.Default - private LocalDateTime startDate = LocalDateTime.now(); + private ZonedDateTime startDate = ZonedDateTime.now(); // 有效结束日期 // 当前 + 100 年 @Builder.Default - private LocalDateTime endDate = LocalDateTime.now().plusYears(100); + private ZonedDateTime endDate = ZonedDateTime.now().plusYears(100); // 对应 拆分 document 的 id private String docId; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkResponse.java index 0e56d69e65..c8d491d043 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkResponse.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_chunk; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import com.bytedesk.core.base.BaseResponse; @@ -49,10 +49,10 @@ public class ChunkResponse extends BaseResponse { private List tagList; // 有效开始日期 - private LocalDateTime startDate; + private ZonedDateTime startDate; // 有效结束日期 - private LocalDateTime endDate; + private ZonedDateTime endDate; private Boolean enabled; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkRestService.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkRestService.java index 98cb834666..0e9e673d1f 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkRestService.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/ChunkRestService.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_chunk; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.Optional; @@ -299,8 +299,8 @@ public class ChunkRestService extends BaseRestServiceWithExcel kbase = kbaseRestService.findByUid(kbUid); diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/elastic/ChunkElastic.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/elastic/ChunkElastic.java index 82c3bd5517..19fc0452d9 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/elastic/ChunkElastic.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/elastic/ChunkElastic.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_chunk.elastic; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import org.springframework.data.annotation.Id; @@ -57,10 +57,10 @@ public class ChunkElastic { private Boolean enabled; @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime startDate; + private ZonedDateTime startDate; @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime endDate; + private ZonedDateTime endDate; @Field(type = FieldType.Keyword) private String docId; @@ -75,10 +75,10 @@ public class ChunkElastic { private String kbaseUid; // @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; // @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - // private LocalDateTime updatedAt; + // private ZonedDateTime updatedAt; // @Field(type = FieldType.Keyword) // private String createdBy; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/elastic/ChunkElasticService.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/elastic/ChunkElasticService.java index 756c73457d..2f313267e3 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/elastic/ChunkElasticService.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/elastic/ChunkElasticService.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_chunk.elastic; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; @@ -201,7 +201,7 @@ public class ChunkElasticService { boolQueryBuilder.filter(QueryBuilders.term().field("enabled").value(true).build()._toQuery()); // 添加时间过滤 - LocalDateTime now = LocalDateTime.now(); + ZonedDateTime now = ZonedDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME; String nowStr = now.format(formatter); @@ -363,7 +363,7 @@ public class ChunkElasticService { } // 添加时间过滤 - LocalDateTime now = LocalDateTime.now(); + ZonedDateTime now = ZonedDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME; String nowStr = now.format(formatter); diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/vector/ChunkVector.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/vector/ChunkVector.java index 573518e67f..00a132cbaf 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/vector/ChunkVector.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_chunk/vector/ChunkVector.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_chunk.vector; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import org.springframework.data.annotation.Id; @@ -82,10 +82,10 @@ public class ChunkVector { // 有效日期范围 @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime startDate; + private ZonedDateTime startDate; @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime endDate; + private ZonedDateTime endDate; // 状态字段 @Field(type = FieldType.Keyword) diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextEntity.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextEntity.java index 635808a687..2dce88cd04 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextEntity.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_text; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -78,12 +78,12 @@ public class TextEntity extends BaseEntity { // 有效开始日期 @Builder.Default - private LocalDateTime startDate = LocalDateTime.now(); + private ZonedDateTime startDate = ZonedDateTime.now(); // 有效结束日期 // 当前 + 100 年 @Builder.Default - private LocalDateTime endDate = LocalDateTime.now().plusYears(100); + private ZonedDateTime endDate = ZonedDateTime.now().plusYears(100); private String categoryUid; // 所属分类 diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextExcel.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextExcel.java index 457d123c22..75f62896c6 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextExcel.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_text; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -58,12 +58,12 @@ public class TextExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "有效开始日期") @ColumnWidth(25) - private LocalDateTime startDate; + private ZonedDateTime startDate; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "有效结束日期") @ColumnWidth(25) - private LocalDateTime endDate; + private ZonedDateTime endDate; @ExcelProperty(value = "知识库") @ColumnWidth(20) @@ -72,6 +72,6 @@ public class TextExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "创建时间") @ColumnWidth(25) - private LocalDateTime createdAt; + private ZonedDateTime createdAt; } diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextRequest.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextRequest.java index 77ebbe4c3c..8fafc43abb 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextRequest.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextRequest.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_text; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.ArrayList; @@ -49,12 +49,12 @@ public class TextRequest extends BaseRequest { // 有效开始日期 @Builder.Default - private LocalDateTime startDate = LocalDateTime.now(); + private ZonedDateTime startDate = ZonedDateTime.now(); // 有效结束日期 // 当前 + 100 年 @Builder.Default - private LocalDateTime endDate = LocalDateTime.now().plusYears(100); + private ZonedDateTime endDate = ZonedDateTime.now().plusYears(100); @Builder.Default private String elasticStatus = ChunkStatusEnum.NEW.name(); diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextResponse.java index 7db6f65350..1776b0a339 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextResponse.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_text; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import com.bytedesk.core.base.BaseResponse; @@ -42,10 +42,10 @@ public class TextResponse extends BaseResponse { private Boolean enabled; // 有效开始日期 - private LocalDateTime startDate; + private ZonedDateTime startDate; // 有效结束日期 - private LocalDateTime endDate; + private ZonedDateTime endDate; private String elasticStatus; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextRestService.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextRestService.java index 68a65bec40..75dcb08ccf 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextRestService.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/TextRestService.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_text; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.Optional; @@ -306,8 +306,8 @@ public class TextRestService extends BaseRestServiceWithExcel kbase = kbaseRestService.findByUid(kbUid); if (kbase.isPresent()) { diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/elastic/TextElastic.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/elastic/TextElastic.java index 636f3a5a1f..2fd00efd62 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/elastic/TextElastic.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/elastic/TextElastic.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_text.elastic; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import org.springframework.data.annotation.Id; @@ -57,17 +57,17 @@ public class TextElastic { // startDate @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime startDate; + private ZonedDateTime startDate; // endDate @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime endDate; + private ZonedDateTime endDate; // @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; // @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - // private LocalDateTime updatedAt; + // private ZonedDateTime updatedAt; @Field(type = FieldType.Keyword) private String categoryUid; @@ -79,10 +79,10 @@ public class TextElastic { private List docIdList; // @Field(type = FieldType.Date) - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; // @Field(type = FieldType.Date) - // private LocalDateTime updatedAt; + // private ZonedDateTime updatedAt; // @Field(type = FieldType.Keyword) // private String createdBy; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/elastic/TextElasticService.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/elastic/TextElasticService.java index 764dd8cae6..991339e9cd 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/elastic/TextElasticService.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/elastic/TextElasticService.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_text.elastic; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; @@ -203,7 +203,7 @@ public class TextElasticService { boolQueryBuilder.filter(QueryBuilders.term().field("enabled").value(true).build()._toQuery()); // 添加时间过滤 - LocalDateTime now = LocalDateTime.now(); + ZonedDateTime now = ZonedDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME; String nowStr = now.format(formatter); @@ -368,7 +368,7 @@ public class TextElasticService { } // 添加时间过滤 - LocalDateTime now = LocalDateTime.now(); + ZonedDateTime now = ZonedDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME; String nowStr = now.format(formatter); diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/vector/TextVector.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/vector/TextVector.java index 77a79cf156..b10bf4c2e2 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/vector/TextVector.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_text/vector/TextVector.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_text.vector; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import org.springframework.data.annotation.Id; @@ -81,10 +81,10 @@ public class TextVector { // 有效日期范围 @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime startDate; + private ZonedDateTime startDate; @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime endDate; + private ZonedDateTime endDate; // 状态字段 @Field(type = FieldType.Keyword) diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/WebpageEntity.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/WebpageEntity.java index 3f9b98e078..fe3353cbc7 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/WebpageEntity.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/WebpageEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_webpage; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -84,12 +84,12 @@ public class WebpageEntity extends BaseEntity { // 有效开始日期 @Builder.Default - private LocalDateTime startDate = LocalDateTime.now(); + private ZonedDateTime startDate = ZonedDateTime.now(); // 有效结束日期 // 当前 + 100 年 @Builder.Default - private LocalDateTime endDate = LocalDateTime.now().plusYears(100); + private ZonedDateTime endDate = ZonedDateTime.now().plusYears(100); private String categoryUid; // 所属分类 diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/WebpageRequest.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/WebpageRequest.java index 32c4f742d0..fc3beacb12 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/WebpageRequest.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/WebpageRequest.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_webpage; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.ArrayList; @@ -57,12 +57,12 @@ public class WebpageRequest extends BaseRequest { // 有效开始日期 @Builder.Default - private LocalDateTime startDate = LocalDateTime.now(); + private ZonedDateTime startDate = ZonedDateTime.now(); // 有效结束日期 // 当前 + 100 年 @Builder.Default - private LocalDateTime endDate = LocalDateTime.now().plusYears(100); + private ZonedDateTime endDate = ZonedDateTime.now().plusYears(100); private String categoryUid; // 所属分类 diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/WebpageResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/WebpageResponse.java index 30458bdfa0..dc513af88b 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/WebpageResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/WebpageResponse.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_webpage; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import com.bytedesk.core.base.BaseResponse; @@ -48,10 +48,10 @@ public class WebpageResponse extends BaseResponse { private List tagList; // 有效开始日期 - private LocalDateTime startDate; + private ZonedDateTime startDate; // 有效结束日期 - private LocalDateTime endDate; + private ZonedDateTime endDate; private Boolean enabled; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/elastic/WebpageElastic.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/elastic/WebpageElastic.java index c40a2a19cc..49f9644ab5 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/elastic/WebpageElastic.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/elastic/WebpageElastic.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_webpage.elastic; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import org.springframework.data.annotation.Id; @@ -71,10 +71,10 @@ public class WebpageElastic { private Boolean enabled; @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime startDate; + private ZonedDateTime startDate; @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime endDate; + private ZonedDateTime endDate; @Field(type = FieldType.Integer) private Integer viewCount; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/elastic/WebpageElasticService.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/elastic/WebpageElasticService.java index 9e33f466f3..2698f46555 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/elastic/WebpageElasticService.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/elastic/WebpageElasticService.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_webpage.elastic; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; @@ -171,8 +171,8 @@ public class WebpageElasticService { // 添加过滤条件:启用状态 boolQueryBuilder.filter(QueryBuilders.term().field("enabled").value(true).build()._toQuery()); - // 添加日期范围过滤 - 将LocalDateTime转换为ISO格式的字符串 - LocalDateTime currentTime = LocalDateTime.now(); + // 添加日期范围过滤 - 将ZonedDateTime转换为ISO格式的字符串 + ZonedDateTime currentTime = ZonedDateTime.now(); String currentTimeStr = currentTime.format(DateTimeFormatter.ISO_DATE_TIME); // 创建startDate范围查询 diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/vector/WebpageVector.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/vector/WebpageVector.java index e81225f61d..8f57d34c44 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/vector/WebpageVector.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_webpage/vector/WebpageVector.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_webpage.vector; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import org.springframework.data.annotation.Id; @@ -83,10 +83,10 @@ public class WebpageVector { // 有效日期范围 @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime startDate; + private ZonedDateTime startDate; @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis) - private LocalDateTime endDate; + private ZonedDateTime endDate; // 统计数据 @Field(type = FieldType.Integer) diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_website/WebsiteEntity.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_website/WebsiteEntity.java index 52069c92c3..aec200c77a 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_website/WebsiteEntity.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_website/WebsiteEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_website; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -84,12 +84,12 @@ public class WebsiteEntity extends BaseEntity { // 有效开始日期 @Builder.Default - private LocalDateTime startDate = LocalDateTime.now(); + private ZonedDateTime startDate = ZonedDateTime.now(); // 有效结束日期 // 当前 + 100 年 @Builder.Default - private LocalDateTime endDate = LocalDateTime.now().plusYears(100); + private ZonedDateTime endDate = ZonedDateTime.now().plusYears(100); private String categoryUid; // 所属分类 diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_website/WebsiteRequest.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_website/WebsiteRequest.java index 42c5e1a591..3afe64d6d4 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_website/WebsiteRequest.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_website/WebsiteRequest.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_website; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.ArrayList; @@ -57,12 +57,12 @@ public class WebsiteRequest extends BaseRequest { // 有效开始日期 @Builder.Default - private LocalDateTime startDate = LocalDateTime.now(); + private ZonedDateTime startDate = ZonedDateTime.now(); // 有效结束日期 // 当前 + 100 年 @Builder.Default - private LocalDateTime endDate = LocalDateTime.now().plusYears(100); + private ZonedDateTime endDate = ZonedDateTime.now().plusYears(100); private String categoryUid; // 所属分类 diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_website/WebsiteResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_website/WebsiteResponse.java index 8cc8f0d5f2..2b94ef0cbb 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/llm_website/WebsiteResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/llm_website/WebsiteResponse.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.llm_website; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import com.bytedesk.core.base.BaseResponse; @@ -48,10 +48,10 @@ public class WebsiteResponse extends BaseResponse { private List tagList; // 有效开始日期 - private LocalDateTime startDate; + private ZonedDateTime startDate; // 有效结束日期 - private LocalDateTime endDate; + private ZonedDateTime endDate; private Boolean enabled; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/material/MaterialExcel.java b/modules/kbase/src/main/java/com/bytedesk/kbase/material/MaterialExcel.java index bf83e866fe..808e9ea08f 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/material/MaterialExcel.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/material/MaterialExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.material; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -42,11 +42,11 @@ public class MaterialExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "创建时间") @ColumnWidth(25) - private LocalDateTime createdAt; + private ZonedDateTime createdAt; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "修改时间") @ColumnWidth(25) - private LocalDateTime updatedAt; + private ZonedDateTime updatedAt; } diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/QuickReplyEntity.java b/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/QuickReplyEntity.java index 7a962cb128..8ca8d7f8f1 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/QuickReplyEntity.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/QuickReplyEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.quick_reply; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -75,10 +75,10 @@ public class QuickReplyEntity extends BaseEntity { private Integer clickCount = 0; // 有效开始日期 - private LocalDateTime startDate; + private ZonedDateTime startDate; // 有效结束日期 - private LocalDateTime endDate; + private ZonedDateTime endDate; private String categoryUid; // 文章分类 diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/QuickReplyRequest.java b/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/QuickReplyRequest.java index 24d58fd458..38705ecf16 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/QuickReplyRequest.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/QuickReplyRequest.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.quick_reply; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.ArrayList; @@ -53,9 +53,9 @@ public class QuickReplyRequest extends BaseRequest { @Builder.Default private Integer clickCount = 0; - private LocalDateTime startDate; + private ZonedDateTime startDate; - private LocalDateTime endDate; + private ZonedDateTime endDate; private String categoryUid; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/QuickReplyResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/QuickReplyResponse.java index 60bb24c7cc..f43b017bc3 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/QuickReplyResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/QuickReplyResponse.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.quick_reply; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import com.bytedesk.core.base.BaseResponse; @@ -47,10 +47,10 @@ public class QuickReplyResponse extends BaseResponse { private Integer clickCount; // 有效开始日期 - private LocalDateTime startDate; + private ZonedDateTime startDate; // 有效结束日期 - private LocalDateTime endDate; + private ZonedDateTime endDate; private String categoryUid; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/elastic/QuickReplyElastic.java b/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/elastic/QuickReplyElastic.java index c607426b20..109a50c471 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/elastic/QuickReplyElastic.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/elastic/QuickReplyElastic.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.quick_reply.elastic; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import org.springframework.data.elasticsearch.annotations.Document; @@ -65,10 +65,10 @@ public class QuickReplyElastic extends BaseEntity { private Integer clickCount; @Field(type = FieldType.Date) - private LocalDateTime startDate; + private ZonedDateTime startDate; @Field(type = FieldType.Date) - private LocalDateTime endDate; + private ZonedDateTime endDate; @Field(type = FieldType.Keyword) private String categoryUid; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/elastic/QuickReplyElasticService.java b/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/elastic/QuickReplyElasticService.java index cf12e6687f..0b05151c3b 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/elastic/QuickReplyElasticService.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/elastic/QuickReplyElasticService.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.quick_reply.elastic; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Optional; @@ -144,8 +144,8 @@ public class QuickReplyElasticService { // 添加过滤条件:启用状态 boolQueryBuilder.filter(QueryBuilders.term().field("enabled").value(true).build()._toQuery()); - // 添加日期范围过滤 - 将LocalDateTime转换为ISO格式的字符串 - LocalDateTime currentTime = LocalDateTime.now(); + // 添加日期范围过滤 - 将ZonedDateTime转换为ISO格式的字符串 + ZonedDateTime currentTime = ZonedDateTime.now(); String currentTimeStr = currentTime.format(DateTimeFormatter.ISO_DATE_TIME); // 创建startDate范围查询 diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/vector/QuickReplyVector.java b/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/vector/QuickReplyVector.java index 3a82113c4e..d8ed4e0cec 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/vector/QuickReplyVector.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/vector/QuickReplyVector.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.quick_reply.vector; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import org.springframework.data.elasticsearch.annotations.Document; @@ -66,10 +66,10 @@ public class QuickReplyVector extends BaseEntity { private Integer clickCount; @Field(type = FieldType.Date) - private LocalDateTime startDate; + private ZonedDateTime startDate; @Field(type = FieldType.Date) - private LocalDateTime endDate; + private ZonedDateTime endDate; @Field(type = FieldType.Keyword) private String categoryUid; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/vector/QuickReplyVectorService.java b/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/vector/QuickReplyVectorService.java index 0987e51ba7..bee15083eb 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/vector/QuickReplyVectorService.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/quick_reply/vector/QuickReplyVectorService.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.quick_reply.vector; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; @@ -148,8 +148,8 @@ public class QuickReplyVectorService { // 添加过滤条件:启用状态 boolQueryBuilder.filter(QueryBuilders.term().field("enabled").value(true).build()._toQuery()); - // 添加日期范围过滤 - 将LocalDateTime转换为ISO格式的字符串 - LocalDateTime currentTime = LocalDateTime.now(); + // 添加日期范围过滤 - 将ZonedDateTime转换为ISO格式的字符串 + ZonedDateTime currentTime = ZonedDateTime.now(); String currentTimeStr = currentTime.format(DateTimeFormatter.ISO_DATE_TIME); // 创建startDate范围查询 diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/settings/ServiceSettings.java b/modules/kbase/src/main/java/com/bytedesk/kbase/settings/ServiceSettings.java index 940241894f..dd36c94ade 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/settings/ServiceSettings.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/settings/ServiceSettings.java @@ -14,7 +14,7 @@ package com.bytedesk.kbase.settings; import java.io.Serializable; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -65,9 +65,9 @@ public class ServiceSettings implements Serializable { @Builder.Default private String topTip = I18Consts.I18N_TOP_TIP; - private LocalDateTime topTipStart; + private ZonedDateTime topTipStart; - private LocalDateTime topTipEnd; + private ZonedDateTime topTipEnd; // 满意度评价设置-------------------------------------------------- // show rate btn on chat toolbar diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/settings/ServiceSettingsRequest.java b/modules/kbase/src/main/java/com/bytedesk/kbase/settings/ServiceSettingsRequest.java index f866d41f6d..3ced3ce282 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/settings/ServiceSettingsRequest.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/settings/ServiceSettingsRequest.java @@ -14,7 +14,7 @@ package com.bytedesk.kbase.settings; import java.io.Serializable; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -48,9 +48,9 @@ public class ServiceSettingsRequest implements Serializable { @Builder.Default private String topTip = I18Consts.I18N_TOP_TIP; - private LocalDateTime topTipStart; + private ZonedDateTime topTipStart; - private LocalDateTime topTipEnd; + private ZonedDateTime topTipEnd; // show rate btn on chat toolbar @Builder.Default diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/settings/ServiceSettingsResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/settings/ServiceSettingsResponse.java index d76a990f69..b5b34b3eb9 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/settings/ServiceSettingsResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/settings/ServiceSettingsResponse.java @@ -14,7 +14,7 @@ package com.bytedesk.kbase.settings; import java.io.Serializable; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.Date; import java.util.List; @@ -43,9 +43,9 @@ public class ServiceSettingsResponse implements Serializable { private String topTip; - private LocalDateTime topTipStart; + private ZonedDateTime topTipStart; - private LocalDateTime topTipEnd; + private ZonedDateTime topTipEnd; // show rate btn on chat toolbar private Boolean showRateBtn; diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/settings_intention/IntentionSettingsResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/settings_intention/IntentionSettingsResponse.java index 55ea3f4f41..cedf028815 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/settings_intention/IntentionSettingsResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/settings_intention/IntentionSettingsResponse.java @@ -41,5 +41,5 @@ public class IntentionSettingsResponse extends BaseResponse { private Integer order; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; } diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/settings_invite/InviteSettingsResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/settings_invite/InviteSettingsResponse.java index 1e3d6f573d..040b1f5c83 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/settings_invite/InviteSettingsResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/settings_invite/InviteSettingsResponse.java @@ -41,5 +41,5 @@ public class InviteSettingsResponse extends BaseResponse { private Integer order; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; } diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/settings_service/ServiceSettingsEntity.java b/modules/kbase/src/main/java/com/bytedesk/kbase/settings_service/ServiceSettingsEntity.java index b334726940..cbb7780918 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/settings_service/ServiceSettingsEntity.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/settings_service/ServiceSettingsEntity.java @@ -73,9 +73,9 @@ public class ServiceSettingsEntity extends BaseEntity { // @Builder.Default // private String topTip = I18Consts.I18N_TOP_TIP; - // private LocalDateTime topTipStart; + // private ZonedDateTime topTipStart; - // private LocalDateTime topTipEnd; + // private ZonedDateTime topTipEnd; // // 满意度评价设置-------------------------------------------------- // // show rate btn on chat toolbar diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/settings_service/ServiceSettingsResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/settings_service/ServiceSettingsResponse.java index 6d8cbe57af..7846ba4172 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/settings_service/ServiceSettingsResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/settings_service/ServiceSettingsResponse.java @@ -41,5 +41,5 @@ public class ServiceSettingsResponse extends BaseResponse { private Integer order; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; } diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/taboo_message/TabooMessageRequest.java b/modules/kbase/src/main/java/com/bytedesk/kbase/taboo_message/TabooMessageRequest.java index 0beb14da4c..9b824cd593 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/taboo_message/TabooMessageRequest.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/taboo_message/TabooMessageRequest.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.taboo_message; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.ArrayList; @@ -41,9 +41,9 @@ public class TabooMessageRequest extends BaseRequest { @Builder.Default private List tagList = new ArrayList<>(); - private LocalDateTime startDate; + private ZonedDateTime startDate; - private LocalDateTime endDate; + private ZonedDateTime endDate; @Builder.Default private String level = LevelEnum.ORGANIZATION.name(); diff --git a/modules/kbase/src/main/java/com/bytedesk/kbase/taboo_message/TabooMessageResponse.java b/modules/kbase/src/main/java/com/bytedesk/kbase/taboo_message/TabooMessageResponse.java index 765ae2cc09..9a50b83a85 100644 --- a/modules/kbase/src/main/java/com/bytedesk/kbase/taboo_message/TabooMessageResponse.java +++ b/modules/kbase/src/main/java/com/bytedesk/kbase/taboo_message/TabooMessageResponse.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.taboo_message; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import com.bytedesk.core.base.BaseResponse; @@ -44,16 +44,16 @@ public class TabooMessageResponse extends BaseResponse { private Boolean enabled; // 有效开始日期 - private LocalDateTime startDate; + private ZonedDateTime startDate; // 有效结束日期 - private LocalDateTime endDate; + private ZonedDateTime endDate; private String categoryUid; private String kbUid; // 对应知识库 - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; - // private LocalDateTime updatedAt; + // private ZonedDateTime updatedAt; } diff --git a/modules/kbase/src/test/java/com/bytedesk/kbase/faq/FaqBulkIndexTester.java b/modules/kbase/src/test/java/com/bytedesk/kbase/faq/FaqBulkIndexTester.java index 507d199a28..1494ba0cd6 100644 --- a/modules/kbase/src/test/java/com/bytedesk/kbase/faq/FaqBulkIndexTester.java +++ b/modules/kbase/src/test/java/com/bytedesk/kbase/faq/FaqBulkIndexTester.java @@ -13,7 +13,7 @@ */ package com.bytedesk.kbase.faq; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; @@ -72,7 +72,7 @@ public class FaqBulkIndexTester { }); } - log.info("批量索引测试任务已提交,时间: {}", LocalDateTime.now()); + log.info("批量索引测试任务已提交,时间: {}", ZonedDateTime.now()); } /** diff --git a/modules/pom.xml b/modules/pom.xml index 507d5f2b09..4b787f5e17 100644 --- a/modules/pom.xml +++ b/modules/pom.xml @@ -211,7 +211,7 @@ provided - + diff --git a/modules/service/src/main/java/com/bytedesk/service/customer/CustomerEntity.java b/modules/service/src/main/java/com/bytedesk/service/customer/CustomerEntity.java index 07d307bdd5..4c66ea3dd5 100644 --- a/modules/service/src/main/java/com/bytedesk/service/customer/CustomerEntity.java +++ b/modules/service/src/main/java/com/bytedesk/service/customer/CustomerEntity.java @@ -95,13 +95,13 @@ public class CustomerEntity extends BaseEntity { // 跟进信息 // private String owner; // 负责人ID // private String ownerName; // 负责人姓名 - // private LocalDateTime lastContactTime; // 最后联系时间 - // private LocalDateTime nextContactTime; // 下次联系时间 + // private ZonedDateTime lastContactTime; // 最后联系时间 + // private ZonedDateTime nextContactTime; // 下次联系时间 // 交易相关 // private Double totalAmount; // 累计消费金额 // private Integer dealCount; // 成交次数 - // private LocalDateTime lastDealTime; // 最后成交时间 + // private ZonedDateTime lastDealTime; // 最后成交时间 // 标签 @Builder.Default diff --git a/modules/service/src/main/java/com/bytedesk/service/form/FormEntity.java b/modules/service/src/main/java/com/bytedesk/service/form/FormEntity.java index 8213086516..afe79636ca 100644 --- a/modules/service/src/main/java/com/bytedesk/service/form/FormEntity.java +++ b/modules/service/src/main/java/com/bytedesk/service/form/FormEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.service.form; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -73,10 +73,10 @@ public class FormEntity extends BaseEntity { private String formSchema; // 表单发布时间 - private LocalDateTime publishTime; + private ZonedDateTime publishTime; // 表单过期时间 - private LocalDateTime expireLength; + private ZonedDateTime expireLength; // 表单布局类型:单列、双列、响应式等 @Builder.Default diff --git a/modules/service/src/main/java/com/bytedesk/service/form_result/FormResultExcel.java b/modules/service/src/main/java/com/bytedesk/service/form_result/FormResultExcel.java index 41a43d79af..2e82d57753 100644 --- a/modules/service/src/main/java/com/bytedesk/service/form_result/FormResultExcel.java +++ b/modules/service/src/main/java/com/bytedesk/service/form_result/FormResultExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.service.form_result; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -42,11 +42,11 @@ public class FormResultExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "创建时间") @ColumnWidth(25) - private LocalDateTime createdAt; + private ZonedDateTime createdAt; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "修改时间") @ColumnWidth(25) - private LocalDateTime updatedAt; + private ZonedDateTime updatedAt; } diff --git a/modules/service/src/main/java/com/bytedesk/service/message_leave/MessageLeaveEntity.java b/modules/service/src/main/java/com/bytedesk/service/message_leave/MessageLeaveEntity.java index bd884541ec..29ba9ac185 100644 --- a/modules/service/src/main/java/com/bytedesk/service/message_leave/MessageLeaveEntity.java +++ b/modules/service/src/main/java/com/bytedesk/service/message_leave/MessageLeaveEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.service.message_leave; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -86,7 +86,7 @@ public class MessageLeaveEntity extends BaseEntity { private List replyAttachments = new ArrayList<>(); // 回复时间 - private LocalDateTime repliedAt; + private ZonedDateTime repliedAt; @Builder.Default private String status = MessageLeaveStatusEnum.PENDING.name(); diff --git a/modules/service/src/main/java/com/bytedesk/service/message_leave/MessageLeaveRequest.java b/modules/service/src/main/java/com/bytedesk/service/message_leave/MessageLeaveRequest.java index 012d53a4c3..8ef0fddba0 100644 --- a/modules/service/src/main/java/com/bytedesk/service/message_leave/MessageLeaveRequest.java +++ b/modules/service/src/main/java/com/bytedesk/service/message_leave/MessageLeaveRequest.java @@ -13,7 +13,7 @@ */ package com.bytedesk.service.message_leave; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -56,7 +56,7 @@ public class MessageLeaveRequest extends BaseRequest { private List replyAttachments = new ArrayList<>(); // 回复时间 - private LocalDateTime repliedAt; + private ZonedDateTime repliedAt; private String status; diff --git a/modules/service/src/main/java/com/bytedesk/service/message_leave/MessageLeaveResponse.java b/modules/service/src/main/java/com/bytedesk/service/message_leave/MessageLeaveResponse.java index 10e98f0ac5..623c29b9f6 100644 --- a/modules/service/src/main/java/com/bytedesk/service/message_leave/MessageLeaveResponse.java +++ b/modules/service/src/main/java/com/bytedesk/service/message_leave/MessageLeaveResponse.java @@ -13,7 +13,7 @@ */ package com.bytedesk.service.message_leave; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import com.bytedesk.core.base.BaseResponse; @@ -56,7 +56,7 @@ public class MessageLeaveResponse extends BaseResponse { private List replyAttachments; // 回复时间 - private LocalDateTime repliedAt; + private ZonedDateTime repliedAt; // private String status; diff --git a/modules/service/src/main/java/com/bytedesk/service/message_leave/MessageLeaveRestService.java b/modules/service/src/main/java/com/bytedesk/service/message_leave/MessageLeaveRestService.java index df807633b3..0d4734e947 100644 --- a/modules/service/src/main/java/com/bytedesk/service/message_leave/MessageLeaveRestService.java +++ b/modules/service/src/main/java/com/bytedesk/service/message_leave/MessageLeaveRestService.java @@ -13,7 +13,7 @@ */ package com.bytedesk.service.message_leave; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.Optional; import org.modelmapper.ModelMapper; @@ -170,7 +170,7 @@ public class MessageLeaveRestService extends MessageLeaveEntity messageLeave = messageLeaveOptional.get(); messageLeave.setReply(request.getReply()); messageLeave.setReplyImages(request.getReplyImages()); - messageLeave.setRepliedAt(LocalDateTime.now()); + messageLeave.setRepliedAt(ZonedDateTime.now()); messageLeave.setReplyUser(user.toProtobuf().toJson()); messageLeave.setStatus(MessageLeaveStatusEnum.REPLIED.name()); // diff --git a/modules/service/src/main/java/com/bytedesk/service/queue/QueueService.java b/modules/service/src/main/java/com/bytedesk/service/queue/QueueService.java index b156e74a73..46c7ece84a 100644 --- a/modules/service/src/main/java/com/bytedesk/service/queue/QueueService.java +++ b/modules/service/src/main/java/com/bytedesk/service/queue/QueueService.java @@ -1,7 +1,7 @@ package com.bytedesk.service.queue; import java.time.LocalDate; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.Optional; @@ -52,7 +52,7 @@ public class QueueService { .robotQueue(queue) .thread(threadEntity) .queueNumber(queue.getNextNumber()) - .visitorEnqueueAt(LocalDateTime.now()) + .visitorEnqueueAt(ZonedDateTime.now()) .orgUid(threadEntity.getOrgUid()) .build(); // @@ -82,7 +82,7 @@ public class QueueService { .agentQueue(queue) .thread(threadEntity) .queueNumber(queue.getNextNumber()) - .visitorEnqueueAt(LocalDateTime.now()) + .visitorEnqueueAt(ZonedDateTime.now()) .orgUid(threadEntity.getOrgUid()) .build(); // @@ -132,7 +132,7 @@ public class QueueService { .workgroupQueue(workgroupQueue) .thread(threadEntity) .queueNumber(workgroupQueue.getNextNumber()) - .visitorEnqueueAt(LocalDateTime.now()) + .visitorEnqueueAt(ZonedDateTime.now()) .orgUid(threadEntity.getOrgUid()) .build(); // @@ -228,7 +228,7 @@ public class QueueService { // .workgroupQueue(workgroupQueue) // .thread(threadEntity) // .queueNumber(queue.getNextNumber()) - // .enqueueTime(LocalDateTime.now()) + // .enqueueTime(ZonedDateTime.now()) // .orgUid(threadEntity.getOrgUid()) // .build(); // // @@ -275,7 +275,7 @@ public class QueueService { // // // if (status == QueueStatusEnum.COMPLETED || // // // status == QueueStatusEnum.CANCELLED || // // // status == QueueStatusEnum.TIMEOUT) { - // // // queueItem.setEndTime(LocalDateTime.now()); + // // // queueItem.setEndTime(ZonedDateTime.now()); // // // } // // queueRepository.save(queueItem); // } @@ -309,7 +309,7 @@ public class QueueService { // // queueMemberRepository.findByStatus(QueueMemberStatusEnum.WAITING.name()); // // 2. 检查超时 - // // LocalDateTime now = LocalDateTime.now(); + // // ZonedDateTime now = ZonedDateTime.now(); // // for (QueueMemberEntity member : waitingMembers) { // // if (member.getEnqueueTime().plusMinutes(30).isBefore(now)) { // // member.updateStatus(QueueMemberStatusEnum.TIMEOUT.name(), null); diff --git a/modules/service/src/main/java/com/bytedesk/service/queue_member/QueueMemberEntity.java b/modules/service/src/main/java/com/bytedesk/service/queue_member/QueueMemberEntity.java index 3d1e135924..c9e56edc71 100644 --- a/modules/service/src/main/java/com/bytedesk/service/queue_member/QueueMemberEntity.java +++ b/modules/service/src/main/java/com/bytedesk/service/queue_member/QueueMemberEntity.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-10-14 17:23:58 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-05-29 16:48:44 + * @LastEditTime: 2025-07-03 12:06:16 * @Description: bytedesk.com https://github.com/Bytedesk/bytedesk * Please be aware of the BSL license restrictions before installing Bytedesk IM – * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. @@ -13,7 +13,8 @@ */ package com.bytedesk.service.queue_member; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; +import java.time.ZonedDateTime; import java.time.Duration; import com.bytedesk.core.base.BaseEntity; @@ -95,16 +96,16 @@ public class QueueMemberEntity extends BaseEntity { * 统计访客消息总数 */ @Builder.Default - private LocalDateTime visitorEnqueueAt = LocalDateTime.now(); // 加入时间 + private ZonedDateTime visitorEnqueueAt = ZonedDateTime.now(); // 加入时间 - private LocalDateTime visitorFirstMessageAt; // 访客首次发送消息时间 + private ZonedDateTime visitorFirstMessageAt; // 访客首次发送消息时间 - private LocalDateTime visitorLastMessageAt; // 访客最后发送消息时间 + private ZonedDateTime visitorLastMessageAt; // 访客最后发送消息时间 @Builder.Default private Integer visitorMessageCount = 0; // 访客消息数量 - private LocalDateTime visitorLeavedAt; // 离开时间 + private ZonedDateTime visitorLeavedAt; // 离开时间 @Builder.Default private Integer visitorPriority = 0; // 优先级(0-100) @@ -120,16 +121,16 @@ public class QueueMemberEntity extends BaseEntity { */ private String agentAcceptType ; // 接入方式:自动、手动,不设置默认 - private LocalDateTime agentAcceptedAt; // 开始服务时间 + private ZonedDateTime agentAcceptedAt; // 开始服务时间 @Builder.Default private Boolean agentFirstResponse = false; // 人工客服是否首次响应 - private LocalDateTime agentFirstResponseAt; // 首次响应时间 + private ZonedDateTime agentFirstResponseAt; // 首次响应时间 - private LocalDateTime agentLastResponseAt; // 最后响应时间 + private ZonedDateTime agentLastResponseAt; // 最后响应时间 - private LocalDateTime agentClosedAt; // 结束时间 + private ZonedDateTime agentClosedAt; // 结束时间 @Builder.Default @Column(name = "is_agent_close") @@ -149,7 +150,7 @@ public class QueueMemberEntity extends BaseEntity { @Builder.Default private Integer agentMessageCount = 0; // 客服消息数量 - private LocalDateTime agentTimeoutAt; // 人工对话超时时间 + private ZonedDateTime agentTimeoutAt; // 人工对话超时时间 @Builder.Default @Column(name = "is_agent_timeout") @@ -170,17 +171,17 @@ public class QueueMemberEntity extends BaseEntity { */ private String robotAcceptType ; // 接入方式:自动、手动,不设置默认 - private LocalDateTime robotAcceptedAt; // 开始服务时间 + private ZonedDateTime robotAcceptedAt; // 开始服务时间 @Builder.Default @Column(name = "is_robot_first_response") private Boolean robotFirstResponse = false; // 机器人客服是否首次响应 - private LocalDateTime robotFirstResponseAt; // 首次响应时间 + private ZonedDateTime robotFirstResponseAt; // 首次响应时间 - private LocalDateTime robotLastResponseAt; // 最后响应时间 + private ZonedDateTime robotLastResponseAt; // 最后响应时间 - private LocalDateTime robotClosedAt; // 结束时间 + private ZonedDateTime robotClosedAt; // 结束时间 @Builder.Default private Integer robotAvgResponseLength = 0; // 平均响应时间(秒) @@ -192,7 +193,7 @@ public class QueueMemberEntity extends BaseEntity { private Integer robotMessageCount = 0; // 客服消息数量 // 机器人对话超时时间 - private LocalDateTime robotTimeoutAt; + private ZonedDateTime robotTimeoutAt; @Builder.Default @Column(name = "is_robot_timeout") @@ -200,11 +201,11 @@ public class QueueMemberEntity extends BaseEntity { //------------------------------- - private LocalDateTime systemFirstResponseAt; // 系统首次响应时间 + private ZonedDateTime systemFirstResponseAt; // 系统首次响应时间 - private LocalDateTime systemLastResponseAt; // 系统最后响应时间 + private ZonedDateTime systemLastResponseAt; // 系统最后响应时间 - private LocalDateTime systemCloseAt; // 系统结束时间,即:autoCloseTime + private ZonedDateTime systemCloseAt; // 系统结束时间,即:autoCloseTime @Builder.Default @Column(name = "is_system_close") @@ -220,7 +221,7 @@ public class QueueMemberEntity extends BaseEntity { private Boolean rated = false; // 评分时间 - private LocalDateTime rateAt; // 评分时间 + private ZonedDateTime rateAt; // 评分时间 // 是否已解决 @Builder.Default @@ -232,7 +233,7 @@ public class QueueMemberEntity extends BaseEntity { @Column(name = "is_message_leave") private Boolean messageLeave = false; - private LocalDateTime messageLeaveAt; // 留言时间 + private ZonedDateTime messageLeaveAt; // 留言时间 // 直接在小结表里面根据threadUid查询是否已经小结 // 是否已经小结 @@ -272,7 +273,7 @@ public class QueueMemberEntity extends BaseEntity { private Boolean robotToAgent = false; // 机器人转人工时间 - private LocalDateTime robotToAgentAt; // 机器人转人工时间 + private ZonedDateTime robotToAgentAt; // 机器人转人工时间 // 人工转人工 @Builder.Default @@ -295,28 +296,28 @@ public class QueueMemberEntity extends BaseEntity { if (robotAcceptedAt != null) { return Duration.between(visitorEnqueueAt, robotAcceptedAt).getSeconds(); } - LocalDateTime endWaitLength = agentAcceptedAt != null ? agentAcceptedAt : LocalDateTime.now(); + ZonedDateTime endWaitLength = agentAcceptedAt != null ? agentAcceptedAt : ZonedDateTime.now(); return Duration.between(visitorEnqueueAt, endWaitLength).getSeconds(); } public void manualAcceptThread() { this.agentAcceptType = QueueMemberAcceptTypeEnum.MANUAL.name(); - this.agentAcceptedAt = LocalDateTime.now(); + this.agentAcceptedAt = ZonedDateTime.now(); } public void agentAutoAcceptThread() { this.agentAcceptType = QueueMemberAcceptTypeEnum.AUTO.name(); - this.agentAcceptedAt = LocalDateTime.now(); + this.agentAcceptedAt = ZonedDateTime.now(); } public void robotAutoAcceptThread() { this.robotAcceptType = QueueMemberAcceptTypeEnum.AUTO.name(); - this.robotAcceptedAt = LocalDateTime.now(); + this.robotAcceptedAt = ZonedDateTime.now(); } public void transferRobotToAgent() { this.robotToAgent = true; - this.robotToAgentAt = LocalDateTime.now(); + this.robotToAgentAt = ZonedDateTime.now(); } diff --git a/modules/service/src/main/java/com/bytedesk/service/queue_member/QueueMemberEventListener.java b/modules/service/src/main/java/com/bytedesk/service/queue_member/QueueMemberEventListener.java index 73a5486046..53ed938986 100644 --- a/modules/service/src/main/java/com/bytedesk/service/queue_member/QueueMemberEventListener.java +++ b/modules/service/src/main/java/com/bytedesk/service/queue_member/QueueMemberEventListener.java @@ -14,7 +14,7 @@ package com.bytedesk.service.queue_member; import java.time.Duration; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.Optional; import org.springframework.context.event.EventListener; @@ -116,7 +116,7 @@ public class QueueMemberEventListener { } QueueMemberEntity queueMember = queueMemberOpt.get(); - LocalDateTime now = LocalDateTime.now(); + ZonedDateTime now = ZonedDateTime.now(); // 更新首次消息时间(如果尚未设置) if (queueMember.getVisitorFirstMessageAt() == null) { @@ -161,7 +161,7 @@ public class QueueMemberEventListener { } QueueMemberEntity queueMember = queueMemberOpt.get(); - LocalDateTime now = LocalDateTime.now(); + ZonedDateTime now = ZonedDateTime.now(); // 更新客服消息计数 queueMember.setAgentMessageCount(queueMember.getAgentMessageCount() + 1); @@ -229,7 +229,7 @@ public class QueueMemberEventListener { } QueueMemberEntity queueMember = queueMemberOpt.get(); - LocalDateTime now = LocalDateTime.now(); + ZonedDateTime now = ZonedDateTime.now(); // 更新首次机器人消息时间(如果尚未设置) if (queueMember.getRobotFirstResponseAt() == null) { @@ -295,7 +295,7 @@ public class QueueMemberEventListener { } QueueMemberEntity queueMember = queueMemberOpt.get(); - LocalDateTime now = LocalDateTime.now(); + ZonedDateTime now = ZonedDateTime.now(); // 更新系统消息计数 queueMember.setSystemMessageCount(queueMember.getSystemMessageCount() + 1); diff --git a/modules/service/src/main/java/com/bytedesk/service/queue_member/QueueMemberExcel.java b/modules/service/src/main/java/com/bytedesk/service/queue_member/QueueMemberExcel.java index 782a1df36c..d53a67b9f3 100644 --- a/modules/service/src/main/java/com/bytedesk/service/queue_member/QueueMemberExcel.java +++ b/modules/service/src/main/java/com/bytedesk/service/queue_member/QueueMemberExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.service.queue_member; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -53,7 +53,7 @@ public class QueueMemberExcel extends BaseExcel { @ExcelProperty(value = "入队时间") @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ColumnWidth(25) - private LocalDateTime visitorEnqueueAt; + private ZonedDateTime visitorEnqueueAt; @ExcelProperty(value = "状态") @ColumnWidth(20) @@ -66,7 +66,7 @@ public class QueueMemberExcel extends BaseExcel { @ExcelProperty(value = "机器人接入时间") @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ColumnWidth(25) - private LocalDateTime robotAcceptedAt; + private ZonedDateTime robotAcceptedAt; @ExcelProperty(value = "机器人转人工") @ColumnWidth(20) @@ -75,7 +75,7 @@ public class QueueMemberExcel extends BaseExcel { @ExcelProperty(value = "转人工时间") @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ColumnWidth(25) - private LocalDateTime robotToAgentAt; + private ZonedDateTime robotToAgentAt; @ExcelProperty(value = "客服昵称") @ColumnWidth(20) @@ -92,7 +92,7 @@ public class QueueMemberExcel extends BaseExcel { @ExcelProperty(value = "接入时间") @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ColumnWidth(25) - private LocalDateTime agentAcceptedAt; + private ZonedDateTime agentAcceptedAt; @ExcelProperty(value = "是否已解决") @ColumnWidth(20) @@ -105,7 +105,7 @@ public class QueueMemberExcel extends BaseExcel { @ExcelProperty(value = "评分时间") @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ColumnWidth(25) - private LocalDateTime rateAt; + private ZonedDateTime rateAt; @ExcelProperty(value = "是否已小结") @ColumnWidth(20) @@ -130,7 +130,7 @@ public class QueueMemberExcel extends BaseExcel { // @ExcelProperty(value = "留言时间") // @DateTimeFormat("yyyy-MM-dd HH:mm:ss") // @ColumnWidth(25) - // private LocalDateTime messageLeaveAt; + // private ZonedDateTime messageLeaveAt; @ExcelProperty(value = "客户端") @ColumnWidth(20) diff --git a/modules/service/src/main/java/com/bytedesk/service/queue_member/QueueMemberRepository.java b/modules/service/src/main/java/com/bytedesk/service/queue_member/QueueMemberRepository.java index 21ad198011..cc87164c7a 100644 --- a/modules/service/src/main/java/com/bytedesk/service/queue_member/QueueMemberRepository.java +++ b/modules/service/src/main/java/com/bytedesk/service/queue_member/QueueMemberRepository.java @@ -20,7 +20,7 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import org.springframework.stereotype.Repository; @Repository @@ -28,9 +28,9 @@ public interface QueueMemberRepository extends JpaRepository findByUid(String uid); - List findByOrgUidAndCreatedAtBetweenAndResolved(String orgUid, LocalDateTime startTime, LocalDateTime endTime, boolean resolved); + List findByOrgUidAndCreatedAtBetweenAndResolved(String orgUid, ZonedDateTime startTime, ZonedDateTime endTime, boolean resolved); - List findByOrgUidAndCreatedAtBetweenAndAgentAcceptType(String orgUid, LocalDateTime startTime, LocalDateTime endTime, String acceptType); + List findByOrgUidAndCreatedAtBetweenAndAgentAcceptType(String orgUid, ZonedDateTime startTime, ZonedDateTime endTime, String acceptType); // 修改查询方法,使用 JPQL 通过关联的 Thread 实体的 uid 字段查询 @Query("SELECT qm FROM QueueMemberEntity qm WHERE qm.thread.uid = :threadUid") Optional findByThreadUid(@Param("threadUid") String threadUid); @@ -125,7 +125,7 @@ public interface QueueMemberRepository extends JpaRepository messageOptional = messageRestService.findLatestByThreadUid(savedThread.getUid()); // if (messageOptional.isPresent()) { // MessageEntity message = messageOptional.get(); - // if (message.getCreatedAt().isAfter(LocalDateTime.now().minusMinutes(30))) { + // if (message.getCreatedAt().isAfter(ZonedDateTime.now().minusMinutes(30))) { // // 距离当前时间不超过30分钟,则直接使用之前的消息 // // 部分用户测试的,离线状态收不到消息,以为是bug,其实不是,是离线状态不发送消息。防止此种情况,所以还是推送一下 // MessageProtobuf messageProtobuf = ServiceConvertUtils.convertToMessageProtobuf(message, savedThread); diff --git a/modules/service/src/main/java/com/bytedesk/service/routing_strategy/RobotThreadRoutingStrategy.java b/modules/service/src/main/java/com/bytedesk/service/routing_strategy/RobotThreadRoutingStrategy.java index a2b207b35f..39aa9803b2 100644 --- a/modules/service/src/main/java/com/bytedesk/service/routing_strategy/RobotThreadRoutingStrategy.java +++ b/modules/service/src/main/java/com/bytedesk/service/routing_strategy/RobotThreadRoutingStrategy.java @@ -123,7 +123,7 @@ public class RobotThreadRoutingStrategy implements ThreadRoutingStrategy { // Optional messageOptional = messageRestService.findLatestByThreadUid(savedThread.getUid()); // if (messageOptional.isPresent()) { // MessageEntity message = messageOptional.get(); - // if (message.getCreatedAt().isAfter(LocalDateTime.now().minusMinutes(30))) { + // if (message.getCreatedAt().isAfter(ZonedDateTime.now().minusMinutes(30))) { // // 距离当前时间不超过30分钟,则直接使用之前的消息 // // 部分用户测试的,离线状态收不到消息,以为是bug,其实不是,是离线状态不发送消息。防止此种情况,所以还是推送一下 // MessageProtobuf messageProtobuf = ServiceConvertUtils.convertToMessageProtobuf(message, savedThread); @@ -143,7 +143,7 @@ public class RobotThreadRoutingStrategy implements ThreadRoutingStrategy { // Optional messageOptional = messageRestService.findLatestByThreadUid(thread.getUid()); // if (messageOptional.isPresent()) { // MessageEntity message = messageOptional.get(); - // if (message.getCreatedAt().isAfter(LocalDateTime.now().minusMinutes(30))) { + // if (message.getCreatedAt().isAfter(ZonedDateTime.now().minusMinutes(30))) { // // 距离当前时间不超过30分钟,则直接使用之前的消息 // // 部分用户测试的,离线状态收不到消息,以为是bug,其实不是,是离线状态不发送消息。防止此种情况,所以还是推送一下 // MessageProtobuf messageProtobuf = ServiceConvertUtils.convertToMessageProtobuf(message, thread); diff --git a/modules/service/src/main/java/com/bytedesk/service/routing_strategy/WorkgroupThreadRoutingStrategy.java b/modules/service/src/main/java/com/bytedesk/service/routing_strategy/WorkgroupThreadRoutingStrategy.java index a7a7e7872f..0a47418b1f 100644 --- a/modules/service/src/main/java/com/bytedesk/service/routing_strategy/WorkgroupThreadRoutingStrategy.java +++ b/modules/service/src/main/java/com/bytedesk/service/routing_strategy/WorkgroupThreadRoutingStrategy.java @@ -395,7 +395,7 @@ public class WorkgroupThreadRoutingStrategy implements ThreadRoutingStrategy { // Optional messageOptional = messageRestService.findByThreadUidAndTypeAndUserContains(savedThread.getUid(), MessageTypeEnum.WELCOME.name(), robotEntity.getUid()); // if (messageOptional.isPresent()) { // MessageEntity message = messageOptional.get(); - // if (message.getCreatedAt().isAfter(LocalDateTime.now().minusMinutes(30))) { + // if (message.getCreatedAt().isAfter(ZonedDateTime.now().minusMinutes(30))) { // // 距离当前时间不超过30分钟,则直接使用之前的消息 // // 部分用户测试的,离线状态收不到消息,以为是bug,其实不是,是离线状态不发送消息。防止此种情况,所以还是推送一下 // MessageProtobuf messageProtobuf = ServiceConvertUtils.convertToMessageProtobuf(message, savedThread); @@ -415,7 +415,7 @@ public class WorkgroupThreadRoutingStrategy implements ThreadRoutingStrategy { // Optional messageOptional = messageRestService.findLatestByThreadUid(thread.getUid()); // if (messageOptional.isPresent()) { // MessageEntity message = messageOptional.get(); - // if (message.getCreatedAt().isAfter(LocalDateTime.now().minusMinutes(30))) { + // if (message.getCreatedAt().isAfter(ZonedDateTime.now().minusMinutes(30))) { // // 距离当前时间不超过30分钟,则直接使用之前的消息 // // 部分用户测试的,离线状态收不到消息,以为是bug,其实不是,是离线状态不发送消息。防止此种情况,所以还是推送一下 // MessageProtobuf messageProtobuf = ServiceConvertUtils.convertToMessageProtobuf(message, thread); diff --git a/modules/service/src/main/java/com/bytedesk/service/template/TemplateExcel.java b/modules/service/src/main/java/com/bytedesk/service/template/TemplateExcel.java index 0033617fca..d10048cd2d 100644 --- a/modules/service/src/main/java/com/bytedesk/service/template/TemplateExcel.java +++ b/modules/service/src/main/java/com/bytedesk/service/template/TemplateExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.service.template; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -42,11 +42,11 @@ public class TemplateExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "创建时间") @ColumnWidth(25) - private LocalDateTime createdAt; + private ZonedDateTime createdAt; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "修改时间") @ColumnWidth(25) - private LocalDateTime updatedAt; + private ZonedDateTime updatedAt; } diff --git a/modules/service/src/main/java/com/bytedesk/service/utils/ThreadMessageUtil.java b/modules/service/src/main/java/com/bytedesk/service/utils/ThreadMessageUtil.java index fc24f60746..ad82f58b62 100644 --- a/modules/service/src/main/java/com/bytedesk/service/utils/ThreadMessageUtil.java +++ b/modules/service/src/main/java/com/bytedesk/service/utils/ThreadMessageUtil.java @@ -29,7 +29,7 @@ import com.bytedesk.kbase.settings.ServiceSettings; import com.bytedesk.kbase.settings.ServiceTrigger; import com.bytedesk.service.agent.AgentEntity; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; // 可以根据需要选择是否使用 @Component 注解 // 如果该方法不需要被Spring容器管理,则不需要此注解 @@ -46,8 +46,8 @@ public class ThreadMessageUtil { .client(ClientEnum.SYSTEM.name()) .user(thread.getAgent()) .orgUid(thread.getOrgUid()) - .createdAt(LocalDateTime.now()) - .updatedAt(LocalDateTime.now()) + .createdAt(ZonedDateTime.now()) + .updatedAt(ZonedDateTime.now()) .thread(thread) .extra(extra.toJson()) .build(); @@ -69,8 +69,8 @@ public class ThreadMessageUtil { .user(thread.getRobot()) .orgUid(thread.getOrgUid()) .extra(extra.toJson()) - .createdAt(LocalDateTime.now()) - .updatedAt(LocalDateTime.now()) + .createdAt(ZonedDateTime.now()) + .updatedAt(ZonedDateTime.now()) .build(); // return message; @@ -89,8 +89,8 @@ public class ThreadMessageUtil { .client(ClientEnum.SYSTEM.name()) .user(thread.getAgent()) .orgUid(thread.getOrgUid()) - .createdAt(LocalDateTime.now()) - .updatedAt(LocalDateTime.now()) + .createdAt(ZonedDateTime.now()) + .updatedAt(ZonedDateTime.now()) .thread(thread) .extra(extra.toJson()) .build(); @@ -111,8 +111,8 @@ public class ThreadMessageUtil { .client(ClientEnum.SYSTEM.name()) .user(system.toJson()) .orgUid(thread.getOrgUid()) - .createdAt(LocalDateTime.now()) - .updatedAt(LocalDateTime.now()) + .createdAt(ZonedDateTime.now()) + .updatedAt(ZonedDateTime.now()) // .threadUid(thread.getUid()) // .topic(thread.getTopic()) .thread(thread) @@ -133,8 +133,8 @@ public class ThreadMessageUtil { .client(ClientEnum.SYSTEM.name()) .user(user.toJson()) .orgUid(thread.getOrgUid()) - .createdAt(LocalDateTime.now()) - .updatedAt(LocalDateTime.now()) + .createdAt(ZonedDateTime.now()) + .updatedAt(ZonedDateTime.now()) // .threadUid(thread.getUid()) // .topic(thread.getTopic()) .thread(thread) @@ -155,8 +155,8 @@ public class ThreadMessageUtil { .client(ClientEnum.SYSTEM.name()) .user(user.toJson()) .orgUid(thread.getOrgUid()) - .createdAt(LocalDateTime.now()) - .updatedAt(LocalDateTime.now()) + .createdAt(ZonedDateTime.now()) + .updatedAt(ZonedDateTime.now()) // .threadUid(thread.getUid()) // .topic(thread.getTopic()) .thread(thread) @@ -179,8 +179,8 @@ public class ThreadMessageUtil { .client(ClientEnum.SYSTEM.name()) .user(system.toJson()) .orgUid(thread.getOrgUid()) - .createdAt(LocalDateTime.now()) - .updatedAt(LocalDateTime.now()) + .createdAt(ZonedDateTime.now()) + .updatedAt(ZonedDateTime.now()) // .threadUid(thread.getUid()) // .topic(thread.getTopic()) .thread(thread) @@ -203,8 +203,8 @@ public class ThreadMessageUtil { .client(ClientEnum.SYSTEM.name()) .user(system.toJson()) .orgUid(thread.getOrgUid()) - .createdAt(LocalDateTime.now()) - .updatedAt(LocalDateTime.now()) + .createdAt(ZonedDateTime.now()) + .updatedAt(ZonedDateTime.now()) // .threadUid(thread.getUid()) // .topic(thread.getTopic()) .thread(thread) diff --git a/modules/service/src/main/java/com/bytedesk/service/visitor/VisitorEventListener.java b/modules/service/src/main/java/com/bytedesk/service/visitor/VisitorEventListener.java index cddf7ec8e8..e905afa714 100644 --- a/modules/service/src/main/java/com/bytedesk/service/visitor/VisitorEventListener.java +++ b/modules/service/src/main/java/com/bytedesk/service/visitor/VisitorEventListener.java @@ -14,7 +14,7 @@ package com.bytedesk.service.visitor; import java.time.Duration; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.Optional; @@ -77,7 +77,7 @@ public class VisitorEventListener { visitorList.forEach(visitor -> { // log.info("visitor: {}", visitor.getUid()); // 使用Duration计算时间差 - if (Duration.between(visitor.getUpdatedAt(), LocalDateTime.now()).toMillis() > 5 * 60 * 1000) { + if (Duration.between(visitor.getUpdatedAt(), ZonedDateTime.now()).toMillis() > 5 * 60 * 1000) { // if (System.currentTimeMillis() - visitor.getUpdatedAt().getTime() > 5 * 60 * // 1000) { // log.info("visitor: {} offline", visitor.getUid()); @@ -90,7 +90,7 @@ public class VisitorEventListener { public void onQuartzDay0Event(QuartzDay0Event event) { log.info("visitor quartz day 0 event"); // 每天0点,检查到期的黑名单,并清理 - ipBlacklistRestService.findByEndTimeBefore(LocalDateTime.now()).forEach(ipBlacklist -> { + ipBlacklistRestService.findByEndTimeBefore(ZonedDateTime.now()).forEach(ipBlacklist -> { // 修改访客状态 visitorRestService.updateStatus(ipBlacklist.getBlackUid(), VisitorStatusEnum.OFFLINE.name()); // 删除黑名单 diff --git a/modules/service/src/main/java/com/bytedesk/service/visitor/VisitorExcel.java b/modules/service/src/main/java/com/bytedesk/service/visitor/VisitorExcel.java index 9dbe81a7f3..e19226d6bf 100644 --- a/modules/service/src/main/java/com/bytedesk/service/visitor/VisitorExcel.java +++ b/modules/service/src/main/java/com/bytedesk/service/visitor/VisitorExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.service.visitor; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -86,5 +86,5 @@ public class VisitorExcel extends BaseExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "创建时间") @ColumnWidth(25) - private LocalDateTime createdAt; + private ZonedDateTime createdAt; } diff --git a/modules/service/src/main/java/com/bytedesk/service/visitor/VisitorResponse.java b/modules/service/src/main/java/com/bytedesk/service/visitor/VisitorResponse.java index 0b9f01464c..d9aa326d5c 100644 --- a/modules/service/src/main/java/com/bytedesk/service/visitor/VisitorResponse.java +++ b/modules/service/src/main/java/com/bytedesk/service/visitor/VisitorResponse.java @@ -64,7 +64,7 @@ public class VisitorResponse extends BaseResponse { // private String client; private ClientEnum client; - // private LocalDateTime updatedAt; + // private ZonedDateTime updatedAt; private String status; diff --git a/modules/service/src/main/java/com/bytedesk/service/visitor_thread/VisitorThreadEventListener.java b/modules/service/src/main/java/com/bytedesk/service/visitor_thread/VisitorThreadEventListener.java index 0020e15098..c4ae59b097 100644 --- a/modules/service/src/main/java/com/bytedesk/service/visitor_thread/VisitorThreadEventListener.java +++ b/modules/service/src/main/java/com/bytedesk/service/visitor_thread/VisitorThreadEventListener.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-06-29 13:00:33 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-05-21 15:28:38 + * @LastEditTime: 2025-07-03 12:14:47 * @Description: bytedesk.com https://github.com/Bytedesk/bytedesk * Please be aware of the BSL license restrictions before installing Bytedesk IM – * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. @@ -13,7 +13,7 @@ */ package com.bytedesk.service.visitor_thread; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.time.ZoneId; import java.util.List; import java.util.Optional; @@ -74,7 +74,7 @@ public class VisitorThreadEventListener { Optional queueMemberOptional = queueMemberRestService.findByThreadUid(thread.getUid()); if (queueMemberOptional.isPresent()) { QueueMemberEntity queueMember = queueMemberOptional.get(); - queueMember.setSystemCloseAt(LocalDateTime.now()); + queueMember.setSystemCloseAt(ZonedDateTime.now()); queueMember.setSystemClose(true); queueMemberRestService.save(queueMember); if (queueMember.getAgentOffline()) { @@ -116,7 +116,7 @@ public class VisitorThreadEventListener { Optional queueMemberOptional = queueMemberRestService.findByThreadUid(thread.getUid()); if (queueMemberOptional.isPresent()) { QueueMemberEntity queueMember = queueMemberOptional.get(); - queueMember.setAgentClosedAt(LocalDateTime.now()); + queueMember.setAgentClosedAt(ZonedDateTime.now()); queueMember.setAgentClose(true); queueMemberRestService.save(queueMember); } @@ -158,13 +158,12 @@ public class VisitorThreadEventListener { // 触发器逻辑 // 查找所有未关闭的会话,如果超过一定时间未回复,则判断是否触发自动回复 threads.forEach(thread -> { - // LocalDateTime转为时间戳需借助ZoneId和系统默认时区 + // Convert ZonedDateTime to timestamp using ZoneId and system default timezone long currentTimeMillis = System.currentTimeMillis(); - long updatedAtMillis = thread.getUpdatedAt().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); + long updatedAtMillis = thread.getUpdatedAt().toInstant().toEpochMilli(); long diffInMilliseconds = Math.abs(currentTimeMillis - updatedAtMillis); - // 转换为分钟 + // Convert to seconds long diffInSeconds = TimeUnit.MILLISECONDS.toSeconds(diffInMilliseconds); - // String topic = thread.getTopic(); // log.info("visitor_thread quartz one min event thread: " + thread.getUid()); if (thread.getType().equals(ThreadTypeEnum.WORKGROUP.name())) { diff --git a/modules/service/src/main/java/com/bytedesk/service/visitor_thread/VisitorThreadResponse.java b/modules/service/src/main/java/com/bytedesk/service/visitor_thread/VisitorThreadResponse.java index 49c1d8c878..ae8f840d47 100644 --- a/modules/service/src/main/java/com/bytedesk/service/visitor_thread/VisitorThreadResponse.java +++ b/modules/service/src/main/java/com/bytedesk/service/visitor_thread/VisitorThreadResponse.java @@ -39,7 +39,7 @@ public class VisitorThreadResponse extends BaseResponse { // private String extra; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; // private UserProtobuf user; diff --git a/modules/service/src/main/java/com/bytedesk/service/visitor_thread/VisitorThreadService.java b/modules/service/src/main/java/com/bytedesk/service/visitor_thread/VisitorThreadService.java index c95ec65015..223c2e8b66 100644 --- a/modules/service/src/main/java/com/bytedesk/service/visitor_thread/VisitorThreadService.java +++ b/modules/service/src/main/java/com/bytedesk/service/visitor_thread/VisitorThreadService.java @@ -13,7 +13,7 @@ */ package com.bytedesk.service.visitor_thread; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.time.ZoneId; import java.util.List; import java.util.Optional; @@ -297,9 +297,9 @@ public class VisitorThreadService public void autoRemindAgentOrCloseThread(List threads) { // log.info("autoCloseThread size {}", threads.size()); threads.forEach(thread -> { - // LocalDateTime转为时间戳需借助ZoneId和系统默认时区 + // ZonedDateTime转为时间戳需借助ZoneId和系统默认时区 long currentTimeMillis = System.currentTimeMillis(); - long updatedAtMillis = thread.getUpdatedAt().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); + long updatedAtMillis = thread.getUpdatedAt().toInstant().toEpochMilli(); long diffInMilliseconds = Math.abs(currentTimeMillis - updatedAtMillis); // 转换为分钟 long diffInMinutes = TimeUnit.MILLISECONDS.toMinutes(diffInMilliseconds); @@ -354,7 +354,7 @@ public class VisitorThreadService private void sendRemindMessage(QueueMemberEntity queueMember, ThreadEntity thread, AgentEntity agent) { // 只设置首次超时时间,后续不再更新 if (queueMember.getAgentTimeoutAt() == null) { - queueMember.setAgentTimeoutAt(LocalDateTime.now()); + queueMember.setAgentTimeoutAt(ZonedDateTime.now()); queueMember.setAgentTimeout(true); } // 更新超时次数 diff --git a/modules/service/src/main/java/com/bytedesk/service/worktime/settings/WorktimeSettingResponse.java b/modules/service/src/main/java/com/bytedesk/service/worktime/settings/WorktimeSettingResponse.java index d7ca24dc8f..935994b77f 100644 --- a/modules/service/src/main/java/com/bytedesk/service/worktime/settings/WorktimeSettingResponse.java +++ b/modules/service/src/main/java/com/bytedesk/service/worktime/settings/WorktimeSettingResponse.java @@ -41,5 +41,5 @@ public class WorktimeSettingResponse extends BaseResponse { private Integer order; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; } diff --git a/modules/ticket/src/main/java/com/bytedesk/ticket/process/TicketProcessResponse.java b/modules/ticket/src/main/java/com/bytedesk/ticket/process/TicketProcessResponse.java index 8c0b914d86..964bf42aa5 100644 --- a/modules/ticket/src/main/java/com/bytedesk/ticket/process/TicketProcessResponse.java +++ b/modules/ticket/src/main/java/com/bytedesk/ticket/process/TicketProcessResponse.java @@ -50,7 +50,7 @@ public class TicketProcessResponse extends BaseResponse { private String orgUid; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; - // private LocalDateTime updatedAt; + // private ZonedDateTime updatedAt; } diff --git a/modules/ticket/src/main/java/com/bytedesk/ticket/thread/delegate/ThreadHumanIdleTimeoutServiceDelegate.java b/modules/ticket/src/main/java/com/bytedesk/ticket/thread/delegate/ThreadHumanIdleTimeoutServiceDelegate.java index f7d6d5c658..c794bdf34c 100644 --- a/modules/ticket/src/main/java/com/bytedesk/ticket/thread/delegate/ThreadHumanIdleTimeoutServiceDelegate.java +++ b/modules/ticket/src/main/java/com/bytedesk/ticket/thread/delegate/ThreadHumanIdleTimeoutServiceDelegate.java @@ -13,7 +13,7 @@ */ package com.bytedesk.ticket.thread.delegate; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.Optional; import java.util.Date; @@ -120,7 +120,7 @@ public class ThreadHumanIdleTimeoutServiceDelegate implements JavaDelegate { QueueMemberEntity queueMember = optionalQueueMember.get(); // 设置人工客服超时时间和超时标志 - queueMember.setAgentTimeoutAt(LocalDateTime.now()); + queueMember.setAgentTimeoutAt(ZonedDateTime.now()); queueMember.setAgentTimeout(true); // 保存更新 diff --git a/modules/ticket/src/main/java/com/bytedesk/ticket/thread/delegate/ThreadRobotIdleTimeoutServiceDelegate.java b/modules/ticket/src/main/java/com/bytedesk/ticket/thread/delegate/ThreadRobotIdleTimeoutServiceDelegate.java index e7ef303465..8b6fc6346e 100644 --- a/modules/ticket/src/main/java/com/bytedesk/ticket/thread/delegate/ThreadRobotIdleTimeoutServiceDelegate.java +++ b/modules/ticket/src/main/java/com/bytedesk/ticket/thread/delegate/ThreadRobotIdleTimeoutServiceDelegate.java @@ -13,7 +13,7 @@ */ package com.bytedesk.ticket.thread.delegate; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.Optional; import java.util.Date; @@ -118,7 +118,7 @@ public class ThreadRobotIdleTimeoutServiceDelegate implements JavaDelegate { QueueMemberEntity queueMember = optionalQueueMember.get(); // 设置机器人超时时间和超时标志 - queueMember.setRobotTimeoutAt(LocalDateTime.now()); + queueMember.setRobotTimeoutAt(ZonedDateTime.now()); queueMember.setRobotTimeout(true); // 保存更新 diff --git a/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/TicketEntity.java b/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/TicketEntity.java index 4f9d881a64..d5c54c38eb 100644 --- a/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/TicketEntity.java +++ b/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/TicketEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.ticket.ticket; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.Set; @@ -119,10 +119,10 @@ public class TicketEntity extends BaseEntity { private Boolean verified = false; // 解决时间 - private LocalDateTime resolvedTime; + private ZonedDateTime resolvedTime; // 关闭时间 - private LocalDateTime closedTime; + private ZonedDateTime closedTime; // 工单会话client private String client; diff --git a/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/TicketRepository.java b/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/TicketRepository.java index 85c54b2305..ec908f0e54 100644 --- a/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/TicketRepository.java +++ b/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/TicketRepository.java @@ -13,7 +13,7 @@ */ package com.bytedesk.ticket.ticket; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.Optional; @@ -27,17 +27,17 @@ public interface TicketRepository extends JpaRepository, Jpa Optional findByProcessInstanceId(String processInstanceId); List findByWorkgroupUidContainingAndCreatedAtBetween( - String workgroupUid, LocalDateTime startTime, LocalDateTime endTime); + String workgroupUid, ZonedDateTime startTime, ZonedDateTime endTime); List findByDepartmentUidAndCreatedAtBetween( - String departmentUid, LocalDateTime startTime, LocalDateTime endTime); + String departmentUid, ZonedDateTime startTime, ZonedDateTime endTime); List findByAssigneeContainingAndCreatedAtBetween( - String assigneeUid, LocalDateTime startTime, LocalDateTime endTime); + String assigneeUid, ZonedDateTime startTime, ZonedDateTime endTime); // orgUid, startTime, endTime List findByOrgUidAndCreatedAtBetween( - String orgUid, LocalDateTime startTime, LocalDateTime endTime); + String orgUid, ZonedDateTime startTime, ZonedDateTime endTime); long countByStatus(String status); long countByStatusNot(String status); diff --git a/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/TicketService.java b/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/TicketService.java index 1776e4b28b..72b80fc59d 100644 --- a/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/TicketService.java +++ b/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/TicketService.java @@ -49,7 +49,7 @@ import java.util.Optional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Comparator; import java.util.stream.Collectors; @@ -723,7 +723,7 @@ public class TicketService { // 7. 更新工单状态 ticket.setStatus(TicketStatusEnum.RESOLVED.name()); - ticket.setResolvedTime(LocalDateTime.now()); + ticket.setResolvedTime(ZonedDateTime.now()); ticketRestService.save(ticket); return TicketConvertUtils.convertToResponse(ticket); @@ -795,7 +795,7 @@ public class TicketService { if (request.getVerified()) { ticket.setStatus(TicketStatusEnum.VERIFIED_OK.name()); ticket.setVerified(true); - ticket.setClosedTime(LocalDateTime.now()); + ticket.setClosedTime(ZonedDateTime.now()); } else { ticket.setStatus(TicketStatusEnum.REOPENED.name()); ticket.setVerified(false); @@ -860,7 +860,7 @@ public class TicketService { // 5. 更新工单状态 ticket.setStatus(TicketStatusEnum.CLOSED.name()); - ticket.setClosedTime(LocalDateTime.now()); // 添加关闭时间记录 + ticket.setClosedTime(ZonedDateTime.now()); // 添加关闭时间记录 ticketRestService.save(ticket); return TicketConvertUtils.convertToResponse(ticket); diff --git a/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/TicketSpecification.java b/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/TicketSpecification.java index 68b4d3a0dd..8059b4989f 100644 --- a/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/TicketSpecification.java +++ b/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/TicketSpecification.java @@ -13,7 +13,7 @@ */ package com.bytedesk.ticket.ticket; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; @@ -123,12 +123,12 @@ public class TicketSpecification extends BaseSpecification { // 处理日期范围查询 if (StringUtils.hasText(request.getStartDate())) { - LocalDateTime startDate = LocalDateTime.parse(request.getStartDate(), formatter); + ZonedDateTime startDate = ZonedDateTime.parse(request.getStartDate(), formatter); predicates.add(criteriaBuilder.greaterThanOrEqualTo(root.get("createdAt"), startDate)); } if (StringUtils.hasText(request.getEndDate())) { - LocalDateTime endDate = LocalDateTime.parse(request.getEndDate(), formatter); + ZonedDateTime endDate = ZonedDateTime.parse(request.getEndDate(), formatter); predicates.add(criteriaBuilder.lessThanOrEqualTo(root.get("createdAt"), endDate)); } diff --git a/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/delegate/TicketAutoCloseDelegate.java b/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/delegate/TicketAutoCloseDelegate.java index cad58c15ab..1083311546 100644 --- a/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/delegate/TicketAutoCloseDelegate.java +++ b/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/delegate/TicketAutoCloseDelegate.java @@ -19,7 +19,7 @@ import org.springframework.stereotype.Component; import com.bytedesk.ticket.ticket.TicketEntity; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; @Component public class TicketAutoCloseDelegate implements JavaDelegate { @@ -28,6 +28,6 @@ public class TicketAutoCloseDelegate implements JavaDelegate { public void execute(DelegateExecution execution) { TicketEntity ticket = (TicketEntity) execution.getVariable("ticket"); ticket.setStatus("已自动关闭"); - ticket.setUpdatedAt(LocalDateTime.now()); + ticket.setUpdatedAt(ZonedDateTime.now()); } } \ No newline at end of file diff --git a/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/delegate/TicketCloseDelegate.java b/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/delegate/TicketCloseDelegate.java index 89d998ef65..894b3c6063 100644 --- a/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/delegate/TicketCloseDelegate.java +++ b/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/delegate/TicketCloseDelegate.java @@ -21,7 +21,7 @@ import org.springframework.stereotype.Component; import com.bytedesk.ticket.service.TicketNotificationService; import com.bytedesk.ticket.ticket.TicketEntity; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; @Component public class TicketCloseDelegate implements JavaDelegate { @@ -33,7 +33,7 @@ public class TicketCloseDelegate implements JavaDelegate { public void execute(DelegateExecution execution) { TicketEntity ticket = (TicketEntity) execution.getVariable("ticket"); ticket.setStatus("已关闭"); - ticket.setUpdatedAt(LocalDateTime.now()); + ticket.setUpdatedAt(ZonedDateTime.now()); // 发送通知 notificationService.notifyTicketClosed(ticket); diff --git a/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/sla/TicketSLAService.java b/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/sla/TicketSLAService.java index 1ebce68c02..2f6e7a29ad 100644 --- a/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/sla/TicketSLAService.java +++ b/modules/ticket/src/main/java/com/bytedesk/ticket/ticket/sla/TicketSLAService.java @@ -22,7 +22,7 @@ import com.bytedesk.ticket.ticket.TicketEntity; import org.flowable.dmn.api.DmnDecisionService; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.time.temporal.ChronoUnit; import java.util.HashMap; import java.util.Map; @@ -57,8 +57,8 @@ public class TicketSLAService { public Boolean isSLABreached(TicketEntity ticket) { Map sla = determineSLA(ticket.getCategoryUid(), ticket.getPriority()); - LocalDateTime now = LocalDateTime.now(); - LocalDateTime createdAt = ticket.getCreatedAt(); + ZonedDateTime now = ZonedDateTime.now(); + ZonedDateTime createdAt = ticket.getCreatedAt(); // 检查响应时间 // if (ticket.getFirstResponseTime() == null) { @@ -86,7 +86,7 @@ public class TicketSLAService { */ public void recordFirstResponse(TicketEntity ticket) { // if (ticket.getFirstResponseTime() == null) { - // ticket.setFirstResponseTime(LocalDateTime.now()); + // ticket.setFirstResponseTime(ZonedDateTime.now()); // ticketRepository.save(ticket); // } } diff --git a/modules/voc/src/main/java/com/bytedesk/voc/feedback/dto/FeedbackResponse.java b/modules/voc/src/main/java/com/bytedesk/voc/feedback/dto/FeedbackResponse.java index feafdd59a0..7525e1f1f6 100644 --- a/modules/voc/src/main/java/com/bytedesk/voc/feedback/dto/FeedbackResponse.java +++ b/modules/voc/src/main/java/com/bytedesk/voc/feedback/dto/FeedbackResponse.java @@ -1,6 +1,6 @@ package com.bytedesk.voc.feedback.dto; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import lombok.Data; @Data @@ -13,6 +13,6 @@ public class FeedbackResponse { private Long assignedTo; private Integer replyCount; private Integer likeCount; - private LocalDateTime createdAt; - private LocalDateTime updatedAt; + private ZonedDateTime createdAt; + private ZonedDateTime updatedAt; } \ No newline at end of file diff --git a/modules/voc/src/main/java/com/bytedesk/voc/feedback/stats/FeedbackStatsController.java b/modules/voc/src/main/java/com/bytedesk/voc/feedback/stats/FeedbackStatsController.java index 595f17cca3..7795c6d20f 100644 --- a/modules/voc/src/main/java/com/bytedesk/voc/feedback/stats/FeedbackStatsController.java +++ b/modules/voc/src/main/java/com/bytedesk/voc/feedback/stats/FeedbackStatsController.java @@ -1,6 +1,6 @@ package com.bytedesk.voc.feedback.stats; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; @@ -24,29 +24,29 @@ public class FeedbackStatsController { @GetMapping("/overall") public ResponseEntity getOverallStats( - @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime startTime, - @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime endTime) { + @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) ZonedDateTime startTime, + @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) ZonedDateTime endTime) { return ResponseEntity.ok(statsService.getOverallStats(startTime, endTime)); } @GetMapping("/type-distribution") public ResponseEntity> getTypeDistribution( - @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime startTime, - @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime endTime) { + @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) ZonedDateTime startTime, + @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) ZonedDateTime endTime) { return ResponseEntity.ok(statsService.getTypeDistribution(startTime, endTime)); } @GetMapping("/status-distribution") public ResponseEntity> getStatusDistribution( - @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime startTime, - @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime endTime) { + @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) ZonedDateTime startTime, + @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) ZonedDateTime endTime) { return ResponseEntity.ok(statsService.getStatusDistribution(startTime, endTime)); } @GetMapping("/response-time-trend") public ResponseEntity> getResponseTimeTrend( - @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime startTime, - @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime endTime) { + @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) ZonedDateTime startTime, + @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) ZonedDateTime endTime) { return ResponseEntity.ok(statsService.getResponseTimeTrend(startTime, endTime)); } } \ No newline at end of file diff --git a/modules/voc/src/main/java/com/bytedesk/voc/feedback/stats/FeedbackStatsService.java b/modules/voc/src/main/java/com/bytedesk/voc/feedback/stats/FeedbackStatsService.java index 30f25ec380..1783ca0c38 100644 --- a/modules/voc/src/main/java/com/bytedesk/voc/feedback/stats/FeedbackStatsService.java +++ b/modules/voc/src/main/java/com/bytedesk/voc/feedback/stats/FeedbackStatsService.java @@ -1,6 +1,6 @@ package com.bytedesk.voc.feedback.stats; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.Map; import com.bytedesk.voc.feedback.dto.FeedbackStats; @@ -8,20 +8,20 @@ import com.bytedesk.voc.feedback.dto.FeedbackStats; public interface FeedbackStatsService { // 获取总体统计 - FeedbackStats getOverallStats(LocalDateTime startTime, LocalDateTime endTime); + FeedbackStats getOverallStats(ZonedDateTime startTime, ZonedDateTime endTime); // 获取用户统计 - FeedbackStats getUserStats(Long userId, LocalDateTime startTime, LocalDateTime endTime); + FeedbackStats getUserStats(Long userId, ZonedDateTime startTime, ZonedDateTime endTime); // 获取类型分布 - Map getTypeDistribution(LocalDateTime startTime, LocalDateTime endTime); + Map getTypeDistribution(ZonedDateTime startTime, ZonedDateTime endTime); // 获取状态分布 - Map getStatusDistribution(LocalDateTime startTime, LocalDateTime endTime); + Map getStatusDistribution(ZonedDateTime startTime, ZonedDateTime endTime); // 获取响应时间趋势 - Map getResponseTimeTrend(LocalDateTime startTime, LocalDateTime endTime); + Map getResponseTimeTrend(ZonedDateTime startTime, ZonedDateTime endTime); // 导出统计报告 - byte[] exportStatsReport(LocalDateTime startTime, LocalDateTime endTime, String format); + byte[] exportStatsReport(ZonedDateTime startTime, ZonedDateTime endTime, String format); } \ No newline at end of file diff --git a/modules/voc/src/main/java/com/bytedesk/voc/feedback/stats/FeedbackStatsServiceImpl.java b/modules/voc/src/main/java/com/bytedesk/voc/feedback/stats/FeedbackStatsServiceImpl.java index a54d38473f..94ca0d062d 100644 --- a/modules/voc/src/main/java/com/bytedesk/voc/feedback/stats/FeedbackStatsServiceImpl.java +++ b/modules/voc/src/main/java/com/bytedesk/voc/feedback/stats/FeedbackStatsServiceImpl.java @@ -1,6 +1,6 @@ package com.bytedesk.voc.feedback.stats; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.Map; import java.util.stream.Collectors; @@ -20,7 +20,7 @@ public class FeedbackStatsServiceImpl implements FeedbackStatsService { private JdbcTemplate jdbcTemplate; @Override - public FeedbackStats getOverallStats(LocalDateTime startTime, LocalDateTime endTime) { + public FeedbackStats getOverallStats(ZonedDateTime startTime, ZonedDateTime endTime) { FeedbackStats stats = new FeedbackStats(); // 获取总数 @@ -43,7 +43,7 @@ public class FeedbackStatsServiceImpl implements FeedbackStatsService { } @Override - public FeedbackStats getUserStats(Long userId, LocalDateTime startTime, LocalDateTime endTime) { + public FeedbackStats getUserStats(Long userId, ZonedDateTime startTime, ZonedDateTime endTime) { FeedbackStats stats = new FeedbackStats(); // 获取用户反馈总数 @@ -62,7 +62,7 @@ public class FeedbackStatsServiceImpl implements FeedbackStatsService { } @Override - public Map getTypeDistribution(LocalDateTime startTime, LocalDateTime endTime) { + public Map getTypeDistribution(ZonedDateTime startTime, ZonedDateTime endTime) { String sql = """ SELECT type, COUNT(*) as count FROM bytedesk_voc_feedback @@ -78,7 +78,7 @@ public class FeedbackStatsServiceImpl implements FeedbackStatsService { } @Override - public Map getStatusDistribution(LocalDateTime startTime, LocalDateTime endTime) { + public Map getStatusDistribution(ZonedDateTime startTime, ZonedDateTime endTime) { String sql = """ SELECT status, COUNT(*) as count FROM bytedesk_voc_feedback @@ -94,7 +94,7 @@ public class FeedbackStatsServiceImpl implements FeedbackStatsService { } @Override - public Map getResponseTimeTrend(LocalDateTime startTime, LocalDateTime endTime) { + public Map getResponseTimeTrend(ZonedDateTime startTime, ZonedDateTime endTime) { String sql = """ SELECT DATE(created_at) as date, @@ -116,7 +116,7 @@ public class FeedbackStatsServiceImpl implements FeedbackStatsService { } @Override - public byte[] exportStatsReport(LocalDateTime startTime, LocalDateTime endTime, String format) { + public byte[] exportStatsReport(ZonedDateTime startTime, ZonedDateTime endTime, String format) { // 获取统计数据 FeedbackStats stats = getOverallStats(startTime, endTime); Map typeDistribution = getTypeDistribution(startTime, endTime); @@ -145,7 +145,7 @@ public class FeedbackStatsServiceImpl implements FeedbackStatsService { return new byte[0]; } - private Long getTotalCount(LocalDateTime startTime, LocalDateTime endTime) { + private Long getTotalCount(ZonedDateTime startTime, ZonedDateTime endTime) { return jdbcTemplate.queryForObject( "SELECT COUNT(*) FROM bytedesk_voc_feedback WHERE created_at BETWEEN ? AND ?", Long.class, @@ -154,7 +154,7 @@ public class FeedbackStatsServiceImpl implements FeedbackStatsService { ); } - private Long getStatusCount(String status, LocalDateTime startTime, LocalDateTime endTime) { + private Long getStatusCount(String status, ZonedDateTime startTime, ZonedDateTime endTime) { return jdbcTemplate.queryForObject( "SELECT COUNT(*) FROM bytedesk_voc_feedback WHERE status = ? AND created_at BETWEEN ? AND ?", Long.class, @@ -164,17 +164,17 @@ public class FeedbackStatsServiceImpl implements FeedbackStatsService { ); } - private Double getAverageResponseTime(LocalDateTime startTime, LocalDateTime endTime) { + private Double getAverageResponseTime(ZonedDateTime startTime, ZonedDateTime endTime) { // TODO: 实现响应时间计算 return 0.0; } - private Double getAverageResolutionTime(LocalDateTime startTime, LocalDateTime endTime) { + private Double getAverageResolutionTime(ZonedDateTime startTime, ZonedDateTime endTime) { // TODO: 实现解决时间计算 return 0.0; } - private Long getUserTotalCount(Long userId, LocalDateTime startTime, LocalDateTime endTime) { + private Long getUserTotalCount(Long userId, ZonedDateTime startTime, ZonedDateTime endTime) { return jdbcTemplate.queryForObject( "SELECT COUNT(*) FROM bytedesk_voc_feedback WHERE user_id = ? AND created_at BETWEEN ? AND ?", Long.class, @@ -182,7 +182,7 @@ public class FeedbackStatsServiceImpl implements FeedbackStatsService { ); } - private Long getUserStatusCount(Long userId, String status, LocalDateTime startTime, LocalDateTime endTime) { + private Long getUserStatusCount(Long userId, String status, ZonedDateTime startTime, ZonedDateTime endTime) { return jdbcTemplate.queryForObject( "SELECT COUNT(*) FROM bytedesk_voc_feedback WHERE user_id = ? AND status = ? AND created_at BETWEEN ? AND ?", Long.class, @@ -190,7 +190,7 @@ public class FeedbackStatsServiceImpl implements FeedbackStatsService { ); } - private Map getUserTypeDistribution(Long userId, LocalDateTime startTime, LocalDateTime endTime) { + private Map getUserTypeDistribution(Long userId, ZonedDateTime startTime, ZonedDateTime endTime) { String sql = """ SELECT type, COUNT(*) as count FROM bytedesk_voc_feedback diff --git a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/agent/FreeSwitchAgentEntity.java b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/agent/FreeSwitchAgentEntity.java index 073f3ef9e4..0cedde28dc 100644 --- a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/agent/FreeSwitchAgentEntity.java +++ b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/agent/FreeSwitchAgentEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.freeswitch.agent; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.bytedesk.core.base.BaseEntity; @@ -75,7 +75,7 @@ public class FreeSwitchAgentEntity extends BaseEntity { /** * 最后状态变更时间 */ - private LocalDateTime lastStatusChange; + private ZonedDateTime lastStatusChange; /** * 当前处理的呼叫UUID diff --git a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/agent/FreeSwitchAgentService.java b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/agent/FreeSwitchAgentService.java index e1e7584652..e489983846 100644 --- a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/agent/FreeSwitchAgentService.java +++ b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/agent/FreeSwitchAgentService.java @@ -1,6 +1,6 @@ package com.bytedesk.freeswitch.agent; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.Optional; @@ -31,8 +31,8 @@ public class FreeSwitchAgentService { agent.setStatus(FreeSwitchAgentEntity.AgentStatus.OFFLINE); agent.setMode(FreeSwitchAgentEntity.AgentMode.MANUAL); - agent.setCreatedAt(LocalDateTime.now()); - agent.setUpdatedAt(LocalDateTime.now()); + agent.setCreatedAt(ZonedDateTime.now()); + agent.setUpdatedAt(ZonedDateTime.now()); return agentRepository.save(agent); } @@ -48,7 +48,7 @@ public class FreeSwitchAgentService { existingAgent.setName(agent.getName()); existingAgent.setSkills(agent.getSkills()); existingAgent.setNotes(agent.getNotes()); - existingAgent.setUpdatedAt(LocalDateTime.now()); + existingAgent.setUpdatedAt(ZonedDateTime.now()); return agentRepository.save(existingAgent); } @@ -84,8 +84,8 @@ public class FreeSwitchAgentService { .orElseThrow(() -> new RuntimeException("坐席不存在: " + agentId)); agent.setStatus(status); - agent.setLastStatusChange(LocalDateTime.now()); - agent.setUpdatedAt(LocalDateTime.now()); + agent.setLastStatusChange(ZonedDateTime.now()); + agent.setUpdatedAt(ZonedDateTime.now()); return agentRepository.save(agent); } @@ -99,7 +99,7 @@ public class FreeSwitchAgentService { .orElseThrow(() -> new RuntimeException("坐席不存在: " + agentId)); agent.setMode(mode); - agent.setUpdatedAt(LocalDateTime.now()); + agent.setUpdatedAt(ZonedDateTime.now()); return agentRepository.save(agent); } @@ -113,7 +113,7 @@ public class FreeSwitchAgentService { .orElseThrow(() -> new RuntimeException("坐席不存在: " + agentId)); agent.setSkills(skills); - agent.setUpdatedAt(LocalDateTime.now()); + agent.setUpdatedAt(ZonedDateTime.now()); return agentRepository.save(agent); } diff --git a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/call/FreeSwitchCallEntity.java b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/call/FreeSwitchCallEntity.java index a990dc6b6b..aed8c96599 100644 --- a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/call/FreeSwitchCallEntity.java +++ b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/call/FreeSwitchCallEntity.java @@ -1,6 +1,6 @@ package com.bytedesk.freeswitch.call; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.bytedesk.core.base.BaseEntity; @@ -61,12 +61,12 @@ public class FreeSwitchCallEntity extends BaseEntity { /** * 呼叫开始时间 */ - private LocalDateTime startTime; + private ZonedDateTime startTime; /** * 呼叫结束时间 */ - private LocalDateTime endTime; + private ZonedDateTime endTime; /** * 呼叫时长(秒) diff --git a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/call/FreeSwitchCallEventListener.java b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/call/FreeSwitchCallEventListener.java index 8230fb54b6..27f503d307 100644 --- a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/call/FreeSwitchCallEventListener.java +++ b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/call/FreeSwitchCallEventListener.java @@ -116,7 +116,7 @@ public class FreeSwitchCallEventListener { private void updateUserActivity(String username) { try { // if (userService.findByUsername(username).isPresent()) { - // userService.updateLastRegistration(username, LocalDateTime.now()); + // userService.updateLastRegistration(username, ZonedDateTime.now()); // log.debug("已更新用户活动时间: {}", username); // } } catch (Exception e) { diff --git a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/call/FreeSwitchCallRepository.java b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/call/FreeSwitchCallRepository.java index 37669d9e5c..bdd026bba1 100644 --- a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/call/FreeSwitchCallRepository.java +++ b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/call/FreeSwitchCallRepository.java @@ -13,7 +13,7 @@ */ package com.bytedesk.freeswitch.call; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.Optional; @@ -57,7 +57,7 @@ public interface FreeSwitchCallRepository extends JpaRepository findByStartTimeBetween(LocalDateTime startTime, LocalDateTime endTime); + List findByStartTimeBetween(ZonedDateTime startTime, ZonedDateTime endTime); /** * 根据主叫号码查找呼叫列表 @@ -78,28 +78,28 @@ public interface FreeSwitchCallRepository extends JpaRepository userOptional = userService.findByUsername(username); // if (userOptional.isPresent()) { - // userService.updateLastRegistration(username, LocalDateTime.now()); + // userService.updateLastRegistration(username, ZonedDateTime.now()); // log.debug("已更新用户最后注册时间: {}", username); // } } catch (Exception e) { @@ -493,15 +493,15 @@ public class FreeSwitchCallService { cdr.setUid(callInfo.getCallUuid()); cdr.setCallerIdNumber(callInfo.getCallerNumber()); cdr.setDestinationNumber(callInfo.getCalleeNumber()); - cdr.setStartStamp(LocalDateTime.now().minusSeconds( + cdr.setStartStamp(ZonedDateTime.now().minusSeconds( (System.currentTimeMillis() - callInfo.getStartTime()) / 1000)); if (callInfo.getStartTime() > 0) { - cdr.setAnswerStamp(LocalDateTime.now().minusSeconds( + cdr.setAnswerStamp(ZonedDateTime.now().minusSeconds( (System.currentTimeMillis() - callInfo.getStartTime()) / 1000)); } - cdr.setEndStamp(LocalDateTime.now()); + cdr.setEndStamp(ZonedDateTime.now()); cdr.setDuration((int) ((System.currentTimeMillis() - callInfo.getStartTime()) / 1000)); cdr.setHangupCause(hangupCause); cdr.setDirection(callInfo.getType().toLowerCase()); diff --git a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/cdr/FreeSwitchCdrController.java b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/cdr/FreeSwitchCdrController.java index 7ff61fcc06..b8e3d7eda1 100644 --- a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/cdr/FreeSwitchCdrController.java +++ b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/cdr/FreeSwitchCdrController.java @@ -26,7 +26,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.Optional; @@ -53,8 +53,8 @@ public class FreeSwitchCdrController { @RequestParam(defaultValue = "desc") String direction, @RequestParam(required = false) String callerNumber, @RequestParam(required = false) String destinationNumber, - @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime startTime, - @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime endTime, + @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") ZonedDateTime startTime, + @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") ZonedDateTime endTime, @AuthenticationPrincipal UserEntity currentUser) { try { @@ -207,8 +207,8 @@ public class FreeSwitchCdrController { */ @GetMapping("/statistics") public ResponseEntity getCallStatistics( - @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime startTime, - @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime endTime) { + @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") ZonedDateTime startTime, + @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") ZonedDateTime endTime) { try { FreeSwitchCdrService.CallStatistics statistics = cdrService.getCallStatistics(startTime, endTime); diff --git a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/cdr/FreeSwitchCdrEntity.java b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/cdr/FreeSwitchCdrEntity.java index 44dae391c3..30e29e09d0 100644 --- a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/cdr/FreeSwitchCdrEntity.java +++ b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/cdr/FreeSwitchCdrEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.freeswitch.cdr; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.bytedesk.core.base.BaseEntity; @@ -66,17 +66,17 @@ public class FreeSwitchCdrEntity extends BaseEntity { /** * 通话开始时间 */ - private LocalDateTime startStamp; + private ZonedDateTime startStamp; /** * 通话接通时间 */ - private LocalDateTime answerStamp; + private ZonedDateTime answerStamp; /** * 通话结束时间 */ - private LocalDateTime endStamp; + private ZonedDateTime endStamp; /** * 通话总时长(秒) diff --git a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/cdr/FreeSwitchCdrExcel.java b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/cdr/FreeSwitchCdrExcel.java index 699c7916fb..0c7152d422 100644 --- a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/cdr/FreeSwitchCdrExcel.java +++ b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/cdr/FreeSwitchCdrExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.freeswitch.cdr; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -67,21 +67,21 @@ public class FreeSwitchCdrExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "开始时间") @ColumnWidth(25) - private LocalDateTime startStamp; + private ZonedDateTime startStamp; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "接听时间") @ColumnWidth(25) - private LocalDateTime answerStamp; + private ZonedDateTime answerStamp; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "结束时间") @ColumnWidth(25) - private LocalDateTime endStamp; + private ZonedDateTime endStamp; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "创建时间") @ColumnWidth(25) - private LocalDateTime createdAt; + private ZonedDateTime createdAt; } diff --git a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/cdr/FreeSwitchCdrRepository.java b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/cdr/FreeSwitchCdrRepository.java index 6ee6c285d3..ea37c65b12 100644 --- a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/cdr/FreeSwitchCdrRepository.java +++ b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/cdr/FreeSwitchCdrRepository.java @@ -13,7 +13,7 @@ */ package com.bytedesk.freeswitch.cdr; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.Optional; @@ -65,7 +65,7 @@ public interface FreeSwitchCdrRepository extends JpaRepository findByStartStampBetween(LocalDateTime startTime, LocalDateTime endTime); + List findByStartStampBetween(ZonedDateTime startTime, ZonedDateTime endTime); /** * 查找成功接通的通话记录 @@ -93,19 +93,19 @@ public interface FreeSwitchCdrRepository extends JpaRepository findByTimeRange(LocalDateTime startTime, LocalDateTime endTime) { + public List findByTimeRange(ZonedDateTime startTime, ZonedDateTime endTime) { return cdrRepository.findByStartStampBetween(startTime, endTime); } @@ -145,7 +145,7 @@ public class FreeSwitchCdrService { /** * 获取通话统计信息 */ - public CallStatistics getCallStatistics(LocalDateTime startTime, LocalDateTime endTime) { + public CallStatistics getCallStatistics(ZonedDateTime startTime, ZonedDateTime endTime) { long totalCalls = cdrRepository.countCallsInTimeRange(startTime, endTime); long answeredCalls = cdrRepository.countAnsweredCallsInTimeRange(startTime, endTime); long totalDuration = cdrRepository.sumBillSecInTimeRange(startTime, endTime); @@ -168,7 +168,7 @@ public class FreeSwitchCdrService { */ @Transactional public void cleanupOldCdrs(int daysToKeep) { - LocalDateTime cutoffDate = LocalDateTime.now().minusDays(daysToKeep); + ZonedDateTime cutoffDate = ZonedDateTime.now().minusDays(daysToKeep); cdrRepository.deleteByStartStampBefore(cutoffDate); log.info("清理了{}天前的CDR记录", daysToKeep); } @@ -178,8 +178,8 @@ public class FreeSwitchCdrService { */ @Transactional public void processCdrEvent(String uuid, String callerNumber, String destinationNumber, - String context, LocalDateTime startStamp, LocalDateTime answerStamp, - LocalDateTime endStamp, Integer duration, Integer billsec, + String context, ZonedDateTime startStamp, ZonedDateTime answerStamp, + ZonedDateTime endStamp, Integer duration, Integer billsec, String hangupCause, String direction) { Optional existingCdr = cdrRepository.findByUid(uuid); @@ -214,7 +214,7 @@ public class FreeSwitchCdrService { * 更新CDR应答时间 */ @Transactional - public void updateCdrAnswerTime(String uuid, LocalDateTime answerTime) { + public void updateCdrAnswerTime(String uuid, ZonedDateTime answerTime) { Optional optionalCdr = cdrRepository.findByUid(uuid); if (optionalCdr.isPresent()) { FreeSwitchCdrEntity cdr = optionalCdr.get(); @@ -230,7 +230,7 @@ public class FreeSwitchCdrService { * 更新CDR结束时间和挂断原因 */ @Transactional - public void updateCdrEndTime(String uuid, LocalDateTime endTime, String hangupCause) { + public void updateCdrEndTime(String uuid, ZonedDateTime endTime, String hangupCause) { Optional optionalCdr = cdrRepository.findByUid(uuid); if (optionalCdr.isPresent()) { FreeSwitchCdrEntity cdr = optionalCdr.get(); diff --git a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/conference/FreeSwitchConferenceExcel.java b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/conference/FreeSwitchConferenceExcel.java index 2c51b3e9fc..c1a6f82085 100644 --- a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/conference/FreeSwitchConferenceExcel.java +++ b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/conference/FreeSwitchConferenceExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.freeswitch.conference; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -63,11 +63,11 @@ public class FreeSwitchConferenceExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "创建时间") @ColumnWidth(25) - private LocalDateTime createdAt; + private ZonedDateTime createdAt; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "修改时间") @ColumnWidth(25) - private LocalDateTime updatedAt; + private ZonedDateTime updatedAt; } diff --git a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/config/FreeSwitchEventListener.java b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/config/FreeSwitchEventListener.java index c2ea400f1d..0c3b2b84d6 100644 --- a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/config/FreeSwitchEventListener.java +++ b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/config/FreeSwitchEventListener.java @@ -1,6 +1,6 @@ package com.bytedesk.freeswitch.config; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import org.freeswitch.esl.client.IEslEventListener; import org.freeswitch.esl.client.transport.event.EslEvent; @@ -91,7 +91,7 @@ public class FreeSwitchEventListener implements IEslEventListener { cdr.setUid(uuid); cdr.setCallerIdNumber(callerId); cdr.setDestinationNumber(destination); - cdr.setStartStamp(LocalDateTime.now()); + cdr.setStartStamp(ZonedDateTime.now()); cdr.setDirection("outbound"); // 默认为outbound,可根据实际情况调整 cdr.setHangupCause(""); // 初始为空 @@ -119,7 +119,7 @@ public class FreeSwitchEventListener implements IEslEventListener { // 更新CDR记录 - 设置应答时间 try { - cdrService.updateCdrAnswerTime(uuid, LocalDateTime.now()); + cdrService.updateCdrAnswerTime(uuid, ZonedDateTime.now()); log.debug("已更新CDR应答时间: UUID {}", uuid); } catch (Exception e) { log.error("更新CDR应答时间失败: UUID {} - {}", uuid, e.getMessage(), e); @@ -140,7 +140,7 @@ public class FreeSwitchEventListener implements IEslEventListener { // 更新CDR记录 - 设置结束时间和挂断原因 try { - cdrService.updateCdrEndTime(uuid, LocalDateTime.now(), hangupCause); + cdrService.updateCdrEndTime(uuid, ZonedDateTime.now(), hangupCause); log.debug("已更新CDR结束时间: UUID {} 原因 {}", uuid, hangupCause); } catch (Exception e) { log.error("更新CDR结束时间失败: UUID {} - {}", uuid, e.getMessage(), e); @@ -185,7 +185,7 @@ public class FreeSwitchEventListener implements IEslEventListener { // Optional userOptional = userService.findByUsername(username); // if (userOptional.isPresent()) { // if (online) { - // userService.updateLastRegistration(username, LocalDateTime.now()); + // userService.updateLastRegistration(username, ZonedDateTime.now()); // } // log.debug("已更新用户在线状态: {} -> {}", username, online); // } diff --git a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/config/FreeSwitchHealthIndicator.java b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/config/FreeSwitchHealthIndicator.java index 27ab542e30..2b1e80a3ef 100644 --- a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/config/FreeSwitchHealthIndicator.java +++ b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/config/FreeSwitchHealthIndicator.java @@ -15,7 +15,7 @@ package com.bytedesk.freeswitch.config; import java.io.IOException; import java.net.Socket; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import org.springframework.boot.actuate.health.Health; @@ -95,7 +95,7 @@ public class FreeSwitchHealthIndicator implements HealthIndicator { * 获取当前时间字符串 */ private String getCurrentTime() { - return LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + return ZonedDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); } /** diff --git a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/gateway/FreeSwitchGatewayExcel.java b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/gateway/FreeSwitchGatewayExcel.java index ef820d0623..a11e177336 100644 --- a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/gateway/FreeSwitchGatewayExcel.java +++ b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/gateway/FreeSwitchGatewayExcel.java @@ -22,7 +22,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; /** * FreeSwitch网关Excel导出实体 @@ -84,12 +84,12 @@ public class FreeSwitchGatewayExcel { @ExcelProperty("创建时间") @ColumnWidth(20) @DateTimeFormat("yyyy-MM-dd HH:mm:ss") - private LocalDateTime createdAt; + private ZonedDateTime createdAt; @ExcelProperty("更新时间") @ColumnWidth(20) @DateTimeFormat("yyyy-MM-dd HH:mm:ss") - private LocalDateTime updatedAt; + private ZonedDateTime updatedAt; /** * 从实体转换为Excel对象 diff --git a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/number/FreeSwitchNumberEntity.java b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/number/FreeSwitchNumberEntity.java index ef0932ee25..0df03cf912 100644 --- a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/number/FreeSwitchNumberEntity.java +++ b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/number/FreeSwitchNumberEntity.java @@ -13,7 +13,7 @@ */ package com.bytedesk.freeswitch.number; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.bytedesk.core.base.BaseEntity; @@ -85,7 +85,7 @@ public class FreeSwitchNumberEntity extends BaseEntity { /** * 最后注册时间 */ - private LocalDateTime lastRegister; + private ZonedDateTime lastRegister; /** * 注册IP地址 @@ -114,6 +114,6 @@ public class FreeSwitchNumberEntity extends BaseEntity { */ public boolean isOnline() { return enabled && lastRegister != null && - lastRegister.isAfter(LocalDateTime.now().minusMinutes(5)); + lastRegister.isAfter(ZonedDateTime.now().minusMinutes(5)); } } diff --git a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/number/FreeSwitchNumberExcel.java b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/number/FreeSwitchNumberExcel.java index b1dcb2339b..1b8df67ab8 100644 --- a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/number/FreeSwitchNumberExcel.java +++ b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/number/FreeSwitchNumberExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.freeswitch.number; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -59,16 +59,16 @@ public class FreeSwitchNumberExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "最后注册时间") @ColumnWidth(25) - private LocalDateTime lastRegister; + private ZonedDateTime lastRegister; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "创建时间") @ColumnWidth(25) - private LocalDateTime createdAt; + private ZonedDateTime createdAt; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "修改时间") @ColumnWidth(25) - private LocalDateTime updatedAt; + private ZonedDateTime updatedAt; } diff --git a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/number/FreeSwitchNumberRepository.java b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/number/FreeSwitchNumberRepository.java index 7fb4e97392..4003ca7037 100644 --- a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/number/FreeSwitchNumberRepository.java +++ b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/number/FreeSwitchNumberRepository.java @@ -13,7 +13,7 @@ */ package com.bytedesk.freeswitch.number; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.Optional; @@ -85,7 +85,7 @@ public interface FreeSwitchNumberRepository extends JpaRepository findByEnabledTrueAndLastRegisterAfter(LocalDateTime cutoffTime); + List findByEnabledTrueAndLastRegisterAfter(ZonedDateTime cutoffTime); /** * 统计域名下的用户数量 @@ -95,13 +95,13 @@ public interface FreeSwitchNumberRepository extends JpaRepository :cutoffTime") - List findOnlineNumbers(@Param("cutoffTime") LocalDateTime cutoffTime); + List findOnlineNumbers(@Param("cutoffTime") ZonedDateTime cutoffTime); /** * 根据用户名模糊搜索 @@ -122,7 +122,7 @@ public interface FreeSwitchNumberRepository extends JpaRepository :cutoffTime") - long countOnlineNumbers(@Param("cutoffTime") LocalDateTime cutoffTime); + long countOnlineNumbers(@Param("cutoffTime") ZonedDateTime cutoffTime); /** * 更新用户最后注册时间和IP @@ -130,6 +130,6 @@ public interface FreeSwitchNumberRepository extends JpaRepository userOpt = userRepository.findByUsernameAndDomain(username, domain); if (userOpt.isPresent()) { FreeSwitchNumberEntity user = userOpt.get(); - user.setLastRegister(LocalDateTime.now()); + user.setLastRegister(ZonedDateTime.now()); user.setRegisterIp(registerIp); user.setUserAgent(userAgent); userRepository.save(user); @@ -186,7 +186,7 @@ public class FreeSwitchNumberService { * 获取在线用户列表 */ public List findOnlineNumbers() { - LocalDateTime cutoffTime = LocalDateTime.now().minusMinutes(5); + ZonedDateTime cutoffTime = ZonedDateTime.now().minusMinutes(5); return userRepository.findByEnabledTrueAndLastRegisterAfter(cutoffTime); } @@ -222,7 +222,7 @@ public class FreeSwitchNumberService { * 获取在线的用户数量 */ public long countOnline() { - LocalDateTime cutoffTime = LocalDateTime.now().minusMinutes(5); + ZonedDateTime cutoffTime = ZonedDateTime.now().minusMinutes(5); return userRepository.countByEnabledTrueAndLastRegisterAfter(cutoffTime); } @@ -256,7 +256,7 @@ public class FreeSwitchNumberService { * 更新用户最后注册时间 */ @Transactional - public void updateLastRegistration(String username, LocalDateTime lastRegistration) { + public void updateLastRegistration(String username, ZonedDateTime lastRegistration) { Optional userOpt = userRepository.findByUsername(username); if (userOpt.isPresent()) { FreeSwitchNumberEntity user = userOpt.get(); diff --git a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/queue/FreeSwitchQueueService.java b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/queue/FreeSwitchQueueService.java index c506d10d28..fb2e3d7323 100644 --- a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/queue/FreeSwitchQueueService.java +++ b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/queue/FreeSwitchQueueService.java @@ -1,6 +1,6 @@ package com.bytedesk.freeswitch.queue; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import java.util.Optional; @@ -33,8 +33,8 @@ public class FreeSwitchQueueService { } queue.setStatus(FreeSwitchQueueEntity.QueueStatus.ACTIVE); - queue.setCreatedAt(LocalDateTime.now()); - queue.setUpdatedAt(LocalDateTime.now()); + queue.setCreatedAt(ZonedDateTime.now()); + queue.setUpdatedAt(ZonedDateTime.now()); return queueRepository.save(queue); } @@ -53,7 +53,7 @@ public class FreeSwitchQueueService { existingQueue.setMaxLength(queue.getMaxLength()); existingQueue.setWeight(queue.getWeight()); existingQueue.setNotes(queue.getNotes()); - existingQueue.setUpdatedAt(LocalDateTime.now()); + existingQueue.setUpdatedAt(ZonedDateTime.now()); return queueRepository.save(existingQueue); } @@ -96,7 +96,7 @@ public class FreeSwitchQueueService { .orElseThrow(() -> new RuntimeException("队列不存在: " + queueName)); queue.setStatus(status); - queue.setUpdatedAt(LocalDateTime.now()); + queue.setUpdatedAt(ZonedDateTime.now()); return queueRepository.save(queue); } @@ -120,7 +120,7 @@ public class FreeSwitchQueueService { // call.setCurrentQueue(queueName); call.setStatus(CallStatus.QUEUED); - // call.setQueueTime(LocalDateTime.now()); + // call.setQueueTime(ZonedDateTime.now()); } /** diff --git a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/webrtc/FreeSwitchWebRTCExcel.java b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/webrtc/FreeSwitchWebRTCExcel.java index 4d6db42bd5..23c9d9432d 100644 --- a/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/webrtc/FreeSwitchWebRTCExcel.java +++ b/plugins/freeswitch/src/main/java/com/bytedesk/freeswitch/webrtc/FreeSwitchWebRTCExcel.java @@ -13,7 +13,7 @@ */ package com.bytedesk.freeswitch.webrtc; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.DateTimeFormat; @@ -42,11 +42,11 @@ public class FreeSwitchWebRTCExcel { @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "创建时间") @ColumnWidth(25) - private LocalDateTime createdAt; + private ZonedDateTime createdAt; @DateTimeFormat("yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "修改时间") @ColumnWidth(25) - private LocalDateTime updatedAt; + private ZonedDateTime updatedAt; } diff --git a/plugins/freeswitch/src/main/resources/docs/agent/README.md b/plugins/freeswitch/src/main/resources/docs/agent/README.md index 1015c96a0a..24c443fd9e 100644 --- a/plugins/freeswitch/src/main/resources/docs/agent/README.md +++ b/plugins/freeswitch/src/main/resources/docs/agent/README.md @@ -67,7 +67,7 @@ AgentStatusEntity status = AgentStatusEntity.builder() .agent(agent) .status("ONLINE") .reason("Ready to take calls") - .startTime(LocalDateTime.now()) + .startTime(ZonedDateTime.now()) .build(); // Example: Assigning skills to agent diff --git a/plugins/freeswitch/src/main/resources/docs/agent/README.zh_CN.md b/plugins/freeswitch/src/main/resources/docs/agent/README.zh_CN.md index b00a651da1..e9fee9e6e9 100644 --- a/plugins/freeswitch/src/main/resources/docs/agent/README.zh_CN.md +++ b/plugins/freeswitch/src/main/resources/docs/agent/README.zh_CN.md @@ -67,7 +67,7 @@ AgentStatusEntity status = AgentStatusEntity.builder() .agent(agent) .status("ONLINE") .reason("准备接听电话") - .startTime(LocalDateTime.now()) + .startTime(ZonedDateTime.now()) .build(); // 示例:分配坐席技能 diff --git a/plugins/freeswitch/src/main/resources/docs/agent/README.zh_TW.md b/plugins/freeswitch/src/main/resources/docs/agent/README.zh_TW.md index a56569450d..5ed141f258 100644 --- a/plugins/freeswitch/src/main/resources/docs/agent/README.zh_TW.md +++ b/plugins/freeswitch/src/main/resources/docs/agent/README.zh_TW.md @@ -67,7 +67,7 @@ AgentStatusEntity status = AgentStatusEntity.builder() .agent(agent) .status("ONLINE") .reason("準備接聽電話") - .startTime(LocalDateTime.now()) + .startTime(ZonedDateTime.now()) .build(); // 示例:分配坐席技能 diff --git a/plugins/freeswitch/src/main/resources/docs/call/README.md b/plugins/freeswitch/src/main/resources/docs/call/README.md index f4d31b7c9a..4d021f2ecf 100644 --- a/plugins/freeswitch/src/main/resources/docs/call/README.md +++ b/plugins/freeswitch/src/main/resources/docs/call/README.md @@ -49,7 +49,7 @@ FreeSwitchCallEntity call = FreeSwitchCallEntity.builder() .callerNumber("1234567890") .calleeNumber("0987654321") .status(CallStatus.QUEUED) - .startTime(LocalDateTime.now()) + .startTime(ZonedDateTime.now()) .queueId(1L) .agentId(1L) .skills("{\"language\":\"en\",\"department\":\"support\"}") diff --git a/plugins/freeswitch/src/main/resources/docs/call/README.zh_CN.md b/plugins/freeswitch/src/main/resources/docs/call/README.zh_CN.md index b69f367dcb..714fa45c46 100644 --- a/plugins/freeswitch/src/main/resources/docs/call/README.zh_CN.md +++ b/plugins/freeswitch/src/main/resources/docs/call/README.zh_CN.md @@ -49,7 +49,7 @@ FreeSwitchCallEntity call = FreeSwitchCallEntity.builder() .callerNumber("1234567890") .calleeNumber("0987654321") .status(CallStatus.QUEUED) - .startTime(LocalDateTime.now()) + .startTime(ZonedDateTime.now()) .queueId(1L) .agentId(1L) .skills("{\"language\":\"zh\",\"department\":\"support\"}") diff --git a/plugins/freeswitch/src/main/resources/docs/call/README.zh_TW.md b/plugins/freeswitch/src/main/resources/docs/call/README.zh_TW.md index 00ec67a20d..8c77dbf900 100644 --- a/plugins/freeswitch/src/main/resources/docs/call/README.zh_TW.md +++ b/plugins/freeswitch/src/main/resources/docs/call/README.zh_TW.md @@ -49,7 +49,7 @@ FreeSwitchCallEntity call = FreeSwitchCallEntity.builder() .callerNumber("1234567890") .calleeNumber("0987654321") .status(CallStatus.QUEUED) - .startTime(LocalDateTime.now()) + .startTime(ZonedDateTime.now()) .queueId(1L) .agentId(1L) .skills("{\"language\":\"zh_TW\",\"department\":\"support\"}") diff --git a/plugins/freeswitch/src/main/resources/docs/cdr/README.md b/plugins/freeswitch/src/main/resources/docs/cdr/README.md index 34b1ca2a16..0a5def2eab 100644 --- a/plugins/freeswitch/src/main/resources/docs/cdr/README.md +++ b/plugins/freeswitch/src/main/resources/docs/cdr/README.md @@ -45,7 +45,7 @@ FreeSwitchCdrEntity cdr = FreeSwitchCdrEntity.builder() .callerIdName("John Doe") .callerIdNumber("1234567890") .destinationNumber("0987654321") - .startStamp(LocalDateTime.now()) + .startStamp(ZonedDateTime.now()) .duration(300) .billsec(280) .hangupCause("NORMAL_CLEARING") diff --git a/plugins/freeswitch/src/main/resources/docs/cdr/README.zh_CN.md b/plugins/freeswitch/src/main/resources/docs/cdr/README.zh_CN.md index 2137cd8a69..ce7f2dd771 100644 --- a/plugins/freeswitch/src/main/resources/docs/cdr/README.zh_CN.md +++ b/plugins/freeswitch/src/main/resources/docs/cdr/README.zh_CN.md @@ -45,7 +45,7 @@ FreeSwitchCdrEntity cdr = FreeSwitchCdrEntity.builder() .callerIdName("张三") .callerIdNumber("1234567890") .destinationNumber("0987654321") - .startStamp(LocalDateTime.now()) + .startStamp(ZonedDateTime.now()) .duration(300) .billsec(280) .hangupCause("NORMAL_CLEARING") diff --git a/plugins/freeswitch/src/main/resources/docs/cdr/README.zh_TW.md b/plugins/freeswitch/src/main/resources/docs/cdr/README.zh_TW.md index 8501e08bf5..4e52b6b947 100644 --- a/plugins/freeswitch/src/main/resources/docs/cdr/README.zh_TW.md +++ b/plugins/freeswitch/src/main/resources/docs/cdr/README.zh_TW.md @@ -45,7 +45,7 @@ FreeSwitchCdrEntity cdr = FreeSwitchCdrEntity.builder() .callerIdName("張三") .callerIdNumber("1234567890") .destinationNumber("0987654321") - .startStamp(LocalDateTime.now()) + .startStamp(ZonedDateTime.now()) .duration(300) .billsec(280) .hangupCause("NORMAL_CLEARING") diff --git a/plugins/kanban/src/main/java/com/bytedesk/kanban/module/ModuleResponse.java b/plugins/kanban/src/main/java/com/bytedesk/kanban/module/ModuleResponse.java index 49aeff012a..d5ef221e70 100644 --- a/plugins/kanban/src/main/java/com/bytedesk/kanban/module/ModuleResponse.java +++ b/plugins/kanban/src/main/java/com/bytedesk/kanban/module/ModuleResponse.java @@ -54,7 +54,7 @@ public class ModuleResponse extends BaseResponse { private Boolean isPublic; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; - // private LocalDateTime updatedAt; + // private ZonedDateTime updatedAt; } diff --git a/plugins/kanban/src/main/java/com/bytedesk/kanban/project/ProjectResponse.java b/plugins/kanban/src/main/java/com/bytedesk/kanban/project/ProjectResponse.java index b5983a4745..cddb8af450 100644 --- a/plugins/kanban/src/main/java/com/bytedesk/kanban/project/ProjectResponse.java +++ b/plugins/kanban/src/main/java/com/bytedesk/kanban/project/ProjectResponse.java @@ -54,7 +54,7 @@ public class ProjectResponse extends BaseResponse { private Boolean isPublic; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; - // private LocalDateTime updatedAt; + // private ZonedDateTime updatedAt; } diff --git a/plugins/kanban/src/main/java/com/bytedesk/kanban/project_invite/ProjectInviteResponse.java b/plugins/kanban/src/main/java/com/bytedesk/kanban/project_invite/ProjectInviteResponse.java index 5cae28b4d1..f94ae4d9f1 100644 --- a/plugins/kanban/src/main/java/com/bytedesk/kanban/project_invite/ProjectInviteResponse.java +++ b/plugins/kanban/src/main/java/com/bytedesk/kanban/project_invite/ProjectInviteResponse.java @@ -40,5 +40,5 @@ public class ProjectInviteResponse extends BaseResponse { private Integer order; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; } diff --git a/plugins/kanban/src/main/java/com/bytedesk/kanban/report/ReportResponse.java b/plugins/kanban/src/main/java/com/bytedesk/kanban/report/ReportResponse.java index 2cbcf2e499..a41d47656d 100644 --- a/plugins/kanban/src/main/java/com/bytedesk/kanban/report/ReportResponse.java +++ b/plugins/kanban/src/main/java/com/bytedesk/kanban/report/ReportResponse.java @@ -38,5 +38,5 @@ public class ReportResponse extends BaseResponse { private String color; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; } diff --git a/plugins/kanban/src/main/java/com/bytedesk/kanban/task/TaskResponse.java b/plugins/kanban/src/main/java/com/bytedesk/kanban/task/TaskResponse.java index f3ebdb3669..9971e0ed47 100644 --- a/plugins/kanban/src/main/java/com/bytedesk/kanban/task/TaskResponse.java +++ b/plugins/kanban/src/main/java/com/bytedesk/kanban/task/TaskResponse.java @@ -52,7 +52,7 @@ public class TaskResponse extends BaseResponse { private String todoListUid; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; - // private LocalDateTime updatedAt; + // private ZonedDateTime updatedAt; } diff --git a/plugins/kanban/src/main/java/com/bytedesk/kanban/todo_list/TodoListResponse.java b/plugins/kanban/src/main/java/com/bytedesk/kanban/todo_list/TodoListResponse.java index 2f2182bb79..a79c0ce999 100644 --- a/plugins/kanban/src/main/java/com/bytedesk/kanban/todo_list/TodoListResponse.java +++ b/plugins/kanban/src/main/java/com/bytedesk/kanban/todo_list/TodoListResponse.java @@ -49,7 +49,7 @@ public class TodoListResponse extends BaseResponse { private String moduleUid; - // private LocalDateTime updatedAt; + // private ZonedDateTime updatedAt; - // private LocalDateTime createdAt; + // private ZonedDateTime createdAt; } diff --git a/starter/src/main/java/com/bytedesk/starter/service/SystemStatusService.java b/starter/src/main/java/com/bytedesk/starter/service/SystemStatusService.java index 10340df37c..9ae5858321 100644 --- a/starter/src/main/java/com/bytedesk/starter/service/SystemStatusService.java +++ b/starter/src/main/java/com/bytedesk/starter/service/SystemStatusService.java @@ -18,7 +18,7 @@ import java.lang.management.ManagementFactory; import java.lang.management.MemoryMXBean; import java.lang.management.OperatingSystemMXBean; import java.lang.management.ThreadMXBean; -import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.HashMap; import java.util.Map; @@ -42,7 +42,7 @@ public class SystemStatusService { Map status = new HashMap<>(); // 基本信息 - status.put("timestamp", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + status.put("timestamp", ZonedDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); status.put("uptime", getUptime()); // 系统负载 diff --git a/starter/src/main/resources/db/changelog/master.xml b/starter/src/main/resources/db/changelog/master.xml index 2bd65a23a9..3a5b757a2a 100644 --- a/starter/src/main/resources/db/changelog/master.xml +++ b/starter/src/main/resources/db/changelog/master.xml @@ -7,5 +7,6 @@ + \ No newline at end of file diff --git a/starter/src/main/resources/db/changelog/migration/250703_upgrade_timestamp_to_zoned.xml b/starter/src/main/resources/db/changelog/migration/250703_upgrade_timestamp_to_zoned.xml new file mode 100644 index 0000000000..1d6a33f63f --- /dev/null +++ b/starter/src/main/resources/db/changelog/migration/250703_upgrade_timestamp_to_zoned.xml @@ -0,0 +1,131 @@ + + + + + + + Upgrade BaseEntity timestamp fields from ZonedDateTime to ZonedDateTime for internationalization support + + + + DO $$ + DECLARE + table_record RECORD; + column_record RECORD; + has_created_at BOOLEAN; + has_updated_at BOOLEAN; + BEGIN + -- Loop through all tables in the current schema + FOR table_record IN + SELECT tablename + FROM pg_tables + WHERE schemaname = current_schema() + AND tablename NOT LIKE 'flyway_%' + AND tablename NOT LIKE 'liquibase_%' + LOOP + -- Check if table has created_at and updated_at columns + has_created_at := FALSE; + has_updated_at := FALSE; + + FOR column_record IN + SELECT column_name, data_type + FROM information_schema.columns + WHERE table_schema = current_schema() + AND table_name = table_record.tablename + AND column_name IN ('created_at', 'updated_at') + LOOP + IF column_record.column_name = 'created_at' THEN + has_created_at := TRUE; + ELSIF column_record.column_name = 'updated_at' THEN + has_updated_at := TRUE; + END IF; + END LOOP; + + -- If table has both created_at and updated_at columns, upgrade them + IF has_created_at AND has_updated_at THEN + -- Upgrade created_at column + EXECUTE format('ALTER TABLE %I ALTER COLUMN created_at TYPE timestamp with time zone USING created_at AT TIME ZONE ''Asia/Shanghai''', table_record.tablename); + + -- Upgrade updated_at column + EXECUTE format('ALTER TABLE %I ALTER COLUMN updated_at TYPE timestamp with time zone USING updated_at AT TIME ZONE ''Asia/Shanghai''', table_record.tablename); + + -- Log the upgrade + RAISE NOTICE 'Upgraded timestamp fields for table: %', table_record.tablename; + END IF; + END LOOP; + END $$; + + + + + COMMENT ON COLUMN created_at IS 'Creation timestamp with timezone (upgraded from ZonedDateTime to ZonedDateTime for internationalization)'; + COMMENT ON COLUMN updated_at IS 'Last update timestamp with timezone (upgraded from ZonedDateTime to ZonedDateTime for internationalization)'; + + + + + + Rollback script for BaseEntity timestamp fields upgrade + + + DO $$ + DECLARE + table_record RECORD; + column_record RECORD; + has_created_at BOOLEAN; + has_updated_at BOOLEAN; + BEGIN + -- Loop through all tables in the current schema + FOR table_record IN + SELECT tablename + FROM pg_tables + WHERE schemaname = current_schema() + AND tablename NOT LIKE 'flyway_%' + AND tablename NOT LIKE 'liquibase_%' + LOOP + -- Check if table has created_at and updated_at columns + has_created_at := FALSE; + has_updated_at := FALSE; + + FOR column_record IN + SELECT column_name, data_type + FROM information_schema.columns + WHERE table_schema = current_schema() + AND table_name = table_record.tablename + AND column_name IN ('created_at', 'updated_at') + LOOP + IF column_record.column_name = 'created_at' THEN + has_created_at := TRUE; + ELSIF column_record.column_name = 'updated_at' THEN + has_updated_at := TRUE; + END IF; + END LOOP; + + -- If table has both created_at and updated_at columns, rollback them + IF has_created_at AND has_updated_at THEN + -- Rollback created_at column + EXECUTE format('ALTER TABLE %I ALTER COLUMN created_at TYPE timestamp without time zone USING created_at AT TIME ZONE ''Asia/Shanghai''', table_record.tablename); + + -- Rollback updated_at column + EXECUTE format('ALTER TABLE %I ALTER COLUMN updated_at TYPE timestamp without time zone USING updated_at AT TIME ZONE ''Asia/Shanghai''', table_record.tablename); + + -- Log the rollback + RAISE NOTICE 'Rolled back timestamp fields for table: %', table_record.tablename; + END IF; + END LOOP; + END $$; + + + + + \ No newline at end of file