QcloudSmsService.java 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /**
  2. * Copyright (c) 2018 业主系统 All rights reserved.
  3. *
  4. * https://www.yezhu.io
  5. *
  6. * 版权所有,侵权必究!
  7. */
  8. package com.kioor.common.sms;
  9. import cn.hutool.core.map.MapUtil;
  10. import com.github.qcloudsms.SmsSingleSender;
  11. import com.github.qcloudsms.SmsSingleSenderResult;
  12. import com.kioor.common.constant.Constant;
  13. import com.kioor.common.exception.ErrorCode;
  14. import com.kioor.common.exception.RenException;
  15. import com.kioor.common.service.SysSmsLogService;
  16. import com.kioor.common.utils.SpringContextUtils;
  17. import java.util.ArrayList;
  18. import java.util.LinkedHashMap;
  19. /**
  20. * 腾讯云短信服务
  21. *
  22. * @author Mark sunlightcs@gmail.com
  23. */
  24. public class QcloudSmsService extends AbstractSmsService {
  25. public QcloudSmsService(SmsConfig config){
  26. this.config = config;
  27. }
  28. @Override
  29. public void sendSms(String smsCode, String mobile, LinkedHashMap<String, String> params) {
  30. this.sendSms(smsCode, mobile, params, config.getQcloudSignName(), config.getQcloudTemplateId());
  31. }
  32. @Override
  33. public void sendSms(String smsCode, String mobile, LinkedHashMap<String, String> params, String signName, String template) {
  34. SmsSingleSender sender = new SmsSingleSender(config.getQcloudAppId(), config.getQcloudAppKey());
  35. //短信参数
  36. ArrayList<String> paramsList = new ArrayList<>();
  37. if(MapUtil.isNotEmpty(params)){
  38. for(String value : params.values()){
  39. paramsList.add(value);
  40. }
  41. }
  42. SmsSingleSenderResult result;
  43. try {
  44. result = sender.sendWithParam("86", mobile, Integer.parseInt(template), paramsList, signName, null, null);
  45. } catch (Exception e) {
  46. throw new RenException(ErrorCode.SEND_SMS_ERROR, e, "");
  47. }
  48. int status = Constant.SUCCESS;
  49. if(result.result != 0){
  50. status = Constant.FAIL;
  51. }
  52. //保存短信记录
  53. SysSmsLogService sysSmsLogService = SpringContextUtils.getBean(SysSmsLogService.class);
  54. sysSmsLogService.save(smsCode, Constant.SmsService.QCLOUD.getValue(), mobile, params, status);
  55. if(status == Constant.FAIL){
  56. throw new RenException(ErrorCode.SEND_SMS_ERROR, result.errMsg);
  57. }
  58. }
  59. }