From 941be6a52ef8e37bf9a5dbd1827b0b52c1bbe5a7 Mon Sep 17 00:00:00 2001 From: thinkgem Date: Thu, 12 Jul 2018 23:37:47 +0800 Subject: [PATCH] =?UTF-8?q?job=E6=94=AF=E6=8C=81=E6=8C=87=E5=AE=9A?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=BA=90=E5=90=8D=E7=A7=B0=EF=BC=8C=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=BA=90=E7=9B=91=E6=8E=A7=E6=98=BE=E7=A4=BA=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=BA=90=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jeesite/common/msg/SmsUtils.java | 141 ++++++++++++++++++ .../modules/sys/web/LoginController.java | 5 +- .../i18n/core/sys/i18n_en.properties | 4 +- .../themes/default/modules/sys/sysLogin.html | 5 +- 4 files changed, 147 insertions(+), 8 deletions(-) create mode 100644 common/src/main/java/com/jeesite/common/msg/SmsUtils.java diff --git a/common/src/main/java/com/jeesite/common/msg/SmsUtils.java b/common/src/main/java/com/jeesite/common/msg/SmsUtils.java new file mode 100644 index 00000000..0e92ed2f --- /dev/null +++ b/common/src/main/java/com/jeesite/common/msg/SmsUtils.java @@ -0,0 +1,141 @@ +package com.jeesite.common.msg; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLEncoder; +import java.util.Date; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.jeesite.common.io.PropertiesUtils; +import com.jeesite.common.lang.DateUtils; + +/** + * 发送短信(乐云短信) + */ +public class SmsUtils { + + private final static Logger logger = LoggerFactory.getLogger(SmsUtils.class); + private final static PropertiesUtils props = PropertiesUtils.getInstance(); + private final static String url = props.getProperty("msg.sms.url", "http://lehuo520.cn/a/sms/api"); + private final static String data = props.getProperty("msg.sms.data", "username=jeesite&password=jeesite.com"); + private final static String prefix = props.getProperty("msg.sms.prefix", "【JeeSite】"); + private final static String suffix = props.getProperty("msg.sms.suffix", ""); + +// public static void main(String[] args) { +// String phone = "18500000000"; // 收短信人手机号码;例如:18500000000 支持多号码,号码之间用英文逗号隔开,最多100个 +// String content = "您好,您的验证码是:123456(请勿透露给其他人)感谢您的使用。"; // 输入需要发送内容;例如:你好这是一条测试短信 +// String smsid = ""; // 短信id,查询短信状态报告时需要,可为空 +// System.out.println(send(content, phone)); // 发短信 +// System.out.println(status(smsid, phone)); // 取状态 +// System.out.println(reply()); //取上行 回复短信 +// } + + /** + * 发送短信 + * @param content 接受内容 + * @param phone 接受手机号码 + * @return {"result":"0","describing":"提交成功","sms":[{"phone":"18073110001,18073110002","smsid":"83bd18f1d48b4cc9b9fe7810c768ac43","status":"3"}]} + */ + public static String send(String content, String phone) { + return send(content, phone, null); + } + + /** + * 发送短信 + * @param content 接受内容 + * @param phone 接受手机号码 + * @param sendtime 发送时间为空立即发送 + * @return {"result":"0","describing":"提交成功","sms":[{"phone":"18073110001,18073110002","smsid":"83bd18f1d48b4cc9b9fe7810c768ac43","status":"3"}]} + */ + public static String send(String content, String phone, Date sendTime) { + String res = ""; + try { + String param = data + "&phone=" + phone + "&content=" + URLEncoder + .encode(prefix + content + suffix, "UTF-8") + + "&sendTime=" + (sendTime != null ? DateUtils + .formatDate(sendTime, "yyyyMMddHHmm") : ""); + res = connectURL(url + "/send", param); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + return res; + } + + /** + * 获取状态 + * @param smsid,phone可为空,为空取最近两天未获取状态报告,沦询间隔时间不能低于5分钟 + * @return 请求错误返回页面示例: {"result":"-1","describing":"帐号不存在,请检查用户名或者密码是否正确","sms":[]} 请求成功返回页面示例: + * {"result":"0","describing":"提交成功","sms":[{"phone":"18073110001","smsid":"83bd18f1d48b4cc9b9fe7810c768ac43","status":"7"},{"phone":"18073110001","smsid":"83bd18f1d48b4cc9b9fe7810c768ac43","status":"8"}]} + */ + public static String status(String smsid, String phone) { + String res = ""; + try { + String param = data + "&smsid=" + smsid; + res = connectURL(url + "/status", param); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + return res; + } + + /** + * 获取回复 + * @param smsid:下发短信对应短信ID,taskId同一批任务ID + * @return {"result":"0","sms":[{"phone":"18073110001","neirong":"已收到","taskId":"83bd18f1d48b4cc9b9fe7810c768ac43"},"smsId":"83bd18f1d48b48j9b9fe7810c768ac43"}]} + */ + public static String reply() { + String res = ""; + try { + String param = data; + res = connectURL(url + "/query", param); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + return res; + } + + /** + * 进行http提交 + * @param + * @return + * @throws IOException + * @throws Exception + */ + private static String connectURL(String url, String param) throws IOException { + String res = ""; + HttpURLConnection urlConn = null; + URL url1 = new URL(url); + urlConn = (HttpURLConnection) url1.openConnection(); + urlConn.setRequestMethod("POST"); + urlConn.setDoOutput(true); + OutputStream out = null; + BufferedReader rd = null; + try{ + out = urlConn.getOutputStream(); + out.write(param.getBytes("UTF-8")); + out.flush(); + rd = new BufferedReader(new InputStreamReader(urlConn.getInputStream(), "UTF-8")); + StringBuffer sb = new StringBuffer(); + int ch; + while ((ch = rd.read()) > -1) { + sb.append((char) ch); + } + res = sb.toString().trim(); + }finally { + if (out!=null){ + out.close(); + } + if (rd!=null){ + rd.close(); + } + } + return res; + } + +} diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/web/LoginController.java b/modules/core/src/main/java/com/jeesite/modules/sys/web/LoginController.java index c3a6dbd6..f7e071ca 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/web/LoginController.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/web/LoginController.java @@ -227,14 +227,11 @@ public class LoginController extends BaseController{ return REDIRECT + adminPath + "/login"; } model.addAttribute("user", user); // 设置当前用户信息 - - // 登录成功后,验证码计算器清零 - BaseAuthorizingRealm.isValidCodeLogin(loginInfo.getId(), loginInfo.getParam("deviceType"), "success"); //获取当前会话对象 Session session = UserUtils.getSession(); - // 设置共享SessionId的Cookie值,睿思BI使用。 + // 设置共享SessionId的Cookie值(第三方系统使用) String cookieName = Global.getProperty("session.shareSessionIdCookieName"); if (StringUtils.isNotBlank(cookieName)){ CookieUtils.setCookie((HttpServletResponse)response, cookieName, (String)session.getId()); diff --git a/modules/core/src/main/resources/i18n/core/sys/i18n_en.properties b/modules/core/src/main/resources/i18n/core/sys/i18n_en.properties index 1bd153f8..3e5bf84b 100644 --- a/modules/core/src/main/resources/i18n/core/sys/i18n_en.properties +++ b/modules/core/src/main/resources/i18n/core/sys/i18n_en.properties @@ -58,8 +58,8 @@ 正在验证登录,请稍后...=Verify login, please later... 立即登录=Login -注册账号=Registered account -忘记密码=Forgot password +注册账号=Register +忘记密码=Forget Password # =========== 主框架页 =========== diff --git a/modules/core/src/main/resources/views/themes/default/modules/sys/sysLogin.html b/modules/core/src/main/resources/views/themes/default/modules/sys/sysLogin.html index b16e71f4..806af499 100644 --- a/modules/core/src/main/resources/views/themes/default/modules/sys/sysLogin.html +++ b/modules/core/src/main/resources/views/themes/default/modules/sys/sysLogin.html @@ -54,9 +54,10 @@
+ [ ${text('忘记密码')} ] <% if(@ObjectUtils.toBoolean(@Global.getConfig('user.registerUser'))){ %> - ${text('注册账号')}<% } %> - ${text('忘记密码')} + [ ${text('注册账号')} ] + <% } %> <% var langTypeList = @DictUtils.getDictList('sys_lang_type'); if (langTypeList.~size > 1){