diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index 7c2ec22..408a43a 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -35,7 +35,7 @@
 
 #============== kafka ===================
 # 指定kafka 代理地址，可以多个
-# spring.kafka.bootstrap-servers=192.168.153.135:9092
+spring.kafka.bootstrap-servers=172.28.201.101:29092
 #=============== provider  =======================
 spring.kafka.producer.retries=3
 # 每次批量发送消息的数量
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/bean/KafkaXgMessage.java b/payapi/src/main/java/com/supwisdom/dlpay/api/bean/KafkaXgMessage.java
new file mode 100644
index 0000000..9bc836a
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/bean/KafkaXgMessage.java
@@ -0,0 +1,133 @@
+package com.supwisdom.dlpay.api.bean;
+
+public class KafkaXgMessage {
+
+  private String title;//提醒标题
+  private String content;//提醒消息内容
+  private String gids;//gid发送列表，逗号隔开
+  private Boolean alltarget;//是否平台全发送
+  private String platform;//android,ios
+  private int type;//TYPE_NOTIFICATION = 1,TYPE_MESSAGE = 2
+
+  private String url;//跳转url
+  private String expiretime;//过期时间
+  private Boolean callback;//是否回调返回
+  private String msg_type;//提醒类型 字典 epay_pos_scan_code_pay、
+  private String refno;//流水参考号
+  private int retries;//最多重试次数
+  private String amount;//消费金额，元，小数点后两位
+  private String custom; //扩展参数,原样传递
+
+
+  public String getTitle() {
+    return title;
+  }
+
+  public void setTitle(String title) {
+    this.title = title;
+  }
+
+  public String getContent() {
+    return content;
+  }
+
+  public void setContent(String content) {
+    this.content = content;
+  }
+
+  public String getGids() {
+    return gids;
+  }
+
+  public void setGids(String gids) {
+    this.gids = gids;
+  }
+
+  public Boolean getAlltarget() {
+    return alltarget;
+  }
+
+  public void setAlltarget(Boolean alltarget) {
+    this.alltarget = alltarget;
+  }
+
+  public String getPlatform() {
+    return platform;
+  }
+
+  public void setPlatform(String platform) {
+    this.platform = platform;
+  }
+
+  public int getType() {
+    return type;
+  }
+
+  public void setType(int type) {
+    this.type = type;
+  }
+
+  public String getUrl() {
+    return url;
+  }
+
+  public void setUrl(String url) {
+    this.url = url;
+  }
+
+  public String getExpiretime() {
+    return expiretime;
+  }
+
+  public void setExpiretime(String expiretime) {
+    this.expiretime = expiretime;
+  }
+
+  public Boolean getCallback() {
+    return callback;
+  }
+
+  public void setCallback(Boolean callback) {
+    this.callback = callback;
+  }
+
+  public String getMsg_type() {
+    return msg_type;
+  }
+
+  public void setMsg_type(String msg_type) {
+    this.msg_type = msg_type;
+  }
+
+  public String getRefno() {
+    return refno;
+  }
+
+  public void setRefno(String refno) {
+    this.refno = refno;
+  }
+
+  public int getRetries() {
+    return retries;
+  }
+
+  public void setRetries(int retries) {
+    this.retries = retries;
+  }
+
+  public String getAmount() {
+    return amount;
+  }
+
+  public void setAmount(String amount) {
+    this.amount = amount;
+  }
+
+  public String getCustom() {
+    return custom;
+  }
+
+  public void setCustom(String custom) {
+    this.custom = custom;
+  }
+}
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
index 5b109df..eb74c4c 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
@@ -5,6 +5,7 @@
 import com.supwisdom.dlpay.api.domain.*
 import com.supwisdom.dlpay.api.repositories.AccountService
 import com.supwisdom.dlpay.api.service.AccountUtilServcie
+import com.supwisdom.dlpay.api.service.KafkaSendMsgService
 import com.supwisdom.dlpay.api.service.SourceTypeService
 import com.supwisdom.dlpay.api.service.TransactionService
 import com.supwisdom.dlpay.exception.TransactionCheckException
@@ -38,6 +39,10 @@
     @Autowired
     private lateinit var sourceTypeService: SourceTypeService
 
