chao 3 anni fa
parent
commit
40fa4a3528

+ 50 - 0
src/main/java/com/caimei365/tools/controller/SmsApi.java

@@ -0,0 +1,50 @@
+package com.caimei365.tools.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.caimei365.tools.model.ResponseJson;
+import com.caimei365.tools.model.dto.SmsDto;
+import com.caimei365.tools.utils.SmsUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/6/18
+ */
+@Slf4j
+@Api(tags="发送短信API")
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/tools")
+public class SmsApi {
+
+    /**
+     * 发送短信
+     *
+     * @param smsDto {
+     *                type    短信类型:1通知短信,2验证码短信,3营销短信
+     *                mobile  手机号
+     *                content 短信内容
+     *               }
+     */
+    @ApiOperation("发送消息")
+    @PostMapping("/sms/send")
+    public ResponseJson<String> sendSms(SmsDto smsDto){
+        log.info(smsDto.toString());
+        String result = SmsUtil.sendSms(smsDto.getType(), smsDto.getMobile(), smsDto.getContent());
+        JSONObject json = (JSONObject) JSONObject.parse(result);
+        if (null != json && json.getInteger("code") == 0) {
+            return ResponseJson.success(0, "发送成功",null);
+        } else {
+            return ResponseJson.error(0, "发送失败", result);
+        }
+    }
+
+}

+ 46 - 0
src/main/java/com/caimei365/tools/model/dto/SmsDto.java

@@ -0,0 +1,46 @@
+package com.caimei365.tools.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/6/18
+ */
+@ApiModel("发送短信接收参数")
+@Data
+public class SmsDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 短信类型
+     */
+    @ApiModelProperty("短信类型:1通知短信(默认),2验证码短信,3营销短信")
+    private Integer type;
+    /**
+     * 手机号码
+     */
+    @NotNull
+    @ApiModelProperty("手机号码")
+    private String mobile;
+    /**
+     * 短信内容
+     */
+    @NotNull
+    @ApiModelProperty("短信内容")
+    private String content;
+
+    @Override
+    public String toString() {
+        return "SmsDto{" +
+                "type=" + type +
+                ", mobile='" + mobile + '\'' +
+                ", content='" + content + '\'' +
+                '}';
+    }
+}

+ 96 - 0
src/main/java/com/caimei365/tools/utils/SmsUtil.java

@@ -0,0 +1,96 @@
+package com.caimei365.tools.utils;
+
+import com.alibaba.fastjson.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+
+/**
+ * 短信工具类
+ * 创蓝云智短信平台:https://zz.253.com/control/login
+ *
+ * @author : Charles
+ * @date : 2021/6/17
+ */
+public class SmsUtil {
+    /** 通知短信 账户 */
+    private static final String ACCOUNT_NOTICE = "N2532063";
+    private static final String PASSWORD_NOTICE = "jzVvYmuP4D7f1b";
+    /** 验证码短信 账户 */
+    private static final String ACCOUNT_YZM = "YZM6372171";
+    private static final String PASSWORD_YZM = "1L8ZaIEW7fa3ca";
+    /** 营销短信 账户 */
+    private static final String ACCOUNT_ADS = "M1666161";
+    private static final String PASSWORD_ADS = "TO3xSGvEUk6ddc";
+    /** 请求地址 */
+    private static final String SMS_URL = "http://smssh1.253.com/msg/send/json";
+
+    /**
+     * 发送短信
+     *
+     * @param type    短信类型:1通知短信,2验证码短信,3营销短信
+     * @param mobile  手机号
+     * @param content 短信内容
+     */
+    public static String sendSms(Integer type, String mobile, String content){
+        JSONObject params = new JSONObject();
+        if (null != type && 2 == type) {
+            // 验证码短信
+            params.put("account", ACCOUNT_YZM);
+            params.put("password", PASSWORD_YZM);
+        } else if (null != type && 3 == type) {
+            // 营销短信
+            params.put("account", ACCOUNT_ADS);
+            params.put("password", PASSWORD_ADS);
+        } else {
+            // 通知短信
+            params.put("account", ACCOUNT_NOTICE);
+            params.put("password", PASSWORD_NOTICE);
+        }
+        // 手机号
+        params.put("phone", mobile);
+        // 短信内容
+        params.put("msg", content);
+        // 是否需要状态报告
+        params.put("report", "true");
+
+        String requestContent = params.toString();
+        URL url = null;
+        try {
+            url = new URL(SMS_URL);
+            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+            connection.setRequestMethod("POST");
+            connection.setConnectTimeout(10000);
+            connection.setReadTimeout(10000);
+            // 发送POST请求必须设置如下两行
+            connection.setDoOutput(true);
+            connection.setDoInput(true);
+            connection.setRequestProperty("Charset", "UTF-8");
+            connection.setRequestProperty("Content-Type", "application/json");
+            connection.connect();
+            OutputStream os=connection.getOutputStream();
+            os.write(requestContent.getBytes(StandardCharsets.UTF_8));
+            os.flush();
+            StringBuilder sb = new StringBuilder();
+            int httpRspCode = connection.getResponseCode();
+            if (httpRspCode == HttpURLConnection.HTTP_OK) {
+                // 开始获取数据
+                BufferedReader br = new BufferedReader(
+                        new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8));
+                String line = null;
+                while ((line = br.readLine()) != null) {
+                    sb.append(line);
+                }
+                br.close();
+                return sb.toString();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+}

+ 22 - 0
src/test/java/com/caimei365/tools/ToolsApplicationTests.java

@@ -1,5 +1,6 @@
 package com.caimei365.tools;
 
+import com.caimei365.tools.utils.SmsUtil;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
 
@@ -8,7 +9,28 @@ class ToolsApplicationTests {
 
     @Test
     void contextLoads() {
+
     }
+
+//    @Test
+//    void testSms1() {
+//        String s = SmsUtil.sendSms(1, "15814011616", "您好,您的验证码是12345");
+//        System.out.println(s);
+//    }
+//
+//    @Test
+//    void testSms2() {
+//        String s = SmsUtil.sendSms(2, "15814011616", "您好,您的验证码是98765");
+//        System.out.println(s);
+//    }
+//
+//    @Test
+//    void testSms3() {
+//        String s = SmsUtil.sendSms(2, "15814011616", "欢迎成为采美机构用户,您的登录账号为:15814011616,初始密码为:123456,您可使用该账号密码登录采美365网和“采美采购商城”小程序。");
+//        System.out.println(s);
+//    }
+
+    //欢迎成为采美机构用户,您的登录账号为:${name},初始密码为:cm${content},您可使用该账号密码登录采美365网和“采美采购商城”小程序。
     /**
      * kuaidi100.key = bEZlgVkW1438
      * kuaidi100.customer = 1414E0E533E3311FBA5E633C10F78306