diff --git a/build.gradle b/build.gradle
index fe5a7de..296f715 100644
--- a/build.gradle
+++ b/build.gradle
@@ -143,4 +143,7 @@
     }
 }
 
+tasks.withType(JavaCompile) {
+    options.encoding = "UTF-8"
+}
 
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 3496703..2854362 100644
--- a/oauth/build.gradle
+++ b/oauth/build.gradle
@@ -28,6 +28,11 @@
     baseName = 'oauth'
 }
 
+tasks.withType(JavaCompile) {
+    options.encoding = "UTF-8"
+}
+
+
 
 dependencies {
     implementation project(":payapi-common")
diff --git a/payapi-common/build.gradle b/payapi-common/build.gradle
index 7ae26c0..09ae6d4 100644
--- a/payapi-common/build.gradle
+++ b/payapi-common/build.gradle
@@ -28,4 +28,10 @@
 
     compileOnly "org.projectlombok:lombok:${lombokVersion}"
     annotationProcessor "org.projectlombok:lombok:${lombokVersion}"
-}
\ No newline at end of file
+
+    testImplementation 'junit:junit:4.12'
+}
+
+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 f76dc3a..c54d0f0 100644
--- a/payapi-sdk/build.gradle
+++ b/payapi-sdk/build.gradle
@@ -43,4 +43,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 2938317..364856c 100644
--- a/payapi/build.gradle
+++ b/payapi/build.gradle
@@ -9,7 +9,8 @@
     id "com.palantir.docker"
 }
 
-payapiVersion = version
+payapiVersion = gitVersion()
+def details = versionDetails()
 
 def payapiStartClass = "com.supwisdom.dlpay.PayApiApplicationKt"
 
@@ -107,3 +108,7 @@
 
 }
 
+tasks.withType(JavaCompile) {
+    options.encoding = "UTF-8"
+}
+
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
