Quellcode durchsuchen

提交短信接口代码

chenken vor 7 Jahren
Ursprung
Commit
ce02ac777b

+ 1 - 1
examcloud-exchange-inner-api-client/src/main/java/cn/com/qmth/examcloud/exchange/inner/api/client/BasicCloudClientSupport.java

@@ -10,7 +10,7 @@ public abstract class BasicCloudClientSupport extends CloudClientSupport {
 
 
 	@Override
 	@Override
 	public String getUrlPrefix() {
 	public String getUrlPrefix() {
-		return "http://ExamCloud-exchange-inner/api/exchange/inner";
+		return "http://EXAMCLOUD-SERVICE-OUTLET/api/exchange/inner";
 	}
 	}
 
 
 }
 }

+ 3 - 2
examcloud-exchange-inner-api-client/src/main/java/cn/com/qmth/examcloud/exchange/inner/api/client/SendSmsServiceClient.java

@@ -8,6 +8,7 @@ import cn.com.qmth.examcloud.exchange.inner.api.SendSmsCloudService;
 import cn.com.qmth.examcloud.exchange.inner.api.request.CheckSmsCodeReq;
 import cn.com.qmth.examcloud.exchange.inner.api.request.CheckSmsCodeReq;
 import cn.com.qmth.examcloud.exchange.inner.api.request.SendSmsReq;
 import cn.com.qmth.examcloud.exchange.inner.api.request.SendSmsReq;
 import cn.com.qmth.examcloud.exchange.inner.api.response.CheckIdentifyingCodeResp;
 import cn.com.qmth.examcloud.exchange.inner.api.response.CheckIdentifyingCodeResp;
