Explorar el Código

APP消息推送修复

Michael hace 8 años
padre
commit
353927f375

+ 31 - 0
src/main/java/com/goafanti/app/controller/AppApiController.java

@@ -1,7 +1,10 @@
 package com.goafanti.app.controller;
 package com.goafanti.app.controller;
 
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.List;
+import java.util.UUID;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
@@ -18,12 +21,15 @@ import com.goafanti.common.constant.AFTConstants;
 import com.goafanti.common.constant.ErrorConstants;
 import com.goafanti.common.constant.ErrorConstants;
 import com.goafanti.common.controller.BaseApiController;
 import com.goafanti.common.controller.BaseApiController;
 import com.goafanti.common.model.JpushEasemobAccount;
 import com.goafanti.common.model.JpushEasemobAccount;
+import com.goafanti.common.model.MessageConsumer;
 import com.goafanti.common.model.MessageFromSystem;
 import com.goafanti.common.model.MessageFromSystem;
+import com.goafanti.common.model.MessageProducer;
 import com.goafanti.common.model.User;
 import com.goafanti.common.model.User;
 import com.goafanti.common.utils.DateUtils;
 import com.goafanti.common.utils.DateUtils;
 import com.goafanti.core.shiro.token.TokenManager;
 import com.goafanti.core.shiro.token.TokenManager;
 import com.goafanti.easemob.EasemobUtils;
 import com.goafanti.easemob.EasemobUtils;
 import com.goafanti.easemob.bo.EasemobInfo;
 import com.goafanti.easemob.bo.EasemobInfo;
+import com.goafanti.message.bo.MessageBo;
 import com.goafanti.message.bo.MessageListBo;
 import com.goafanti.message.bo.MessageListBo;
 import com.goafanti.message.service.MessageService;
 import com.goafanti.message.service.MessageService;
 import com.goafanti.user.service.UserService;
 import com.goafanti.user.service.UserService;
@@ -115,6 +121,31 @@ public class AppApiController extends BaseApiController {
 			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "必须指定消息类型"));
 			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "必须指定消息类型"));
 			return res;
 			return res;
 		}
 		}
+		User u = TokenManager.getUserToken();
+		if(u != null){
+			List<MessageBo> boList = messageService.selectSendMessage(u.getId()); 
+			if(boList != null && boList.size()>0){
+				List<MessageProducer> producers = new ArrayList<MessageProducer>();
+				List<MessageConsumer> consumers = new ArrayList<MessageConsumer>();
+				MessageProducer mp = null;
+				MessageConsumer mc = null;
+				Date date = new Date();
+				for(MessageBo bo : boList){
+					mp = new MessageProducer();
+					mp.setId(bo.getId());
+					mp.setSendTime(date);
+					producers.add(mp);
+					mc = new MessageConsumer();
+					mc.setId(UUID.randomUUID().toString());
+					mc.setConsumerId(TokenManager.getUserId());
+					mc.setMessageId(bo.getMessageId());
+					consumers.add(mc);
+				}
+				if(producers.size()>0)messageService.updateMessageProducer(producers);
+				//新增 message_consumer
+				if(consumers.size()>0)messageService.insertBatchConsumer(consumers);
+			}
+		}
 		res.setData(messageService.listPersonalMessage(subject,sourceType,pageNo,pageSize));
 		res.setData(messageService.listPersonalMessage(subject,sourceType,pageNo,pageSize));
 		return res;
 		return res;
 	}
 	}

+ 1 - 2
src/main/java/com/goafanti/common/mapper/MessageFromSystemMapper.xml

@@ -465,11 +465,10 @@
 			message_from_system c on a.message_id = c.id
 			message_from_system c on a.message_id = c.id
 		where
 		where
 			a.consumer_id = #{uid,jdbcType=VARCHAR}
 			a.consumer_id = #{uid,jdbcType=VARCHAR}
