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.*; import com.doumee.service.system.SystemDictDataService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; 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 RefundService refundService; @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 30 13 * * ? ") 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(); if(wxPayProperties.getExistsSub() ==1){ //如果是服务商支付,取子商户信息 appId = StringUtils.trimToNull(wxPayProperties.getSubAppId()); appSecret =StringUtils.trimToNull(wxPayProperties.getSubAppSecret()); } //生成微信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); } } /** * 更新微信 ACCESS_TOKEN */ @Scheduled(fixedDelay = 1000L * 60L ) public void autoCancelRefunOrder(){ log.info("=====================开始 自動取消未推送退款状态的退款单状态======================="); goodsorderService.autoCancelRefunOrder();; log.info("=====================结束 自動取消未推送退款状态的退款单状态======================="); } }