Ver código fonte

提交短信接口

chenken 7 anos atrás
pai
commit
ae327a3234

+ 17 - 99
examcloud-exchange-inner-api-provider/src/main/java/cn/com/qmth/examcloud/exchange/inner/api/provider/SendSmsProvider.java

@@ -1,25 +1,18 @@
 package cn.com.qmth.examcloud.exchange.inner.api.provider;
 
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 
-import com.aliyuncs.DefaultAcsClient;
-import com.aliyuncs.IAcsClient;
-import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsRequest;
-import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
-import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
 import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
-import com.aliyuncs.profile.DefaultProfile;
-import com.aliyuncs.profile.IClientProfile;
 
 import cn.com.qmth.examcloud.commons.web.support.ControllerSupport;
 import cn.com.qmth.examcloud.exchange.inner.api.SendSmsCloudService;
 import cn.com.qmth.examcloud.exchange.inner.api.request.SendSmsReq;
 import cn.com.qmth.examcloud.exchange.inner.api.response.SendSmsResp;
+import cn.com.qmth.examcloud.exchange.inner.service.SendSmsService;
+import cn.com.qmth.examcloud.exchange.inner.service.bean.SendSmsInfo;
 
 /**
  * 
@@ -33,99 +26,24 @@ import cn.com.qmth.examcloud.exchange.inner.api.response.SendSmsResp;
 public class SendSmsProvider extends ControllerSupport implements SendSmsCloudService {
 
 	private static final long serialVersionUID = -1497756895732370672L;
+	
+	@Autowired
+	private SendSmsService sendSmsService;
 
 	@Override
 	@RequestMapping(method = RequestMethod.POST, value = "/sendIdentifyingCode")
-	public SendSmsResp sendIdentifyingCode(SendSmsReq sendSmsReq) {
+	public SendSmsResp sendIdentifyingCode(SendSmsReq sendSmsReq){
+		SendSmsInfo sendSmsInfo = new SendSmsInfo();
+		sendSmsInfo.setPhone(sendSmsReq.getPhone());
+		sendSmsInfo.setMessage(sendSmsReq.getMessage());
+		sendSmsInfo.setSign(sendSmsReq.getSign());
+		sendSmsInfo.setTemplateCode(sendSmsReq.getTemplateCode());
+		try {
+			SendSmsResponse sendSmsResponse = sendSmsService.sendIdentifyingCode(sendSmsInfo);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
 		return null;
 	}
 
-	// 产品名称:云通信短信API产品,开发者无需替换
-	static final String product = "Dysmsapi";
-
-	// 产品域名,开发者无需替换
-	static final String domain = "dysmsapi.aliyuncs.com";
-
-	// TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
-	static final String accessKeyId = "LTAIhSyYIfGx3e9H";
-
-	static final String accessKeySecret = "NyT0UfUuP900pYhYTM92AEBYP43uZA";
-
-	public static SendSmsResponse sendSms() throws Exception {
-
-		// 可自助调整超时时间
-		System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
-		System.setProperty("sun.net.client.defaultReadTimeout", "10000");
-
-		// 初始化acsClient,暂不支持region化
-		IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId,
-				accessKeySecret);
-		DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
-		IAcsClient acsClient = new DefaultAcsClient(profile);
-
-		// 组装请求对象-具体描述见控制台-文档部分内容
-		SendSmsRequest request = new SendSmsRequest();
-		// 必填:待发送手机号
-		request.setPhoneNumbers("13129983306");
-		// 必填:短信签名-可在短信控制台中找到
-		request.setSignName("考试云平台");
-		// 必填:短信模板-可在短信控制台中找到
-		request.setTemplateCode("SMS_138073780");
-		// 可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
-		request.setTemplateParam("{\"name\":\"ken\", \"code\":\"789456\"}");
-
-		// 选填-上行短信扩展码(无特殊需求用户请忽略此字段)
-		// request.setSmsUpExtendCode("90997");
-
-		// 可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
-		request.setOutId("yourOutId");
-
-		// hint 此处可能会抛出异常,注意catch
-		SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
-
-		return sendSmsResponse;
-	}
-
-	private static QuerySendDetailsResponse querySendDetails(String bizId) throws Exception {
-
-		// 可自助调整超时时间
-		System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
-		System.setProperty("sun.net.client.defaultReadTimeout", "10000");
-
-		// 初始化acsClient,暂不支持region化
-		IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId,
-				accessKeySecret);
-		DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
-		IAcsClient acsClient = new DefaultAcsClient(profile);
-
-		// 组装请求对象
-		QuerySendDetailsRequest request = new QuerySendDetailsRequest();
-		// 必填-号码
-		request.setPhoneNumber("15000000000");
-		// 可选-流水号
-		request.setBizId(bizId);
-		// 必填-发送日期 支持30天内记录查询,格式yyyyMMdd
-		SimpleDateFormat ft = new SimpleDateFormat("yyyyMMdd");
-		request.setSendDate(ft.format(new Date()));
-		// 必填-页大小
-		request.setPageSize(10L);
-		// 必填-当前页码从1开始计数
-		request.setCurrentPage(1L);
-
-		// hint 此处可能会抛出异常,注意catch
-		QuerySendDetailsResponse querySendDetailsResponse = acsClient.getAcsResponse(request);
-
-		return querySendDetailsResponse;
-	}
-
-	public static void main(String[] args) {
-		//发短信
-        SendSmsResponse response = sendSms();
-        System.out.println("短信接口返回的数据----------------");
-        System.out.println("Code=" + response.getCode());
-        System.out.println("Message=" + response.getMessage());
-        System.out.println("RequestId=" + response.getRequestId());
-        System.out.println("BizId=" + response.getBizId());
-	}
-
 }

+ 32 - 3
examcloud-exchange-inner-api/src/main/java/cn/com/qmth/examcloud/exchange/inner/api/request/SendSmsReq.java

@@ -8,10 +8,23 @@ public class SendSmsReq extends BaseRequest{
 	 * 
 	 */
 	private static final long serialVersionUID = 8002846980120664036L;
