push queue id param

This commit is contained in:
Donghuang 2021-09-26 23:52:21 +08:00
parent aa616704fb
commit e81fb93143
4 changed files with 19 additions and 13 deletions

View File

@ -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

View File

@ -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;
}
/**

View File

@ -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);

View File

@ -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);
}
/**