From 9c86bbf900291c1fe1636de1037c41f5beddaa0d Mon Sep 17 00:00:00 2001 From: liyongjie <1318551549@qq.com> Date: Sat, 6 Apr 2024 22:36:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E8=AD=A6=E4=B8=8D=E5=90=8C=E7=AD=89?= =?UTF-8?q?=E7=BA=A7=E6=8E=AA=E6=96=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- muyu-common/muyu-common-core/pom.xml | 28 +- .../common/core/utils/sms/EmailUtils.java | 88 +++++ .../muyu/common/core/utils/sms/HttpUtils.java | 339 ++++++++++++++++++ .../muyu/common/core/utils/sms/MsgUtil.java | 53 +++ .../service/impl/AlarmLogsServiceImpl.java | 19 + .../muyu/system/common/model/LoginUser.java | 28 ++ 6 files changed, 553 insertions(+), 2 deletions(-) create mode 100644 muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/sms/EmailUtils.java create mode 100644 muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/sms/HttpUtils.java create mode 100644 muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/sms/MsgUtil.java diff --git a/muyu-common/muyu-common-core/pom.xml b/muyu-common/muyu-common-core/pom.xml index 468f34a..18a49d3 100644 --- a/muyu-common/muyu-common-core/pom.xml +++ b/muyu-common/muyu-common-core/pom.xml @@ -172,8 +172,32 @@ org.eclipse.paho.client.mqttv3 1.2.5 - - + + + org.apache.httpcomponents + httpclient + 4.2.1 + + + org.apache.httpcomponents + httpcore + 4.2.1 + + + commons-lang + commons-lang + 2.6 + + + org.eclipse.jetty + jetty-util + 9.3.7.v20160115 + + + + org.springframework.boot + spring-boot-starter-mail + diff --git a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/sms/EmailUtils.java b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/sms/EmailUtils.java new file mode 100644 index 0000000..3336d2a --- /dev/null +++ b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/sms/EmailUtils.java @@ -0,0 +1,88 @@ +package com.muyu.common.core.utils.sms; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.MimeMessageHelper; +import org.springframework.stereotype.Component; + +import javax.mail.*; +import javax.mail.internet.*; + + +/** + * 邮箱工具类 + */ +@Component +public class EmailUtils { + + @Autowired + private JavaMailSender javaMailSender; + + //邮件发送 + public void sendCodeByEmail(String email,String code){ + + MimeMessage mimeMessage = javaMailSender.createMimeMessage(); + + try { + MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); + helper.setSubject("验证码通知"); + //helper.setText("点击",true); + helper.setText("您的验证码是:"+code); + helper.setFrom("2108429300@qq.com"); + helper.setTo(email); + + javaMailSender.send(mimeMessage); + } catch (MessagingException e) { + e.printStackTrace(); + } + } + +// 图片 +// @Test +// public void test(){ +// +// MimeMessage mimeMessage = javaMailSender.createMimeMessage(); +// try { +// MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); +// //标题 +// helper.setSubject("通知"); +// //内容 +// helper.setText("你好"); +// //发件人 +// helper.setFrom("1074359652@qq.com"); +// //收件人 +// helper.setTo("1074359652@qq.com"); +// //文件 +// helper.addAttachment("李雪仁.txt",new File("E:\\桌面\\a.txt")); +// +// javaMailSender.send(mimeMessage); +// } catch (MessagingException e) { +// e.printStackTrace(); +// } +// } + + +// 文件 +// @Test +// public void test1(){ +// +// MimeMessage mimeMessage = javaMailSender.createMimeMessage(); +// try { +// MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); +// //标题 +// helper.setSubject("通知"); +// //内容 +// helper.setText("你好,给你看涨图片
" + "",true); +// //发件人 +// helper.setFrom("1074359652@qq.com"); +// //收件人 +// helper.setTo("1074359652@qq.com"); +// //图片 +// helper.addInline("opp",new FileSystemResource(new File("E:\\桌面\\11.gif"))); +// +// javaMailSender.send(mimeMessage); +// } catch (MessagingException e) { +// e.printStackTrace(); +// } +// } +} diff --git a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/sms/HttpUtils.java b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/sms/HttpUtils.java new file mode 100644 index 0000000..dc83014 --- /dev/null +++ b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/sms/HttpUtils.java @@ -0,0 +1,339 @@ +package com.muyu.common.core.utils.sms; + +import org.apache.commons.lang.StringUtils; +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.HttpClient; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpDelete; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.conn.ClientConnectionManager; +import org.apache.http.conn.scheme.Scheme; +import org.apache.http.conn.scheme.SchemeRegistry; +import org.apache.http.conn.ssl.SSLSocketFactory; +import org.apache.http.entity.ByteArrayEntity; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.message.BasicNameValuePair; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * 短信网络请求工具类 + * @author Li YongJie + * @createTime 2022年04月27日 13:53:00 + */ +public class HttpUtils { + + private static final String SCHEME = "https://"; + + /** + * get + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @return + * @throws Exception + */ + public static HttpResponse doGet(String host, String path, String method, + Map headers, + Map querys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpGet request = new HttpGet(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + return httpClient.execute(request); + } + + /** + * post form + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param bodys + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map headers, + Map querys, + Map bodys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (bodys != null) { + List nameValuePairList = new ArrayList(); + + for (String key : bodys.keySet()) { + nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key))); + } + UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8"); + formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8"); + request.setEntity(formEntity); + } + + return httpClient.execute(request); + } + + /** + * Post String + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map headers, + Map querys, + String body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (StringUtils.isNotBlank(body)) { + request.setEntity(new StringEntity(body, "utf-8")); + } + + return httpClient.execute(request); + } + + /** + * Post stream + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map headers, + Map querys, + byte[] body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (body != null) { + request.setEntity(new ByteArrayEntity(body)); + } + + return httpClient.execute(request); + } + + /** + * Put String + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPut(String host, String path, String method, + Map headers, + Map querys, + String body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPut request = new HttpPut(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (StringUtils.isNotBlank(body)) { + request.setEntity(new StringEntity(body, "utf-8")); + } + + return httpClient.execute(request); + } + + /** + * Put stream + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPut(String host, String path, String method, + Map headers, + Map querys, + byte[] body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPut request = new HttpPut(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (body != null) { + request.setEntity(new ByteArrayEntity(body)); + } + + return httpClient.execute(request); + } + + /** + * Delete + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @return + * @throws Exception + */ + public static HttpResponse doDelete(String host, String path, String method, + Map headers, + Map querys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpDelete request = new HttpDelete(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + return httpClient.execute(request); + } + + private static String buildUrl(String host, String path, Map querys) throws UnsupportedEncodingException { + StringBuilder sbUrl = new StringBuilder(); + sbUrl.append(host); + if (!StringUtils.isBlank(path)) { + sbUrl.append(path); + } + if (null != querys) { + StringBuilder sbQuery = new StringBuilder(); + for (Map.Entry query : querys.entrySet()) { + if (0 < sbQuery.length()) { + sbQuery.append("&"); + } + if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) { + sbQuery.append(query.getValue()); + } + if (!StringUtils.isBlank(query.getKey())) { + sbQuery.append(query.getKey()); + if (!StringUtils.isBlank(query.getValue())) { + sbQuery.append("="); + sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8")); + } + } + } + if (0 < sbQuery.length()) { + sbUrl.append("?").append(sbQuery); + } + } + + return sbUrl.toString(); + } + + private static HttpClient wrapClient(String host) { + HttpClient httpClient = new DefaultHttpClient(); + if (host.startsWith(SCHEME)) { + sslClient(httpClient); + } + + return httpClient; + } + + /** + * sslClient + * @param httpClient + */ + private static void sslClient(HttpClient httpClient) { + try { + SSLContext ctx = SSLContext.getInstance("TLS"); + X509TrustManager tm = new X509TrustManager() { + /** + * getAcceptedIssuers + * @return + */ + @Override + public X509Certificate[] getAcceptedIssuers() { + return null; + } + /** + * checkClientTrusted + * @param xcs + * @param str + */ + @Override + public void checkClientTrusted(X509Certificate[] xcs, String str) { + + } + /** + * checkServerTrusted + * @param xcs + * @param str + */ + @Override + public void checkServerTrusted(X509Certificate[] xcs, String str) { + + } + }; + ctx.init(null, new TrustManager[] { tm }, null); + SSLSocketFactory ssf = new SSLSocketFactory(ctx); + ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); + ClientConnectionManager ccm = httpClient.getConnectionManager(); + SchemeRegistry registry = ccm.getSchemeRegistry(); + registry.register(new Scheme("https", 443, ssf)); + } catch (KeyManagementException ex) { + throw new RuntimeException(ex); + } catch (NoSuchAlgorithmException ex) { + throw new RuntimeException(ex); + } + } +} diff --git a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/sms/MsgUtil.java b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/sms/MsgUtil.java new file mode 100644 index 0000000..11dc85f --- /dev/null +++ b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/sms/MsgUtil.java @@ -0,0 +1,53 @@ +package com.muyu.common.core.utils.sms; + +import org.apache.http.HttpResponse; + +import java.util.HashMap; +import java.util.Map; + +/** + * 短信发送工具类 + * @author Li YongJie + * @createTime 2022年04月27日 13:53:00 + */ +public class MsgUtil { + + + public static void sendMsg(String phone,String code){ + + String host = "http://dingxin.market.alicloudapi.com"; + String path = "/dx/sendSms"; + String method = "POST"; + String appcode = "fe89da4e62954ebda78bd257785e6a53"; + Map headers = new HashMap(200,200); + //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 86873be959334103b775996a22409375 + headers.put("Authorization", "APPCODE " + appcode); + Map querys = new HashMap(200,200); + querys.put("mobile", phone); + querys.put("param", "code:"+code); + //模板不允许改动。 如果要改动,联系客服 + querys.put("tpl_id", "TP1711063"); + Map bodys = new HashMap(200,200); + + + try { + /** + * 重要提示如下: + * HttpUtils请从 + * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java + * 下载 + * + * 相应的依赖请参照 + * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml + * + * + * 获取response的body + * EntityUtils.toString(response.getEntity()) + */ + HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys); + System.out.println(response.toString()); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/business/service/impl/AlarmLogsServiceImpl.java b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/business/service/impl/AlarmLogsServiceImpl.java index ecded28..3bbf8f5 100644 --- a/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/business/service/impl/AlarmLogsServiceImpl.java +++ b/muyu-modules/muyu-business/muyu-business-server/src/main/java/com/muyu/business/service/impl/AlarmLogsServiceImpl.java @@ -9,6 +9,7 @@ import com.muyu.business.domain.res.*; import com.muyu.business.mapper.*; import com.muyu.business.service.*; import com.muyu.common.core.utils.*; +import com.muyu.common.core.utils.sms.*; import com.muyu.common.security.utils.*; import org.springframework.beans.factory.annotation.*; import org.springframework.stereotype.*; @@ -31,6 +32,12 @@ public class AlarmLogsServiceImpl extends ServiceImpl selectAlarmLogsList(AlarmLogsReq alarmLogsReq) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); @@ -46,6 +53,18 @@ public class AlarmLogsServiceImpl extends ServiceImpl