-
-	private String phone;
 	
+	/**
+	 * 手机号码 
+	 */
+	private String phone;
+	/**
+	 * 短信内容
+	 */
 	private String message;
+	/**
+	 * 签名
+	 */
+	private String sign;
+	/**
+	 * 模板code
+	 */
+	private String templateCode;
 
 	public String getPhone() {
 		return phone;
@@ -28,5 +41,21 @@ public class SendSmsReq extends BaseRequest{
 	public void setMessage(String message) {
 		this.message = message;
 	}
-	
+
+	public String getTemplateCode() {
+		return templateCode;
+	}
+
+	public void setTemplateCode(String templateCode) {
+		this.templateCode = templateCode;
+	}
+
+	public String getSign() {
+		return sign;
+	}
+
+	public void setSign(String sign) {
+		this.sign = sign;
+	}
+
 }

+ 29 - 0
examcloud-exchange-inner-service/src/main/java/cn/com/qmth/examcloud/exchange/inner/service/SendSmsService.java

@@ -0,0 +1,29 @@
+package cn.com.qmth.examcloud.exchange.inner.service;
+
+import cn.com.qmth.examcloud.exchange.inner.service.bean.SendSmsInfo;
+
+import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
+
+public interface SendSmsService {
+
+	/**
+	 * 发送验证码
+	 * @param phone	手机号码
+	 * @param sign	签名
+	 * @param templateCode	模板code		eg:SMS_138073780
+	 * @param message		短信内容
+	 * @return
+	 * @throws Exception
+	 */
+	public SendSmsResponse sendIdentifyingCode(SendSmsInfo sendSmsInfo) throws Exception;
+	
+	/**
+	 * 查询短信发送详情
+	 * @param bizId
+	 * @return
+	 * @throws Exception
+	 */
+	public QuerySendDetailsResponse querySendDetails(String bizId,String phone) throws Exception;
+	
+}

+ 59 - 0
examcloud-exchange-inner-service/src/main/java/cn/com/qmth/examcloud/exchange/inner/service/bean/SendSmsInfo.java

@@ -0,0 +1,59 @@
+package cn.com.qmth.examcloud.exchange.inner.service.bean;
+
+import java.io.Serializable;
+
+/**
+ * 
+ * @author  	chenken
+ * @date    	2018年7月4日 上午11:04:00
+ * @company 	QMTH
+ * @description SendSmsInfo.java
+ */
+public class SendSmsInfo implements Serializable{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 6836677240744430606L;
+	/**
+	 * 手机号码 
+	 */
+	private String phone;
+	/**
+	 * 短信内容
+	 */
+	private String message;
+	/**
+	 * 签名
+	 */
+	private String sign;
+	/**
+	 * 模板code
+	 */
+	private String templateCode;
+	public String getPhone() {
+		return phone;
+	}
+	public void setPhone(String phone) {
+		this.phone = phone;
+	}
+	public String getMessage() {
+		return message;
+	}
+	public void setMessage(String message) {
+		this.message = message;
+	}
+	public String getSign() {
+		return sign;
+	}
+	public void setSign(String sign) {
+		this.sign = sign;
+	}
+	public String getTemplateCode() {
+		return templateCode;
+	}
+	public void setTemplateCode(String templateCode) {
+		this.templateCode = templateCode;
+	}
+
+}

+ 102 - 0
examcloud-exchange-inner-service/src/main/java/cn/com/qmth/examcloud/exchange/inner/service/impl/SendSmsServiceImpl.java

@@ -0,0 +1,102 @@
+package cn.com.qmth.examcloud.exchange.inner.service.impl;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.springframework.stereotype.Service;
+
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
+import com.aliyuncs.profile.DefaultProfile;
+import com.aliyuncs.profile.IClientProfile;
+
+import cn.com.qmth.examcloud.exchange.inner.service.SendSmsService;
+import cn.com.qmth.examcloud.exchange.inner.service.bean.SendSmsInfo;
+
+@Service("sendSmsService")
+public class SendSmsServiceImpl implements SendSmsService {
+
+	// 产品名称:云通信短信API产品,开发者无需替换
+	private static final String product = "Dysmsapi";
+
+	// 产品域名,开发者无需替换
+	private static final String domain = "dysmsapi.aliyuncs.com";
+
+	// TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
+	private static final String accessKeyId = "LTAIhSyYIfGx3e9H";
+
+	private static final String accessKeySecret = "NyT0UfUuP900pYhYTM92AEBYP43uZA";
+	
+	@Override
+	public SendSmsResponse sendIdentifyingCode(SendSmsInfo sendSmsInfo) throws Exception {
+		// 可自助调整超时时间
+		System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
+		System.setProperty("sun.net.client.defaultReadTimeout", "10000");
+
+		// 初始化acsClient,暂不支持region化
+		IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId,accessKeySecret);
+		DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
+		IAcsClient acsClient = new DefaultAcsClient(profile);
+
+		// 组装请求对象-具体描述见控制台-文档部分内容
+		SendSmsRequest request = new SendSmsRequest();
+		// 必填:待发送手机号
+		request.setPhoneNumbers(sendSmsInfo.getPhone());
+		// 必填:短信签名-可在短信控制台中找到
+		request.setSignName(sendSmsInfo.getSign());
+		// 必填:短信模板-可在短信控制台中找到
+		request.setTemplateCode(sendSmsInfo.getTemplateCode());
+		// 可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
+		
+		request.setTemplateParam("{\"code\":"+sendSmsInfo.getMessage()+"}");
+
+		// 选填-上行短信扩展码(无特殊需求用户请忽略此字段)
+		// request.setSmsUpExtendCode("90997");
+
+		// 可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
+		request.setOutId("yourOutId");
+
+		// hint 此处可能会抛出异常,注意catch
+		SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
+
+		return sendSmsResponse;
+	}
+	
+	@Override
+	public QuerySendDetailsResponse querySendDetails(String bizId,String phone) throws Exception {
+
+		// 可自助调整超时时间
+		System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
+		System.setProperty("sun.net.client.defaultReadTimeout", "10000");
+
+		// 初始化acsClient,暂不支持region化
+		IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId,
+				accessKeySecret);
+		DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
+		IAcsClient acsClient = new DefaultAcsClient(profile);
+
+		// 组装请求对象
+		QuerySendDetailsRequest request = new QuerySendDetailsRequest();
+		// 必填-号码
+		request.setPhoneNumber(phone);
+		// 可选-流水号
+		request.setBizId(bizId);
+		// 必填-发送日期 支持30天内记录查询,格式yyyyMMdd
+		SimpleDateFormat ft = new SimpleDateFormat("yyyyMMdd");
+		request.setSendDate(ft.format(new Date()));
+		// 必填-页大小
+		request.setPageSize(10L);
+		// 必填-当前页码从1开始计数
+		request.setCurrentPage(1L);
+
+		// hint 此处可能会抛出异常,注意catch
+		QuerySendDetailsResponse querySendDetailsResponse = acsClient.getAcsResponse(request);
+
+		return querySendDetailsResponse;
+	}
+	
+}