作者 朱兆平

批量新增路由与加载已配置路由适配

@@ -6,10 +6,7 @@ import com.sunyo.wlpt.message.bus.service.response.ResultJson; @@ -6,10 +6,7 @@ import com.sunyo.wlpt.message.bus.service.response.ResultJson;
6 import com.sunyo.wlpt.message.bus.service.service.RouterService; 6 import com.sunyo.wlpt.message.bus.service.service.RouterService;
7 import io.swagger.annotations.ApiOperation; 7 import io.swagger.annotations.ApiOperation;
8 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
9 -import org.springframework.web.bind.annotation.PostMapping;  
10 -import org.springframework.web.bind.annotation.RequestBody;  
11 -import org.springframework.web.bind.annotation.RequestMapping;  
12 -import org.springframework.web.bind.annotation.RestController; 9 +import org.springframework.web.bind.annotation.*;
13 10
14 import java.util.List; 11 import java.util.List;
15 12
@@ -27,4 +24,11 @@ public class RouterController { @@ -27,4 +24,11 @@ public class RouterController {
27 boolean result = routerService.batchAddRouter(messageRouter); 24 boolean result = routerService.batchAddRouter(messageRouter);
28 return result ? new ResultJson("200","success") :new ResultJson("400","error"); 25 return result ? new ResultJson("200","success") :new ResultJson("400","error");
29 } 26 }
  27 +
  28 + @GetMapping("searchBysndr")
  29 + public ResultJson<List<MessageRouter>> getAllRouter(@RequestParam(value = "sndr",required = true) String sndr){
  30 + List<MessageRouter> all = routerService.searchBySndr(sndr);
  31 + return new ResultJson<>("200","success",all);
  32 + }
  33 +
30 } 34 }
@@ -2,6 +2,8 @@ package com.sunyo.wlpt.message.bus.service.mapper; @@ -2,6 +2,8 @@ package com.sunyo.wlpt.message.bus.service.mapper;
2 2
3 import com.sunyo.wlpt.message.bus.service.model.MessageRouter; 3 import com.sunyo.wlpt.message.bus.service.model.MessageRouter;
4 4
  5 +import java.util.List;
  6 +
