我的代码

  1. /**
  2. * Author:Mr.X
  3. * Date:2017/10/30 14:54
  4. * Description:
  5. */
  6. @Component
  7. @Configurable
  8. @EnableScheduling
  9. public class ScheduledTasksConfig {
  10. @Autowired
  11. private WeixinConfig weixinConfig;
  12. @Autowired
  13. private UserWebAnalysisRepository userWebAnalysisRepository;
  14. /**
  15. * 每隔110分钟刷新一次access_token和jsapi_ticket
  16. * 7200秒=2小时
  17. */
  18. @Scheduled(fixedRate = 1000 * 7200)
  19. private void getAccessTokenAndJsapiTicket() {
  20. // 1、获取accessToken
  21. String accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + weixinConfig.getAppID() + "&secret=" + weixinConfig.getAppSecret();
  22. RestTemplate restTemplate = new RestTemplate();
  23. String response = restTemplate.getForObject(accessTokenUrl, String.class);
  24. JSONObject jsonObj = JSON.parseObject(response);
  25. String accessToken = jsonObj.getString("access_token");
  26. System.out.println("定时任务获取access_token--->" + accessToken);
  27. WebConst.ACCESS_TOKEN = accessToken; // 缓存accessToken
  28. // 2、根据accessToken获取jsapi_ticket
  29. String ticketURL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + accessToken + "&type=jsapi";
  30. response = restTemplate.getForObject(ticketURL, String.class);
  31. jsonObj = JSON.parseObject(response);
  32. String jsapi_ticket = jsonObj.getString("ticket");
  33. System.out.println("定时任务获取jsapi_ticket--->" + jsapi_ticket);
  34. WebConst.JSAPI_TICKET = jsapi_ticket; // 缓存jsapi_ticket
  35. }
  36. /**
  37. * 每天23点将微信端关注用户增减信息更新进库
  38. */
  39. @Scheduled(cron = "0 0 23 * * ?")
  40. private void getUserSource() {
  41. String url = "https://api.weixin.qq.com/datacube/getusercumulate?access_token=" + WebConst.ACCESS_TOKEN;
  42. RestTemplate restTemplate = new RestTemplate();
  43. String jsonStr = "{ \n" +
  44. " \"begin_date\": \"" + DateUtil.format(new Date(), "yyyy-MM-dd") + "\", \n" +
  45. " \"end_date\": \"" + DateUtil.format(new Date(), "yyyy-MM-dd") + "\"\n" +
  46. "}";
  47. String response = restTemplate.postForObject(url, jsonStr, String.class);
  48. JSONObject jsonObj = JSON.parseObject(response);
  49. String ref_date = jsonObj.getString("ref_date");
  50. String user_source = jsonObj.getString("user_source");
  51. String new_user = jsonObj.getString("new_user");
  52. String cancel_user = jsonObj.getString("cancel_user");
  53. UserWebAnalysis userWebAnalysis = new UserWebAnalysis();
  54. userWebAnalysis.setRefDate(new Date());
  55. userWebAnalysis.setUserSource(Integer.valueOf(user_source));
  56. userWebAnalysis.setNewUser(Integer.valueOf(new_user));
  57. userWebAnalysis.setCancelUser(Integer.valueOf(cancel_user));
  58. userWebAnalysisRepository.save(userWebAnalysis);
  59. }
  60. }

参考链接

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. 【译】5. Java反射——方法

    原文地址:http://tutorials.jenkov.com/java-reflection/methods.html ====================================== ...

  2. linux下静态库和动态库的制作

    一.静态库 1.编写.c文件,在其中实现函数源代码,同时制作头文件 2.将.c文件转为.o文件             gcc -c xxx.c -o xxx.o 3.将*.o转换成库文件     a ...

  3. 彻底删除与安装MySQL

    一.下载msi安装版:https://dev.mysql.com/downloads/mysql/ 二.安装前一定要彻底删除已有的MySQL:(从未安装过,忽略此步) 1.计算机处右键快捷菜单,管理, ...

  4. Ubuntu下载报错“文件尺寸不符”

    最近学习openfoam,安装双系统后,根据官网进行安装openfoam,在文件的下载中会出现: “文件尺寸不符” 这个错误是因为网络不好造成的,或是请求的网站无回应. 解决的办法手机打开4G,打开热 ...

  5. (链表 双指针) leetcode 142. Linked List Cycle II

    Given a linked list, return the node where the cycle begins. If there is no cycle, return null. To r ...

  6. Vue(基础六)_嵌套路由(续)

    一.前言                  1.路由嵌套里面的公共路由                  2.keep-alive路由缓存                  3.导航守卫 二.主要内容 ...

  7. JS(基础)_总结获取页面中元素和节点的方式

    一.前言 1.元素和节点的区别 2.总结获取元素的方式 3.总结获取节点的方式 二.主要内容 1.结点和元素的区别 (1)一些常见基本概念: 文档:document 元素:页面中所有的标签 结点:页面 ...

  8. Harbor作为Docker的镜像中心

    转载于网络 我们采用Harbor作为Docker的镜像中心. 有几个原因: Harbor采用Docker Compose拉起维护,简单方便. 采用Nginx作为入口网关,各种参数配置相对熟悉. 基于N ...

  9. vbox的桥接网络

    直接连接到了外网上,宿主机可以访问虚拟机,但是虚拟机不可以访问宿主机.缺点:宿主机没有网络时,将不能ping通. 宿主机:win10 网络:无线 虚拟机系统:centos6.5 vbox版本:6.0. ...

  10. Http如何利用304让浏览器去更新数据

    ETag 是 Entity Tag 的缩写,中文译过来就是实体标签的意思.在HTTP1.1协议中其实就是请求HEAD中的一个属性而已. HTTP/1.1 200 OK Date: Mon, 23 Ma ...