-		 	and b.registration_id is not null
+		 	<!-- and b.registration_id is not null -->
 			and a.send_time is null <!-- 未发送 -->
 			and a.send_time is null <!-- 未发送 -->
 			and c.is_draft = 0 <!-- 非草稿 -->
 			and c.is_draft = 0 <!-- 非草稿 -->
 			and c.delete_sign = 0 <!-- 未删除 -->
 			and c.delete_sign = 0 <!-- 未删除 -->
-		
    </select>
    </select>
    
    
    <update id="updateJpushEasemobAccount">
    <update id="updateJpushEasemobAccount">

+ 18 - 15
src/main/java/com/goafanti/message/JGMessageHelper.java

@@ -5,6 +5,7 @@ import java.util.List;
 
 
 import io.netty.handler.codec.http.HttpMethod;
 import io.netty.handler.codec.http.HttpMethod;
 
 
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.DisposableBean;
 import org.springframework.beans.factory.DisposableBean;
@@ -86,21 +87,23 @@ public class JGMessageHelper implements InitializingBean, DisposableBean{
 
 
 	public void sendSystemMessage(MessageBo mb){
 	public void sendSystemMessage(MessageBo mb){
 		MessageAdapter ma = new MessageAdapter();
 		MessageAdapter ma = new MessageAdapter();
-		ma.pushPayload(PushPayload.newBuilder()
-			.setPlatform(Platform.android_ios())
-			.setAudience(Audience.newBuilder()
-					.addAudienceTarget(
-							AudienceTarget.registrationId(mb.getRegistrationId()))
-					.build())
-			.setMessage(Message.newBuilder()
-					.setTitle(mb.getMessageTitle())
-					.setMsgContent(mb.getMessageBody())
-					.addExtra(MESSAGE_ID,mb.getMessageId())
-					.addExtra(RESOURCE_ID,mb.getResourceId() == null ? "" : mb.getResourceId())
-					.addExtra(RESOURCE_TYPE, mb.getResourceType()== null ? "": mb.getResourceType())
-					.build())
-			.build());
-		send(ma);
+		if(StringUtils.isNotBlank(mb.getRegistrationId())){
+			ma.pushPayload(PushPayload.newBuilder()
+					.setPlatform(Platform.android_ios())
+					.setAudience(Audience.newBuilder()
+							.addAudienceTarget(
+									AudienceTarget.registrationId(mb.getRegistrationId()))
+							.build())
+					.setMessage(Message.newBuilder()
+							.setTitle(mb.getMessageTitle())
+							.setMsgContent(mb.getMessageBody())
+							.addExtra(MESSAGE_ID,mb.getMessageId())
+							.addExtra(RESOURCE_ID,mb.getResourceId() == null ? "" : mb.getResourceId())
+							.addExtra(RESOURCE_TYPE, mb.getResourceType()== null ? "": mb.getResourceType())
+							.build())
+					.build());
+			send(ma);
+		}
 	}
 	}
 	
 	
 	public void sendSystemMessage(MessageBo... mb){
 	public void sendSystemMessage(MessageBo... mb){

+ 2 - 2
src/main/java/com/goafanti/user/controller/UserLoginController.java

@@ -174,9 +174,9 @@ public class UserLoginController extends BaseController {
 					mc.setMessageId(bo.getMessageId());
 					mc.setMessageId(bo.getMessageId());
 					consumers.add(mc);
 					consumers.add(mc);
 				}
 				}
-				messageService.updateMessageProducer(producers);
+				if(producers.size()>0)messageService.updateMessageProducer(producers);
 				//新增 message_consumer
 				//新增 message_consumer
-				messageService.insertBatchConsumer(consumers);
+				if(consumers.size()>0)messageService.insertBatchConsumer(consumers);
 			}
 			}
 			messageService.updateJpushEasemobAccount(null, null, null,null);
 			messageService.updateJpushEasemobAccount(null, null, null,null);
 		}
 		}