From 47b745da7e8a3a9b83294dc581718df60ff80037 Mon Sep 17 00:00:00 2001 From: jack ning Date: Sat, 5 Jul 2025 10:16:04 +0800 Subject: [PATCH] update modules/core: mod 12 files --- .../bytedesk/core/member/MemberProtobuf.java | 15 +++++--- .../bytedesk/core/rbac/user/UserProtobuf.java | 3 +- .../core/thread/AbstractThreadEntity.java | 6 ++-- .../core/thread/ThreadRepository.java | 5 +++ .../core/thread/ThreadRestController.java | 3 +- .../core/thread/ThreadRestService.java | 35 +++++-------------- .../com/bytedesk/core/topic/TopicEntity.java | 8 +++-- .../com/bytedesk/core/topic/TopicRequest.java | 6 ++-- .../bytedesk/core/topic/TopicResponse.java | 5 ++- .../bytedesk/service/agent/AgentResponse.java | 5 +-- .../kanban/module/ModuleResponse.java | 6 ---- .../kanban/project/ProjectResponse.java | 10 ------ 12 files changed, 41 insertions(+), 66 deletions(-) diff --git a/modules/core/src/main/java/com/bytedesk/core/member/MemberProtobuf.java b/modules/core/src/main/java/com/bytedesk/core/member/MemberProtobuf.java index d6c91c2d8b..e21f0f5ab2 100644 --- a/modules/core/src/main/java/com/bytedesk/core/member/MemberProtobuf.java +++ b/modules/core/src/main/java/com/bytedesk/core/member/MemberProtobuf.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-05-29 14:40:06 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-03-25 14:10:37 + * @LastEditTime: 2025-07-05 09:54:26 * @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,12 +13,13 @@ */ package com.bytedesk.core.member; -import com.bytedesk.core.base.BaseResponse; +import java.io.Serializable; + +import com.bytedesk.core.rbac.user.UserTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; -import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; @@ -27,12 +28,16 @@ import lombok.experimental.Accessors; @Accessors(chain = true) @AllArgsConstructor @NoArgsConstructor -@EqualsAndHashCode(callSuper = true) -public class MemberProtobuf extends BaseResponse { +public class MemberProtobuf implements Serializable { private static final long serialVersionUID = 1L; + + private String uid; private String nickname; private String avatar; + + @Builder.Default + private String type = UserTypeEnum.MEMBER.name(); } diff --git a/modules/core/src/main/java/com/bytedesk/core/rbac/user/UserProtobuf.java b/modules/core/src/main/java/com/bytedesk/core/rbac/user/UserProtobuf.java index ad3da3c77a..41b91f5cfe 100644 --- a/modules/core/src/main/java/com/bytedesk/core/rbac/user/UserProtobuf.java +++ b/modules/core/src/main/java/com/bytedesk/core/rbac/user/UserProtobuf.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-30 10:01:47 + * @LastEditTime: 2025-07-05 09:54:43 * @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. @@ -44,7 +44,6 @@ public class UserProtobuf implements Serializable { private String avatar; - // ROBOT/AGENT/SYSTEM/USER/VISITOR/WORKGROUP @Builder.Default private String type = UserTypeEnum.USER.name(); diff --git a/modules/core/src/main/java/com/bytedesk/core/thread/AbstractThreadEntity.java b/modules/core/src/main/java/com/bytedesk/core/thread/AbstractThreadEntity.java index fac3675517..66b2efe83b 100644 --- a/modules/core/src/main/java/com/bytedesk/core/thread/AbstractThreadEntity.java +++ b/modules/core/src/main/java/com/bytedesk/core/thread/AbstractThreadEntity.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-06-29 13:00:33 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-06-13 12:38:10 + * @LastEditTime: 2025-07-05 09:49:35 * @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. @@ -169,18 +169,20 @@ public abstract class AbstractThreadEntity extends BaseEntity { @Column(columnDefinition = TypeConsts.COLUMN_TYPE_TEXT) private List invites = new ArrayList<>(); - // 多个管理员监听会话 + // 多个管理员监听会话, 存放多个 UserProtobuf 实体转换成的 JSON @Builder.Default @Convert(converter = JsonListConverter.class) @Column(columnDefinition = TypeConsts.COLUMN_TYPE_TEXT) private List monitors = new ArrayList<>(); + // 存放多个 UserProtobuf 实体转换成的 JSON // assistants: monitoring agent、quality check agent、robot agent @Builder.Default @Convert(converter = JsonListConverter.class) @Column(columnDefinition = TypeConsts.COLUMN_TYPE_TEXT) private List assistants = new ArrayList<>(); + // 存放多个 UserProtobuf 实体转换成的 JSON // ticketors: ticket observers @Builder.Default @Convert(converter = JsonListConverter.class) diff --git a/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRepository.java b/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRepository.java index a9ba0e9860..90522f35f6 100644 --- a/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRepository.java +++ b/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRepository.java @@ -80,5 +80,10 @@ public interface ThreadRepository extends JpaRepository, Jpa @Query("SELECT t FROM ThreadEntity t WHERE t.topic = :topic AND t.status != :status AND t.deleted = false") List findByTopicAndStatusNotAndDeletedFalse(@Param("topic") String topic, @Param("status") String status); + @Query("SELECT t FROM ThreadEntity t WHERE t.topic IN :topics AND t.deleted = false") + List findByTopicsInAndDeletedFalse(@Param("topics") List topics); + + @Query("SELECT t FROM ThreadEntity t WHERE t.topic IN :topics AND t.deleted = false") + Page findByTopicsInAndDeletedFalse(@Param("topics") List topics, Pageable pageable); } diff --git a/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRestController.java b/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRestController.java index 56aa7eb66f..a689fc102f 100644 --- a/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRestController.java +++ b/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRestController.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-14 13:35:56 + * @LastEditTime: 2025-07-05 10:01:13 * @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. @@ -100,7 +100,6 @@ public class ThreadRestController extends BaseRestController { @Operation(summary = "根据主题查询会话", description = "通过主题查找相关会话") @GetMapping("/query/topic") public ResponseEntity queryByThreadTopic(ThreadRequest request) { - Optional threadOptional = threadRestService.queryByTopic(request); if (threadOptional.isPresent()) { return ResponseEntity.ok(JsonResult.success(threadOptional.get())); diff --git a/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRestService.java b/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRestService.java index 8eefbeb9b1..d43d473030 100644 --- a/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRestService.java +++ b/modules/core/src/main/java/com/bytedesk/core/thread/ThreadRestService.java @@ -13,8 +13,11 @@ */ package com.bytedesk.core.thread; +import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; import org.modelmapper.ModelMapper; import org.springframework.cache.annotation.CacheEvict; @@ -27,6 +30,7 @@ import org.springframework.data.jpa.domain.Specification; import org.springframework.lang.NonNull; import org.springframework.orm.ObjectOptimisticLockingFailureException; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import com.bytedesk.core.base.BaseRestServiceWithExcel; @@ -63,6 +67,8 @@ public class ThreadRestService private final BytedeskEventPublisher bytedeskEventPublisher; + private final TopicRepository topicRepository; + @Override public Page queryByOrgEntity(ThreadRequest request) { Pageable pageable = request.getPageable(); @@ -114,6 +120,8 @@ public class ThreadRestService return Optional.empty(); } + @Transactional + @Override public ThreadResponse create(ThreadRequest request) { UserEntity owner = authService.getUser(); // @@ -142,32 +150,7 @@ public class ThreadRestService return convertToResponse(savedThread); } - // 在group会话创建之后,自动为group成员members创建会话 - // 同事群组会话:org/group/{group_uid} - // public ThreadResponse createGroupMemberThread(ThreadEntity thread, UserEntity owner) { - // // - // Optional threadOptional = findFirstByTopicAndOwner(thread.getTopic(), owner); - // if (threadOptional.isPresent()) { - // return convertToResponse(threadOptional.get()); - // } - // ThreadEntity groupThread = ThreadEntity.builder() - // .uid(uidUtils.getUid()) - // .type(thread.getType()) - // .topic(thread.getTopic()) - // .unreadCount(0) - // .status(thread.getStatus()) - // .client(ClientEnum.SYSTEM.name()) - // .user(thread.getUser()) - // .owner(owner) - // .orgUid(thread.getOrgUid()) - // .build(); - // ThreadEntity updateThread = save(groupThread); - // if (updateThread == null) { - // throw new RuntimeException("thread save failed"); - // } - // return convertToResponse(updateThread); - // } - + @Transactional public ThreadResponse createGroupMemberThread(String user, String topic, String orgUid, UserEntity owner) { // Optional threadOptional = findFirstByTopicAndOwner(topic, owner); diff --git a/modules/core/src/main/java/com/bytedesk/core/topic/TopicEntity.java b/modules/core/src/main/java/com/bytedesk/core/topic/TopicEntity.java index 3c8823d4ee..dcaaf3d646 100644 --- a/modules/core/src/main/java/com/bytedesk/core/topic/TopicEntity.java +++ b/modules/core/src/main/java/com/bytedesk/core/topic/TopicEntity.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-04-13 16:03:44 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-07-05 09:40:37 + * @LastEditTime: 2025-07-05 10:05:04 * @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. @@ -50,9 +50,11 @@ public class TopicEntity extends BaseEntityNoOrg { @Convert(converter = StringSetConverter.class) private Set topics = new HashSet<>(); + // 每种topic的qos都可能不一样,因为用数组存储索引topic,不方便分开,暂时不用此字段 /** AT_MOST_ONCE(0),AT_LEAST_ONCE(1), EXACTLY_ONCE(2), */ - @Builder.Default - private Integer qos = 1; + // @Builder.Default + // @Column(name = "topic_qos") + // private Integer qos = 1; /** * current online clientIds diff --git a/modules/core/src/main/java/com/bytedesk/core/topic/TopicRequest.java b/modules/core/src/main/java/com/bytedesk/core/topic/TopicRequest.java index c112179a8b..a61e93ba1e 100644 --- a/modules/core/src/main/java/com/bytedesk/core/topic/TopicRequest.java +++ b/modules/core/src/main/java/com/bytedesk/core/topic/TopicRequest.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-04-13 16:15:11 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-07-05 09:40:49 + * @LastEditTime: 2025-07-05 10:04:08 * @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. @@ -39,8 +39,8 @@ public class TopicRequest extends BaseRequest { @Builder.Default private Set topics = new HashSet<>(); - @Builder.Default - private Integer qos = 1; + // @Builder.Default + // private Integer qos = 1; @Builder.Default private Set clientIds = new HashSet<>(); diff --git a/modules/core/src/main/java/com/bytedesk/core/topic/TopicResponse.java b/modules/core/src/main/java/com/bytedesk/core/topic/TopicResponse.java index b643f8aa0b..aaa3ab1691 100644 --- a/modules/core/src/main/java/com/bytedesk/core/topic/TopicResponse.java +++ b/modules/core/src/main/java/com/bytedesk/core/topic/TopicResponse.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-04-13 16:15:22 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-07-05 09:41:01 + * @LastEditTime: 2025-07-05 10:04:22 * @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. @@ -35,8 +35,7 @@ public class TopicResponse extends BaseResponse { private Set topics; - private Integer qos; + // private Integer qos; private Set clientIds; - } diff --git a/modules/service/src/main/java/com/bytedesk/service/agent/AgentResponse.java b/modules/service/src/main/java/com/bytedesk/service/agent/AgentResponse.java index 93918b904e..39d4450ad2 100644 --- a/modules/service/src/main/java/com/bytedesk/service/agent/AgentResponse.java +++ b/modules/service/src/main/java/com/bytedesk/service/agent/AgentResponse.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-02-06 10:17:01 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-05-05 11:00:20 + * @LastEditTime: 2025-07-05 09:57:20 * @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. @@ -71,9 +71,6 @@ public class AgentResponse extends BaseResponse { private String timeoutRemindTip; - // private Integer currentThreadCount; - - // private UserResponse user; private MemberProtobuf member; private String userUid; 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 d5ef221e70..a755d05444 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 @@ -40,8 +40,6 @@ public class ModuleResponse extends BaseResponse { private String type; - // private String color; - private Integer order; private List members; @@ -53,8 +51,4 @@ public class ModuleResponse extends BaseResponse { private String userUid; private Boolean isPublic; - - // private ZonedDateTime createdAt; - - // 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 cddb8af450..4e501648ff 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 @@ -40,21 +40,11 @@ public class ProjectResponse extends BaseResponse { private String type; - // private String color; - private Integer order; private List members; private List modules; - // private String parentUid; - - private String userUid; - private Boolean isPublic; - - // private ZonedDateTime createdAt; - - // private ZonedDateTime updatedAt; }