Browse Source

短信邮箱改成rest接口发送

wangmh 7 years ago
parent
commit
f5f3e29342

+ 20 - 0
sso-server/src/main/java/com/uas/sso/RestTemplateConfig.java

@@ -0,0 +1,20 @@
+package com.uas.sso;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * RestTemplate配置bean
+ * @author suntg
+ * @create 2017/2/15
+ * @version 2017年8月2日16:07:06 suntg 修改文件类名
+ */
+@Configuration
+public class RestTemplateConfig {
+
+    @Bean
+    public RestTemplate restTemplate() {
+        return new RestTemplate();
+    }
+}

+ 148 - 0
sso-server/src/main/java/com/uas/sso/service/impl/RestMailServiceImpl.java

@@ -0,0 +1,148 @@
+package com.uas.sso.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.uas.message.common.domain.MapMessage;
+import com.uas.message.common.domain.Page;
+import com.uas.message.mail.domain.MailLog;
+import com.uas.message.mail.service.MailService;
+import com.uas.sso.util.FastjsonUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * 基于RestTemplate实现的邮件发送接口
+ * @author suntg
+ * @since 2017年10月20日15:12:47
+ */
+@Service
+public class RestMailServiceImpl implements MailService {
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    /**
+     * 邮件服务主机地址
+     */
+    private String MAIL_CONSOLE_HOST = "http://10.10.100.136:8080/";
+
+    /**
+     * 发送邮件给单个人url
+     */
+    private String MAIL_SEND_URL = "mail/send";
+
+    /**
+     * 发送邮件给多个人 url
+     */
+    private String MAIL_SEND_MANY_URL = "mail/send/o2m";
+
+    @Override
+    public List<Map<String, Object>> sendByDefault(String[] strings, String s, String s1) {
+        // 没用到,暂无实现
+        return null;
+    }
+
+    @Override
+    public MailLog send(MapMessage mapMessage) {
+        // 没用到,暂无实现
+        return null;
+    }
+
+    @Override
+    public List<MailLog> sendAll(MapMessage mapMessage) {
+        // 没用到,暂无实现
+        return null;
+    }
+
+    /**
+     * 发送邮件给个人
+     * @param templateId
+     * @param receiver
+     * @param params
+     * @return
+     */
+    @Override
+    public MailLog send(String templateId, String receiver, Map<String, Object> params) {
+        HttpHeaders headers = new HttpHeaders();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+
+        JSONObject object = new JSONObject();
+        object.put("templateId", templateId);
+        object.put("receiver", receiver);
+        object.put("params", params);
+
+        HttpEntity<String> formEntity = new HttpEntity<String>(object.toJSONString(), headers);
+        ResponseEntity<MailLog> responseEntity = restTemplate.postForEntity(MAIL_CONSOLE_HOST + MAIL_SEND_URL, formEntity, MailLog.class);
+        return responseEntity.getBody();
+    }
+
+    /**
+     * 发送邮件给多个人
+     * @param templateId
+     * @param receivers
+     * @param params
+     * @return
+     */
+    @Override
+    public List<MailLog> sendAll(String templateId, Set<String> receivers, Map<String, Object> params) {
+        HttpHeaders headers = new HttpHeaders();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+
+        JSONObject object = new JSONObject();
+        object.put("templateId", templateId);
+        object.put("receivers", receivers);
+        object.put("params", params);
+
+        HttpEntity<String> formEntity = new HttpEntity<String>(object.toJSONString(), headers);
+        ResponseEntity<String> responseEntity = restTemplate.postForEntity(MAIL_CONSOLE_HOST + MAIL_SEND_MANY_URL, formEntity, String.class);
+        List<MailLog> mailLogs = FastjsonUtils.fromJsonArray(responseEntity.getBody(), MailLog.class);
+        return mailLogs;
+    }
+
+    @Override
+    public List<MailLog> sendAll(List<MapMessage> list) {
+        // 没用到,暂无实现
+        return null;
+    }
+
+    @Override
+    public Page<MailLog> findLogs(int i, int i1) {
+        // 没用到,暂无实现
+        return null;
+    }
+
+    @Override
+    public Page<MailLog> findLogs(String s, int i, int i1) {
+        // 没用到,暂无实现
+        return null;
+    }
+
+    @Override
+    public Page<MailLog> findLogs(boolean b, int i, int i1) {
+        // 没用到,暂无实现
+        return null;
+    }
+
+    @Override
+    public Page<MailLog> findLogs(String s, String s1, Boolean aBoolean, int i, int i1) {
+        // 没用到,暂无实现
+        return null;
+    }
+
+    @Override
+    public void deleteLogs(String s) {
+        // 没用到,暂无实现
+    }
+}

+ 163 - 0
sso-server/src/main/java/com/uas/sso/service/impl/RestSmsServiceImpl.java