+import cn.com.qmth.examcloud.exchange.inner.api.response.SendSmsResp;
 
 
 /**
 /**
  * 
  * 
@@ -30,8 +31,8 @@ public class SendSmsServiceClient extends BasicCloudClientSupport implements Sen
 	}
 	}
 
 
 	@Override
 	@Override
-	public String sendIdentifyingCode(SendSmsReq sendSmsReq) {
-		return post("/sendSms/sendIdentifyingCode", sendSmsReq, String.class);
+	public SendSmsResp sendIdentifyingCode(SendSmsReq sendSmsReq) {
+		return post("/sendSms/sendIdentifyingCode", sendSmsReq, SendSmsResp.class);
 	}
 	}
 
 
 	@Override
 	@Override

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

@@ -2,6 +2,7 @@ package cn.com.qmth.examcloud.exchange.inner.api.provider;
 
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestMethod;
 
 
@@ -14,6 +15,7 @@ import cn.com.qmth.examcloud.exchange.inner.api.SendSmsCloudService;
 import cn.com.qmth.examcloud.exchange.inner.api.request.CheckSmsCodeReq;
 import cn.com.qmth.examcloud.exchange.inner.api.request.CheckSmsCodeReq;
 import cn.com.qmth.examcloud.exchange.inner.api.request.SendSmsReq;
 import cn.com.qmth.examcloud.exchange.inner.api.request.SendSmsReq;
 import cn.com.qmth.examcloud.exchange.inner.api.response.CheckIdentifyingCodeResp;
 import cn.com.qmth.examcloud.exchange.inner.api.response.CheckIdentifyingCodeResp;
+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.SendSmsService;
 import cn.com.qmth.examcloud.exchange.inner.service.bean.SendSmsInfo;
 import cn.com.qmth.examcloud.exchange.inner.service.bean.SendSmsInfo;
 
 
@@ -35,7 +37,8 @@ public class SendSmsProvider extends ControllerSupport implements SendSmsCloudSe
 
 
 	@Override
 	@Override
 	@RequestMapping(method = RequestMethod.POST, value = "/sendIdentifyingCode")
 	@RequestMapping(method = RequestMethod.POST, value = "/sendIdentifyingCode")
-	public String sendIdentifyingCode(SendSmsReq sendSmsReq){
+	public SendSmsResp sendIdentifyingCode(@RequestBody SendSmsReq sendSmsReq){
+		checkSendSmsReq(sendSmsReq);
 		SendSmsInfo sendSmsInfo = new SendSmsInfo();
 		SendSmsInfo sendSmsInfo = new SendSmsInfo();
 		sendSmsInfo.setPhone(sendSmsReq.getPhone());
 		sendSmsInfo.setPhone(sendSmsReq.getPhone());
 		sendSmsInfo.setCode(sendSmsReq.getCode());
 		sendSmsInfo.setCode(sendSmsReq.getCode());
@@ -43,18 +46,27 @@ public class SendSmsProvider extends ControllerSupport implements SendSmsCloudSe
 		sendSmsInfo.setTemplateCode(sendSmsReq.getTemplateCode());
 		sendSmsInfo.setTemplateCode(sendSmsReq.getTemplateCode());
 		sendSmsInfo.setEffectiveTime(sendSmsReq.getEffectiveTime());
 		sendSmsInfo.setEffectiveTime(sendSmsReq.getEffectiveTime());
 		sendSmsInfo.setIntervalSeconds(sendSmsReq.getIntervalSeconds());
 		sendSmsInfo.setIntervalSeconds(sendSmsReq.getIntervalSeconds());
-		sendSmsService.sendIdentifyingCode(sendSmsInfo);
-		return "";
+		SendSmsResp sendSmsResp = new SendSmsResp();
+		try{
+			sendSmsService.sendIdentifyingCode(sendSmsInfo);
+			sendSmsResp.setSuccess(true);
+			sendSmsResp.setReturnMsg("发送成功");
+		}catch(StatusException exception){
+			exception.printStackTrace();
+			sendSmsResp.setSuccess(false);
+			sendSmsResp.setReturnMsg(exception.getDesc());
+		}
+		return sendSmsResp;
 	}
 	}
 	
 	
 	@Override
 	@Override
 	@RequestMapping(method = RequestMethod.POST, value = "/checkIdentifyingCode")
 	@RequestMapping(method = RequestMethod.POST, value = "/checkIdentifyingCode")
 	public CheckIdentifyingCodeResp checkIdentifyingCode(CheckSmsCodeReq checkSmsCodeReq){
 	public CheckIdentifyingCodeResp checkIdentifyingCode(CheckSmsCodeReq checkSmsCodeReq){
 		if(StringUtils.isBlank(checkSmsCodeReq.getPhone())){
 		if(StringUtils.isBlank(checkSmsCodeReq.getPhone())){
-			throw new StatusException("EX-SendSmsProvider-001", "手机号码不能为空");
+			throw new StatusException("EX-CheckIdentifyingCodeResp-001", "手机号码不能为空");
 		}
 		}
 		if(StringUtils.isBlank(checkSmsCodeReq.getCode())){
 		if(StringUtils.isBlank(checkSmsCodeReq.getCode())){
-			throw new StatusException("EX-SendSmsProvider-002", "验证码不能为空");
+			throw new StatusException("EX-CheckIdentifyingCodeResp-002", "验证码不能为空");
 		}
 		}
 		boolean success = sendSmsService.checkIdentifyingCode(checkSmsCodeReq.getPhone(), checkSmsCodeReq.getCode());
 		boolean success = sendSmsService.checkIdentifyingCode(checkSmsCodeReq.getPhone(), checkSmsCodeReq.getCode());
 		CheckIdentifyingCodeResp resp = new CheckIdentifyingCodeResp();
 		CheckIdentifyingCodeResp resp = new CheckIdentifyingCodeResp();
@@ -63,4 +75,19 @@ public class SendSmsProvider extends ControllerSupport implements SendSmsCloudSe
 		return resp;
 		return resp;
 	}
 	}
 
 
+	private void checkSendSmsReq(SendSmsReq sendSmsReq){
+		if(StringUtils.isBlank(sendSmsReq.getPhone())){
+			throw new StatusException("EX-SendSmsProvider-001", "手机号码不能为空");
+		}
+		if(StringUtils.isBlank(sendSmsReq.getCode())){
+			throw new StatusException("EX-SendSmsProvider-002", "短信验证码不能为空");
+		}
+		if(StringUtils.isBlank(sendSmsReq.getSign())){
+			throw new StatusException("EX-SendSmsProvider-003", "短信 签名不能为空");
+		}
+		if(StringUtils.isBlank(sendSmsReq.getTemplateCode())){
+			throw new StatusException("EX-SendSmsProvider-004", "短信模板code不能为空");
+		}
+	}
+	
 }
 }

+ 2 - 1
examcloud-exchange-inner-api/src/main/java/cn/com/qmth/examcloud/exchange/inner/api/SendSmsCloudService.java

@@ -4,6 +4,7 @@ import cn.com.qmth.examcloud.commons.web.cloud.api.CloudService;
 import cn.com.qmth.examcloud.exchange.inner.api.request.CheckSmsCodeReq;
 import cn.com.qmth.examcloud.exchange.inner.api.request.CheckSmsCodeReq;
 import cn.com.qmth.examcloud.exchange.inner.api.request.SendSmsReq;
 import cn.com.qmth.examcloud.exchange.inner.api.request.SendSmsReq;
 import cn.com.qmth.examcloud.exchange.inner.api.response.CheckIdentifyingCodeResp;
 import cn.com.qmth.examcloud.exchange.inner.api.response.CheckIdentifyingCodeResp;
+import cn.com.qmth.examcloud.exchange.inner.api.response.SendSmsResp;
 
 
 /**
 /**
  * 短信发送
  * 短信发送
@@ -17,7 +18,7 @@ public interface SendSmsCloudService extends CloudService{
 	/**
 	/**
 	 * 发送验证码
 	 * 发送验证码
 	 */
 	 */
