diff --git a/mallinkCApi/src/main/java/com/iformall/config/RedisConfig.java b/mallinkCApi/src/main/java/com/iformall/config/RedisConfig.java index f02a38fb8..6d41807b9 100644 --- a/mallinkCApi/src/main/java/com/iformall/config/RedisConfig.java +++ b/mallinkCApi/src/main/java/com/iformall/config/RedisConfig.java @@ -1,6 +1,7 @@ package com.iformall.config; import com.iformall.domain.po.PushLimit; +import com.iformall.domain.po.WxCUser; import com.iformall.domain.po.WxScoreRules; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -86,4 +87,21 @@ public class RedisConfig extends CachingConfigurerSupport { return template; } + @Bean("cuserTokenRedisTemplate") + public RedisTemplate getCUserTokenRedisTemplate(RedisConnectionFactory connectionFactory) { + RedisTemplate template = new RedisTemplate(); + + Jackson2JsonRedisSerializer j = new Jackson2JsonRedisSerializer(WxScoreRules.class); + // value值的序列化 + template.setValueSerializer(j); + template.setHashKeySerializer(j); + + // key的序列化 + template.setKeySerializer(new StringRedisSerializer()); + template.setHashKeySerializer(new StringRedisSerializer()); + + template.setConnectionFactory(connectionFactory); + return template; + } + } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java index 7fc09c679..56b65a217 100755 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java @@ -149,8 +149,7 @@ public class WxUserGrantController extends BaseController { try { WxCUser user1 = wxCUserService.getByOpenId(user); if (user1 != null) { - user1.createToken(new Date()); - token = user1.getToken(); + token = user1.createToken(new Date()); resultMap.put("token", token); request.setAttribute(AuthorizationInterceptor.LOGIN_USER_KEY, user1.getId()); @@ -181,8 +180,7 @@ public class WxUserGrantController extends BaseController { wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_LOGIN,user1); } else { user.setTenantId(wxAppinfo.getTenantId()); - user.createToken(new Date()); - token = user.getToken(); + token = user.createToken(new Date()); user.setRegisterIp(ipaddress); if (user.getSceneAddress() == null || user.getSceneAddress().equals("undefined")) @@ -223,6 +221,11 @@ public class WxUserGrantController extends BaseController { return new ResultData(resultMap); } + /** + * WxAppInfo更新accessToken + * @param wxAppinfo + * @param wxMaService + */ private void updateAppAccessToken(WxAppinfo wxAppinfo, WxMaService wxMaService) { try { String accessToken = wxMaService.getAccessToken(true); diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendSchedule.java index c0d26537a..f3bbbc16e 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendSchedule.java @@ -44,9 +44,6 @@ public class CouponSendSchedule { @Autowired private WxCUserBasicInfoMapper wxCUserBasicInfoMapper; - @Autowired - private WxCUserMapper wxCUserMapper; - @Autowired private WxCouponSendMapper wxCouponSendMapper; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java index 9ce05a2cd..debcf16e0 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java @@ -461,15 +461,14 @@ public class WxCUser implements Serializable { } } - public void createToken(Date currentDate) { + public String createToken(Date currentDate) { if (expireTime == null || expireTime.getTime() < currentDate.getTime()) { //生成一个token - String token = UUID.randomUUID().toString(); + this.token = UUID.randomUUID().toString(); //过期时间 - Date expireTime = new Date(currentDate.getTime() + BaseConstant.EXPIRE * 1000); - setToken(token); - setExpireTime(expireTime); + this.expireTime = new Date(currentDate.getTime() + BaseConstant.EXPIRE * 1000); } + return this.token; } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java index 789ccc1e8..9056ffd0f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java @@ -5,7 +5,6 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.IdWorker; import com.iformall.domain.dto.WxCUserBasicInfoDto; import com.iformall.domain.po.WxCUser; -import com.iformall.domain.po.WxScoreHistory; import com.iformall.enums.EnumScoreType; import com.iformall.mapper.WxCUserMapper; import com.iformall.mapper.WxCouponOrderMapper; @@ -13,14 +12,17 @@ import com.iformall.mapper.WxScoreHistoryMapper; import com.iformall.mapper.WxScoreRulesMapper; import com.iformall.service.WxCUserService; import com.iformall.service.WxScoreRulesService; +import com.iformall.utils.BaseConstant; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; import java.util.Date; -import java.util.HashMap; -import java.util.List; +import java.util.concurrent.TimeUnit; @Service public class WxCUserServiceImpl implements WxCUserService { @@ -42,6 +44,11 @@ public class WxCUserServiceImpl implements WxCUserService { WxScoreHistoryMapper wxScoreHistoryMapper; + @Autowired + @Qualifier("cuserTokenRedisTemplate") + RedisTemplate cUserTokenRedisTemplate; + + @Override public PageInfo listAsPage(WxCUser record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserMapper.findList(record)); @@ -59,7 +66,22 @@ public class WxCUserServiceImpl implements WxCUserService { @Override public WxCUser getByToken(String token) { - return wxCUserMapper.findByToken(token); + logger.info("获取用户信息start ..."); + String key = "token_" + token; + ValueOperations operations = cUserTokenRedisTemplate.opsForValue(); + + // 缓存 + boolean hasKey = cUserTokenRedisTemplate.hasKey(key); + if(hasKey) { + // 从缓存获取用户信息 + WxCUser user = operations.get(key); + return user; + } + WxCUser user = wxCUserMapper.findByToken(token); + // 插入缓存 + operations.set(key, user, BaseConstant.EXPIRE, TimeUnit.SECONDS); + + return user; } @Override @@ -79,6 +101,13 @@ public class WxCUserServiceImpl implements WxCUserService { user.setUpdateDate(curr); ret = wxCUserMapper.updateByPrimaryKeySelective(user); } + String key = "token_" + user.getToken(); + // 缓存已存在,删除 + boolean hasKey = cUserTokenRedisTemplate.hasKey(key); + if(hasKey) { + cUserTokenRedisTemplate.delete(key); + logger.info("更新用户,从缓存中删除用户 token >> " + user.getToken()); + } return ret; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 517a33333..0caaa1b4d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -39,6 +39,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { @Autowired WxCUserMapper wxCUserMapper; + @Autowired + WxCUserService wxCUserService; + @Autowired WxPayAccountMapper wxPayAccountMapper; @@ -1299,7 +1302,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } else { userQ.setIsSubscribe(EnumUserIsSubscribe.YES.getCode()); } - wxCUserMapper.insertSelective(userQ); + wxCUserService.saveOrUpdate(userQ); } else { userQ.setId(user1.getId()); userQ.setUpdateDate(curDate); @@ -1308,7 +1311,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } else { userQ.setIsSubscribe(EnumUserIsSubscribe.YES.getCode()); } - wxCUserMapper.updateByPrimaryKeySelective(userQ); + wxCUserService.saveOrUpdate(userQ); } record.setcUserId(userQ.getId()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java index b7155b1e6..d45ae2d04 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java @@ -143,7 +143,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { if (!list.isEmpty()) { wxCUser = list.get(0); wxCUser.setScore(scoreNumber); - wxCUserMapper.updateByPrimaryKeySelective(wxCUser); + wxCUserService.saveOrUpdate(wxCUser); } } } @@ -163,7 +163,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { WxCUser wxCUser = new WxCUser(); wxCUser.setId(user.getId()); wxCUser.setScore(user.getPoins()); - wxCUserMapper.updateByPrimaryKeySelective(wxCUser); + wxCUserService.saveOrUpdate(wxCUser); } } @@ -351,7 +351,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { wxCUser.setTenantId(userInfo.getTenantId()); wxCUser.setPhone(userInfo.getPhone()); wxCUser.setScore(score); - wxCUserMapper.updateByPrimaryKeySelective(wxCUser); + wxCUserService.saveOrUpdate(wxCUser);; } // 2. 记录历史