我的代码

/**
 * Author:Mr.X
 * Date:2017/10/30 14:54
 * Description:
 */
@Component
@Configurable
@EnableScheduling
public class ScheduledTasksConfig {

    @Autowired
    private WeixinConfig weixinConfig;

    @Autowired
    private UserWebAnalysisRepository userWebAnalysisRepository;

    /**
     * 每隔110分钟刷新一次access_token和jsapi_ticket
     * 7200秒=2小时
     */
    @Scheduled(fixedRate = 1000 * 7200)
    private void getAccessTokenAndJsapiTicket() {
        // 1、获取accessToken
        String accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + weixinConfig.getAppID() + "&secret=" + weixinConfig.getAppSecret();
        RestTemplate restTemplate = new RestTemplate();
        String response = restTemplate.getForObject(accessTokenUrl, String.class);
        JSONObject jsonObj = JSON.parseObject(response);
        String accessToken = jsonObj.getString("access_token");
        System.out.println("定时任务获取access_token--->" + accessToken);
        WebConst.ACCESS_TOKEN = accessToken; // 缓存accessToken

        // 2、根据accessToken获取jsapi_ticket
        String ticketURL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + accessToken + "&type=jsapi";
        response = restTemplate.getForObject(ticketURL, String.class);
        jsonObj = JSON.parseObject(response);
        String jsapi_ticket = jsonObj.getString("ticket");
        System.out.println("定时任务获取jsapi_ticket--->" + jsapi_ticket);
        WebConst.JSAPI_TICKET = jsapi_ticket; // 缓存jsapi_ticket
    }

    /**
     * 每天23点将微信端关注用户增减信息更新进库
     */
    @Scheduled(cron = "0 0 23 * * ?")
    private void getUserSource() {
        String url = "https://api.weixin.qq.com/datacube/getusercumulate?access_token=" + WebConst.ACCESS_TOKEN;
        RestTemplate restTemplate = new RestTemplate();
        String jsonStr = "{ \n" +
                            "    \"begin_date\": \"" + DateUtil.format(new Date(), "yyyy-MM-dd") + "\", \n" +
                            "    \"end_date\": \"" + DateUtil.format(new Date(), "yyyy-MM-dd") + "\"\n" +
                         "}";
        String response = restTemplate.postForObject(url, jsonStr, String.class);
        JSONObject jsonObj = JSON.parseObject(response);
        String ref_date = jsonObj.getString("ref_date");
        String user_source = jsonObj.getString("user_source");
        String new_user = jsonObj.getString("new_user");
        String cancel_user = jsonObj.getString("cancel_user");
        UserWebAnalysis userWebAnalysis = new UserWebAnalysis();
        userWebAnalysis.setRefDate(new Date());
        userWebAnalysis.setUserSource(Integer.valueOf(user_source));
        userWebAnalysis.setNewUser(Integer.valueOf(new_user));
        userWebAnalysis.setCancelUser(Integer.valueOf(cancel_user));
        userWebAnalysisRepository.save(userWebAnalysis);
    }
}

参考链接

http://www.jianshu.com/p/ef18af5a9c1d

