Java实现微信每天定时发送消息2.0 -- 柚子真好吃
一、实际效果二、架构调整三、数据库设计四、核心代码五、开源地址一、实际效果
实现原理可参考1.0版本:点击跳转
内容可自定义,人员可自定义
二、架构调整
2.0版本采用Spring Boot 搭建服务;定时任务采用quartz任务;增加后台数据库架构;三、数据库设计
r_admin管理员信息r_remind消息记录r_type消息类型r_user用户信息
四、核心代码
调度器调用任务
@Servicepublic class EveryDayRemindServiceImpl implements EveryDayRemindService {@Resourceprivate RemindMapper remindMapper;@Overridepublic 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();}}}
每日任务执行
@Datapublic class EveryDayTask implements Job {private String name;private String toName;private String content;@Overridepublic 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: /fsyxjwxw/WeChatRobot2.0/ 点击跳转