-	public String sendIdentifyingCode(SendSmsReq sendSmsReq);
+	public SendSmsResp sendIdentifyingCode(SendSmsReq sendSmsReq);
 	
 	
 	/**
 	/**
 	 * 校验验证码
 	 * 校验验证码

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

@@ -4,12 +4,15 @@ import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Date;
 
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import com.aliyuncs.DefaultAcsClient;
 import com.aliyuncs.DefaultAcsClient;
 import com.aliyuncs.IAcsClient;
 import com.aliyuncs.IAcsClient;
 import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsRequest;
 import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsRequest;
 import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
 import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
 import com.aliyuncs.exceptions.ClientException;
 import com.aliyuncs.exceptions.ClientException;
 import com.aliyuncs.exceptions.ServerException;
 import com.aliyuncs.exceptions.ServerException;
 import com.aliyuncs.profile.DefaultProfile;
 import com.aliyuncs.profile.DefaultProfile;
@@ -27,26 +30,34 @@ public class SendSmsServiceImpl implements SendSmsService {
 	@Autowired
 	@Autowired
 	private RedisClient redisClient;
 	private RedisClient redisClient;
 
 
+	//redis中短信验证码key的前缀
 	private static final String CODE_REDIS_KEY_PREFIXS = "SMSCODE_";
 	private static final String CODE_REDIS_KEY_PREFIXS = "SMSCODE_";
 	
 	
+	//验证码默认有效时间
+	private static final int DEFAULT_DFFECTIVETIME = 120;
+	
+	//短信发送默认间隔时间
+	private static final int DEFAULT_INTERVALSECONDS = 90;
+	
 	// 产品名称:云通信短信API产品,开发者无需替换
 	// 产品名称:云通信短信API产品,开发者无需替换
 	private static final String product = "Dysmsapi";
 	private static final String product = "Dysmsapi";
 
 
 	// 产品域名,开发者无需替换
 	// 产品域名,开发者无需替换
 	private static final String domain = "dysmsapi.aliyuncs.com";
 	private static final String domain = "dysmsapi.aliyuncs.com";
 
 
-	// TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
-	private static final String accessKeyId = "LTAIhSyYIfGx3e9H";
-
-	private static final String accessKeySecret = "NyT0UfUuP900pYhYTM92AEBYP43uZA";
+	@Value("${aliyun.sms.accessKeyId}")
+	private String accessKeyId;
+	
+	@Value("${aliyun.sms.accessKeySecret}")
+	private String accessKeySecret;
 	
 	
 	@Override
 	@Override
 	public void sendIdentifyingCode(SendSmsInfo sendSmsInfo) {
 	public void sendIdentifyingCode(SendSmsInfo sendSmsInfo) {
 		if(sendSmsInfo.getEffectiveTime() == null || sendSmsInfo.getEffectiveTime() == 0){
 		if(sendSmsInfo.getEffectiveTime() == null || sendSmsInfo.getEffectiveTime() == 0){
-			sendSmsInfo.setEffectiveTime(120);//验证码默认有效时间
+			sendSmsInfo.setEffectiveTime(DEFAULT_DFFECTIVETIME);
 		}
 		}
 		if(sendSmsInfo.getIntervalSeconds() == null|| sendSmsInfo.getIntervalSeconds() == 0){
 		if(sendSmsInfo.getIntervalSeconds() == null|| sendSmsInfo.getIntervalSeconds() == 0){
-			sendSmsInfo.setIntervalSeconds(90);//默认间隔时间
+			sendSmsInfo.setIntervalSeconds(DEFAULT_INTERVALSECONDS);
 		}
 		}
 		SmsCodeRedisInfo smsCodeRedisInfo = redisClient.get(CODE_REDIS_KEY_PREFIXS+sendSmsInfo.getPhone(),SmsCodeRedisInfo.class);
 		SmsCodeRedisInfo smsCodeRedisInfo = redisClient.get(CODE_REDIS_KEY_PREFIXS+sendSmsInfo.getPhone(),SmsCodeRedisInfo.class);
 		if(smsCodeRedisInfo != null){
 		if(smsCodeRedisInfo != null){
@@ -56,7 +67,7 @@ public class SendSmsServiceImpl implements SendSmsService {
 			}
 			}
 		}
 		}
 		
 		
-/*		// 可自助调整超时时间
+		// 可自助调整超时时间
 		System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
 		System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
 		System.setProperty("sun.net.client.defaultReadTimeout", "10000");
 		System.setProperty("sun.net.client.defaultReadTimeout", "10000");
 
 
@@ -85,13 +96,13 @@ public class SendSmsServiceImpl implements SendSmsService {
 		// request.setSmsUpExtendCode("90997");
 		// request.setSmsUpExtendCode("90997");
 
 
 		// 可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
 		// 可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
-		request.setOutId("yourOutId");*/
+		request.setOutId("yourOutId");
 
 
 		// hint 此处可能会抛出异常,注意catch
 		// hint 此处可能会抛出异常,注意catch
