Class QueueMemberRestService
java.lang.Object
com.bytedesk.core.base.BaseRestService<T,TRequest,TResponse>
com.bytedesk.core.base.BaseRestServiceWithExport<QueueMemberEntity,QueueMemberRequest,QueueMemberResponse,QueueMemberExcel>
com.bytedesk.service.queue_member.QueueMemberRestService
@Service
public class QueueMemberRestService
extends BaseRestServiceWithExport<QueueMemberEntity,QueueMemberRequest,QueueMemberResponse,QueueMemberExcel>
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final org.modelmapper.ModelMapperprivate final QueueMemberRepositoryprivate final ThreadRestServiceprivate final org.springframework.transaction.PlatformTransactionManagerprivate final UidUtilsFields inherited from class com.bytedesk.core.base.BaseRestService
authService -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionconvertToExcel(QueueMemberEntity entity) 转换为Excel对象 子类必须实现此方法convertToResponse(QueueMemberEntity entity) intcountQueuingByAgentQueueUid(String agentQueueUid) 统计客服队列中处于排队状态的会话数intcountUnassignedQueuingByWorkgroupQueueUids(List<String> workgroupQueueUids) 统计工作组队列中未分配客服且处于排队状态的会话数create(QueueMemberRequest request) 客服排队会话:org/queue/{agent_uid}protected org.springframework.data.jpa.domain.Specification<QueueMemberEntity>createSpecification(QueueMemberRequest request) 创建Specification对象,子类必须实现 用于queryByOrg的通用实现voiddelete(QueueMemberRequest entity) voidvoiddeleteByUid(String uid) protected QueueMemberEntitydoSave(QueueMemberEntity entity) 子类实现具体的保存逻辑protected org.springframework.data.domain.Page<QueueMemberEntity>executePageQuery(org.springframework.data.jpa.domain.Specification<QueueMemberEntity> spec, org.springframework.data.domain.Pageable pageable) 执行分页查询,子类必须实现 用于queryByOrg的通用实现org.springframework.data.domain.Page<QueueMemberResponse>findAgentQueueMembers(String agentQueueUid, org.springframework.data.domain.Pageable pageable) findByThreadUid(String threadUid) findEarliestAgentQueueMember(String agentQueueUid) findEarliestAgentQueueMemberForUpdate(String agentQueueUid) findEarliestRobotQueueMember(String robotQueueUid) findEarliestWorkgroupQueueMember(String workgroupQueueUid) findQueuingMembersByWorkgroupQueueUid(String workgroupQueueUid) handleOptimisticLockingFailureException(org.springframework.orm.ObjectOptimisticLockingFailureException e, QueueMemberEntity entity) intnextQueueNumber(QueueEntity queue, QueueTypeEnum queueType) voidsaveAsyncBestEffort(QueueMemberEntity entity) QueueMember 的部分更新并不要求强一致(例如:acceptedAt、offline 标记、计数等)。update(QueueMemberRequest request) Methods inherited from class com.bytedesk.core.base.BaseRestServiceWithExport
queryByOrgEntityMethods inherited from class com.bytedesk.core.base.BaseRestService
deleteByOrgUid, findByOrgUid, getUidFromRequest, queryByOrg, queryByUid, queryByUser, recover, save, setUserUidToRequest
-
Field Details
-
queueMemberRepository
-
modelMapper
private final org.modelmapper.ModelMapper modelMapper -
uidUtils
-
threadRestService
-
transactionManager
private final org.springframework.transaction.PlatformTransactionManager transactionManager
-
-
Constructor Details
-
QueueMemberRestService
public QueueMemberRestService()
-
-
Method Details
-
findByUid
- Specified by:
findByUidin classBaseRestService<QueueMemberEntity,QueueMemberRequest, QueueMemberResponse>
-
findByThreadUid
-
create
- Specified by:
createin classBaseRestService<QueueMemberEntity,QueueMemberRequest, QueueMemberResponse>
-
update
- Specified by:
updatein classBaseRestService<QueueMemberEntity,QueueMemberRequest, QueueMemberResponse>
-
doSave
Description copied from class:BaseRestService子类实现具体的保存逻辑- Specified by:
doSavein classBaseRestService<QueueMemberEntity,QueueMemberRequest, QueueMemberResponse>
-
saveAsyncBestEffort
QueueMember 的部分更新并不要求强一致(例如:acceptedAt、offline 标记、计数等)。 将这些更新放到异步 + 新事务中 best-effort 执行: - 避免乐观锁冲突把主流程事务标记为 rollback-only - 冲突时仅记录日志,不影响主流程 -
deleteByUid
- Specified by:
deleteByUidin classBaseRestService<QueueMemberEntity,QueueMemberRequest, QueueMemberResponse>
-
delete
- Specified by:
deletein classBaseRestService<QueueMemberEntity,QueueMemberRequest, QueueMemberResponse>
-
deleteAll
public void deleteAll() -
handleOptimisticLockingFailureException
public QueueMemberEntity handleOptimisticLockingFailureException(org.springframework.orm.ObjectOptimisticLockingFailureException e, QueueMemberEntity entity) - Specified by:
handleOptimisticLockingFailureExceptionin classBaseRestService<QueueMemberEntity,QueueMemberRequest, QueueMemberResponse>
-
convertToResponse
- Specified by:
convertToResponsein classBaseRestService<QueueMemberEntity,QueueMemberRequest, QueueMemberResponse>
-
convertToExcel
Description copied from class:BaseRestServiceWithExport转换为Excel对象 子类必须实现此方法- Specified by:
convertToExcelin classBaseRestServiceWithExport<QueueMemberEntity,QueueMemberRequest, QueueMemberResponse, QueueMemberExcel>
-
createSpecification
protected org.springframework.data.jpa.domain.Specification<QueueMemberEntity> createSpecification(QueueMemberRequest request) Description copied from class:BaseRestService创建Specification对象,子类必须实现 用于queryByOrg的通用实现- Specified by:
createSpecificationin classBaseRestService<QueueMemberEntity,QueueMemberRequest, QueueMemberResponse>
-
executePageQuery
protected org.springframework.data.domain.Page<QueueMemberEntity> executePageQuery(org.springframework.data.jpa.domain.Specification<QueueMemberEntity> spec, org.springframework.data.domain.Pageable pageable) Description copied from class:BaseRestService执行分页查询,子类必须实现 用于queryByOrg的通用实现- Specified by:
executePageQueryin classBaseRestService<QueueMemberEntity,QueueMemberRequest, QueueMemberResponse>
-
nextQueueNumber
-
findEarliestAgentQueueMember
-
findEarliestAgentQueueMemberForUpdate
-
findEarliestWorkgroupQueueMember
-
findQueuingMembersByWorkgroupQueueUid
-
findEarliestRobotQueueMember
-
findAgentQueueMembers
public org.springframework.data.domain.Page<QueueMemberResponse> findAgentQueueMembers(String agentQueueUid, org.springframework.data.domain.Pageable pageable) -
countQueuingByAgentQueueUid
统计客服队列中处于排队状态的会话数- Parameters:
agentQueueUid- 客服队列UID- Returns:
- 排队中的会话数
-
countUnassignedQueuingByWorkgroupQueueUids
统计工作组队列中未分配客服且处于排队状态的会话数- Parameters:
workgroupQueueUids- 工作组队列UID列表- Returns:
- 未分配客服的排队会话数
-
createAgentQueueThread
客服排队会话:org/queue/{agent_uid}
-