@@ -0,0 +1,163 @@
+package com.uas.sso.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.uas.message.common.domain.Page;
+import com.uas.message.common.domain.SimpleMessage;
+import com.uas.message.sms.domain.SmsLog;
+import com.uas.message.sms.service.SmsService;
+import com.uas.sso.util.FastjsonUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * 基于RestTemplate实现的短信息发送接口
+ * @author suntg
+ * @since 2017年10月20日15:13:23
+ */
+@Service
+public class RestSmsServiceImpl implements SmsService {
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    /**
+     * 短信服务主机地址
+     */
+    private String SMS_CONSOLE_HOST = "http://10.10.100.136:8080";
+
+    /**
+     * 发送短信给单个人url
+     */
+    private static final String SMS_SEND_URL = "sms/send";
+
+    /**
+     * 发送短信给多个人 url
+     */
+    private static final String SMS_SEND_MANY_URL = "sms/send/o2m";
+
+    private final Logger logger = LoggerFactory.getLogger(RestSmsServiceImpl.class);
+
+    @Override
+    public List<Map<String, Object>> sendByDefault(String[] strings, String s) {
+        return null;
+    }
+
+    @Override
+    public SmsLog send(SimpleMessage simpleMessage) {
+        return null;
+    }
+
+    @Override
+    public List<SmsLog> sendAll(SimpleMessage simpleMessage) {
+        return null;
+    }
+
+    /**
+     * 发送短信给个人
+     * @param templateId
+     * @param receiver
+     * @param params
+     * @return
+     */
+    @Override
+    public SmsLog send(String templateId, String receiver, Object[] params) {
+        HttpHeaders headers = new HttpHeaders();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+
+        JSONObject object = new JSONObject();
+        object.put("templateId", templateId);
+        object.put("receiver", receiver);
+        object.put("params", params);
+
+        HttpEntity<String> formEntity = new HttpEntity<String>(object.toJSONString(), headers);
+        logger.warn("短信发送开始, 模板:{},手机号:{}", templateId, receiver);
+        ResponseEntity<SmsLog> responseEntity = restTemplate.postForEntity(SMS_CONSOLE_HOST + SMS_SEND_URL, formEntity, SmsLog.class);
+        logger.warn("短信发送成功, 模板:{},手机号:{}", templateId, receiver);
+        return responseEntity.getBody();
+    }
+
+    /**
+     * 发送短信给多个人
+     * @param templateId
+     * @param receivers
+     * @param params
+     * @return
+     */
+    @Override
+    public List<SmsLog> sendAll(String templateId, Set<String> receivers, Object[] params) {
+        HttpHeaders headers = new HttpHeaders();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+
+        List<SmsLog> mailLogs = new ArrayList<>();
+        JSONObject object = new JSONObject();
+        object.put("templateId", templateId);
+        object.put("params", params);
+        for (String receiver : receivers) {
+            object.put("receiver", receiver);
+            HttpEntity<String> formEntity = new HttpEntity<String>(object.toJSONString(), headers);
+            ResponseEntity<String> responseEntity = restTemplate.postForEntity(SMS_CONSOLE_HOST + SMS_SEND_URL, formEntity, String.class);
+            SmsLog smsLog = FastjsonUtils.fromJson(responseEntity.getBody(), SmsLog.class);
+            mailLogs.add(smsLog);
+        }
+        return mailLogs;
+    }
+
+    /**
+     * 发送多个发送请求
+     * @param list
+     * @return
+     */
+    @Override
+    public List<SmsLog> sendAll(List<SimpleMessage> list) {
+        if(! CollectionUtils.isEmpty(list)) {
+            for(SimpleMessage message : list) {
+                send(message.getTemplateId(), message.getReceiver(), message.getParams());
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public Page<SmsLog> findLogs(int i, int i1) {
+        return null;
+    }
+
+    @Override
+    public Page<SmsLog> findLogs(String s, int i, int i1) {
+        return null;
+    }
+
+    @Override
+    public Page<SmsLog> findLogs(boolean b, int i, int i1) {
+        return null;
+    }
+
+    @Override
+    public Page<SmsLog> findLogs(String s, String s1, Boolean aBoolean, int i, int i1) {
+        return null;
+    }
+
+    @Override
+    public void deleteLogs(String s) {
+
+    }
+}

+ 2 - 0
sso-server/src/main/java/com/uas/sso/util/MessageUtils.java

@@ -51,7 +51,9 @@ public class MessageUtils {
             if (StringUtils.isEmpty(smsTplId)) {
                 throw new RuntimeException("模板不存在");
             }
+            messageUtils.logger.warn("短信发送准备, 模板:{},手机号:{}", templateId, mobile);
             messageUtils.smsService.send(smsTplId.getValue(), mobile, data);
+            messageUtils.logger.warn("短信发送完成, 模板:{},手机号:{}", templateId, mobile);
         } catch (Exception e) {
             messageUtils.logger.warn("短信发送失败,{}, 模板:{},手机号:{}", e.getMessage(), templateId, mobile);
         }

+ 5 - 5
sso-server/src/main/resources/spring/dubbo.xml

@@ -11,9 +11,9 @@
     <!-- 分布式文件服务 -->
     <dubbo:reference id="fileClient" interface="com.uas.dfs.service.FileClient" timeout="100000"/>
 
-    <!-- 邮件服务 -->
-    <dubbo:reference id="mailService" interface="com.uas.message.mail.service.MailService" timeout="30000" />
+    <!--&lt;!&ndash; 邮件服务 &ndash;&gt;-->
+    <!--<dubbo:reference id="mailService" interface="com.uas.message.mail.service.MailService" timeout="30000" />-->
 
-    <!-- 短信服务 -->
-    <dubbo:reference id="smsService" interface="com.uas.message.sms.service.SmsService" timeout="30000" />
-</beans>
+    <!--&lt;!&ndash; 短信服务 &ndash;&gt;-->
+    <!--<dubbo:reference id="smsService" interface="com.uas.message.sms.service.SmsService" timeout="30000" />-->
+</beans>