-		/*try {
+		try {
 			SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
 			SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
 			if("ok".equalsIgnoreCase(sendSmsResponse.getCode())){
 			if("ok".equalsIgnoreCase(sendSmsResponse.getCode())){
-				putCodeInfoToRedis(sendSmsInfo);
+				setCodeInfoToRedis(sendSmsInfo);
 			}else{
 			}else{
 				throw new StatusException("EX-sendIdentifyingCode-2", "code:"+sendSmsResponse.getCode()+",message:"+sendSmsResponse.getMessage());
 				throw new StatusException("EX-sendIdentifyingCode-2", "code:"+sendSmsResponse.getCode()+",message:"+sendSmsResponse.getMessage());
 			}
 			}
@@ -99,15 +110,14 @@ public class SendSmsServiceImpl implements SendSmsService {
 			throw new StatusException("EX-sendIdentifyingCode-3", "aliyun send sms failed");
 			throw new StatusException("EX-sendIdentifyingCode-3", "aliyun send sms failed");
 		} catch (ClientException e) {
 		} catch (ClientException e) {
 			throw new StatusException("EX-sendIdentifyingCode-3", "aliyun send sms failed");
 			throw new StatusException("EX-sendIdentifyingCode-3", "aliyun send sms failed");
-		}*/
-		putCodeInfoToRedis(sendSmsInfo);
+		}
 	}
 	}
 	
 	
 	/**
 	/**
 	 * 将短信验证码信息放入redis
 	 * 将短信验证码信息放入redis
 	 * @param sendSmsInfo
 	 * @param sendSmsInfo
 	 */
 	 */
