Package com.bytedesk.core.thread
Class ThreadRestService
java.lang.Object
com.bytedesk.core.base.BaseRestService<T,TRequest,TResponse>
com.bytedesk.core.base.BaseRestServiceWithExport<ThreadEntity,ThreadRequest,ThreadResponse,ThreadExcel>
com.bytedesk.core.thread.ThreadRestService
@Service
public class ThreadRestService
extends BaseRestServiceWithExport<ThreadEntity,ThreadRequest,ThreadResponse,ThreadExcel>
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final AuthServiceprivate final BytedeskEventPublisherprivate final org.modelmapper.ModelMapperprivate final ThreadRepositoryprivate final TopicRestServiceprivate final UidUtils -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionautoClose(ThreadEntity thread) closeByTopic(ThreadRequest request) closeByUid(ThreadRequest request) convertToExcel(ThreadEntity entity) 转换为Excel对象 子类必须实现此方法convertToResponse(ThreadEntity thread) intcountByThreadTopicAndState(String topic, String state) intcountByThreadTopicAndStateNot(String topic, String state) create(ThreadRequest request) 文件助手会话:file/{user_uid}createGroupMemberThread(String user, String topic, String orgUid, UserEntity owner) protected org.springframework.data.jpa.domain.Specification<ThreadEntity>createSpecification(ThreadRequest request) 创建Specification对象,子类必须实现 用于queryByOrg的通用实现voiddelete(ThreadRequest entity) voiddeleteByTopic(String topic) voiddeleteByUid(String uid) protected ThreadEntitydoSave(ThreadEntity entity) 子类实现具体的保存逻辑protected org.springframework.data.domain.Page<ThreadEntity>executePageQuery(org.springframework.data.jpa.domain.Specification<ThreadEntity> spec, org.springframework.data.domain.Pageable pageable) 执行分页查询,子类必须实现 用于queryByOrg的通用实现existsByUid(String uid) org.springframework.data.domain.Page<ThreadEntity>findByOwner(UserEntity user, org.springframework.data.domain.Pageable pageable) findByTopicStartsWithAndStatus(String topicPrefix, String status) findFirstByTopic(String topic) findFirstByTopicAndOwner(String topic, UserEntity user) findFirstByTopicNotClosed(String topic) findListByTopic(String topic) findRecentAgentThreadsByVisitorUid(String visitorUid) 根据访客ID查找最近的客服会话记录 用于最近一次会话路由策略handleOptimisticLockingFailureException(org.springframework.orm.ObjectOptimisticLockingFailureException e, ThreadEntity entity) org.springframework.data.domain.Page<ThreadResponse>query(ThreadRequest request) org.springframework.data.domain.Page<ThreadResponse>queryByOrg(ThreadRequest request) 通用的queryByOrg实现 子类如果有特殊逻辑可以重写此方法org.springframework.data.domain.Page<ThreadEntity>queryByOrgEntity(ThreadRequest request) 查询实体对象(用于Excel导出) 子类必须实现此方法org.springframework.data.domain.Page<ThreadResponse>queryByTopic(ThreadRequest request) queryByTopicAndOwner(ThreadRequest request) queryByUid(ThreadRequest request) 通用的queryByUid实现org.springframework.data.domain.Page<ThreadResponse>queryByUser(ThreadRequest request) 通用的queryByUser实现 子类如果有特殊逻辑可以重写此方法org.springframework.data.domain.Page<ThreadResponse>queryThreadsByUserTopics(ThreadRequest request) voidremoveGroupMemberThread(String topic, UserEntity owner) update(ThreadRequest threadRequest) updateFold(ThreadRequest threadRequest) voidupdateGroupMemberThread(String user, String topic, UserEntity owner) updateHide(ThreadRequest threadRequest) updateMute(ThreadRequest threadRequest) updateNote(ThreadRequest threadRequest) updateStar(ThreadRequest threadRequest) updateState(ThreadRequest threadRequest) updateTagList(ThreadRequest threadRequest) updateTop(ThreadRequest threadRequest) updateUnread(ThreadRequest threadRequest) updateUser(ThreadRequest threadRequest) Methods inherited from class com.bytedesk.core.base.BaseRestService
deleteByOrgUid, findByOrgUid, getUidFromRequest, recover, save, setUserUidToRequest
-
Field Details
-
authService
-
modelMapper
private final org.modelmapper.ModelMapper modelMapper -
threadRepository
-
uidUtils
-
bytedeskEventPublisher
-
topicRestService
-
-
Constructor Details
-
ThreadRestService
public ThreadRestService()
-
-
Method Details
-
queryByOrgEntity
Description copied from class:BaseRestServiceWithExport查询实体对象(用于Excel导出) 子类必须实现此方法- Overrides:
queryByOrgEntityin classBaseRestServiceWithExport<ThreadEntity,ThreadRequest, ThreadResponse, ThreadExcel>
-
queryByOrg
Description copied from class:BaseRestService通用的queryByOrg实现 子类如果有特殊逻辑可以重写此方法- Overrides:
queryByOrgin classBaseRestService<ThreadEntity,ThreadRequest, ThreadResponse>
-
query
-
queryByUser
Description copied from class:BaseRestService通用的queryByUser实现 子类如果有特殊逻辑可以重写此方法- Overrides:
queryByUserin classBaseRestService<ThreadEntity,ThreadRequest, ThreadResponse>
-
queryByTopic
-
queryByTopicAndOwner
-
queryByUid
Description copied from class:BaseRestService通用的queryByUid实现- Overrides:
queryByUidin classBaseRestService<ThreadEntity,ThreadRequest, ThreadResponse>
-
queryThreadsByUserTopics
public org.springframework.data.domain.Page<ThreadResponse> queryThreadsByUserTopics(ThreadRequest request) -
create
- Specified by:
createin classBaseRestService<ThreadEntity,ThreadRequest, ThreadResponse>
-
createGroupMemberThread
@Transactional public ThreadResponse createGroupMemberThread(String user, String topic, String orgUid, UserEntity owner) -
removeGroupMemberThread
-
updateGroupMemberThread
-
createFileAssistantThread
文件助手会话:file/{user_uid} -
createSystemNoticeAccountThread
-
update
- Specified by:
updatein classBaseRestService<ThreadEntity,ThreadRequest, ThreadResponse>
-
updateTop
-
updateStar
-
updateMute
-
updateHide
-
updateFold
-
updateUser
-
updateTagList
-
updateUnread
-
updateState
-
updateNote
-
autoClose
-
closeByUid
-
closeByTopic
-
countByThreadTopicAndState
-
countByThreadTopicAndStateNot
-
findByUid
- Specified by:
findByUidin classBaseRestService<ThreadEntity,ThreadRequest, ThreadResponse>
-
existsByUid
-
findFirstByTopicAndOwner
@Cacheable(value="thread", key="#topic + \'-\' + #user.uid", unless="#result == null") public Optional<ThreadEntity> findFirstByTopicAndOwner(@NonNull String topic, UserEntity user) -
findListByTopic
@Cacheable(value="threads", key="#topic", unless="#result == null") public List<ThreadEntity> findListByTopic(@NonNull String topic) -
findFirstByTopic
@Cacheable(value="thread", key="#topic", unless="#result == null") public Optional<ThreadEntity> findFirstByTopic(@NonNull String topic) -
findFirstByTopicNotClosed
@Cacheable(value="thread", key="#topic", unless="#result == null") public Optional<ThreadEntity> findFirstByTopicNotClosed(String topic) -
findByTopicStartsWithAndStatus
-
findByOwner
@Cacheable(value="thread", key="#user.uid + \'-\' + #pageable.getPageNumber()", unless="#result == null") public org.springframework.data.domain.Page<ThreadEntity> findByOwner(UserEntity user, org.springframework.data.domain.Pageable pageable) -
findRecentAgentThreadsByVisitorUid
根据访客ID查找最近的客服会话记录 用于最近一次会话路由策略 -
findServiceThreadStateStarted
-
doSave
@CachePut(value="thread",key="#thread.uid",unless="#result == null") @CachePut(value="thread",key="#thread.topic",unless="#result == null") protected ThreadEntity doSave(ThreadEntity entity) Description copied from class:BaseRestService子类实现具体的保存逻辑- Specified by:
doSavein classBaseRestService<ThreadEntity,ThreadRequest, ThreadResponse>
-
handleOptimisticLockingFailureException
@CachePut(value="thread",key="#entity.uid",unless="#result == null") @CachePut(value="thread",key="#entity.topic",unless="#result == null") public ThreadEntity handleOptimisticLockingFailureException(org.springframework.orm.ObjectOptimisticLockingFailureException e, ThreadEntity entity) - Specified by:
handleOptimisticLockingFailureExceptionin classBaseRestService<ThreadEntity,ThreadRequest, ThreadResponse>
-
deleteByTopic
-
deleteByUid
- Specified by:
deleteByUidin classBaseRestService<ThreadEntity,ThreadRequest, ThreadResponse>
-
delete
@CacheEvict(value="thread",key="#thread.uid") @CacheEvict(value="thread",key="#thread.topic") public void delete(@NonNull ThreadRequest entity) - Specified by:
deletein classBaseRestService<ThreadEntity,ThreadRequest, ThreadResponse>
-
convertToResponse
- Specified by:
convertToResponsein classBaseRestService<ThreadEntity,ThreadRequest, ThreadResponse>
-
convertToExcel
Description copied from class:BaseRestServiceWithExport转换为Excel对象 子类必须实现此方法- Specified by:
convertToExcelin classBaseRestServiceWithExport<ThreadEntity,ThreadRequest, ThreadResponse, ThreadExcel>
-
createSpecification
protected org.springframework.data.jpa.domain.Specification<ThreadEntity> createSpecification(ThreadRequest request) Description copied from class:BaseRestService创建Specification对象,子类必须实现 用于queryByOrg的通用实现- Specified by:
createSpecificationin classBaseRestService<ThreadEntity,ThreadRequest, ThreadResponse>
-
executePageQuery
protected org.springframework.data.domain.Page<ThreadEntity> executePageQuery(org.springframework.data.jpa.domain.Specification<ThreadEntity> spec, org.springframework.data.domain.Pageable pageable) Description copied from class:BaseRestService执行分页查询,子类必须实现 用于queryByOrg的通用实现- Specified by:
executePageQueryin classBaseRestService<ThreadEntity,ThreadRequest, ThreadResponse>
-