diff --git a/build.gradle b/build.gradle
index 0b1c3c0..2acc881 100644
--- a/build.gradle
+++ b/build.gradle
@@ -24,4 +24,8 @@
     enabled = false
 }
 
+tasks.withType(JavaCompile) {
+    options.encoding = "UTF-8"
+}
+
 group = 'com.supwisdom'
\ No newline at end of file
diff --git a/bus-qrcode/build.gradle b/bus-qrcode/build.gradle
index 8f2e1f1..6237e97 100644
--- a/bus-qrcode/build.gradle
+++ b/bus-qrcode/build.gradle
@@ -52,3 +52,7 @@
 }
 
 publish.dependsOn(jar)
+
+tasks.withType(JavaCompile) {
+    options.encoding = "UTF-8"
+}
diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index 26e1499..4346bdc 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -13,9 +13,10 @@
 spring.datasource.initialization-mode=always
 # Redis settings
 #spring.redis.host=ykt.supwisdom.com
-spring.redis.host=172.28.201.101
-spring.redis.port=16379
-spring.redis.password=kingstar
+spring.redis.host=172.28.201.70
+spring.redis.port=6379
+spring.redis.password=
+spring.redis.database=2
 # jwt settings
 jwt.secret=Zj5taLomEbrM0lk+NMQZbHfSxaDU1wekjT+kiC3YzDw=
 # timeout seconds
diff --git a/oauth/build.gradle b/oauth/build.gradle
index aeffb67..232445f 100644
--- a/oauth/build.gradle
+++ b/oauth/build.gradle
@@ -31,6 +31,11 @@
     baseName = 'oauth'
 }
 
+tasks.withType(JavaCompile) {
+    options.encoding = "UTF-8"
+}
+
+
 
 dependencies {
     implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
diff --git a/payapi-common/build.gradle b/payapi-common/build.gradle
index 0b8b7dd..c257e6a 100644
--- a/payapi-common/build.gradle
+++ b/payapi-common/build.gradle
@@ -50,4 +50,8 @@
     implementation 'org.apache.commons:commons-lang3:3.9'
 
     testImplementation 'junit:junit:4.12'
-}
\ No newline at end of file
+}
+
+tasks.withType(JavaCompile) {
+    options.encoding = "UTF-8"
+}
diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/CommonSendMessageParam.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/CommonSendMessageParam.java
new file mode 100644
index 0000000..f63b88f
--- /dev/null
+++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/CommonSendMessageParam.java
@@ -0,0 +1,28 @@
+package com.supwisdom.dlpay.api.bean;
+
+import com.supwisdom.dlpay.api.APIRequestParam;
+import com.supwisdom.dlpay.api.annotation.Sign;
+import com.supwisdom.dlpay.api.exception.RequestParamCheckException;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.commons.lang3.StringUtils;
+
+
+@Getter
+@Setter
+public class CommonSendMessageParam extends APIRequestParam {
+    @Sign
+    private String userid;
+    @Sign
+    private String content;
+    @Sign
+    private String title;
+
+    @Override
+    public boolean checkParam() throws RequestParamCheckException {
+        if (StringUtils.isEmpty(userid) && StringUtils.isEmpty(content)&& StringUtils.isEmpty(title) ) {
+            throw new RequestParamCheckException("用户唯一号不能为空");
+        }
+        return true;
+    }
+}
diff --git a/payapi-sdk/build.gradle b/payapi-sdk/build.gradle
index 6151e73..6d97ea4 100644
--- a/payapi-sdk/build.gradle
+++ b/payapi-sdk/build.gradle
@@ -71,4 +71,8 @@
     }
 }
 
-publish.dependsOn(jar)
\ No newline at end of file
+publish.dependsOn(jar)
+
+tasks.withType(JavaCompile) {
+    options.encoding = "UTF-8"
+}
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/ApiCommonProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/ApiCommonProxy.java
index 47a8e53..f273a3f 100644
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/ApiCommonProxy.java
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/ApiCommonProxy.java
@@ -1,11 +1,22 @@
 package com.supwisdom.dlpay.paysdk.proxy;
 
+import com.supwisdom.dlpay.api.bean.ApiResponse;
 import com.supwisdom.dlpay.api.bean.ApiVersionResponse;
+import com.supwisdom.dlpay.api.bean.CommonSendMessageParam;
+import com.supwisdom.dlpay.api.bean.UserResponse;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 
 @FeignClient(name = "apiCommonProxy", url = "${payapi.url}")
 public interface ApiCommonProxy {
   @GetMapping(value = "/api/common/version")
   ApiVersionResponse apiVersion();
+
+  @PostMapping("/api/common/sendmsg")
+  ApiResponse sendMsg(@RequestBody CommonSendMessageParam param);
+
+
+
 }
diff --git a/payapi/build.gradle b/payapi/build.gradle
index 0a7d16c..5d8338c 100644
--- a/payapi/build.gradle
+++ b/payapi/build.gradle
@@ -11,6 +11,11 @@
     id 'com.palantir.docker'
 }
 
+tasks.withType(JavaCompile) {
+    options.encoding = "UTF-8"
+}
+
+
 payapiVersion = gitVersion()
 def details = versionDetails()
 
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/sendmsg_api_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/sendmsg_api_controller.kt
new file mode 100644
index 0000000..4408895
--- /dev/null
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/sendmsg_api_controller.kt
@@ -0,0 +1,41 @@
+package com.supwisdom.dlpay.api.controller
+
+import com.supwisdom.dlpay.api.bean.*
+import com.supwisdom.dlpay.api.service.*
+import com.supwisdom.dlpay.framework.ResponseBodyBuilder
+import com.supwisdom.dlpay.framework.service.SystemUtilService
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.http.ResponseEntity
+import org.springframework.web.bind.annotation.PostMapping
+import org.springframework.web.bind.annotation.RequestBody
+import org.springframework.web.bind.annotation.RequestMapping
+import org.springframework.web.bind.annotation.RestController
+
+@RestController
+@RequestMapping("/api/common")
+class SendMessageAPIController {
+
+    @Autowired
+    lateinit var systemUtilService: SystemUtilService
+
+    @Autowired
+    lateinit var transactionService: TransactionServiceProxy
+
+    @Autowired
+    lateinit var kafkaSendMsgService: KafkaSendMsgService
+
+    /**
+     * ============================================================================
+     * 发送消息推送
+     * ============================================================================
+     * */
+    @PostMapping("/sendmsg")
+    fun doSend(@RequestBody param: CommonSendMessageParam): ResponseEntity<Any> {
+        kafkaSendMsgService.sendJpushMessage(param.userid,param.title,param.content,"",mutableMapOf(),"")
+
+        return ResponseEntity.ok(ResponseBodyBuilder.create()
+                .success("发送成功"))
+    }
+
+
+}
\ No newline at end of file
