Browse Source

[task-1368] 系统超时事务消息推送功能开发(消息只添加一次)

szjbdgzl 2 years ago
parent
commit
e03fd5d3fb

+ 20 - 4
ibps-common-root/modules/msg-biz/src/main/java/com/lc/ibps/common/msg/domain/InnerMessage.java

@@ -1,9 +1,15 @@
 package com.lc.ibps.common.msg.domain;
 
 import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 import javax.annotation.Resource;
 
+import com.lc.ibps.api.base.query.QueryFilter;
+import com.lc.ibps.api.base.query.QueryOP;
+import com.lc.ibps.base.db.model.DefaultQueryFilter;
 import org.springframework.context.annotation.Scope;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -73,6 +79,12 @@ public class InnerMessage extends AbstractDomain<String, InnerMessagePo>{
 	}
 	
 	public void send(InnerMessageVo vo, String ownerId, String ownerName) {
+		// 首页推送的超时消息只添加一次
+		List<InnerMessagePo> msg = innerMessageQueryDao.findByTaskId(vo.getTaskId(),"job_task_");
+		if (BeanUtils.isNotEmpty(msg)){
+			return;
+		}
+
 		String messageId = UniqueIdUtil.getId();
 		vo.setId(messageId);
 		vo.setOwnerId(ownerId);
@@ -90,11 +102,13 @@ public class InnerMessage extends AbstractDomain<String, InnerMessagePo>{
 		String groupId = vo.getGroupId();
 		String goupName = vo.getGroupName();
 		// 转换人员
-		if (StringUtil.isNotEmpty(receiverId))
+		if (StringUtil.isNotEmpty(receiverId)) {
 			saveMessageReceiver(IdentityConstants.USER, receiverId, receiver, messageId);
+		}
 		// 转换组
-		if (StringUtil.isNotEmpty(groupId))
+		if (StringUtil.isNotEmpty(groupId)) {
 			saveMessageReceiver(IdentityConstants.ORG, groupId, goupName, messageId);
+		}
 	}
 
 	private void saveMessageReceiver(String receiverType, String receiverId, String receiverName, String messageId) {
@@ -108,11 +122,13 @@ public class InnerMessage extends AbstractDomain<String, InnerMessagePo>{
 		}
 		for (int i = 0; i < idArr.length; i++) {
 			String id = idArr[i];
-			if (StringUtil.isEmpty(id))
+			if (StringUtil.isEmpty(id)) {
 				continue;
+			}
 			String name = "";
-			if (nameArr.length > i)
+			if (nameArr.length > i) {
 				name = nameArr[i];
+			}
 			MessageReceiverPo receiver = new MessageReceiverPo();
 			receiver.setId(UniqueIdUtil.getId());
 			receiver.setMsgId(messageId);

+ 2 - 0
ibps-common-root/modules/msg-biz/src/main/java/com/lc/ibps/common/msg/persistence/dao/InnerMessageQueryDao.java

@@ -29,4 +29,6 @@ public interface InnerMessageQueryDao extends IQueryDao<String,InnerMessagePo>{
 	List<InnerMessagePo> queryMsg(QueryFilter queryFilter);
 
 	List<InnerMessagePo> findByPosition(String userId,String positionId,int status);
+
+	List<InnerMessagePo> findByTaskId(String taskId,String ownerId);
 }

+ 8 - 0
ibps-common-root/modules/msg-biz/src/main/java/com/lc/ibps/common/msg/persistence/dao/impl/InnerMessageQueryDaoImpl.java

@@ -85,5 +85,13 @@ public class InnerMessageQueryDaoImpl extends MyBatisQueryDaoImpl<String, InnerM
 		 params.put("isRead",status);
 		 return this.findByKey("findByPosition",params);
 	 }
+
+	 @Override
+	 public List<InnerMessagePo> findByTaskId(String taskId, String ownerId) {
+		 HashMap<String,Object> params = new HashMap<>();
+		 params.put("taskId", taskId);
+		 params.put("ownerId", ownerId);
+    	 return this.findByKey("getByTaskId", params);
+	 }
  }
 

+ 5 - 0
ibps-model-root/modules/msg-model/src/main/resources/com/lc/ibps/msg/persistence/mapping/InnerMessage.map.xml

@@ -34,6 +34,11 @@
 		WHERE 
 		ID_=#{id}
 	</select>
+
+	<select id="getByTaskId"  resultType="com.lc.ibps.common.msg.persistence.entity.InnerMessagePo">
+		SELECT * FROM IBPS_MSG_INNER
+		WHERE TASK_ID_=#{taskId} AND OWNER_ID_ = #{ownerId}
+	</select>
 	
 	<select id="query" parameterType="java.util.Map" resultMap="InnerMessage">
 		SELECT * FROM IBPS_MSG_INNER

+ 1 - 1
ibps-provider-root/modules/provider-platform/src/main/java/com/lc/ibps/platform/plan/job/ToDoMessagePushJob.java

@@ -102,7 +102,7 @@ public class ToDoMessagePushJob extends BaseJob2 {
                             // 发送消息
                             Map<String, Object> vars = new HashMap<>();
                             vars.put("taskId",taskId);
-                            MessageQueueProductorUtil.send(BpmConstants.CUR_USER , null , "inner" , receiver,null , theme, subject, null, null, vars);
+                            MessageQueueProductorUtil.send("job_task_", "job_task_" , "inner" , receiver,null , theme, subject, null, null, vars);
                             //MessageQueueProductorUtil.send("inner" , receiver ,null , theme , subject ,null );
 
                             // 添加过期事务表数据