diff --git a/lib/service-common/src/main/java/com/pudonghot/yo/service/CommonCampaignService.java b/lib/service-common/src/main/java/com/pudonghot/yo/service/CommonCampaignService.java index e9bc3abf..676a1bf7 100644 --- a/lib/service-common/src/main/java/com/pudonghot/yo/service/CommonCampaignService.java +++ b/lib/service-common/src/main/java/com/pudonghot/yo/service/CommonCampaignService.java @@ -14,8 +14,9 @@ public interface CommonCampaignService { * * @param campaignKey campaign key * @param agent agent + * @return queue id */ - void enqueue(String campaignKey, Agent agent); + Integer enqueue(String campaignKey, Agent agent); /** * agent dequeue diff --git a/lib/service-common/src/main/java/com/pudonghot/yo/service/impl/CommonCampaignServiceImpl.java b/lib/service-common/src/main/java/com/pudonghot/yo/service/impl/CommonCampaignServiceImpl.java index 51e0bea7..028070f7 100644 --- a/lib/service-common/src/main/java/com/pudonghot/yo/service/impl/CommonCampaignServiceImpl.java +++ b/lib/service-common/src/main/java/com/pudonghot/yo/service/impl/CommonCampaignServiceImpl.java @@ -37,18 +37,18 @@ public class CommonCampaignServiceImpl * {@inheritDoc} */ @Override - public void enqueue(final String campaignKey, final Agent agent) { + public Integer enqueue(final String campaignKey, final Agent agent) { log.info("Agent [{}] enqueue campaign [{}].", agent, campaignKey); - final Campaign campaign = findValid(campaignKey); - final Integer queueId = campaign.getTargetId(); - final Queue queue = queueMapper.find(queueId); + val campaign = findValid(campaignKey); + val queueId = campaign.getTargetId(); + val queue = queueMapper.find(queueId); Assert.state(queue != null, () -> "Campaign [" + campaignKey + "] queue not found"); Assert.state(queue.getActive(), () -> "Campaign [" + campaignKey + "] queue is not active"); - final Integer agentId = agent.getId(); - final QueueAgent queueAgentExisted = + val agentId = agent.getId(); + val queueAgentExisted = queueAgentMapper.find( new Search(QueueAgent.QUEUE_ID, queueId) .eq(QueueAgent.AGENT_ID, agentId)); @@ -56,10 +56,10 @@ public class CommonCampaignServiceImpl if (queueAgentExisted != null) { log.warn("Agent [{}] exists in queue [{}], ignore enqueue.", agentId, queueId); - return; + return queueId; } - final QueueAgent queueAgent = new QueueAgent(); + val queueAgent = new QueueAgent(); queueAgent.setTenantId(agent.getTenantId()); queueAgent.setTenantCode(agent.getTenantCode()); queueAgent.setQueueId(queueId); @@ -68,6 +68,7 @@ public class CommonCampaignServiceImpl queueAgent.setAccount(agent.getAccount()); queueAgent.setCreatedBy(agent.getAccount()); queueAgentMapper.insert(queueAgent); + return queueId; } /** diff --git a/server/src/main/java/com/pudonghot/yo/openapi/controller/CampaignController.java b/server/src/main/java/com/pudonghot/yo/openapi/controller/CampaignController.java index 254e1bc2..67a77f54 100644 --- a/server/src/main/java/com/pudonghot/yo/openapi/controller/CampaignController.java +++ b/server/src/main/java/com/pudonghot/yo/openapi/controller/CampaignController.java @@ -1,8 +1,8 @@ package com.pudonghot.yo.openapi.controller; +import lombok.val; import javax.validation.Valid; import lombok.extern.slf4j.Slf4j; -import com.pudonghot.yo.model.domain.Agent; import com.pudonghot.yo.service.AgentService; import org.springframework.stereotype.Controller; import com.pudonghot.yo.openapi.request.ReqCampaign; @@ -39,11 +39,12 @@ public class CampaignController implements SessionAbility { final String account, @Valid @RequestBody final ReqCampaign form) { - final Agent agent = agentService.findValid( + val agent = agentService.findValid( form.getTenantId(), account); agentStatusService.findRegisteredAgentStatus(agent); commonCampaignService.dequeue(agent); - commonCampaignService.enqueue(form.getCampaignKey(), agent); + val queueId = commonCampaignService.enqueue(form.getCampaignKey(), agent); + agent.setQueues(String.valueOf(queueId)); // agent ready agentStatusService.ready(agent); diff --git a/server/src/main/java/com/pudonghot/yo/openapi/service/impl/AgentEventServiceImpl.java b/server/src/main/java/com/pudonghot/yo/openapi/service/impl/AgentEventServiceImpl.java index 53f487aa..43aed227 100644 --- a/server/src/main/java/com/pudonghot/yo/openapi/service/impl/AgentEventServiceImpl.java +++ b/server/src/main/java/com/pudonghot/yo/openapi/service/impl/AgentEventServiceImpl.java @@ -29,6 +29,7 @@ import org.springframework.beans.factory.InitializingBean; import com.pudonghot.yo.service.CommonAgentEventQueueService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.context.request.async.DeferredResult; +import static com.pudonghot.yo.model.agentevent.EventType.AgentState_CancelNotReady_Success; /** * @author Donghuang @@ -98,7 +99,9 @@ public class AgentEventServiceImpl implements AgentEventService, InitializingBea */ @Override public void publish(final Agent agent, final EventType eventType) { - publish(agent, eventType, null); + publish(agent, eventType, + AgentState_CancelNotReady_Success == eventType ? + agent.getQueues() : null); } /**