Browse Source

消息统计数量参数增加类型筛选

wangyc 7 years ago
parent
commit
90f32341e1

+ 7 - 4
src/main/java/com/uas/ps/message/api/MessageController.java

@@ -4,6 +4,7 @@ import com.uas.ps.core.page.PageParams;
 import com.uas.ps.httplog.annotation.HttpLog;
 import com.uas.ps.httplog.annotation.HttpLog;
 import com.uas.ps.message.domain.Message;
 import com.uas.ps.message.domain.Message;
 import com.uas.ps.message.service.MessageService;
 import com.uas.ps.message.service.MessageService;
+import com.uas.ps.message.util.Constant;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 import org.springframework.ui.ModelMap;
 import org.springframework.ui.ModelMap;
@@ -54,12 +55,13 @@ public class MessageController {
      * 获取未读消息数量
      * 获取未读消息数量
      * @param receiverUu 收信人uu
      * @param receiverUu 收信人uu
      * @param receiverEnuu 收信人企业uu
      * @param receiverEnuu 收信人企业uu
+     * @param type 消息类型
      * @param consumerApp 接收app
      * @param consumerApp 接收app
      * @return
      * @return
      */
      */
     @RequestMapping(value = "/count/unread", method = RequestMethod.GET, produces = "application/json")
     @RequestMapping(value = "/count/unread", method = RequestMethod.GET, produces = "application/json")
-    public Map<String, Object> getUnReadMessageCount(String receiverUu, String receiverEnuu, String consumerApp) {
-        return messageService.getUnReadMessageCount(receiverUu, receiverEnuu, consumerApp);
+    public Map<String, Object> getUnReadMessageCount(String receiverUu, String receiverEnuu, @RequestParam(required = false) String type, String consumerApp) {
+        return messageService.getMessageCount(receiverUu, receiverEnuu, consumerApp, type, Constant.NO.toString());
     }
     }
 
 
     /**
     /**
@@ -67,12 +69,13 @@ public class MessageController {
      * @param receiverUu 收信人uu
      * @param receiverUu 收信人uu
      * @param receiverEnuu 收信人企业uu
      * @param receiverEnuu 收信人企业uu
      * @param consumerApp 接收app
      * @param consumerApp 接收app
+     * @param type 消息类型
      * @param isRead 阅读状态
      * @param isRead 阅读状态
      * @return
      * @return
      */
      */
     @RequestMapping(value = "/count", method = RequestMethod.GET, produces = "application/json")
     @RequestMapping(value = "/count", method = RequestMethod.GET, produces = "application/json")
-    public Map<String, Object> getMessageCount(String receiverUu, String receiverEnuu, String consumerApp, @RequestParam(required = false) String isRead) {
-        return messageService.getMessageCount(receiverUu, receiverEnuu, consumerApp, isRead);
+    public Map<String, Object> getMessageCount(String receiverUu, String receiverEnuu, String consumerApp, @RequestParam(required = false) String type, @RequestParam(required = false) String isRead) {
+        return messageService.getMessageCount(receiverUu, receiverEnuu, consumerApp, type, isRead);
     }
     }
 
 
     /**
     /**

+ 24 - 0
src/main/java/com/uas/ps/message/dao/MessageDao.java

@@ -27,6 +27,17 @@ public interface MessageDao extends JpaRepository<Message, Long>, JpaSpecificati
     Integer findCountByReceiverUuAndReceiverEnuuAndConsumerAppId(@Param("receiverUu") Long receiverUu, @Param("receiverEnuu") Long receiverEnuu, @Param("consumerAppId")
     Integer findCountByReceiverUuAndReceiverEnuuAndConsumerAppId(@Param("receiverUu") Long receiverUu, @Param("receiverEnuu") Long receiverEnuu, @Param("consumerAppId")
         Long consumerAppId);
         Long consumerAppId);
 
 
+    /**
+     * 通过接收人和接收应用和消息类型获取消息数量
+     * @param receiverUu 接收人uu
+     * @param receiverEnuu 接收企业uu
+     * @param consumerAppId 接收应用id
+     * @param type 消息类型
+     * @return
+     */
+    @Query(nativeQuery = true, value = "select count(1) from messages e where e.ms_receiveruu = :receiverUu and e.ms_receiverenuu = :receiverEnuu and e.ms_type =:type and e.ms_id in (select ms_id from message$consumeapp a where a.app_id = :consumerAppId)")
+    Integer findCountByReceiverUuAndReceiverEnuuAndTypeAndConsumerAppId(@Param("receiverUu") Long receiverUu, @Param("receiverEnuu") Long receiverEnuu, @Param("type") String type, @Param("consumerAppId") Long consumerAppId);
+
     /**
     /**
      * 通过接收人和接收应用和阅读状态获取消息数量
      * 通过接收人和接收应用和阅读状态获取消息数量
      * @param receiverUu 接收人uu
      * @param receiverUu 接收人uu
@@ -39,6 +50,19 @@ public interface MessageDao extends JpaRepository<Message, Long>, JpaSpecificati
     Integer findCountByReceiverUuAndReceiverEnuuAndIsReadAndConsumerAppId(@Param("receiverUu") Long receiverUu, @Param("receiverEnuu") Long receiverEnuu, @Param("isRead") Short isRead, @Param("consumerAppId")
     Integer findCountByReceiverUuAndReceiverEnuuAndIsReadAndConsumerAppId(@Param("receiverUu") Long receiverUu, @Param("receiverEnuu") Long receiverEnuu, @Param("isRead") Short isRead, @Param("consumerAppId")
         Long consumerAppId);
         Long consumerAppId);
 
 
+    /**
+     * 通过接收人和接收应用和阅读状态和消息类型获取消息数量
+     * @param receiverUu 接收人uu
+     * @param receiverEnuu 接收企业uu
+     * @param isRead 阅读状态
+     * @param type 消息类型
+     * @param consumerAppId 接收应用id
+     * @return
+     */
+    @Query(nativeQuery = true, value = "select count(1) from messages e where e.ms_receiveruu = :receiverUu and e.ms_receiverenuu = :receiverEnuu and e.ms_isread = :isRead and e.ms_type = :type and e.ms_id in (select ms_id from message$consumeapp a where a.app_id = :consumerAppId)")
+    Integer findCountByReceiverUuAndReceiverEnuuAndIsReadAndTypeAndConsumerAppId(@Param("receiverUu") Long receiverUu, @Param("receiverEnuu") Long receiverEnuu, @Param("isRead") Short isRead, @Param("type") String type, @Param("consumerAppId")
+        Long consumerAppId);
+
     /**
     /**
      * 通过接收应用id、阅读状态、发送状获取需要推送消息
      * 通过接收应用id、阅读状态、发送状获取需要推送消息
      * @param consumerAppId 接收应用id
      * @param consumerAppId 接收应用id

+ 2 - 1
src/main/java/com/uas/ps/message/service/MessageService.java

@@ -42,10 +42,11 @@ public interface MessageService {
      * @param receiverUu 收信人uu
      * @param receiverUu 收信人uu
      * @param receiverEnuu 收信人企业uu
      * @param receiverEnuu 收信人企业uu
      * @param consumerApp 接收app
      * @param consumerApp 接收app
+     * @param type 消息类型
      * @param isRead 阅读状态
      * @param isRead 阅读状态
      * @return
      * @return
      */
      */
-    Map<String, Object> getMessageCount(String receiverUu, String receiverEnuu, String consumerApp, String isRead);
+    Map<String, Object> getMessageCount(String receiverUu, String receiverEnuu, String consumerApp, String type, String isRead);
 
 
     /**
     /**
      * 保存消息
      * 保存消息

+ 14 - 6
src/main/java/com/uas/ps/message/service/impl/MessageServiceImpl.java

@@ -210,7 +210,7 @@ public class MessageServiceImpl implements MessageService {
     }
     }
 
 
     @Override
     @Override
-    public Map<String, Object> getMessageCount(String receiverUu, String receiverEnuu, String consumerApp,
+    public Map<String, Object> getMessageCount(String receiverUu, String receiverEnuu, String type, String consumerApp,
         String isRead) {
         String isRead) {
         if (StringUtils.isEmpty(receiverUu) || StringUtils.isEmpty(receiverEnuu)) {
         if (StringUtils.isEmpty(receiverUu) || StringUtils.isEmpty(receiverEnuu)) {
             throw new ParameterMissingException("接收人信息为空");
             throw new ParameterMissingException("接收人信息为空");
@@ -226,12 +226,20 @@ public class MessageServiceImpl implements MessageService {
         Integer messagesCount = 0;
         Integer messagesCount = 0;
 
 
         if (StringUtils.isEmpty(isRead) || (!isRead.equals(Constant.NO.toString()) && !isRead.equals(Constant.YES.toString()))) {
         if (StringUtils.isEmpty(isRead) || (!isRead.equals(Constant.NO.toString()) && !isRead.equals(Constant.YES.toString()))) {
-            messagesCount = messageDao.findCountByReceiverUuAndReceiverEnuuAndConsumerAppId(Long.valueOf(receiverUu),
-                Long.valueOf(receiverEnuu), consumerAppExists.getId());
-
+            if (!StringUtils.isEmpty(type)) {
+                messagesCount = messageDao.findCountByReceiverUuAndReceiverEnuuAndTypeAndConsumerAppId(Long.valueOf(receiverUu),
+                    Long.valueOf(receiverEnuu), type, consumerAppExists.getId());
+            } else {
+                messagesCount = messageDao.findCountByReceiverUuAndReceiverEnuuAndConsumerAppId(Long.valueOf(receiverUu),
+                    Long.valueOf(receiverEnuu), consumerAppExists.getId());
+            }
         } else {
         } else {
-            messagesCount = messageDao.findCountByReceiverUuAndReceiverEnuuAndIsReadAndConsumerAppId(Long.valueOf(receiverUu),
-                Long.valueOf(receiverEnuu), Short.valueOf(isRead), consumerAppExists.getId());
+            if (!StringUtils.isEmpty(type)) {
+                messagesCount = messageDao.findCountByReceiverUuAndReceiverEnuuAndIsReadAndTypeAndConsumerAppId(Long.valueOf(receiverUu), Long.valueOf(receiverEnuu), Short.valueOf(isRead), type, consumerAppExists.getId());
+            } else {
+                messagesCount = messageDao.findCountByReceiverUuAndReceiverEnuuAndIsReadAndConsumerAppId(Long.valueOf(receiverUu),
+                    Long.valueOf(receiverEnuu), Short.valueOf(isRead), consumerAppExists.getId());
+            }
         }
         }