Browse Source

消息推送

wanghui 8 years ago
parent
commit
35e0422b18

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

@@ -124,7 +124,7 @@ public class AppApiController extends BaseApiController {
 		}
 		User u = TokenManager.getUserToken();
 		if(u != null){
-			List<MessageBo> boList = messageService.selectSendMessage(u.getId()); 
+			List<MessageBo> boList = messageService.selectSyncMessage(u.getId()); 
 			if(boList != null && boList.size()>0){
 				List<MessageProducer> producers = new ArrayList<MessageProducer>();
 				List<MessageConsumer> consumers = new ArrayList<MessageConsumer>();

+ 5 - 5
src/main/java/com/goafanti/common/dao/MessageFromSystemMapper.java

@@ -80,7 +80,7 @@ public interface MessageFromSystemMapper {
 	int updateByPrimaryKey(MessageFromSystem record);
 
 	/**
-     * 查询��?�目�?
+     * 查询��?�目�??
      * @param sql
      * @return
      */
@@ -107,14 +107,14 @@ public interface MessageFromSystemMapper {
 	int insertBatchConsumer(List<MessageConsumer> target);
 	
 	/**
-	 * 查询�个用户的未�消�
+	 * �步消�
 	 * @param uid
 	 * @return
 	 */
-	List<MessageBo> selectSendMessage(@Param("uid")String uid);
+	List<MessageBo> selectSyncMessage(@Param("uid")String uid);
 
 	/**
-	 * 绑定第三方账�
+	 * 绑定第三方账�?
 	 * @param uuid
 	 * @param registrationId
 	 * @param userName
@@ -125,7 +125,7 @@ public interface MessageFromSystemMapper {
 			@Param("easemobName")String easemobName, @Param("easemobPass")String easemobPass, @Param("uid")String uid,@Param("lastLoginTime")Date lastLoginTime);
 	
 	/**
-	 * 把消�置为已�?
+	 * 把消�置为已�??
 	 * @param messageId
 	 * @param uid
 	 * @param readTime

+ 34 - 18
src/main/java/com/goafanti/common/mapper/MessageFromSystemMapper.xml

@@ -448,27 +448,43 @@
       )
     </foreach>
   </insert>
-   <select id="selectSendMessage" parameterType="java.lang.String" resultType="com.goafanti.message.bo.MessageBo">
+   <select id="selectSyncMessage" parameterType="java.lang.String" resultType="com.goafanti.message.bo.MessageBo"> 
+   <!-- 登陆时同步  -->	
 		select
-			a.id,
-			a.message_id as messageId,
-			b.registration_id as registrationId,
-			c.resource_id as resourceId,
-			c.resource_type as resourceType,
-			c.title as messageTitle,
-			c.body as messageBody
+			x.id,
+			x.message_id
 		from
-			message_producer a 
-		inner join 
-			jpush_easemob_account b on a.consumer_id = b.uid
-		left join
-			message_from_system c on a.message_id = c.id
+			message_producer x left join message_from_system y on
+			x.message_id = y.id
 		where
-			a.consumer_id = #{uid,jdbcType=VARCHAR}
-		 	<!-- and b.registration_id is not null -->
-			and a.send_time is null <!-- 未发送 -->
-			and c.is_draft = 0 <!-- 非草稿 -->
-			and c.delete_sign = 0 <!-- 未删除 -->
+			not exists(
+				select
+					a.id
+				from
+					message_producer a left join message_consumer b on
+					(
+						a.message_id = b.message_id
+						and a.consumer_id = b.consumer_id
+					)
+				where
+					x.id = a.id
+			)
+			and x.consumer_id = #{uid,jdbcType=VARCHAR}
+			and y.is_draft = 0 <!-- 非草稿 -->
+			and y.delete_sign = 0 <!-- 未删除 -->
+   </select>
+   
+   <select id="selectSendMessage" parameterType="java.lang.String" resultType="com.goafanti.message.bo.MessageBo">
+   <!-- 推送消息 -->
+		select c.id as messageId,c.title,c.body
+			from message_producer a inner join jpush_easemob_account b on
+			a.consumer_id = b.uid
+			left join message_from_system c on a.message_id = c.id
+		where
+			b.registration_id is not null
+			and a.consumer_id = #{uid,jdbcType=VARCHAR}
+			and c.is_draft = 0
+			and c.delete_sign = 0
    </select>
    
    <update id="updateJpushEasemobAccount">

+ 2 - 0
src/main/java/com/goafanti/common/mapper/TOrderMapper.xml

@@ -689,6 +689,7 @@
     <if test="page_sql!=null">
 			${page_sql}
 	</if>
+	order by create_time desc
   </select>
   
    <select id="selectOrderListCount" resultType="java.lang.Integer">
@@ -724,6 +725,7 @@
 		<if test="page_sql!=null">
 			${page_sql}
 		</if>
+	order by create_time desc
   </select>
   
   <select id="selectFundingHistoryCount" resultType="java.lang.Integer">

+ 2 - 2
src/main/java/com/goafanti/message/service/MessageService.java

@@ -48,11 +48,11 @@ public interface MessageService {
 	int insertSystemMessage(Map<Integer, String> targetMap,Integer targetType,String title, String body, Integer subject,Date createTime,Integer isDraft);
 	
 	/**
-	 * 查询用户的未发消息
+	 * 同步消息
 	 * @param uid
 	 * @return
 	 */
-	List<MessageBo> selectSendMessage(String uid);
+	List<MessageBo> selectSyncMessage(String uid);
 	
 	/**
 	 * 更新消息表

+ 47 - 7
src/main/java/com/goafanti/message/service/impl/MessageServiceImpl.java

@@ -27,6 +27,7 @@ import com.goafanti.common.model.User;
 import com.goafanti.core.mybatis.BaseMybatisDao;
 import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.core.shiro.token.TokenManager;
+import com.goafanti.message.JGMessageHelper;
 import com.goafanti.message.bo.MessageBo;
 import com.goafanti.message.bo.MessageListBo;
 import com.goafanti.message.enums.ConsumerType;
@@ -42,6 +43,8 @@ public class MessageServiceImpl  extends BaseMybatisDao<MessageFromSystemMapper>
 	private MessageProducerMapper messageProducerMapper;
 	@Autowired
 	private JpushEasemobAccountMapper jpushEasemobAccountMapper;
+	@Autowired
+	private JGMessageHelper jgMessageHelper;
 	@Override
 	public String selectSendUser(Map<Integer, String> selectMap,Integer type) {
 		if(selectMap.containsKey(ConsumerType.PERSON_CUSTOMER_RETAIL.getTypeCode())){ //客户散户
@@ -151,36 +154,60 @@ public class MessageServiceImpl  extends BaseMybatisDao<MessageFromSystemMapper>
 			mfs.setProducerId(admin.getId());
 		}
 		messageFromSystemMapper.insert(mfs);
-		List<MessageProducer> target = new ArrayList<MessageProducer>();
+		List<MessageProducer> producerTarget = new ArrayList<MessageProducer>();
+		List<MessageBo> sendTarget = new ArrayList<MessageBo>();
 		String[] cids;
 		if(subject == SubjectType.KE_HU.getTypeCode()){
 			String tmp = selectSendUser(targetMap,targetType);
 			if(tmp !=null){
 				cids = tmp.split(",");
 				MessageProducer mp;
+				MessageBo bo;
 				for(String cid : cids){
 					mp = new MessageProducer();
 					mp.setId(UUID.randomUUID().toString());
 					mp.setMessageId(mfs.getId());
 					mp.setConsumerId(cid);
-					target.add(mp);
+					producerTarget.add(mp);
+					
+					bo = new MessageBo();
+					bo.setMessageId(mfs.getId());
+					bo.setMessageTitle(mfs.getTitle());
+					bo.setMessageBody(mfs.getBody());
+					bo.setResourceId(mfs.getResourceId());
+					bo.setResourceType(String.valueOf(mfs.getResourceType()));
+					bo.setRegistrationId(cid);
+					sendTarget.add(bo);
 				}
 			}
-				if(target.size()>0) insertBatchProducer(target);					
+			if(producerTarget.size()>0) insertBatchProducer(producerTarget);	
+			//推送消息
 		}else if(subject == SubjectType.YUN_YING.getTypeCode()){
 			String tmp = selectSendUser(targetMap,targetType);
 			if(tmp !=null){
 				cids = tmp.split(",");
 				MessageProducer mp;
+				MessageBo bo;
 				for(String cid : cids){
 					mp = new MessageProducer();
 					mp.setId(UUID.randomUUID().toString());
 					mp.setMessageId(mfs.getId());
 					mp.setConsumerId(cid);
-					target.add(mp);
+					producerTarget.add(mp);
+					
+					bo = new MessageBo();
+					bo.setMessageId(mfs.getId());
+					bo.setMessageTitle(mfs.getTitle());
+					bo.setMessageBody(mfs.getBody());
+					bo.setResourceId(mfs.getResourceId());
+					bo.setResourceType(String.valueOf(mfs.getResourceType()));
+					bo.setRegistrationId(cid);
+					sendTarget.add(bo);
 				}
 			}			
-			if(target.size()>0) insertBatchProducer(target);
+			if(producerTarget.size()>0) insertBatchProducer(producerTarget);
+			//推送消息
+			if(sendTarget.size()>0) jgMessageHelper.sendSystemMessage(sendTarget);
 		}
 		return 1;
 	}
@@ -192,6 +219,7 @@ public class MessageServiceImpl  extends BaseMybatisDao<MessageFromSystemMapper>
 		List<MessageFromSystem> mfsList = selectRecommend(sourceMap, sourceType);
 		List<MessageProducer> producerTarget = new ArrayList<MessageProducer>();
 		List<MessageFromSystem> messageTarget = new ArrayList<MessageFromSystem>();
+		List<MessageBo> sendTarget = new ArrayList<MessageBo>();
 		if(mfsList != null && mfsList.size()>0){
 			MessageFromSystem message = null;
 			for(MessageFromSystem mfs : mfsList){
@@ -218,6 +246,7 @@ public class MessageServiceImpl  extends BaseMybatisDao<MessageFromSystemMapper>
 				//插入消息推送表
 				if(subject == SubjectType.KE_HU.getTypeCode()||subject == SubjectType.TUI_JIAN.getTypeCode()){ //只推客户
 					MessageProducer mp = null;
+					MessageBo bo = null;
 					String tmp = selectSendUser(targetMap,targetType);
 					String[] cids = null;
 					if(tmp != null){
@@ -230,6 +259,15 @@ public class MessageServiceImpl  extends BaseMybatisDao<MessageFromSystemMapper>
 							mp.setCreateTime(createTime);
 							mp.setMessageId(messageId);
 							producerTarget.add(mp);
+							
+							bo = new MessageBo();
+							bo.setMessageId(messageId);
+							bo.setMessageTitle(message.getTitle());
+							bo.setMessageBody(message.getBody());
+							bo.setResourceId(message.getResourceId());
+							bo.setResourceType(String.valueOf(message.getResourceType()));
+							bo.setRegistrationId(cid);
+							sendTarget.add(bo);
 						}
 					}
 				}
@@ -237,14 +275,16 @@ public class MessageServiceImpl  extends BaseMybatisDao<MessageFromSystemMapper>
 			//批量插入
 			if(messageTarget.size()>0) messageFromSystemMapper.insertBatchMessage(messageTarget);
 			if(producerTarget.size()>0) messageFromSystemMapper.insertBatchProducer(producerTarget);
+			//推送消息
+			if(sendTarget.size()>0) jgMessageHelper.sendSystemMessage(sendTarget);
 			return 1;
 		}
 		return 0;
 	}
 	
 	@Override
-	public List<MessageBo> selectSendMessage(String uid) {
-		return messageFromSystemMapper.selectSendMessage(uid);
+	public List<MessageBo> selectSyncMessage(String uid) {
+		return messageFromSystemMapper.selectSyncMessage(uid);
 	}
 	
 	@Override

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

@@ -34,7 +34,6 @@ import com.goafanti.common.model.User;
 import com.goafanti.common.utils.TimeUtils;
 import com.goafanti.common.utils.VerifyCodeUtils;
 import com.goafanti.core.shiro.token.TokenManager;
-import com.goafanti.message.JGMessageHelper;
 import com.goafanti.message.bo.MessageBo;
 import com.goafanti.message.service.MessageService;
 import com.goafanti.user.service.UserService;
@@ -47,8 +46,6 @@ public class UserLoginController extends BaseController {
 	private AdminMapper			adminMapper;
 	@Resource
 	private MessageService messageService;
-	@Resource
-	private JGMessageHelper jgMessageHelper;
 	
 	@RequestMapping(value = "/login", method = RequestMethod.GET)
 	@ResponseBody
@@ -155,9 +152,8 @@ public class UserLoginController extends BaseController {
 		//更新 message_producer
 		User u = TokenManager.getUserToken();
 		if(u != null){
-			List<MessageBo> boList = messageService.selectSendMessage(u.getId()); 
+			List<MessageBo> boList = messageService.selectSyncMessage(u.getId()); 
 			if(boList != null && boList.size()>0){
-				jgMessageHelper.sendSystemMessage(boList);
 				List<MessageProducer> producers = new ArrayList<MessageProducer>();
 				List<MessageConsumer> consumers = new ArrayList<MessageConsumer>();
 				MessageProducer mp = null;