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