【tmos】spring boot项目中处理Schedule定时任务的更多相关文章

  1. spring boot项目中处理Schedule定时任务

    项目中,因为使用了第三方支付(支付宝和微信支付),支付完毕后,第三方支付平台一般会采用异步回调通知的方式,通知商户支付结果,然后商户根据通知内容,变更商户项目支付订单的状态.一般来说,为了防止商户项目 ...

  2. 你真的理解 Spring Boot 项目中的 parent 吗?

    前面和大伙聊了 Spring Boot 项目的三种创建方式,这三种创建方式,无论是哪一种,创建成功后,pom.xml 坐标文件中都有如下一段引用: <parent> <groupId ...

  3. Spring Boot项目中使用Swagger2

    Swagger2是一款restful接口文档在线生成和在线接口调试工具,Swagger2在Swagger1.x版本的基础上做了些改进,下面是在一个Spring Boot项目中引入Swagger2的简要 ...

  4. 在Spring Boot项目中使用Spock框架

    转载:https://www.jianshu.com/p/f1e354d382cd Spock框架是基于Groovy语言的测试框架,Groovy与Java具备良好的互操作性,因此可以在Spring B ...

  5. Spring Boot2 系列教程(三)理解 Spring Boot 项目中的 parent

    前面和大伙聊了 Spring Boot 项目的三种创建方式,这三种创建方式,无论是哪一种,创建成功后,pom.xml 坐标文件中都有如下一段引用: <parent> <groupId ...

  6. Spring Boot项目中使用Mockito

    本文首发于个人网站:Spring Boot项目中使用Mockito Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试:生成测试数据初始化数据库用于测试 ...

  7. 在Spring Boot项目中使用Spock测试框架

    本文首发于个人网站:在Spring Boot项目中使用Spock测试框架 Spock框架是基于Groovy语言的测试框架,Groovy与Java具备良好的互操作性,因此可以在Spring Boot项目 ...

  8. Spring Boot项目中如何定制拦截器

    本文首发于个人网站:Spring Boot项目中如何定制拦截器 Servlet 过滤器属于Servlet API,和Spring关系不大.除了使用过滤器包装web请求,Spring MVC还提供Han ...

  9. Spring Boot项目中如何定制PropertyEditors

    本文首发于个人网站:Spring Boot项目中如何定制PropertyEditors 在Spring Boot: 定制HTTP消息转换器一文中我们学习了如何配置消息转换器用于HTTP请求和响应数据, ...

随机推荐

  1. tail 命令只查看日志中的关键字所在行信息

    tail -f info_log-2019-04-20.log |grep 要查询的关键字

  2. 第三十三节,目标检测之选择性搜索-Selective Search

    在基于深度学习的目标检测算法的综述 那一节中我们提到基于区域提名的目标检测中广泛使用的选择性搜索算法.并且该算法后来被应用到了R-CNN,SPP-Net,Fast R-CNN中.因此我认为还是有研究的 ...

  3. Image.fromarray的用法

    简而言之,就是实现array到image的转换 详细参考以下博客 https://blog.csdn.net/ybcrazy/article/details/81206411

  4. 使用WinPcap(SharpPcap)实现ARP抓包以实现设备IP修改功能

    参考上一篇: 使用WinPcap(SharpPcap)实现ARP抓包以实现设备IP搜索功能 搜索出设备后,需要修改设备IP网关掩码等信息 继续采用ARP包 getBas类似之前的,根据用户电脑的网卡物 ...

  5. shell关于文件操作

    一.如何将一个十进制的整数用2进制表示出来? echo "obase=2;50" | bc 二.Linux下经常需要删除空白行,grep,sed,awk,tr等工具均可实现 gre ...

  6. ESXI6时间源快速同步

    1.使用SSH会话连接到ESXi主机. 2./etc/ntp.conf 在文本编辑器中打开 添加内天tos maxdist 303.运行此命令以访问 likewise shell /usr/lib/v ...

  7. iptables之端口限速

    #iptables -A FORWARD -p tcp -m tcp --sport 10000 -m limit --limit 500/sec --limit-burst 1000 -j ACCE ...

  8. SpringBoot实战一:发送邮件

    目录 邮件协议 引入邮件包 创建邮件类和测试类,写yml文件 文本邮件,HTML邮件,附件邮件,图片邮件 模板邮件 异常处理 来进行一个SpringBoot项目的实战,发送一下邮件,这里我们先了解一下 ...

  9. JAVA核心技术I---JAVA基础知识(格式化相关类)

    一:格式化相关类 (一)java.text包java.text.Format的子类 –NumberFormat:数字格式化,抽象类 DecimalFormat –MessageFormat:字符串格式 ...

  10. Linux记录-监控系统开发

    需求:使用shell定制各种个性化告警工具,但需要统一化管理.规范化管理.思路:指定一个脚本包,包含主程序.子程序.配置文件.邮件引擎.输出日志等.主程序:作为整个脚本的入口,是整个系统的命脉.配置文 ...