首页 > 其他分享 >消息sms 邮箱/手机号/push发送的方案 & 定时任务xxlJob灵活度 & 泛型和发送的模板类设计

消息sms 邮箱/手机号/push发送的方案 & 定时任务xxlJob灵活度 & 泛型和发送的模板类设计

时间:2024-03-27 18:44:26浏览次数:15  
标签:String sms 发送 report startTime 泛型 endTime public

消息sms 邮箱/手机号/push发送的方案 & 定时任务xxlJob灵活度 & 泛型和发送的模板类设计

1.消息sms 邮箱/手机号/push发送的方案
1.判断收件人地址是否为空,不为空则发送邮件。为空则不发送。可以通过该方法终止一些消息的发送。
2.收件人的地址可以配置在Apollo中,直接删除该key测试没有生效。需要将该key配置成空字符串。

2.定时任务xxlJob灵活度
xxlJob需要接收外部的参数,来灵活处理调度任务。比如数据表格的邮件发送
需求背景:拉取前一天的数据,生成excel表格,然后通过email发送出来。

@Slf4j
@Component
@JobHandler(value = "sendEmailTask")
public class SendEmailTask extends IJobHandler {

    @Autowired
    @Qualifier("mySendEmailImpl")
    private SendBiDataService<MyBiDataEntity> sendBiDataService;

    //根据实体类类注入也可以。
//    @Autowired
//    MySendEmailImpl mySendEmailImpl;

    @Override
    public ReturnT<String> execute(String s) throws Exception {
        Transaction t = Cat.newTransaction("JOB", "sendEmailTask");
        try {
            log.info("report start......");
            String startTime = "";
            String endTime = "";
            //获取外部参数,开始时间和结束时间
            if(StringUtils.isNotBlank(s)){
                startTime = s.split(",")[0];
                endTime = s.split(",")[1];
            }else{
                //获取系统设置时间,前天的开始时间和结束时间
                LocalDate today = LocalDate.now();
                LocalDate yesterday = today.plusDays(-1);
                LocalTime lt1 = LocalTime.of(0,0,1);
                LocalTime lt2 = LocalTime.of(23,59,59);
                LocalDateTime startLdt = yesterday.atTime(lt1);
                LocalDateTime endLdt = yesterday.atTime(lt2);
                startTime = LocalDateTimeUtils.formatDateTime(startLdt);
                endTime = LocalDateTimeUtils.formatDateTime(endLdt);
            }
            //业务逻辑 查询数据
            List<MyBiDataEntity> list = sendBiDataService.queryBiData(startTime,endTime);
            if(CollectionUtils.isEmpty(list)){
                log.info("report 数据为空......");
               return ReturnT.SUCCESS;
            }
            //业务逻辑 创建excel
            String fileName = sendBiDataService.createBiExcel(list);
            log.info("report fileName......" + fileName);
            //业务逻辑 发送邮件
            boolean flag = sendBiDataService.sendBiExcel(fileName);
            log.info("report flag......" + flag);
            log.info("report end......");
            t.setStatus(Transaction.SUCCESS);
            return SUCCESS;
        } catch (Exception e) {
            log.error("report邮件发送异常:", e);
            Cat.logError("report邮件发送异常:", e);
            t.setStatus(e);
            return FAIL;
        } finally {
            t.complete();
        }
    }
}

public class LocalDateTimeUtils {
    public static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";

    public static String formatDateTime(LocalDateTime dateTime) {
        if(dateTime == null) {
            return "";
        }
        return formatDateTime(dateTime, DEFAULT_PATTERN);
    }
}

3.泛型和发送的模板类设计

@Service
public interface SendBiDataService<T extends Object> {
    List<T> queryBiData(String startTime,String endTime);
    String createBiExcel(List<T> list);
    boolean sendBiExcel(String fileName);
}



@Service
public abstract class SendBiDataCommonService<T> implements  SendBiDataService<T> {
    private Logger logger = LoggerFactory.getLogger(this.getClass());
    
