增加消息推送功能接口
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/kafka_service_impl.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/kafka_service_impl.kt
index 7e35c90..ac2689f 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/kafka_service_impl.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/kafka_service_impl.kt
@@ -8,6 +8,7 @@
import com.supwisdom.dlpay.mobile.dao.MsgDao
import com.supwisdom.dlpay.mobile.domain.TBMsg
import com.supwisdom.dlpay.mobile.service.MobileApiService
+import com.supwisdom.dlpay.portal.bean.SendMsgBean
import mu.KotlinLogging
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.kafka.core.KafkaTemplate
@@ -29,15 +30,21 @@
val topic = "jpush-messages"
@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)
+ override fun sendJpushMessage(bean: SendMsgBean, title: String, content: String, extras: MutableMap<String, String>, tenantId: String?) {
+ val sendMsg = msgDao.findBySourceAndRefno(bean.source, bean.refno)
+ // 已推送直接返回
+ if (sendMsg != null) {
+ return
+ }
+ val musers = mobileApiService.findByUseridAndStatus(bean.userid, TradeDict.STATUS_NORMAL)
var msg = TBMsg().apply {
this.content = content
this.title = title
- this.refno = refno
- this.userid = userid
+ this.userid = bean.userid
+ this.cardno = bean.cardno
+ this.source = bean.source
this.lastupdate = DateUtil.getNow()
- this.refno = refno
+ this.refno = bean.refno
this.extras = gson.toJson(extras)
}
if (musers == null || musers.isEmpty()) {
@@ -60,7 +67,7 @@
message.title = msg.title
message.platform = platform
message.retries = 3
- extras["refno"] = refno
+ extras["refno"] = bean.refno
message.custom = gson.toJson(extras)
message.expiretime = DateUtil.getNewTime(DateUtil.getNow(), 300)
message.gids = it.uid
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/api/service/kafka_service.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/api/service/kafka_service.kt
index 66d3f20..2301427 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/api/service/kafka_service.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/api/service/kafka_service.kt
@@ -1,6 +1,7 @@
package com.supwisdom.dlpay.api.service
import com.supwisdom.dlpay.mobile.dao.MsgDao
+import com.supwisdom.dlpay.portal.bean.SendMsgBean
import mu.KotlinLogging
import org.apache.kafka.clients.consumer.ConsumerRecord
import org.springframework.beans.factory.annotation.Autowired
@@ -8,7 +9,7 @@
import org.springframework.stereotype.Component
interface KafkaSendMsgService {
- fun sendJpushMessage(userid: String, title: String, content: String, refno: String, extras: MutableMap<String, String>, tenantId: String?)
+ fun sendJpushMessage(bean: SendMsgBean, title: String, content: String, extras: MutableMap<String, String>, tenantId: String?)
}
@Component
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
index b9c716f..401b4a0 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
@@ -22,6 +22,7 @@
import com.supwisdom.dlpay.mobile.service.MobileApiService
import com.supwisdom.dlpay.paysdk.proxy.UserProxy
import com.supwisdom.dlpay.portal.bean.FeedbackSearchBean
+import com.supwisdom.dlpay.portal.bean.SendMsgBean
import com.supwisdom.dlpay.portal.bean.UserSecurityRequestBean
import com.supwisdom.dlpay.portal.domain.TBFeedback
import com.supwisdom.dlpay.portal.service.*
@@ -78,6 +79,8 @@
lateinit var medicalService: MedicalService
@Autowired
lateinit var secretSecurityService: SecretSecurityService
+ @Autowired
+ lateinit var msgService: MsgService
val logger = KotlinLogging.logger { }
@RequestMapping("/time")
@@ -606,6 +609,27 @@
}
}
+ /**
+ * 子系统调用手机推送接口
+ */
+ @RequestMapping(value = ["/template/sendmsg"], method = [RequestMethod.POST])
+ fun sendMsg(@RequestBody bean: SendMsgBean): JsonResult? {
+ return try {
+ val userInfo = userProxy.querybycardno(QueryUserParam().apply {
+ this.citizencardno = bean.cardno
+ })
+ if (userInfo.retcode != 0) {
+ logger.error { "获取市民卡号为${bean.cardno}的用户信息失败,错误信息:${userInfo.retmsg}" }
+ return JsonResult.error("获取用户信息失败")
+ }
+ bean.userid = userInfo.userid
+ msgService.sendMsg(bean)
+ return JsonResult.ok()
+ } catch (e: Exception) {
+ logger.error { e.message }
+ JsonResult.error(e.message)
+ }
+ }
}
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/dao/ApiDao.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/dao/ApiDao.kt
index 27f63ad..c3c38d8 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/dao/ApiDao.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/dao/ApiDao.kt
@@ -9,4 +9,6 @@
interface PagesDao : JpaRepository<TBPages, String>
@Repository
-interface MsgDao : JpaRepository<TBMsg, String>
\ No newline at end of file
+interface MsgDao : JpaRepository<TBMsg, String> {
+ fun findBySourceAndRefno(source: String, refno: String): TBMsg?
+}
\ No newline at end of file
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBMsg.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBMsg.kt
index 53ec2f0..ad2d372 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBMsg.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/domain/TBMsg.kt
@@ -4,7 +4,7 @@
import javax.persistence.*
@Entity
-@Table(name = "TB_MSG")
+@Table(name = "TB_MSG",indexes = [Index(name="msg_idx",columnList = "source,refno",unique = true)])
class TBMsg{
@Id
@GenericGenerator(name = "idGenerator", strategy = "uuid")
@@ -15,9 +15,15 @@
@Column(name = "userid", length = 32)
var userid:String = ""
+ @Column(name = "cardno", length = 32)
+ var cardno:String = ""
+
@Column(name = "title", length = 100)
var title: String? = null
+ @Column(name = "source", length = 20)
+ var source: String? = null
+
@Column(name = "refno", length = 32)
var refno: String? = null
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/PortalApi.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/PortalApi.kt
index a970849..6670dca 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/PortalApi.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/PortalApi.kt
@@ -1,6 +1,7 @@
package com.supwisdom.dlpay.portal
import com.supwisdom.dlpay.api.bean.JsonResult
+import com.supwisdom.dlpay.api.bean.QueryUserParam
import com.supwisdom.dlpay.api.service.UploadPicService
import com.supwisdom.dlpay.framework.core.JwtConfig
import com.supwisdom.dlpay.framework.core.JwtTokenUtil
@@ -242,17 +243,6 @@
}
}
- @RequestMapping(value = ["/template/sendmsg"], method = [RequestMethod.POST])
- fun sendMsg(@RequestBody bean: SendMsgBean): JsonResult? {
- return try {
- msgService.sendMsg(bean)
- return JsonResult.ok()
- } catch (e: Exception) {
- logger.error { e.message }
- JsonResult.error(e.message)
- }
- }
-
@RequestMapping(value = ["/article/uploadpic"], method = [RequestMethod.POST])
fun uploadPic(request: MultipartHttpServletRequest): JsonResult? {
val map = uploadPicService.uploadPic(request)
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/bean/SendMsgBean.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/bean/SendMsgBean.kt
index de40251..2346bc8 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/bean/SendMsgBean.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/bean/SendMsgBean.kt
@@ -2,7 +2,9 @@
class SendMsgBean {
var templateid: String = ""
- var userid: String = ""
+ var cardno: String = ""
var refno: String = ""
+ var source: String = ""
+ var userid: String = ""
var data: Map<String,String> = HashMap()
}
\ No newline at end of file
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/service/Impl/MsgServiceImpl.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/service/Impl/MsgServiceImpl.kt
index 50af7e3..60c2c8b 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/service/Impl/MsgServiceImpl.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/service/Impl/MsgServiceImpl.kt
@@ -50,8 +50,8 @@
throw RuntimeException("未设置参数<${param}>的值")
}
}
- kafkaSendMsgService.sendJpushMessage(bean.userid,template.title,content,bean.refno,mutableMapOf(),"")
- }else {
+ kafkaSendMsgService.sendJpushMessage(bean, template.title, content, mutableMapOf(), "")
+ } else {
throw RuntimeException("未找到id为:<${bean.templateid}>的模板,请确认模板id")
}
}