栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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 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/ 点击跳转

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/995250.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号