package com.bcxin.survey.service.wechat; import com.bcxin.survey.dao.report.BaseDao; import com.bcxin.survey.domain.wechat.AccessToken; import com.bcxin.survey.enums.report.BillMsgType; import com.bcxin.survey.utils.GlobalResources; import com.bcxin.survey.utils.StringUtil; import com.bcxin.survey.wechat.utils.WeixinUtil; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.Date; import java.util.List; @Service @Transactional public class AccessTokenServiceImpl implements AccessTokenService { @Autowired private BaseDao baseDao; @Override public boolean saveOrUpdate(AccessToken accessToken){ boolean flag = true; try { if(accessToken != null){ accessToken.setUpdateOn(new Date()); baseDao.saveOrUpdate(accessToken); } } catch(Exception e) { flag = false; } return flag; } @Override public AccessToken getAccessToken(){ AccessToken accessToken = null; List criterions = new ArrayList(); criterions.add(Restrictions.eq("type", BillMsgType.AccessToken)); List tokens = baseDao.findByCriterionForPage(AccessToken.class, criterions, null, Order.desc("updateOn")); if(tokens.size() > 0){ accessToken = tokens.get(0); if((accessToken.getUpdateOn().getTime()+accessToken.getExpiresIn()*1000) criterions = new ArrayList(); criterions.add(Restrictions.eq("type", BillMsgType.JsapiTicket)); List tokens = baseDao.findByCriterionForPage(AccessToken.class, criterions, null, Order.desc("updateOn")); if(tokens.size() > 0){ accessToken = tokens.get(0); if((accessToken.getUpdateOn().getTime()+accessToken.getExpiresIn()*1000)