-	private void putCodeInfoToRedis(SendSmsInfo sendSmsInfo){
+	private void setCodeInfoToRedis(SendSmsInfo sendSmsInfo){
 		String redisKey = CODE_REDIS_KEY_PREFIXS+sendSmsInfo.getPhone();
 		String redisKey = CODE_REDIS_KEY_PREFIXS+sendSmsInfo.getPhone();
 		long currentTime = System.currentTimeMillis();
 		long currentTime = System.currentTimeMillis();
 		
 		

+ 4 - 1
examcloud-exchange-starter/src/main/resources/application-dev.properties

@@ -18,4 +18,7 @@ app.facepp.api_secret=aQMioMGUDShMnQmfM1_H_kPTP2pJva6J
 app.upyun.path=/student_base_photo
 app.upyun.path=/student_base_photo
 app.upyun.bucket=exam-cloud-test
 app.upyun.bucket=exam-cloud-test
 app.upyun.operator=examcloud
 app.upyun.operator=examcloud
-app.upyun.password=examcloud123456
+app.upyun.password=examcloud123456
+
+aliyun.sms.accessKeyId=LTAIhSyYIfGx3e9H
+aliyun.sms.accessKeySecret=NyT0UfUuP900pYhYTM92AEBYP43uZA

+ 4 - 1
examcloud-exchange-starter/src/main/resources/application-prod.properties

@@ -25,4 +25,7 @@ app.facepp.api_secret=bzMjy-JfwtVUxVDMzagFh7ggbQBC71f1
 app.upyun.path=/student_base_photo
 app.upyun.path=/student_base_photo
 app.upyun.bucket=exam-cloud
 app.upyun.bucket=exam-cloud
 app.upyun.operator=examcloud
 app.upyun.operator=examcloud
-app.upyun.password=examcloud123456
+app.upyun.password=examcloud123456
+
+aliyun.sms.accessKeyId=LTAIhSyYIfGx3e9H
+aliyun.sms.accessKeySecret=NyT0UfUuP900pYhYTM92AEBYP43uZA

+ 4 - 1
examcloud-exchange-starter/src/main/resources/application-test.properties

@@ -19,4 +19,7 @@ app.facepp.api_secret=aQMioMGUDShMnQmfM1_H_kPTP2pJva6J
 app.upyun.path=/student_base_photo
 app.upyun.path=/student_base_photo
 app.upyun.bucket=exam-cloud-test
 app.upyun.bucket=exam-cloud-test
 app.upyun.operator=examcloud
 app.upyun.operator=examcloud
-app.upyun.password=examcloud123456
+app.upyun.password=examcloud123456
+
+aliyun.sms.accessKeyId=LTAIhSyYIfGx3e9H
+aliyun.sms.accessKeySecret=NyT0UfUuP900pYhYTM92AEBYP43uZA

+ 1 - 0
examcloud-exchange-starter/src/main/resources/security-exclusions.conf

@@ -0,0 +1 @@
+[${$rmp.cloud.exchange.inner}/sendSms][/sendIdentifyingCode][POST]