一、实际效果
实现原理可参考1.0版本:点击跳转
内容可自定义,人员可自定义
二、架构调整
- 2.0版本采用Spring Boot 搭建服务;
- 定时任务采用quartz任务;
- 增加后台数据库架构;
三、数据库设计
r_admin 管理员信息
r_remind 消息记录
r_type 消息类型
r_user 用户信息
四、核心代码
-
调度器调用任务
@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(); } } }
-
每日任务执行
@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); } }
-
机器人执行发送
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/ 点击跳转