Merge branch 'feature/bug-632' into test
This commit is contained in:
commit
a469439862
|
|
@ -1496,30 +1496,7 @@ public class TicketController extends ControllerBase {
|
|||
} else {
|
||||
stringRedisTemplate.opsForSet().remove(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-" + AdminUserUtil.getUserId());
|
||||
}
|
||||
if (Objects.equals(0L, stringRedisTemplate.opsForSet().size(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId()))) {
|
||||
ShengWangChannelUserListDTO channelUserListDTO = shengWangService.getChannelUsers("ticket" + request.getTicketId());
|
||||
if (!channelUserListDTO.isChannelEexist() || channelUserListDTO.getUsers().size() <= 1) {
|
||||
ssePushService.sendTicketCallEnd(request.getTicketId());
|
||||
Integer userId = CollectionUtil.get(channelUserListDTO.getUsers(), 0);
|
||||
if (Objects.nonNull(userId)) {
|
||||
String from = userId.toString().startsWith("1") ? "app" : "admin";
|
||||
userId = Integer.valueOf(userId.toString().substring(1));
|
||||
uniPushService.send(new UniPushMessage()
|
||||
.setSenderId(from + "-uid-0")//不重要
|
||||
.setReceiverId(from + "-uid-" + userId)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setTitle("视频通话结束")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTicketId(request.getTicketId())
|
||||
.setUserId(userId)
|
||||
.setCategory("ticketCallEnd")
|
||||
.setFrom("admin")
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
ticketEventPublisher.publishTicketCallEndEvent(request.getTicketId());
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,22 @@
|
|||
package com.nflg.mobilebroken.admin.event;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.nflg.mobilebroken.admin.service.ShengWangService;
|
||||
import com.nflg.mobilebroken.admin.service.SsePushService;
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
import com.nflg.mobilebroken.common.constant.TicketState;
|
||||
import com.nflg.mobilebroken.common.pojo.dto.*;
|
||||
import com.nflg.mobilebroken.repository.service.TicketChatService;
|
||||
import com.nflg.mobilebroken.starter.service.UniPushService;
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationContextAware;
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.Instant;
|
||||
import java.util.Objects;
|
||||
|
||||
public class TicketCallEndEvent extends ApplicationEvent implements ApplicationContextAware {
|
||||
|
||||
|
|
@ -15,6 +25,8 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC
|
|||
private SsePushService ssePushService;
|
||||
private TicketChatService ticketChatService;
|
||||
private ShengWangService shengWangService;
|
||||
private StringRedisTemplate stringRedisTemplate;
|
||||
private UniPushService uniPushService;
|
||||
|
||||
public TicketCallEndEvent(Object source, Integer ticketId) {
|
||||
super(source);
|
||||
|
|
@ -26,23 +38,46 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC
|
|||
this.ssePushService = applicationContext.getBean(SsePushService.class);
|
||||
this.ticketChatService = applicationContext.getBean(TicketChatService.class);
|
||||
this.shengWangService = applicationContext.getBean(ShengWangService.class);
|
||||
this.stringRedisTemplate = applicationContext.getBean(StringRedisTemplate.class);
|
||||
this.uniPushService = applicationContext.getBean(UniPushService.class);
|
||||
}
|
||||
|
||||
// public void send() throws IOException, InterruptedException {
|
||||
// TimeUnit.SECONDS.sleep(2);
|
||||
// if (CollectionUtil.isEmpty(shengWangService.getChannelUsers("ticket-" + ticketId))) {
|
||||
// ChatMessageDTO message = new ChatMessageDTO()
|
||||
// .setId(cn.hutool.core.util.IdUtil.getSnowflakeNextIdStr())
|
||||
// .setFrom("call")
|
||||
// .setTicketState(TicketState.Processing.getState())
|
||||
// .setSenderId(0)
|
||||
// .setSenderName("通话助手")
|
||||
// .setContent("视频通话已结束")
|
||||
// .setCreateTime(Instant.now());
|
||||
// ticketChatService.addMessage(ticketId, message);
|
||||
// //推送消息
|
||||
// ssePushService.sendTicketMessageToAdmin(ticketId, message);
|
||||
// ssePushService.sendTicketMessageToApp(ticketId, message);
|
||||
// }
|
||||
// }
|
||||
public void send() throws IOException, InterruptedException {
|
||||
if (Objects.equals(0L, stringRedisTemplate.opsForSet().size(Constant.REDIS_KEY_TICKET_CALL_WAIT + ticketId))) {
|
||||
ShengWangChannelUserListDTO channelUserListDTO = shengWangService.getChannelUsers("ticket" + ticketId);
|
||||
if (!channelUserListDTO.isChannelEexist() || channelUserListDTO.getUsers().size() <= 1) {
|
||||
ChatMessageDTO message = new ChatMessageDTO()
|
||||
.setId(cn.hutool.core.util.IdUtil.getSnowflakeNextIdStr())
|
||||
.setFrom("call")
|
||||
.setTicketState(TicketState.Processing.getState())
|
||||
.setSenderId(0)
|
||||
.setSenderName("通话助手")
|
||||
.setContent("视频通话已结束")
|
||||
.setCreateTime(Instant.now());
|
||||
ticketChatService.addMessage(ticketId, message);
|
||||
//推送消息
|
||||
ssePushService.sendTicketMessageToAdmin(ticketId, message);
|
||||
ssePushService.sendTicketMessageToApp(ticketId, message);
|
||||
ssePushService.sendTicketCallEnd(ticketId);
|
||||
Integer userId = CollectionUtil.get(channelUserListDTO.getUsers(), 0);
|
||||
if (Objects.nonNull(userId)) {
|
||||
String from = userId.toString().startsWith("1") ? "app" : "admin";
|
||||
userId = Integer.valueOf(userId.toString().substring(1));
|
||||
uniPushService.send(new UniPushMessage()
|
||||
.setSenderId(from + "-uid-0")//不重要
|
||||
.setReceiverId(from + "-uid-" + userId)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setTitle("视频通话结束")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTicketId(ticketId)
|
||||
.setUserId(userId)
|
||||
.setCategory("ticketCallEnd")
|
||||
.setFrom("admin")
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -5,6 +5,8 @@ import org.springframework.context.event.EventListener;
|
|||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@Component
|
||||
public class TicketEventListener {
|
||||
|
||||
|
|
@ -38,9 +40,9 @@ public class TicketEventListener {
|
|||
event.send();
|
||||
}
|
||||
|
||||
// @Async
|
||||
// @EventListener
|
||||
// public void handleTicketCallEndEvent(TicketCallEndEvent event) throws IOException, InterruptedException {
|
||||
// event.send();
|
||||
// }
|
||||
@Async
|
||||
@EventListener
|
||||
public void handleTicketCallEndEvent(TicketCallEndEvent event) throws IOException, InterruptedException {
|
||||
event.send();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -664,30 +664,7 @@ public class TicketController extends ControllerBase {
|
|||
} else {
|
||||
stringRedisTemplate.opsForSet().remove(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_APP + "-" + AppUserUtil.getUserId());
|
||||
}
|
||||
if (Objects.equals(0L, stringRedisTemplate.opsForSet().size(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId()))) {
|
||||
ShengWangChannelUserListDTO channelUserListDTO = shengWangService.getChannelUsers("ticket" + request.getTicketId());
|
||||
if (!channelUserListDTO.isChannelEexist() || channelUserListDTO.getUsers().size() <= 1) {
|
||||
ssePushService.sendTicketCallEnd(request.getTicketId());
|
||||
Integer userId = CollectionUtil.get(channelUserListDTO.getUsers(), 0);
|
||||
if (Objects.nonNull(userId)) {
|
||||
String from = userId.toString().startsWith("1") ? "app" : "admin";
|
||||
userId = Integer.valueOf(userId.toString().substring(1));
|
||||
uniPushService.send(new UniPushMessage()
|
||||
.setSenderId(from + "-uid-0")//不重要
|
||||
.setReceiverId(from + "-uid-" + userId)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setTitle("视频通话结束")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTicketId(request.getTicketId())
|
||||
.setUserId(userId)
|
||||
.setCategory("ticketCallEnd")
|
||||
.setFrom("app")
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
ticketEventPublisher.publishTicketCallEndEvent(request.getTicketId());
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,22 @@
|
|||
package com.nflg.mobilebroken.cfs.event;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.nflg.mobilebroken.cfs.service.ShengWangService;
|
||||
import com.nflg.mobilebroken.cfs.service.SsePushService;
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
import com.nflg.mobilebroken.common.constant.TicketState;
|
||||
import com.nflg.mobilebroken.common.pojo.dto.*;
|
||||
import com.nflg.mobilebroken.repository.service.TicketChatService;
|
||||
import com.nflg.mobilebroken.starter.service.UniPushService;
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationContextAware;
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.Instant;
|
||||
import java.util.Objects;
|
||||
|
||||
public class TicketCallEndEvent extends ApplicationEvent implements ApplicationContextAware {
|
||||
|
||||
|
|
@ -15,6 +25,8 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC
|
|||
private SsePushService ssePushService;
|
||||
private TicketChatService ticketChatService;
|
||||
private ShengWangService shengWangService;
|
||||
private StringRedisTemplate stringRedisTemplate;
|
||||
private UniPushService uniPushService;
|
||||
|
||||
public TicketCallEndEvent(Object source,Integer ticketId) {
|
||||
super(source);
|
||||
|
|
@ -26,23 +38,46 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC
|
|||
this.ssePushService = applicationContext.getBean(SsePushService.class);
|
||||
this.ticketChatService = applicationContext.getBean(TicketChatService.class);
|
||||
this.shengWangService = applicationContext.getBean(ShengWangService.class);
|
||||
this.stringRedisTemplate = applicationContext.getBean(StringRedisTemplate.class);
|
||||
this.uniPushService = applicationContext.getBean(UniPushService.class);
|
||||
}
|
||||
|
||||
// public void send() throws IOException, InterruptedException {
|
||||
// TimeUnit.SECONDS.sleep(2);
|
||||
// if (CollectionUtil.isEmpty(shengWangService.getChannelUsers("ticket-" + ticketId))) {
|
||||
// ChatMessageDTO message = new ChatMessageDTO()
|
||||
// .setId(cn.hutool.core.util.IdUtil.getSnowflakeNextIdStr())
|
||||
// .setFrom("call")
|
||||
// .setTicketState(TicketState.Processing.getState())
|
||||
// .setSenderId(0)
|
||||
// .setSenderName("通话助手")
|
||||
// .setContent("视频通话已结束")
|
||||
// .setCreateTime(Instant.now());
|
||||
// ticketChatService.addMessage(ticketId, message);
|
||||
// //推送消息
|
||||
// ssePushService.sendTicketMessageToAdmin(ticketId, message);
|
||||
// ssePushService.sendTicketMessageToApp(ticketId, message);
|
||||
// }
|
||||
// }
|
||||
public void send() throws IOException, InterruptedException {
|
||||
if (Objects.equals(0L, stringRedisTemplate.opsForSet().size(Constant.REDIS_KEY_TICKET_CALL_WAIT + ticketId))) {
|
||||
ShengWangChannelUserListDTO channelUserListDTO = shengWangService.getChannelUsers("ticket" + ticketId);
|
||||
if (!channelUserListDTO.isChannelEexist() || channelUserListDTO.getUsers().size() <= 1) {
|
||||
ChatMessageDTO message = new ChatMessageDTO()
|
||||
.setId(cn.hutool.core.util.IdUtil.getSnowflakeNextIdStr())
|
||||
.setFrom("call")
|
||||
.setTicketState(TicketState.Processing.getState())
|
||||
.setSenderId(0)
|
||||
.setSenderName("通话助手")
|
||||
.setContent("视频通话已结束")
|
||||
.setCreateTime(Instant.now());
|
||||
ticketChatService.addMessage(ticketId, message);
|
||||
//推送消息
|
||||
ssePushService.sendTicketMessageToAdmin(ticketId, message);
|
||||
ssePushService.sendTicketMessageToApp(ticketId, message);
|
||||
ssePushService.sendTicketCallEnd(ticketId);
|
||||
Integer userId = CollectionUtil.get(channelUserListDTO.getUsers(), 0);
|
||||
if (Objects.nonNull(userId)) {
|
||||
String from = userId.toString().startsWith("1") ? "app" : "admin";
|
||||
userId = Integer.valueOf(userId.toString().substring(1));
|
||||
uniPushService.send(new UniPushMessage()
|
||||
.setSenderId(from + "-uid-0")//不重要
|
||||
.setReceiverId(from + "-uid-" + userId)
|
||||
.setSendData(new UniPushMessageBody()
|
||||
.setTitle("视频通话结束")
|
||||
.setPayload(new UniPushMessageCallPayload()
|
||||
.setTicketId(ticketId)
|
||||
.setUserId(userId)
|
||||
.setCategory("ticketCallEnd")
|
||||
.setFrom("app")
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -5,6 +5,8 @@ import org.springframework.context.event.EventListener;
|
|||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@Component
|
||||
public class TicketEventListener {
|
||||
|
||||
|
|
@ -44,9 +46,9 @@ public class TicketEventListener {
|
|||
event.send();
|
||||
}
|
||||
|
||||
// @Async
|
||||
// @EventListener
|
||||
// public void handleTicketCallEndEvent(TicketCallEndEvent event) throws IOException, InterruptedException {
|
||||
// event.send();
|
||||
// }
|
||||
@Async
|
||||
@EventListener
|
||||
public void handleTicketCallEndEvent(TicketCallEndEvent event) throws IOException, InterruptedException {
|
||||
event.send();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue