diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..991a9d1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+*.iml
+.idea/
+lib/report/*.jar
+target/
+.DS_Store
\ No newline at end of file
diff --git a/plugin.xml b/plugin.xml
index cb92daa..deefa15 100755
--- a/plugin.xml
+++ b/plugin.xml
@@ -5,11 +5,15 @@
yes
1.0
10.0
- 2017-11-17
+ 2019-11-06
Lanlan
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/readme.md b/readme.md
new file mode 100644
index 0000000..f464c80
--- /dev/null
+++ b/readme.md
@@ -0,0 +1,28 @@
+# 第三方短信平台插件
+
+## 开启短信
+
+使用该插件可以不使用帆软内置的短信平台,只需要在购买该功能点后,通过插件使用自己的短信平台即可,如下图所示:
+![open](screenshots/open.png)
+
+给管理员绑定手机号:
+![open2](screenshots/open2.png)
+
+绑定好后如图:
+![open3](screenshots/open3.png)
+
+开启短信验证密码:
+![open4](screenshots/open4.png)
+
+## 测试方式
+
+可以在登录决策平台后,访问[http://localhost:8075/webroot/decision/url/ts/simple/test](http://localhost:8075/webroot/decision/url/ts/simple/test),尝试发送测试短信。
+
+## 测试时获取验证码
+
+可以直接在日志中看到要短信发送的内容。
+
+
+
+
+
diff --git a/screenshots/open.png b/screenshots/open.png
new file mode 100644
index 0000000..403c105
Binary files /dev/null and b/screenshots/open.png differ
diff --git a/screenshots/open2.png b/screenshots/open2.png
new file mode 100644
index 0000000..abb2b83
Binary files /dev/null and b/screenshots/open2.png differ
diff --git a/screenshots/open3.png b/screenshots/open3.png
new file mode 100644
index 0000000..5808231
Binary files /dev/null and b/screenshots/open3.png differ
diff --git a/screenshots/open4.png b/screenshots/open4.png
new file mode 100644
index 0000000..b1a5705
Binary files /dev/null and b/screenshots/open4.png differ
diff --git a/src/main/java/com/fr/plugin/third/sms/SRGT.java b/src/main/java/com/fr/plugin/third/sms/SRGT.java
deleted file mode 100644
index f4d60c4..0000000
--- a/src/main/java/com/fr/plugin/third/sms/SRGT.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package com.fr.plugin.third.sms;
-
-import com.fr.base.sms.SMSContext;
-import com.fr.base.top.impl.AbstractSMSServiceProcessor;
-import com.fr.base.top.impl.SMSListenerAdapter;
-import com.fr.base.top.impl.ThirdResponse;
-import com.fr.json.JSONArray;
-import com.fr.json.JSONObject;
-import com.fr.log.FineLoggerFactory;
-import com.fr.plugin.transform.ExecuteFunctionRecord;
-import com.fr.plugin.transform.FunctionRecorder;
-import java.util.List;
-
-/**
- * @author Lanlan
- * @date 2019/1/29
- */
-@FunctionRecorder
-public class SRGT extends AbstractSMSServiceProcessor {
-
- public SRGT() {
- startListener();
- }
-
- @Override
- public ThirdResponse sendTest(String mobile) {
- System.out.println("发送测试短信成功");
- FineLoggerFactory.getLogger().info("发送测试短信成功");
- return ThirdResponse.create(ThirdResponse.RES_STATUS_SUCCESS, "发送测试短信成功", JSONObject.create());
- }
-
- @Override
- @ExecuteFunctionRecord
- public ThirdResponse send(String template, String mobile, JSONObject para, String receiver) throws Exception {
- System.out.println("发送普通短信成功");
- FineLoggerFactory.getLogger().info("发送普通短信成功");
- return ThirdResponse.create(ThirdResponse.RES_STATUS_SUCCESS, "发送普通短信成功", JSONObject.create());
- }
-
- @Override
- public ThirdResponse batchSendSMS(String template, List mobiles, JSONArray params, List receivers) throws Exception {
- System.out.println("发送批量短信成功");
- FineLoggerFactory.getLogger().info("发送批量短信成功");
- return ThirdResponse.create(ThirdResponse.RES_STATUS_SUCCESS, "发送批量短信成功", JSONObject.create());
- }
-
- /**
- * 启动发送短信的监听器
- */
- private void startListener() {
- SMSContext.addSmsListener(new SMSListenerAdapter() {
-
- @Override
- public void beforeSend(String text, List mobiles, JSONArray params, List receivers) {
- System.out.println("发送短信前监听事件");
- FineLoggerFactory.getLogger().info("发送短信前监听事件");
- }
-
- @Override
- public void afterSend(String text, List mobiles, JSONArray params, List receivers, ThirdResponse response) {
- System.out.println("发送短信后监听事件");
- FineLoggerFactory.getLogger().info("发送短信后监听事件");
- }
- });
- }
-}
\ No newline at end of file
diff --git a/src/main/java/com/fr/plugin/third/sms/ThirdSmsHandlerBridge.java b/src/main/java/com/fr/plugin/third/sms/ThirdSmsHandlerBridge.java
new file mode 100644
index 0000000..fc7f0ef
--- /dev/null
+++ b/src/main/java/com/fr/plugin/third/sms/ThirdSmsHandlerBridge.java
@@ -0,0 +1,20 @@
+package com.fr.plugin.third.sms;
+
+import com.fr.decision.fun.HttpHandler;
+import com.fr.decision.fun.impl.AbstractHttpHandlerProvider;
+import com.fr.plugin.third.sms.test.SmsTestHandler;
+
+/**
+ * @author richie
+ * @version 10.0
+ * Created by richie on 2019/11/8
+ */
+public class ThirdSmsHandlerBridge extends AbstractHttpHandlerProvider {
+
+ @Override
+ public HttpHandler[] registerHandlers() {
+ return new HttpHandler[] {
+ new SmsTestHandler()
+ };
+ }
+}
diff --git a/src/main/java/com/fr/plugin/third/sms/ThirdSmsService.java b/src/main/java/com/fr/plugin/third/sms/ThirdSmsService.java
new file mode 100644
index 0000000..da1f656
--- /dev/null
+++ b/src/main/java/com/fr/plugin/third/sms/ThirdSmsService.java
@@ -0,0 +1,73 @@
+package com.fr.plugin.third.sms;
+
+import com.fr.base.sms.SMSContext;
+import com.fr.json.JSONArray;
+import com.fr.json.JSONObject;
+import com.fr.log.FineLoggerFactory;
+import com.fr.plugin.third.sms.fun.SmsClient;
+import com.fr.plugin.transform.ExecuteFunctionRecord;
+import com.fr.plugin.transform.FunctionRecorder;
+import com.fr.stable.fun.impl.AbstractSMSServiceProvider;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Lanlan
+ * @date 2019/1/29
+ */
+@FunctionRecorder
+public class ThirdSmsService extends AbstractSMSServiceProvider {
+
+ public ThirdSmsService() {
+ startListener();
+ }
+
+ @Override
+ public Map mapping() {
+ Map map = new HashMap<>();
+ map.put("16", "【短信模板】您的手机验证码为#Verifiecode#,请于10分钟内正确输入。");
+ return map;
+ }
+
+ @Override
+ public Response sendTest(String mobile) {
+ SmsClient.getInstance().send(mobile);
+ return Response.create(Response.RES_STATUS_SUCCESS, "发送测试短信成功", JSONObject.create());
+ }
+
+ @Override
+ @ExecuteFunctionRecord
+ public Response send(String template, String mobile, JSONObject para, String receiver) throws Exception {
+ SmsClient.getInstance().send(template, mobile, para, receiver);
+ FineLoggerFactory.getLogger().info("短信模板:{}, 手机号:{},参数:{}", template, mobile, para);
+ return Response.create(Response.RES_STATUS_SUCCESS, "发送普通短信成功", JSONObject.create());
+ }
+
+ @Override
+ public Response batchSendSMS(String template, List mobiles, JSONArray params, List receivers) throws Exception {
+ SmsClient.getInstance().batchSend(template, mobiles, params, receivers);
+ return Response.create(Response.RES_STATUS_SUCCESS, "发送批量短信成功", JSONObject.create());
+ }
+
+ /**
+ * 启动发送短信的监听器
+ */
+ private void startListener() {
+ SMSContext.addSmsListener(new Listener() {
+
+ @Override
+ public void beforeSend(String text, List mobiles, JSONArray params, List receivers) {
+ System.out.println("发送短信前监听事件");
+ FineLoggerFactory.getLogger().info("发送短信前监听事件");
+ }
+
+ @Override
+ public void afterSend(String text, List mobiles, JSONArray params, List receivers, Response response) {
+ System.out.println("发送短信后监听事件");
+ FineLoggerFactory.getLogger().info("发送短信后监听事件");
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/fr/plugin/third/sms/ThirdSmsURLAliasBridge.java b/src/main/java/com/fr/plugin/third/sms/ThirdSmsURLAliasBridge.java
new file mode 100644
index 0000000..cfe2b50
--- /dev/null
+++ b/src/main/java/com/fr/plugin/third/sms/ThirdSmsURLAliasBridge.java
@@ -0,0 +1,20 @@
+package com.fr.plugin.third.sms;
+
+import com.fr.decision.fun.impl.AbstractURLAliasProvider;
+import com.fr.decision.webservice.url.alias.URLAlias;
+import com.fr.decision.webservice.url.alias.URLAliasFactory;
+
+/**
+ * @author richie
+ * @version 10.0
+ * Created by richie on 2019/11/8
+ */
+public class ThirdSmsURLAliasBridge extends AbstractURLAliasProvider {
+
+ @Override
+ public URLAlias[] registerAlias() {
+ return new URLAlias[]{
+ URLAliasFactory.createPluginAlias("/ts/simple/test", "/ts/test", false)
+ };
+ }
+}
diff --git a/src/main/java/com/fr/plugin/third/sms/fun/SmsClient.java b/src/main/java/com/fr/plugin/third/sms/fun/SmsClient.java
new file mode 100644
index 0000000..c8e950b
--- /dev/null
+++ b/src/main/java/com/fr/plugin/third/sms/fun/SmsClient.java
@@ -0,0 +1,40 @@
+package com.fr.plugin.third.sms.fun;
+
+import com.fr.json.JSONArray;
+import com.fr.json.JSONObject;
+import com.fr.log.FineLoggerFactory;
+
+import java.util.List;
+
+/**
+ * @author richie
+ * @version 10.0
+ * Created by richie on 2019/11/8
+ * 这个是短信发送的客户端,调用各家实际短信发送平台,这里只通过输出日志的方式提供一个示例
+ */
+public class SmsClient {
+
+ private static SmsClient instance = new SmsClient();
+
+ public static SmsClient getInstance() {
+ return instance;
+ }
+
+ public boolean send(String mobile) {
+ System.out.println("发送测试短信成功");
+ FineLoggerFactory.getLogger().info("发送测试短信成功");
+ return true;
+ }
+
+ public boolean send(String template, String mobile, JSONObject para, String receiver) {
+ System.out.println("发送普通短信成功");
+ FineLoggerFactory.getLogger().info("发送普通短信成功");
+ return true;
+ }
+
+ public boolean batchSend(String template, List mobiles, JSONArray params, List receivers) {
+ System.out.println("发送批量短信成功");
+ FineLoggerFactory.getLogger().info("发送批量短信成功");
+ return true;
+ }
+}
diff --git a/src/main/java/com/fr/plugin/third/sms/test/SmsTestHandler.java b/src/main/java/com/fr/plugin/third/sms/test/SmsTestHandler.java
new file mode 100644
index 0000000..91ae787
--- /dev/null
+++ b/src/main/java/com/fr/plugin/third/sms/test/SmsTestHandler.java
@@ -0,0 +1,43 @@
+package com.fr.plugin.third.sms.test;
+
+import com.fr.decision.fun.impl.BaseHttpHandler;
+import com.fr.plugin.third.sms.fun.SmsClient;
+import com.fr.third.springframework.web.bind.annotation.RequestMethod;
+import com.fr.web.utils.WebUtils;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @author richie
+ * @version 10.0
+ * Created by richie on 2019/11/8
+ */
+public class SmsTestHandler extends BaseHttpHandler {
+
+ @Override
+ public RequestMethod getMethod() {
+ return RequestMethod.GET;
+ }
+
+ @Override
+ public String getPath() {
+ return "/ts/test";
+ }
+
+ @Override
+ public boolean isPublic() {
+ return false;
+ }
+
+ @Override
+ public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception {
+ String mobile = "13898675683";
+ boolean status = SmsClient.getInstance().send(mobile);
+ if (status) {
+ WebUtils.printAsString(res, "已向" + mobile + "发送测试短信");
+ } else {
+ WebUtils.printAsString(res, "向" + mobile + "发送测试短信失败");
+ }
+ }
+}