    @Override
    public String createBiExcel(List<T> list) {
      //通用公共逻辑实现
    }
}
    

@Slf4j
@Service("mySendEmailImpl")
public class MySendEmailImpl extends SendBiDataCommonService<MyBiDataEntity> implements SendBiDataService<MyBiDataEntity> {
    private Logger logger = LoggerFactory.getLogger(this.getClass());


    @Override
    public List<MyBiDataEntity> queryBiData(String startTime, String endTime) {
        logger.info("queryBiData startTime=[{}],endTime=[{}]",startTime,endTime);
        //具体业务,查询数据
        
    }

    @Override
    public String createBiExcel(List<MyBiDataEntity> list) {
        //调用公用的抽象类方法
        return super.createBiExcel(list);
    }

    @Override
    public boolean sendBiExcel(String fileName) {
        //具体业务,发送人,邮件标题等参数,邮件发送实现
    }
}

 

标签:String,sms,发送,report,startTime,泛型,endTime,public
From: https://www.cnblogs.com/oktokeep/p/18099990

相关文章

  • Java 发送邮件(2024-03)
    1\2\packageorg.jeecg.common.util.io;importcom.sun.mail.util.MailSSLSocketFactory;importlombok.extern.slf4j.Slf4j;importorg.jeecg.common.util.DateUtils;importjavax.activation.DataHandler;importjavax.activation.DataSource;importjavax.acti......
  • stm32串口使用dma接收数据全为0发送正常
    cubemx版本:keil版本:当使用cubeMX生成代码时,需要调整dma初始化和串口初始化的顺序,在3处那里调整,不然串口接收的数据全是0,未知原因,只找到办法......
  • FPGA入门笔记009——UART串口发送模块设计
    #FPGA入门笔记009——UART串口发送模块设计1、UART通信原理​ 如图1为UART通信连接图,其中tx为输入,rx为输出。通过tx连接rx进行数据间的发送和接收。图1——UART通信连接图​ UART通信在使用前需要做多项设置,最常见的设置包括:数据位数、波特率大小、奇偶校验类型和停止位......
  • TypeScript学习笔记之泛型
    介绍软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。在像C#和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据......
  • JAVA面向对象高级三:泛型方法,泛型的通配符和泛型的上下限,泛型注意事项
         上限技术: 下限技术:   ......
  • Java泛型方法和泛型参数之美
    1.泛型方法和泛型参数的介绍在Java中,泛型方法和泛型参数是一种强大的特性,它们可以增加代码的灵活性和可重用性。下面是对泛型方法和泛型参数的介绍:泛型方法:泛型方法是一种在方法中使用泛型类型的方式。通过在方法声明中使用尖括号和类型参数,可以使方法具有通用性,可以在......
  • Ajax 发送json格式数据以及发送文件(FormData)和自带的序列化组件: serializers
    前后端传输数据的编码格式(contentType)get请求数据就是直接放在url?后面的url?usernmae=junjie&password=123...可以向后端发送post请求的方式form请求ajax请求前后端传输数据的编码格式urlencodedformdatajson研究form表单:默认的数据编码格式是(urlencod......
  • Json泛型化处理
    importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.TypeReference;importjava.util.List;publicclassJSONCommonBuilder{/***Json泛型化处理*/publicstatic<T>BusinessCache<T>getBusinessCache(Objectobject,Clas......
  • 7*24h新闻自动发送至微信(requests+pywinauto)
    7*24h新闻自动发送至微信(requests+pywinauto)1.爬取新闻列表2.发送至微信指定联系人1.爬取新闻列表目标地址:https://kuaixun.eastmoney.com/获取新闻列表importtime,requests,jsonimportpandasaspdsession=requests.session()headers={'User-Agent'......
  • ts 接口的属性 及泛型
    1可选属性:带有可选属性的接口与普通的接口定义差不多,只是在可选属性名字定义的后面加一个?符号interfaceSquareConfig{color?:string;width?:number;}2只读属性:一些对象属性只能在对象刚刚创建的时候修改其值。你可以在属性名前用readonly来指定只读属性interfa......