+    @Autowired
+    private lateinit var kafkaSendMsgService: KafkaSendMsgService
+
+
     /// 公共函数部分
     private fun preCheck(builder: TransactionBuilder) {
         builder.preCheck()
@@ -386,6 +391,9 @@
 
         transaction.endTime = systemUtilService.sysdatetime.sysdate
         transactionMainDao.save(transaction)
+        if(transaction.person&&!transaction.personDtl.userid.isNullOrEmpty()){
+            kafkaSendMsgService.sendJpushMessage(transaction.personDtl.userid,"交易提醒","你有一笔${transaction.personDtl.amount}元的支出，点击查看详情",transaction.refno, mutableMapOf(),transaction.tenantid)
+        }
         return transaction
     }
 
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/kafka_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/kafka_service.kt
index 6c9ce1a..d9bd0a8 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/kafka_service.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/kafka_service.kt
@@ -1,20 +1,70 @@
 package com.supwisdom.dlpay.api.service
 
+import com.google.gson.Gson
+import com.supwisdom.dlpay.api.bean.KafkaXgMessage
+import com.supwisdom.dlpay.framework.util.DateUtil
+import com.supwisdom.dlpay.framework.util.TradeDict
+import com.supwisdom.dlpay.mobile.dao.MsgDao
+import com.supwisdom.dlpay.mobile.domain.TBMsg
+import com.supwisdom.dlpay.mobile.service.MobileApiService
 import mu.KotlinLogging
 import org.springframework.stereotype.Component
 import org.springframework.kafka.core.KafkaTemplate
 import org.springframework.beans.factory.annotation.Autowired
-
+import org.springframework.scheduling.annotation.Async
 
 
 @Component
-class KafkaSendMsgService{
+class KafkaSendMsgService {
     val logger = KotlinLogging.logger { }
-
     @Autowired
     private lateinit var kafkaTemplate: KafkaTemplate<String, String>
-    fun sendMessage(topic:String,msg: String) {
-        logger.debug { "$topic,$msg" }
-        kafkaTemplate.send(topic, msg)
+    @Autowired
+    private lateinit var msgDao: MsgDao
+    @Autowired
+    private lateinit var mobileApiService: MobileApiService
+    val gson = Gson()
+
+    val topic = "jpush-messages"
+
+    @Async("kafkaSendMsgService")
+    fun sendJpushMessage(userid: String, title: String, content: String, refno: String, extras: MutableMap<String, String>, tenantId: String?) {
+        val musers = mobileApiService.findByUseridAndStatus(userid, TradeDict.STATUS_NORMAL)
+        var msg = TBMsg().apply {
+            this.content = content
+            this.title = title
+            this.refno = refno
+            this.userid = userid
+            this.lastupdate = DateUtil.getNow()
+            this.refno = refno
+            this.extras = gson.toJson(extras)
+        }
+        if (musers == null || musers.isEmpty()) {
+            msg.pushresult = "没有手机用户，消息未推送"
+            msgDao.save(msg)
+            return
+        }
+        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
+            kafkaTemplate.send(topic, refno, gson.toJson(message))
+        }
+        msg.pusheduids = uids
+        msgDao.save(msg)
     }
 }
\ No newline at end of file
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt
index b8ea4fc..16f1742 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt
@@ -43,7 +43,8 @@
     lateinit var userService: UserService
 
     override fun onAuthenticationSuccess(request: HttpServletRequest, response: HttpServletResponse, authentication: Authentication) {
-        logger.error(request.getParameter("platform"))
+        val platform = request.getParameter("platform")
+        logger.error(platform)
         val temp = authentication.principal as TBMobileUser
         val user = mobileApiService.findUserByPhone(temp.phone)
         val exp = systemUtilService.getSysparaValueAsInt(SysparaUtil.MOBILE_LOGIN_EXPIRE_IN_SECONDS,60*60*24*3)
@@ -72,6 +73,7 @@
                 user.loginpwderrortime = null
             }
             user.lastlogin = DateUtil.getNow()
+            user.lastloginplatform = platform
             user.jti = jwt.jti
             mobileApiService.saveUser(user)
             var payseted = false
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
index 9d78020..824ebc1 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
@@ -135,6 +135,9 @@
             }
             user.status = TradeDict.STATUS_NORMAL
             user.registerplatform = platform
+            if(!user.registerplatform.isNullOrEmpty()){
+                user.lastloginplatform = user.registerplatform!!.split(",")[1]
+            }
             user.devuid = uuid
             user = mobileApiService.saveUser(user)
             val newCode = RandomUtils.getRandomString(30)
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/dao/ApiDao.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/dao/ApiDao.kt
index 8146652..27f63ad 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/dao/ApiDao.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/dao/ApiDao.kt
@@ -1,8 +1,12 @@
 package com.supwisdom.dlpay.mobile.dao
 
