package com.kmall.api.service; import com.google.common.collect.Maps; import com.kmall.api.cache.UserTokenCache; import com.kmall.api.entity.TokenEntity; import com.kmall.common.utils.CharUtil; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import java.util.Date; import java.util.HashMap; import java.util.Map; @Service public class TokenService { //12小时后过期 private final static int EXPIRE = 3600 * 12; public Map createAndUpdateToken(String openId, Long storeId, Long userId,String merchSn) { //生成一个token String token = CharUtil.getRandomString(32); //当前时间 Date now = new Date(); //过期时间 Date expireTime = new Date(now.getTime() + EXPIRE * 1000); //判断是否生成过token // TokenEntity tokenEntity = queryByUserId(userId); TokenEntity tokenEntity = UserTokenCache.getUserTokenByUserId(userId); if (tokenEntity == null) { tokenEntity = new TokenEntity(); tokenEntity.setUserId(userId); tokenEntity.setOpenId(openId); tokenEntity.setToken(token); tokenEntity.setUpdateTime(now); tokenEntity.setExpireTime(expireTime); tokenEntity.setStoreId(storeId); if(StringUtils.isNotEmpty(merchSn)) { tokenEntity.setMerchSn(merchSn); } //保存token // save(tokenEntity); UserTokenCache.putUserToken(tokenEntity); } else { token = tokenEntity.getToken(); // tokenEntity.setToken(token); tokenEntity.setUpdateTime(now); tokenEntity.setExpireTime(expireTime); if (null != storeId) { tokenEntity.setStoreId(storeId); } if(StringUtils.isNotEmpty(merchSn)) { tokenEntity.setMerchSn(merchSn); } //更新token // update(tokenEntity); UserTokenCache.putUserToken(tokenEntity); } Map map = Maps.newHashMap(); map.put("token", token); map.put("expire", EXPIRE); return map; } }