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.dingding.DingDingNotice;
|
import com.doumee.core.exception.BusinessException;
|
import com.doumee.core.mqtt.config.MqttClientInit;
|
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.business.model.Sites;
|
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
|
*/
|
@Scheduled(cron = "0 0 10 * * ? ")
|
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/15 * * * * ? ")
|
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("=====================结束 站点车辆满架率预警=======================");
|
}
|
/**
|
* 检查通信异常的站点发通知
|
* @throws Exception
|
*/
|
@Scheduled(fixedDelay = 1000L * 60L * 5)
|
public void noticeNoLinkList() throws Exception {
|
log.info("=====================开始 检查通信异常的站点发通知=======================");
|
sitesService.noticeNoLinkList(new Sites());;
|
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.get(url,false);
|
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 * 90L)
|
public void updAccessDingdingToken() throws Exception {
|
DefaultWebSecurityManager manager = new DefaultWebSecurityManager();
|
ThreadContext.bind(manager);
|
String token = DingDingNotice.getToken(systemDictDataBiz.queryByCode(Constants.DINGDING,Constants.DINGDING_APPKEY).getCode()
|
,systemDictDataBiz.queryByCode(Constants.DINGDING,Constants.DINGDING_SECRET).getCode());
|
if(StringUtils.isNotBlank(token)){
|
SystemDictData systemDictData = systemDictDataBiz.queryByCode(Constants.DINGDING,Constants.DINGDING_TOKEN);
|
if(!Objects.isNull(systemDictData)){
|
systemDictData.setCode(token);
|
systemDictData.setUpdateTime(new Date());
|
systemDictDataService.updateById(systemDictData);
|
}
|
}
|
}
|
/**
|
* 更新微信 ACCESS_TOKEN
|
*/
|
@Scheduled(fixedDelay = 1000L * 60L )
|
public void autoCancelRefunOrder(){
|
log.info("=====================开始 自動取消未推送退款状态的退款单状态=======================");
|
goodsorderService.autoCancelRefunOrder();;
|
log.info("=====================结束 自動取消未推送退款状态的退款单状态=======================");
|
}
|
|
|
@Scheduled(fixedDelay = 1000L * 60L )
|
public void autCancelGoodsOrder(){
|
log.info("=====================开始 自動取消未支付订单状态=======================");
|
goodsorderService.autoCancelRefunOrder();;
|
log.info("=====================结束 自動取消未支付订单状态=======================");
|
}
|
|
|
}
|