diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/kafka_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/kafka_service_impl.kt
index fc5afd8..068ab00 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/kafka_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/kafka_service_impl.kt
@@ -42,7 +42,7 @@
 
     @Async("kafkaSendMessageAsyncTask")
     override fun sendJpushMessage(userid: String, title: String, content: String, refno: String, extras: MutableMap<String, String>, tenantId: String?) {
-        val musers = mobileApiService.findByUseridAndStatus(userid, TradeDict.STATUS_NORMAL)
+       // val musers = mobileApiService.findByUseridAndStatus(userid, TradeDict.STATUS_NORMAL)
         var msg = TBMsg().apply {
             this.content = content
             this.title = title
@@ -52,39 +52,36 @@
             this.refno = refno
             this.extras = gson.toJson(extras)
         }
-        if (musers == null || musers.isEmpty()) {
-            msg.pushresult = "没有手机用户，消息未推送"
-            msgDao.save(msg)
-            return
-        }
+//        if (musers == null || musers.isEmpty()) {
+//            msg.pushresult = "没有手机用户，消息未推送"
+//            msgDao.save(msg)
+//            return
+//        }
         msg = msgDao.save(msg)
         var uids = ""
-        musers.forEach {
-            uids += "${it.uid},"
-            var platform = "android"
-            if ("ios".equals(it.lastloginplatform, true)) {
-                platform = "ios"
-            }
-            val message = KafkaXgMessage()
-            message.alltarget = false
-            message.callback = true
-            message.content = msg.content
-            message.title = msg.title
-            message.platform = platform
-            message.retries = 3
-            extras["refno"] = refno
-            message.custom = gson.toJson(extras)
-            message.expiretime = DateUtil.getNewTime(DateUtil.getNow(), 300)
-            message.gids = it.uid
-            if (it.lastloginplatform.isNullOrEmpty()) {
-                message.platform = "all"
-                kafkaTemplate.send(topic, msg.msgid, gson.toJson(message))
-            } else {
-                kafkaTemplate.send(topic, msg.msgid, gson.toJson(message))
-            }
-        }
-        msg.pusheduids = uids
-        msgDao.save(msg)
+//        musers.forEach {
+//            uids += "${it.uid},"
+//            var platform = "android"
+//            if ("ios".equals(it.lastloginplatform, true)) {
+//                platform = "ios"
+//            }
+//
+//        }
+//        msg.pusheduids = uids
+//        msgDao.save(msg)
+        val message = KafkaXgMessage()
+        message.alltarget = false
+        message.callback = true
+        message.content = msg.content
+        message.title = msg.title
+        message.retries = 3
+        extras["refno"] = refno
+        message.custom = gson.toJson(extras)
+        message.expiretime = DateUtil.getNewTime(DateUtil.getNow(), 300)
+        message.gids = userid
+        message.platform = "all"
+        kafkaTemplate.send(topic, msg.msgid, gson.toJson(message))
+
     }
 
     @Async("kafkaSendMessageAsyncTask")
