| package com.doumee.task; | 
|   | 
|   | 
| import com.alibaba.fastjson.JSONObject; | 
| import com.doumee.biz.system.SystemDictDataBiz; | 
| import com.doumee.core.constants.Constants; | 
| import com.doumee.core.exception.BusinessException; | 
| import com.doumee.core.utils.DateUtil; | 
| import com.doumee.core.utils.HttpsUtil; | 
| import com.doumee.core.wx.WxPayProperties; | 
| import com.doumee.dao.business.model.Goodsorder; | 
| import com.doumee.dao.system.model.SystemDictData; | 
| import com.doumee.service.business.GoodsorderService; | 
| import com.doumee.service.business.MemberRidesService; | 
| import com.doumee.service.business.SitesService; | 
| import com.doumee.service.business.WxBillService; | 
| import com.doumee.service.system.SystemDictDataService; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.apache.shiro.util.ThreadContext; | 
| import org.apache.shiro.web.mgt.DefaultWebSecurityManager; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.scheduling.annotation.EnableScheduling; | 
| import org.springframework.scheduling.annotation.Scheduled; | 
| import org.springframework.stereotype.Component; | 
| import org.springframework.util.CollectionUtils; | 
|   | 
| import java.util.Date; | 
| import java.util.List; | 
| import java.util.Objects; | 
|   | 
| /** | 
|  * 定时任务 | 
|  * @author jiangping | 
|  * @date 2021-10-10 14:40:35 | 
|  * https://www.bejson.com/othertools/cron/  cron 表达式生成地址 | 
|  */ | 
| @Component | 
| @EnableScheduling | 
| @Slf4j | 
| public class ScheduleTool { | 
|   | 
|     @Autowired | 
|     private SystemDictDataBiz systemDictDataBiz; | 
|   | 
|     @Autowired | 
|     private SystemDictDataService systemDictDataService; | 
|   | 
|     @Autowired | 
|     private WxBillService wxBillService; | 
|   | 
|     @Autowired | 
|     private GoodsorderService goodsorderService; | 
|   | 
|     @Autowired | 
|     private MemberRidesService memberRidesService; | 
|   | 
|     @Autowired | 
|     private SitesService sitesService; | 
|   | 
|     /** | 
|      * @throws Exception | 
|      */ | 
|     public void getWxBill() throws Exception { | 
|         //前一天的數據 | 
|         Date ydate = DateUtil.addDaysToDate(new Date(), -1); | 
|         wxBillService.getWxBill(ydate); | 
|   | 
|     } | 
|     /** | 
|      * 測試 | 
|      * @throws Exception | 
|      */ | 
|     @Scheduled(cron = "0 0 21 * * ? ") | 
|     public void getYesterdayBill() throws Exception { | 
|         log.info("=====================开始每天自动结算======================="); | 
|         goodsorderService.autoCloseOrder(); | 
|         log.info("=====================结束每天自动结算======================="); | 
|   | 
|     } | 
|   | 
|     /** | 
|      * 定时刷新骑行中的数充值未开锁失败 | 
|      * 30 秒刷新一次 | 
|      * @throws Exception | 
|      */ | 
|     @Scheduled(cron = "0/30 * * * * ? ") | 
|     public void autoRefreshLockStatus() throws Exception { | 
|         log.info("=====================开始定时刷新骑行中的数充值未开锁失败======================="); | 
|         memberRidesService.autoRefreshLockStatus(); | 
|         log.info("=====================结束定时刷新骑行中的数充值未开锁失败======================="); | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 站点车辆满架率预警 | 
|      * @throws Exception | 
|      */ | 
|     @Scheduled(fixedDelay = 1000L * 60L * 10L) | 
|     public void siteReserves() throws Exception { | 
|         log.info("=====================开始 站点车辆满架率预警======================="); | 
|         sitesService.siteReservesNotice();; | 
|         log.info("=====================结束 站点车辆满架率预警======================="); | 
|     } | 
|   | 
|   | 
|     @Autowired | 
|     private WxPayProperties wxPayProperties; | 
|   | 
|     /** | 
|      * 更新微信 ACCESS_TOKEN | 
|      */ | 
|     @Scheduled(fixedDelay = 1000L * 60L * 90L) | 
|     public void updAccessToken(){ | 
|         DefaultWebSecurityManager manager = new DefaultWebSecurityManager(); | 
|         ThreadContext.bind(manager); | 
|         String appId = wxPayProperties.getAppId(); | 
|         String appSecret = wxPayProperties.getAppSecret(); | 
|         //生成微信token | 
|         String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appId+"&secret="+appSecret; | 
|         String response = HttpsUtil.doGet(url,null); | 
|         JSONObject json = JSONObject.parseObject(response); | 
|         SystemDictData systemDictData = systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.ACCESS_TOKEN); | 
|         if(!Objects.isNull(systemDictData)){ | 
|             systemDictData.setCode(json.getString("access_token")); | 
|             systemDictData.setUpdateTime(new Date()); | 
|             systemDictDataService.updateById(systemDictData); | 
|         } | 
|     } | 
|   | 
|   | 
| } |