package com.ydd.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.sankuai.meituan.shangou.open.sdk.domain.OAuthTokenParam; import com.ydd.api.ElemeApi; import com.ydd.module.domain.ShopWaimai; import com.ydd.module.enums.BindStatusEnum; import com.ydd.module.enums.IsDeleteEnum; import com.ydd.module.mapper.ShopWaimaiMapper; import com.ydd.module.service.IShopWaimaiService; import com.ydd.third.common.config.WaimaiConfig; import com.ydd.third.common.request.MtSgAuthRequest; import com.ydd.third.common.vo.ResObject; import com.ydd.third.common.vo.waimai.eleme.oauth.response.Token; import lombok.SneakyThrows; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Date; import java.util.List; /** * 商家外卖平台Service业务层处理 * * @author douya * @date 2021-02-01 */ @Service public class ShopWaimaiServiceImpl extends ServiceImpl { @Resource private ElemeApi elemeAuthClient; @Resource private WaimaiConfig waimaiConfig; public void elemeTask() { try { log.debug("饿了么刷新token任务执行"); List list = baseMapper.selectShopWaimai(); if (list != null && list.size() > 0) { for (ShopWaimai waimai : list) { ResObject resObject = elemeAuthClient.doRefreshToken(waimai.getRefreshToken()); if (resObject.getCode()==0) { waimai.setExpiresIn(resObject.getData().getExpiresIn()); waimai.setRefreshToken(resObject.getData().getRefreshToken()); waimai.setAuthToken(resObject.getData().getAccessToken()); waimai.setCreateTime(new Date()); baseMapper.updateById(waimai); } } } } catch (Exception e) { log.error("饿了么刷新token定时任务出现异常", e); e.printStackTrace(); } } @SneakyThrows public void refreshSgToken() { List list = baseMapper.selectList(new QueryWrapper() .eq("waimai_id", 14) .eq("deleted", IsDeleteEnum.NORMAL.status) .eq("bind_status", BindStatusEnum.BIND.status) .isNotNull("refresh_token")); /** * token 提前1天刷新 */ if(CollectionUtils.isNotEmpty(list)){ for(ShopWaimai shopWaimai :list){ if(shopWaimai.getUpdateTime().getTime()/1000-shopWaimai.getExpiresIn()<86400){ OAuthTokenParam tokenParam = MtSgAuthRequest.refreshOauthToken(waimaiConfig.getMeituansgAppid(), waimaiConfig.getMeituansgAppScert(), shopWaimai.getRefreshToken()); shopWaimai.setAuthToken(tokenParam.getAccess_token()); shopWaimai.setRefreshToken(tokenParam.getRefresh_token()); shopWaimai.setExpiresIn(tokenParam.getExpires_in()); baseMapper.updateById(shopWaimai); } } } } }