Java实现微信每天定时发送消息2.0 -- 柚子真好吃

一、实际效果

实现原理可参考1.0版本:

内容可自定义,人员可自定义

二、架构调整

  1. 2.0版本采用Spring Boot 搭建服务;
  2. 定时任务采用quartz任务;
  3. 增加后台数据库架构;

三、数据库设计

r_admin		管理员信息
r_remind	消息记录
r_type		消息类型
r_user		用户信息

四、核心代码

  1. 调度器调用任务 @Service public class EveryDayRemindServiceImpl implements EveryDayRemindService { @Resource private RemindMapper remindMapper; @Override public void executeEveryDayRemind() throws SchedulerException { //调度器 SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched = sf.getScheduler(); //数据库结果集 List<RemindVo> list = remindMapper.getEveryDayReminds(); //遍历设定每日任务 for (RemindVo remindVo : list) { JobDetail job = JobBuilder.newJob(EveryDayTask.class).withIdentity("everyDayJob", remindVo.getRemindId()).build(); CronTrigger trigger = TriggerBuilder.newTrigger() .withIdentity("everyDayTrigger", remindVo.getRemindId()) .usingJobData("name", remindVo.getName()) .usingJobData("toName", remindVo.getToName()) .usingJobData("content", remindVo.getContent()) .withSchedule(CronScheduleBuilder.cronSchedule(remindVo.getCron())) .build(); sched.scheduleJob(job, trigger); sched.start(); } } }
  2. 每日任务执行 @Data public class EveryDayTask implements Job { private String name; private String toName; private String content; @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { WeChatRobot robot = new WeChatRobot(); System.out.println("------------------消息发送------------------"); System.out.println("发送时间:"+ DateUitls.getDate()); System.out.println("发送人员:"+name); System.out.println("接收人员:"+toName); System.out.println("发送内容"+content); System.out.println("-------------------------------------------"); robot.OpenWeChat(); robot.ChooseFriends(toName); robot.SendMessage(content); } }
  3. 机器人执行发送 public class WeChatRobot { private Robot bot = null; private Clipboard clip = null; public WeChatRobot() { try { this.clip = Toolkit.getDefaultToolkit().getSystemClipboard(); this.bot = new Robot(); } catch (AWTException e) { e.printStackTrace(); } } public void OpenWeChat() { bot.keyPress(KeyEvent.VK_CONTROL); bot.keyPress(KeyEvent.VK_ALT); bot.keyPress(KeyEvent.VK_W); bot.keyRelease(KeyEvent.VK_CONTROL); bot.keyRelease(KeyEvent.VK_ALT); bot.delay(1000); } public void ChooseFriends(String name) { Transferable text = new StringSelection(name); clip.setContents(text, null); bot.delay(1000); bot.keyPress(KeyEvent.VK_CONTROL); bot.keyPress(KeyEvent.VK_F); bot.keyRelease(KeyEvent.VK_CONTROL); bot.delay(1000); bot.keyPress(KeyEvent.VK_CONTROL); bot.keyPress(KeyEvent.VK_V); bot.keyRelease(KeyEvent.VK_CONTROL); bot.delay(2000); bot.keyPress(KeyEvent.VK_ENTER); } public void SendMessage(String message) { Transferable text = new StringSelection(message); clip.setContents(text, null); bot.delay(1000); bot.keyPress(KeyEvent.VK_CONTROL); bot.keyPress(KeyEvent.VK_V); bot.keyRelease(KeyEvent.VK_CONTROL); bot.delay(1000); bot.keyPress(KeyEvent.VK_ENTER); bot.delay(1000); bot.keyPress(KeyEvent.VK_CONTROL); bot.keyPress(KeyEvent.VK_ALT); bot.keyPress(KeyEvent.VK_W); bot.keyRelease(KeyEvent.VK_CONTROL); bot.keyRelease(KeyEvent.VK_ALT); } }

五、开源地址

github: https://github.com/fsyxjwxw/WeChatRobot2.0/

经验分享 程序员 微信小程序 职场和发展