5 public interface MessageRouterMapper { 7 public interface MessageRouterMapper {
6 int deleteByPrimaryKey(String id); 8 int deleteByPrimaryKey(String id);
7 9
@@ -11,6 +13,8 @@ public interface MessageRouterMapper { @@ -11,6 +13,8 @@ public interface MessageRouterMapper {
11 13
12 MessageRouter selectByPrimaryKey(String id); 14 MessageRouter selectByPrimaryKey(String id);
13 15
  16 + List<MessageRouter> selectBySndr(String sndr);
  17 +
14 int updateByPrimaryKeySelective(MessageRouter record); 18 int updateByPrimaryKeySelective(MessageRouter record);
15 19
16 int updateByPrimaryKey(MessageRouter record); 20 int updateByPrimaryKey(MessageRouter record);
@@ -13,6 +13,8 @@ public interface MessageTypeMapper { @@ -13,6 +13,8 @@ public interface MessageTypeMapper {
13 13
14 MessageType selectByPrimaryKey(String id); 14 MessageType selectByPrimaryKey(String id);
15 15
  16 + MessageType selectParentByChildName(String id);
  17 +
16 List<MessageType> selectByParentId(String id); 18 List<MessageType> selectByParentId(String id);
17 19
18 List<MessageType> selectAll(MessageType record); 20 List<MessageType> selectAll(MessageType record);
@@ -16,6 +16,8 @@ public class MessageType extends BasePage{ @@ -16,6 +16,8 @@ public class MessageType extends BasePage{
16 16
17 private Integer type; 17 private Integer type;
18 18
  19 + private boolean disabled;
  20 +
19 private List<MessageType> children; 21 private List<MessageType> children;
20 22
21 public String getId() { 23 public String getId() {
@@ -56,6 +58,9 @@ public class MessageType extends BasePage{ @@ -56,6 +58,9 @@ public class MessageType extends BasePage{
56 58
57 public void setType(Integer type) { 59 public void setType(Integer type) {
58 this.type = type; 60 this.type = type;
  61 + if (type ==1 || type ==2 ){
  62 + this.disabled = true;
  63 + }
59 } 64 }
60 65
61 public List<MessageType> getChildren() { 66 public List<MessageType> getChildren() {
@@ -65,4 +70,12 @@ public class MessageType extends BasePage{ @@ -65,4 +70,12 @@ public class MessageType extends BasePage{
65 public void setChildren(List<MessageType> children) { 70 public void setChildren(List<MessageType> children) {
66 this.children = children; 71 this.children = children;
67 } 72 }
  73 +
  74 + public boolean isDisabled() {
  75 + return disabled;
  76 + }
  77 +
  78 + public void setDisabled(boolean disabled) {
  79 + this.disabled = disabled;
  80 + }
68 } 81 }
@@ -2,7 +2,11 @@ package com.sunyo.wlpt.message.bus.service.service; @@ -2,7 +2,11 @@ package com.sunyo.wlpt.message.bus.service.service;
2 2
3 import com.sunyo.wlpt.message.bus.service.model.MessageRouter; 3 import com.sunyo.wlpt.message.bus.service.model.MessageRouter;
4 4
  5 +import java.util.List;
  6 +
5 public interface RouterService { 7 public interface RouterService {
6 8
7 boolean batchAddRouter(MessageRouter messageRouter); 9 boolean batchAddRouter(MessageRouter messageRouter);
  10 +
  11 + List<MessageRouter> searchBySndr(String sndr);
8 } 12 }
1 package com.sunyo.wlpt.message.bus.service.service.impl; 1 package com.sunyo.wlpt.message.bus.service.service.impl;
2 2
3 import com.sunyo.wlpt.message.bus.service.domain.BusQueue; 3 import com.sunyo.wlpt.message.bus.service.domain.BusQueue;
4 -import com.sunyo.wlpt.message.bus.service.mapper.BusQueueMapper;  
5 -import com.sunyo.wlpt.message.bus.service.mapper.MessageRouterMapper;  
6 -import com.sunyo.wlpt.message.bus.service.mapper.MessageRouterReciverMapper;  
7 -import com.sunyo.wlpt.message.bus.service.mapper.UserTopicMapper; 4 +import com.sunyo.wlpt.message.bus.service.mapper.*;
8 import com.sunyo.wlpt.message.bus.service.model.MessageRouter; 5 import com.sunyo.wlpt.message.bus.service.model.MessageRouter;
9 import com.sunyo.wlpt.message.bus.service.model.MessageRouterReciver; 6 import com.sunyo.wlpt.message.bus.service.model.MessageRouterReciver;
10 import com.sunyo.wlpt.message.bus.service.model.MessageType; 7 import com.sunyo.wlpt.message.bus.service.model.MessageType;
@@ -29,6 +26,9 @@ public class RouterServiceImp implements RouterService { @@ -29,6 +26,9 @@ public class RouterServiceImp implements RouterService {
29 @Resource 26 @Resource
30 BusQueueMapper busQueueMapper; 27 BusQueueMapper busQueueMapper;
31 28
  29 + @Resource
  30 + MessageTypeMapper typeMapper;
  31 +
32 32
33 @Transactional(rollbackFor = Exception.class) 33 @Transactional(rollbackFor = Exception.class)
34 @Override 34 @Override
@@ -41,9 +41,9 @@ public class RouterServiceImp implements RouterService { @@ -41,9 +41,9 @@ public class RouterServiceImp implements RouterService {
41 * 批量增加发送者表 41 * 批量增加发送者表
42 */ 42 */
43 for (String sndr: senders) { 43 for (String sndr: senders) {
44 - String id = IdUtils.generateId(); 44 +
45 MessageRouter router = new MessageRouter(); 45 MessageRouter router = new MessageRouter();
46 - router.setId(id); 46 +
47 router.setSndr(sndr); 47 router.setSndr(sndr);
48 router.setDes(record.getDes()); 48 router.setDes(record.getDes());
49 router.setVer(record.getVer()); 49 router.setVer(record.getVer());
@@ -57,51 +57,55 @@ public class RouterServiceImp implements RouterService { @@ -57,51 +57,55 @@ public class RouterServiceImp implements RouterService {
57 if (messageTypes!=null && !messageTypes.isEmpty()){ 57 if (messageTypes!=null && !messageTypes.isEmpty()){
58 for (MessageType type: messageTypes) { 58 for (MessageType type: messageTypes) {
59 /** 59 /**
60 - * 判断消息类型是 大类 主类还是子 60 + * 只取二级
61 */ 61 */
62 - if (type.getType() == 2){  
63 - //大类处理  
64 - router.setBtype(type.getName());  
65 - }  
66 if (type.getType() == 3){ 62 if (type.getType() == 3){
67 - //二级类处理  
68 - router.setStype(type.getName());  
69 - }  
70 - }  
71 - } 63 + String id = IdUtils.generateId();
  64 + router.setId(id);
  65 + /**
  66 + * 查找二级类的上级类
  67 + */
  68 + MessageType bType = typeMapper.selectParentByChildName(type.getName());
72 69
73 - /**  
74 - * 路由生产者消息入库  
75 - */  
76 - messageRouterMapper.insertSelective(router); 70 + router.setBtype(bType.getName());
77 71
78 - /**  
79 - * 批量增加接收者表  
80 - * 这里得receiver列表指的是接收者账号  
81 - * 要通过账号找到 账号所对应的队列信息 再入库  
82 - */  
83 - List<String> receivers = record.getRcvrs();  
84 - if (receivers!=null && !receivers.isEmpty()){  
85 - for (String rcvr :receivers) {  
86 - String rcvr_id = IdUtils.generateId();  
87 - MessageRouterReciver messageRouterReciver = new MessageRouterReciver();  
88 - messageRouterReciver.setId(rcvr_id);  
89 - messageRouterReciver.setMessageRouterId(id);  
90 - /**  
91 - * 寻找账号对应的队列名称  
92 - */  
93 - List<BusQueue> busQueues = busQueueMapper.selectTopicByUsername(rcvr);  
94 - messageRouterReciver.setRcvrTopic(busQueues.get(0).getQueueName());  
95 -  
96 - /**  
97 - * 插入数据到订阅者表  
98 - */  
99 - routerReciverMapper.insertSelective(messageRouterReciver); 72 + //二级类处理
  73 + router.setStype(type.getName());
100 74
  75 + /**
  76 + * 路由生产者消息入库
  77 + */
  78 + messageRouterMapper.insertSelective(router);
  79 +
  80 + /**
  81 + * 批量增加接收者表
  82 + * 这里得receiver列表指的是接收者账号
  83 + * 要通过账号找到 账号所对应的队列信息 再入库
  84 + */
  85 + List<String> receivers = record.getRcvrs();
  86 + if (receivers!=null && !receivers.isEmpty()){
  87 + for (String rcvr :receivers) {
  88 + String rcvr_id = IdUtils.generateId();
  89 + MessageRouterReciver messageRouterReciver = new MessageRouterReciver();
  90 + messageRouterReciver.setId(rcvr_id);
  91 + messageRouterReciver.setMessageRouterId(id);
  92 + /**
  93 + * 寻找账号对应的队列名称
  94 + */
  95 + List<BusQueue> busQueues = busQueueMapper.selectTopicByUsername(rcvr);
  96 + messageRouterReciver.setRcvrTopic(busQueues.get(0).getQueueName());
  97 +
  98 + /**
  99 + * 插入数据到订阅者表
  100 + */
  101 + routerReciverMapper.insertSelective(messageRouterReciver);
  102 +
  103 + }
  104 + }
  105 + }
101 } 106 }
102 } 107 }
103 108
104 -  
105 } 109 }
106 } 110 }
107 return true; 111 return true;
@@ -109,4 +113,14 @@ public class RouterServiceImp implements RouterService { @@ -109,4 +113,14 @@ public class RouterServiceImp implements RouterService {
109 return false; 113 return false;
110 } 114 }
111 } 115 }
  116 +
  117 + @Override
  118 + public List<MessageRouter> searchBySndr(String sndr) {
  119 + List<MessageRouter> list = messageRouterMapper.selectBySndr(sndr);
  120 + for (MessageRouter router:list) {
  121 + List<MessageRouterReciver> routerRecivers = routerReciverMapper.selectByRouterKey(router.getId());
  122 + router.setRcvrList(routerRecivers);
  123 + }
  124 + return list;
  125 + }
112 } 126 }
@@ -179,10 +179,10 @@ @@ -179,10 +179,10 @@
179 #{gmtModified,jdbcType=TIMESTAMP}, 179 #{gmtModified,jdbcType=TIMESTAMP},
180 </if> 180 </if>
181 <if test="partitionCount >0"> 181 <if test="partitionCount >0">
182 - #{partitionCount,jdbcType=TIMESTAMP}, 182 + #{partitionCount,jdbcType=INTEGER},
183 </if> 183 </if>
184 <if test="queueType >0"> 184 <if test="queueType >0">
185 - #{partitionCount,jdbcType=TIMESTAMP}, 185 + #{queueType,jdbcType=INTEGER},
186 </if> 186 </if>
187 </trim> 187 </trim>
188 </insert> 188 </insert>
@@ -15,7 +15,6 @@ @@ -15,7 +15,6 @@
15 <result column="ver" property="ver" jdbcType="VARCHAR" /> 15 <result column="ver" property="ver" jdbcType="VARCHAR" />
16 <result column="creat_time" property="creatTime" jdbcType="TIMESTAMP" /> 16 <result column="creat_time" property="creatTime" jdbcType="TIMESTAMP" />
17 <result column="update_time" property="updateTime" jdbcType="TIMESTAMP" /> 17 <result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
18 - <collection column="id" javaType="java.util.ArrayList" ofType="com.sunyo.wlpt.message.bus.service.model.MessageRouterReciver" property="rcvrList" select="com.sunyo.wlpt.message.bus.service.mapper.selectByRouterKey" />  
19 </resultMap> 18 </resultMap>
20 <sql id="Base_Column_List" > 19 <sql id="Base_Column_List" >
21 id, sndr, btype, stype, optype, msg_limit, `character`, status, `usage`, des, ver, creat_time, 20 id, sndr, btype, stype, optype, msg_limit, `character`, status, `usage`, des, ver, creat_time,
@@ -27,14 +26,22 @@ @@ -27,14 +26,22 @@
27 from message_router 26 from message_router
28 where id = #{id,jdbcType=VARCHAR} 27 where id = #{id,jdbcType=VARCHAR}
29 </select> 28 </select>
  29 +
  30 + <select id="selectBySndr" resultMap="BaseResultMap" parameterType="java.lang.String" >
  31 + select
  32 + <include refid="Base_Column_List" />
  33 + from message_router
  34 + where sndr = #{id,jdbcType=VARCHAR}
  35 + </select>
  36 +
30 <delete id="deleteByPrimaryKey" parameterType="java.lang.String" > 37 <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
31 delete from message_router 38 delete from message_router
32 - where id = #{id,jdbcType=VARCHAR} 39 + where id = #{sndr,jdbcType=VARCHAR}
33 </delete> 40 </delete>
34 <insert id="insert" parameterType="com.sunyo.wlpt.message.bus.service.model.MessageRouter" > 41 <insert id="insert" parameterType="com.sunyo.wlpt.message.bus.service.model.MessageRouter" >
35 insert into message_router (id, sndr, btype, 42 insert into message_router (id, sndr, btype,
36 stype, optype, msg_limit, 43 stype, optype, msg_limit,
37 - `character`, status, `usage`, des, 44 + `character`, `status`, `usage`, des,
38 ver, creat_time, update_time 45 ver, creat_time, update_time
39 ) 46 )
40 values (#{id,jdbcType=VARCHAR}, #{sndr,jdbcType=VARCHAR}, #{btype,jdbcType=VARCHAR}, 47 values (#{id,jdbcType=VARCHAR}, #{sndr,jdbcType=VARCHAR}, #{btype,jdbcType=VARCHAR},
@@ -68,7 +75,7 @@ @@ -68,7 +75,7 @@
68 `character`, 75 `character`,
69 </if> 76 </if>
70 <if test="status != null" > 77 <if test="status != null" >
71 - status, 78 + `status`,
72 </if> 79 </if>
73 <if test="usage != null" > 80 <if test="usage != null" >
74 `usage`, 81 `usage`,
@@ -24,6 +24,15 @@ @@ -24,6 +24,15 @@
24 from message_type 24 from message_type
25 where parent_id = #{parentId,jdbcType=VARCHAR} 25 where parent_id = #{parentId,jdbcType=VARCHAR}
26 </select> 26 </select>
  27 + <select id="selectParentByChildName" resultMap="BaseResultMap" parameterType="java.lang.String" >
  28 + select
  29 + <include refid="Base_Column_List" />
  30 + from message_type
  31 + where id =
  32 + (
  33 + SELECT parent_id from message_type where name = #{name,jdbcType=VARCHAR}
  34 + )
  35 + </select>
27 <select id="selectAll" parameterType="com.sunyo.wlpt.message.bus.service.model.MessageType" resultMap="BaseResultMap"> 36 <select id="selectAll" parameterType="com.sunyo.wlpt.message.bus.service.model.MessageType" resultMap="BaseResultMap">
28 select 37 select
29 <include refid="Base_Column_List" /> 38 <include refid="Base_Column_List" />