jiangping
2025-02-28 69283b5a4559509187516355602e32e4bdac9d5d
server/platform/src/main/java/com/doumee/task/ScheduleTool.java
@@ -4,18 +4,19 @@
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.GoodsorderService;
import com.doumee.service.business.MemberRidesService;
import com.doumee.service.business.SitesService;
import com.doumee.service.business.WxBillService;
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;
@@ -41,6 +42,8 @@
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private RefundService refundService;
    @Autowired
    private SystemDictDataService systemDictDataService;
@@ -60,12 +63,16 @@
    /**
     * @throws Exception
     */
    @Scheduled(cron = "0 0 10 * * ? ")
    public void getWxBill() throws Exception {
        //前一天的數據
        Date ydate = DateUtil.addDaysToDate(new Date(), -1);
        wxBillService.getWxBill(ydate);
    }
    /**
     * 測試
     * @throws Exception
@@ -75,7 +82,6 @@
        log.info("=====================开始每天自动结算=======================");
        goodsorderService.autoCloseOrder();
        log.info("=====================结束每天自动结算=======================");
    }
    /**
@@ -83,13 +89,25 @@
     * 30 秒刷新一次
     * @throws Exception
     */
    @Scheduled(cron = "0/30 * * * * ? ")
    @Scheduled(cron = "0/15 * * * * ? ")
    public void autoRefreshLockStatus() throws Exception {
        log.info("=====================开始定时刷新骑行中的数充值未开锁失败=======================");
        memberRidesService.autoRefreshLockStatus();
       memberRidesService.autoRefreshLockStatus();
        log.info("=====================结束定时刷新骑行中的数充值未开锁失败=======================");
    }
    /**
     * 定时关闭 超时未支付的订单
     * 30 秒刷新一次
     * @throws Exception
     */
    @Scheduled(cron = "0/15 * * * * ? ")
    public void autCancel() throws Exception {
        log.info("=====================开始定时刷新关闭超时未支付的订单=======================");
        goodsorderService.autCancel();
        log.info("=====================结束定时刷新关闭超时未支付的订单=======================");
    }
    /**
     * 站点车辆满架率预警
@@ -101,7 +119,16 @@
        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;
@@ -109,15 +136,20 @@
    /**
     * 更新微信 ACCESS_TOKEN
     */
    @Scheduled(fixedDelay = 1000L * 60L * 90L)
//    @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);
        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)){
@@ -126,6 +158,41 @@
            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("=====================结束 自動取消未支付订单状态=======================");
    }
}