|
|
package com.sunyo.wlpt.message.bus.service.service.impl;
|
|
|
|
|
|
import com.sunyo.wlpt.message.bus.service.domain.BusQueue;
|
|
|
import com.sunyo.wlpt.message.bus.service.mapper.BusQueueMapper;
|
|
|
import com.sunyo.wlpt.message.bus.service.mapper.MessageRouterMapper;
|
|
|
import com.sunyo.wlpt.message.bus.service.mapper.MessageRouterReciverMapper;
|
|
|
import com.sunyo.wlpt.message.bus.service.mapper.UserTopicMapper;
|
|
|
import com.sunyo.wlpt.message.bus.service.mapper.*;
|
|
|
import com.sunyo.wlpt.message.bus.service.model.MessageRouter;
|
|
|
import com.sunyo.wlpt.message.bus.service.model.MessageRouterReciver;
|
|
|
import com.sunyo.wlpt.message.bus.service.model.MessageType;
|
...
|
...
|
@@ -29,6 +26,9 @@ public class RouterServiceImp implements RouterService { |
|
|
@Resource
|
|
|
BusQueueMapper busQueueMapper;
|
|
|
|
|
|
@Resource
|
|
|
MessageTypeMapper typeMapper;
|
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
...
|
...
|
@@ -41,9 +41,9 @@ public class RouterServiceImp implements RouterService { |
|
|
* 批量增加发送者表
|
|
|
*/
|
|
|
for (String sndr: senders) {
|
|
|
String id = IdUtils.generateId();
|
|
|
|
|
|
MessageRouter router = new MessageRouter();
|
|
|
router.setId(id);
|
|
|
|
|
|
router.setSndr(sndr);
|
|
|
router.setDes(record.getDes());
|
|
|
router.setVer(record.getVer());
|
...
|
...
|
@@ -57,51 +57,55 @@ public class RouterServiceImp implements RouterService { |
|
|
if (messageTypes!=null && !messageTypes.isEmpty()){
|
|
|
for (MessageType type: messageTypes) {
|
|
|
/**
|
|
|
* 判断消息类型是 大类 主类还是子类
|
|
|
* 只取二级类
|
|
|
*/
|
|
|
if (type.getType() == 2){
|
|
|
//大类处理
|
|
|
router.setBtype(type.getName());
|
|
|
}
|
|
|
if (type.getType() == 3){
|
|
|
//二级类处理
|
|
|
router.setStype(type.getName());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
String id = IdUtils.generateId();
|
|
|
router.setId(id);
|
|
|
/**
|
|
|
* 查找二级类的上级类
|
|
|
*/
|
|
|
MessageType bType = typeMapper.selectParentByChildName(type.getName());
|
|
|
|
|
|
/**
|
|
|
* 路由生产者消息入库
|
|
|
*/
|
|
|
messageRouterMapper.insertSelective(router);
|
|
|
router.setBtype(bType.getName());
|
|
|
|
|
|
/**
|
|
|
* 批量增加接收者表
|
|
|
* 这里得receiver列表指的是接收者账号
|
|
|
* 要通过账号找到 账号所对应的队列信息 再入库
|
|
|
*/
|
|
|
List<String> receivers = record.getRcvrs();
|
|
|
if (receivers!=null && !receivers.isEmpty()){
|
|
|
for (String rcvr :receivers) {
|
|
|
String rcvr_id = IdUtils.generateId();
|
|
|
MessageRouterReciver messageRouterReciver = new MessageRouterReciver();
|
|
|
messageRouterReciver.setId(rcvr_id);
|
|
|
messageRouterReciver.setMessageRouterId(id);
|
|
|
/**
|
|
|
* 寻找账号对应的队列名称
|
|
|
*/
|
|
|
List<BusQueue> busQueues = busQueueMapper.selectTopicByUsername(rcvr);
|
|
|
messageRouterReciver.setRcvrTopic(busQueues.get(0).getQueueName());
|
|
|
|
|
|
/**
|
|
|
* 插入数据到订阅者表
|
|
|
*/
|
|
|
routerReciverMapper.insertSelective(messageRouterReciver);
|
|
|
//二级类处理
|
|
|
router.setStype(type.getName());
|
|
|
|
|
|
/**
|
|
|
* 路由生产者消息入库
|
|
|
*/
|
|
|
messageRouterMapper.insertSelective(router);
|
|
|
|
|
|
/**
|
|
|
* 批量增加接收者表
|
|
|
* 这里得receiver列表指的是接收者账号
|
|
|
* 要通过账号找到 账号所对应的队列信息 再入库
|
|
|
*/
|
|
|
List<String> receivers = record.getRcvrs();
|
|
|
if (receivers!=null && !receivers.isEmpty()){
|
|
|
for (String rcvr :receivers) {
|
|
|
String rcvr_id = IdUtils.generateId();
|
|
|
MessageRouterReciver messageRouterReciver = new MessageRouterReciver();
|
|
|
messageRouterReciver.setId(rcvr_id);
|
|
|
messageRouterReciver.setMessageRouterId(id);
|
|
|
/**
|
|
|
* 寻找账号对应的队列名称
|
|
|
*/
|
|
|
List<BusQueue> busQueues = busQueueMapper.selectTopicByUsername(rcvr);
|
|
|
messageRouterReciver.setRcvrTopic(busQueues.get(0).getQueueName());
|
|
|
|
|
|
/**
|
|
|
* 插入数据到订阅者表
|
|
|
*/
|
|
|
routerReciverMapper.insertSelective(messageRouterReciver);
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
}
|
|
|
return true;
|
...
|
...
|
@@ -109,4 +113,14 @@ public class RouterServiceImp implements RouterService { |
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<MessageRouter> searchBySndr(String sndr) {
|
|
|
List<MessageRouter> list = messageRouterMapper.selectBySndr(sndr);
|
|
|
for (MessageRouter router:list) {
|
|
|
List<MessageRouterReciver> routerRecivers = routerReciverMapper.selectByRouterKey(router.getId());
|
|
|
router.setRcvrList(routerRecivers);
|
|
|
}
|
|
|
return list;
|
|
|
}
|
|
|
} |
...
|
...
|
|