SpringBoot整合阿里云短信服务的方法

编辑: admin 分类: java 发布时间: 2021-12-03 来源:互联网
目录
  • 一、新建短信微服务
    • 1、在service模块下创建子模块service-msm
    • 3.配置application.properties
    • 4、创建启动类
  • 二、阿里云短信服务
    • 三、编写发送短信接口
      • 1.在service-msm的pom中引入依赖
      • 2.编写controller,根据手机号发送短信
      • 3.编写service

    一、新建短信微服务

    1、在service模块下创建子模块service-msm

    2.创建controller和service代码

    3.配置application.properties

    # 服务端口
    server.port=8006
    # 服务名
    spring.application.name=service-msm
    
    # mysql数据库连接
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/guli?serverTimezone=GMT%2B8
    spring.datasource.username=root
    spring.datasource.password=root
    
    spring.redis.host=192.168.44.131
    spring.redis.port=6379
    spring.redis.database= 0
    spring.redis.timeout=1800000
    
    spring.redis.lettuce.pool.max-active=20
    spring.redis.lettuce.pool.max-wait=-1
      #最大阻塞等待时间(负数表示没限制)
    spring.redis.lettuce.pool.max-idle=5
    spring.redis.lettuce.pool.min-idle=0
      #最小空闲
    
    
    #返回json的全局时间格式
    spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
    spring.jackson.time-zone=GMT+8
    
    #配置mapper xml文件的路径
    mybatis-plus.mapper-locations=classpath:com/atguigu/cmsservice/mapper/xml/*.xml
    
    #mybatis日志
    mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
    

    4、创建启动类

    @ComponentScan({"com.south"})
    @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)//取消数据源自动配置
    public class ServiceMsmApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(ServiceMsmApplication.class, args);
    	}
    }
    

    二、阿里云短信服务

    帮助文档:

    https://help.aliyun.com/product/44282.html?spm=5176.10629532.0.0.38311cbeYzBm73

    三、编写发送短信接口

    1.在service-msm的pom中引入依赖

      <dependencies>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
            </dependency>
            <dependency>
                <groupId>com.aliyun</groupId>
                <artifactId>aliyun-java-sdk-core</artifactId>
            </dependency>
        </dependencies>
    

    2.编写controller,根据手机号发送短信

    @CrossOrigin //跨域
    public class MsmApiController {
    
        @Autowired
        private MsmService msmService;
    
        @Autowired
        private RedisTemplate<String, String> redisTemplate;
    
        @GetMapping(value = "/send/{phone}")
        public R code(@PathVariable String phone) {
            String code = redisTemplate.opsForValue().get(phone);
            if(!StringUtils.isEmpty(code)) return R.ok();
    
            code = RandomUtil.getFourBitRandom();
            Map<String,Object> param = new HashMap<>();
            param.put("code", code);
            boolean isSend = msmService.send(phone, "SMS_180051135", param);
            if(isSend) {
                redisTemplate.opsForValue().set(phone, code,5,TimeUnit.MINUTES);
                return R.ok();
            } else {
                return R.error().message("发送短信失败");
            }
        }
    }
    

    3.编写service

    @Service
    public class MsmServiceImpl implements MsmService {
    
        /**
         * 发送短信
         */
        public boolean send(String PhoneNumbers, String templateCode, Map<String,Object> param) {
    
            if(StringUtils.isEmpty(PhoneNumbers)) return false;
    
            DefaultProfile profile =
                    DefaultProfile.getProfile("default", "LTAIq6nIPY09VROj", "FQ7UcixT9wEqMv9F35nORPqKr8XkTF");
            IAcsClient client = new DefaultAcsClient(profile);
    
            CommonRequest request = new CommonRequest();
            //request.setProtocol(ProtocolType.HTTPS);
            request.setMethod(MethodType.POST);
            request.setDomain("dysmsapi.aliyuncs.com");
            request.setVersion("2017-05-25");
            request.setAction("SendSms");
    
            request.putQueryParameter("PhoneNumbers", PhoneNumbers);
            request.putQueryParameter("SignName", "我的谷粒在线教育网站");
            request.putQueryParameter("TemplateCode", templateCode);
            request.putQueryParameter("TemplateParam", JSONObject.toJSONString(param));
    
            try {
                CommonResponse response = client.getCommonResponse(request);
                System.out.println(response.getData());
                return response.getHttpResponse().isSuccess();
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                e.printStackTrace();
            }
            return false;
        }
    }
    

    到此这篇关于SpringBoot整合阿里云短信服务的文章就介绍到这了,更多相关SpringBoot阿里云短信服务内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

    【原URL http://www.yidunidc.com/mggfzq.html 请说明出处】