+import com.supwisdom.dlpay.mobile.domain.TBMsg
 import com.supwisdom.dlpay.mobile.domain.TBPages
 import org.springframework.data.jpa.repository.JpaRepository
 import org.springframework.stereotype.Repository
 
 @Repository
-interface PagesDao : JpaRepository<TBPages,String>
\ No newline at end of file
+interface PagesDao : JpaRepository<TBPages, String>
+
+@Repository
+interface MsgDao : JpaRepository<TBMsg, String>
\ No newline at end of file
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/dao/MobileUserDao.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/dao/MobileUserDao.kt
index 76ad4c6..47540f4 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/dao/MobileUserDao.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/dao/MobileUserDao.kt
@@ -7,6 +7,8 @@
 @Repository
 interface MobileUserDao : JpaRepository<TBMobileUser, String> {
     fun findByPhone(phone: String): TBMobileUser?
+
+    fun findByUseridAndStatus(userid:String,status:String):List<TBMobileUser>?
 }
 
 
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBMobileUser.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBMobileUser.kt
index 276d8d0..afee39c 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBMobileUser.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBMobileUser.kt
@@ -167,6 +167,8 @@
     @Column(name = "secertkey", length = 64)
     var secertkey: String? = null
 
+    @Column(name = "tenantid", length = 32)
+    var tenantid:String? = null
 
     fun checkLoginpwdtime():Int{
         if (this.loginpwderror >= 5 && (System.currentTimeMillis() - this.loginpwderrortime!!) < 1000 * 60 * 30) {
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBMsg.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBMsg.kt
new file mode 100644
index 0000000..53ec2f0
--- /dev/null
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBMsg.kt
@@ -0,0 +1,41 @@
+package com.supwisdom.dlpay.mobile.domain
+
+import org.hibernate.annotations.GenericGenerator
+import javax.persistence.*
+
+@Entity
+@Table(name = "TB_MSG")
+class TBMsg{
+    @Id
+    @GenericGenerator(name = "idGenerator", strategy = "uuid")
+    @GeneratedValue(generator = "idGenerator")
+    @Column(name = "msgid", nullable = false, length = 32)
+    var msgid: String = ""
+
+    @Column(name = "userid", length = 32)
+    var userid:String = ""
+
+    @Column(name = "title", length = 100)
+    var title: String? = null
+
+    @Column(name = "refno", length = 32)
+    var refno: String? = null
+
+    @Column(name = "content", length = 400)
+    var content: String? = null
+
+    @Column(name = "lastupdate", length = 14)
+    var lastupdate: String? = null
+
+    @Column(name = "extras", length = 1000)
+    var extras: String? = null
+
+    @Column(name = "pushresult", length = 500)
+    var pushresult: String? = null
+
+    @Column(name = "pusheduids", length = 400)
+    var pusheduids:String? = ""
+
+    @Column(name = "tenantid", length = 32)
+    var tenantid:String? = null
+}
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBPages.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBPages.kt
index cbe892b..6c9b74a 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBPages.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBPages.kt
@@ -20,4 +20,7 @@
 
     @Column(name = "lastupdate", length = 14)
     var lastupdate: String? = null
+
+    @Column(name = "tenantid", length = 32)
+    var tenantid:String? = null
 }
\ No newline at end of file
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/MobileApiService.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/MobileApiService.kt
index 0311352..3baacb3 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/MobileApiService.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/MobileApiService.kt
@@ -23,4 +23,6 @@
     fun saveCard(card:TCard):TCard
 
     fun sendSms(phone:String,code:String):BaseResp
+
+    fun findByUseridAndStatus(userid:String,status:String):List<TBMobileUser>?
 }
\ No newline at end of file
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileApiServiceImpl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileApiServiceImpl.kt
index cc1bc47..9412111 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileApiServiceImpl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileApiServiceImpl.kt
@@ -149,4 +149,8 @@
             resp
         }
     }
+
+    override fun findByUseridAndStatus(userid: String, status: String): List<TBMobileUser>? {
+        return mobileUserDao.findByUseridAndStatus(userid,status)
+    }
 }
\ No newline at end of file
