Browse Source

111111111111

chenken 6 năm trước cách đây
mục cha
commit
5f54bd63f4

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

@@ -9,14 +9,18 @@ import org.springframework.web.bind.annotation.RequestMethod;
 
 import org.springframework.web.bind.annotation.RestController;
 
+import com.google.gson.JsonObject;
+
 import cn.com.qmth.examcloud.commons.base.exception.StatusException;
 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.CaptureFailedAlarmReq;
 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.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.bean.CaptureFailedAlarmInfo;
 import cn.com.qmth.examcloud.exchange.inner.service.bean.SendSmsInfo;
 
 /**
@@ -89,5 +93,33 @@ public class SendSmsProvider extends ControllerSupport implements SendSmsCloudSe
 			throw new StatusException("EX-SendSmsProvider-004", "短信模板code不能为空");
 		}
 	}
+
+	@Override
+	@RequestMapping(method = RequestMethod.POST, value = "/captureFailedAlarm")
+	public void captureFailedAlarm(@RequestBody CaptureFailedAlarmReq captureFailedAlarmReq) throws Exception {
+		checkCaptureFailedAlarmReq(captureFailedAlarmReq);
+		CaptureFailedAlarmInfo captureFailedAlarmInfo = new CaptureFailedAlarmInfo();
+		captureFailedAlarmInfo.setTemplateCode(captureFailedAlarmReq.getTemplateCode());
+		captureFailedAlarmInfo.setSign(captureFailedAlarmReq.getSign());
+		captureFailedAlarmInfo.setPhone(captureFailedAlarmReq.getPhone());
+		JsonObject jsonObject = new JsonObject();
+		jsonObject.addProperty("totalCount", captureFailedAlarmReq.getTotalCount());
+		jsonObject.addProperty("errorCount", captureFailedAlarmReq.getErrorCount());
+		captureFailedAlarmInfo.setTemplateParam(jsonObject.toString());
+		sendSmsService.captureFailedAlarm(captureFailedAlarmInfo);
+	}
+
+	private void checkCaptureFailedAlarmReq(
+			CaptureFailedAlarmReq captureFailedAlarmReq) {
+		if(StringUtils.isBlank(captureFailedAlarmReq.getPhone())){
+			throw new StatusException("EX-SendSmsProvider-001", "手机号码不能为空");
+		}
+		if(StringUtils.isBlank(captureFailedAlarmReq.getSign())){
+			throw new StatusException("EX-SendSmsProvider-003", "短信签名不能为空");
+		}
+		if(StringUtils.isBlank(captureFailedAlarmReq.getTemplateCode())){
+			throw new StatusException("EX-SendSmsProvider-004", "短信模板code不能为空");
+		}
+	}
 	
 }

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

@@ -1,5 +1,6 @@
 package cn.com.qmth.examcloud.exchange.inner.service;
 
+import cn.com.qmth.examcloud.exchange.inner.service.bean.CaptureFailedAlarmInfo;
 import cn.com.qmth.examcloud.exchange.inner.service.bean.SendSmsInfo;
 
 import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
@@ -32,4 +33,10 @@ public interface SendSmsService {
 	 */
 	public QuerySendDetailsResponse querySendDetails(String bizId,String phone);
 	
+	/**
+	 * 处理抓拍失败照片警报
+	 * @param captureFailedAlarmReq
+	 */
+	public void captureFailedAlarm(CaptureFailedAlarmInfo captureFailedAlarmInfo) throws Exception;
+	
 }

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

@@ -0,0 +1,62 @@
+package cn.com.qmth.examcloud.exchange.inner.service.bean;
+
+import cn.com.qmth.examcloud.commons.web.cloud.api.BaseRequest;
+
+public class CaptureFailedAlarmInfo extends BaseRequest{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 825615697674106990L;
+	/**
+	 * 签名
+	 */
+	private String sign;
+	/**
+	 * 模板code
+	 */
+	private String templateCode;
+	
+	/**
+	 * 手机号码 
+	 */
+	private String phone;
+	
+	/**
+	 * 模板变量
+	 */
+	private String templateParam;
+
+	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;
+	}
+
+	public String getPhone() {
+		return phone;
+	}
+
+	public void setPhone(String phone) {
+		this.phone = phone;
+	}
+
+	public String getTemplateParam() {
+		return templateParam;
+	}
+
+	public void setTemplateParam(String templateParam) {
+		this.templateParam = templateParam;
+	}
+
+}

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

@@ -21,6 +21,7 @@ import com.aliyuncs.profile.IClientProfile;
 import cn.com.qmth.examcloud.commons.base.exception.StatusException;
 import cn.com.qmth.examcloud.commons.web.redis.RedisClient;
 import cn.com.qmth.examcloud.exchange.inner.service.SendSmsService;
+import cn.com.qmth.examcloud.exchange.inner.service.bean.CaptureFailedAlarmInfo;
 import cn.com.qmth.examcloud.exchange.inner.service.bean.SendSmsInfo;
 import cn.com.qmth.examcloud.exchange.inner.service.bean.SmsCodeRedisInfo;
 
@@ -183,5 +184,33 @@ public class SendSmsServiceImpl implements SendSmsService {
 		}
 		return false;
 	}
+
+	@Override
+	public void captureFailedAlarm(CaptureFailedAlarmInfo captureFailedAlarmInfo) 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(captureFailedAlarmInfo.getPhone());
+		// 必填:短信签名-可在短信控制台中找到
+		request.setSignName(captureFailedAlarmInfo.getSign());
+		// 必填:短信模板-可在短信控制台中找到
+		request.setTemplateCode(captureFailedAlarmInfo.getTemplateCode());
+		// 可选:模板中的变量
+		request.setTemplateParam(captureFailedAlarmInfo.getTemplateParam());
+		// 可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
+		request.setOutId("yourOutId");
+
+		// hint 此处可能会抛出异常,注意catch
+		acsClient.getAcsResponse(request);
+	}
 	
 }