jiangping
2025-02-19 07ca844b3441a2774a1ca02a952e27e3fe986819
server/platform/src/main/java/com/doumee/task/ScheduleTool.java
@@ -1,16 +1,24 @@
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.service.business.GoodsorderService;
import com.doumee.service.business.MemberRidesService;
import com.doumee.service.business.SitesService;
import com.doumee.service.business.WxBillService;
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;
@@ -19,6 +27,7 @@
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * 定时任务
@@ -31,10 +40,13 @@
@Slf4j
public class ScheduleTool {
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private RefundService refundService;
    @Autowired
    private SystemDictDataService systemDictDataService;
    @Autowired
    private WxBillService wxBillService;
@@ -51,8 +63,8 @@
    /**
     * @throws Exception
     */
//    @Scheduled(cron = "0 0 11 * * ? ")
    public void syncStudent() throws Exception {
    @Scheduled(cron = "0 0 10 * * ? ")
    public void getWxBill() throws Exception {
        //前一天的數據
        Date ydate = DateUtil.addDaysToDate(new Date(), -1);
        wxBillService.getWxBill(ydate);
@@ -67,7 +79,6 @@
        log.info("=====================开始每天自动结算=======================");
        goodsorderService.autoCloseOrder();
        log.info("=====================结束每天自动结算=======================");
    }
    /**
@@ -75,17 +86,11 @@
     * 30 秒刷新一次
     * @throws Exception
     */
//    @Scheduled(cron = "0/30 * * * * ? ")
    @Scheduled(cron = "0/15 * * * * ? ")
    public void autoRefreshLockStatus() throws Exception {
<<<<<<< HEAD
        log.info("=====================开始刷新骑行中的数充值未开锁失败=======================");
        memberRidesService.autoRefreshLockStatus();
        log.info("=====================开始刷新骑行中的数充值未开锁失败=======================");
=======
        log.info("=====================开始定时刷新骑行中的数充值未开锁失败=======================");
        memberRidesService.autoRefreshLockStatus();
       memberRidesService.autoRefreshLockStatus();
        log.info("=====================结束定时刷新骑行中的数充值未开锁失败=======================");
>>>>>>> 50c564c2568e7fb52d8dcbcbebb937a6a8284eeb
    }
@@ -93,15 +98,78 @@
     * 站点车辆满架率预警
     * @throws Exception
     */
<<<<<<< HEAD
    @Scheduled(fixedDelay = 1000L * 60L * 10L)
=======
//    @Scheduled(fixedDelay = 1000L * 60L * 3L)
>>>>>>> 50c564c2568e7fb52d8dcbcbebb937a6a8284eeb
    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("=====================结束 自動取消未推送退款状态的退款单状态=======================");
    }
}