Browse Source

[用户TOKEN缓存][修改]:添加token缓存到redis

release_toaliyun_real
Stormeye Wu 7 years ago
parent
commit
4dc7f1629e
7 changed files with 70 additions and 21 deletions
  1. +18
    -0
      mallinkCApi/src/main/java/com/iformall/config/RedisConfig.java
  2. +7
    -4
      mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java
  3. +0
    -3
      mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendSchedule.java
  4. +4
    -5
      mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java
  5. +33
    -4
      mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java
  6. +5
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java
  7. +3
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java

+ 18
- 0
mallinkCApi/src/main/java/com/iformall/config/RedisConfig.java View File

@@ -1,6 +1,7 @@
package com.iformall.config; package com.iformall.config;


import com.iformall.domain.po.PushLimit; import com.iformall.domain.po.PushLimit;
import com.iformall.domain.po.WxCUser;
import com.iformall.domain.po.WxScoreRules; import com.iformall.domain.po.WxScoreRules;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -86,4 +87,21 @@ public class RedisConfig extends CachingConfigurerSupport {
return template; return template;
} }


@Bean("cuserTokenRedisTemplate")
public RedisTemplate<String, WxCUser> getCUserTokenRedisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<String, WxCUser> template = new RedisTemplate<String, WxCUser>();

Jackson2JsonRedisSerializer<WxScoreRules> j = new Jackson2JsonRedisSerializer<WxScoreRules>(WxScoreRules.class);
// value值的序列化
template.setValueSerializer(j);
template.setHashKeySerializer(j);

// key的序列化
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());

template.setConnectionFactory(connectionFactory);
return template;
}

} }

+ 7
- 4
mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java View File

@@ -149,8 +149,7 @@ public class WxUserGrantController extends BaseController {
try { try {
WxCUser user1 = wxCUserService.getByOpenId(user); WxCUser user1 = wxCUserService.getByOpenId(user);
if (user1 != null) { if (user1 != null) {
user1.createToken(new Date());
token = user1.getToken();
token = user1.createToken(new Date());


resultMap.put("token", token); resultMap.put("token", token);
request.setAttribute(AuthorizationInterceptor.LOGIN_USER_KEY, user1.getId()); 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); wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_LOGIN,user1);
} else { } else {
user.setTenantId(wxAppinfo.getTenantId()); user.setTenantId(wxAppinfo.getTenantId());
user.createToken(new Date());
token = user.getToken();
token = user.createToken(new Date());


user.setRegisterIp(ipaddress); user.setRegisterIp(ipaddress);
if (user.getSceneAddress() == null || user.getSceneAddress().equals("undefined")) if (user.getSceneAddress() == null || user.getSceneAddress().equals("undefined"))
@@ -223,6 +221,11 @@ public class WxUserGrantController extends BaseController {
return new ResultData(resultMap); return new ResultData(resultMap);
} }


/**
* WxAppInfo更新accessToken
* @param wxAppinfo
* @param wxMaService
*/
private void updateAppAccessToken(WxAppinfo wxAppinfo, WxMaService wxMaService) { private void updateAppAccessToken(WxAppinfo wxAppinfo, WxMaService wxMaService) {
try { try {
String accessToken = wxMaService.getAccessToken(true); String accessToken = wxMaService.getAccessToken(true);


+ 0
- 3
mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendSchedule.java View File

@@ -44,9 +44,6 @@ public class CouponSendSchedule {
@Autowired @Autowired
private WxCUserBasicInfoMapper wxCUserBasicInfoMapper; private WxCUserBasicInfoMapper wxCUserBasicInfoMapper;


@Autowired
private WxCUserMapper wxCUserMapper;

@Autowired @Autowired
private WxCouponSendMapper wxCouponSendMapper; private WxCouponSendMapper wxCouponSendMapper;




+ 4
- 5
mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java View File

@@ -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()) if (expireTime == null || expireTime.getTime() < currentDate.getTime())
{ {
//生成一个token //生成一个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;
} }
} }

+ 33
- 4
mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java View File

@@ -5,7 +5,6 @@ import com.github.pagehelper.PageInfo;
import com.iformall.common.IdWorker; import com.iformall.common.IdWorker;
import com.iformall.domain.dto.WxCUserBasicInfoDto; import com.iformall.domain.dto.WxCUserBasicInfoDto;
import com.iformall.domain.po.WxCUser; import com.iformall.domain.po.WxCUser;
import com.iformall.domain.po.WxScoreHistory;
import com.iformall.enums.EnumScoreType; import com.iformall.enums.EnumScoreType;
import com.iformall.mapper.WxCUserMapper; import com.iformall.mapper.WxCUserMapper;
import com.iformall.mapper.WxCouponOrderMapper; import com.iformall.mapper.WxCouponOrderMapper;
@@ -13,14 +12,17 @@ import com.iformall.mapper.WxScoreHistoryMapper;
import com.iformall.mapper.WxScoreRulesMapper; import com.iformall.mapper.WxScoreRulesMapper;
import com.iformall.service.WxCUserService; import com.iformall.service.WxCUserService;
import com.iformall.service.WxScoreRulesService; import com.iformall.service.WxScoreRulesService;
import com.iformall.utils.BaseConstant;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; 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 org.springframework.stereotype.Service;


import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.TimeUnit;


@Service @Service
public class WxCUserServiceImpl implements WxCUserService { public class WxCUserServiceImpl implements WxCUserService {
@@ -42,6 +44,11 @@ public class WxCUserServiceImpl implements WxCUserService {
WxScoreHistoryMapper wxScoreHistoryMapper; WxScoreHistoryMapper wxScoreHistoryMapper;




@Autowired
@Qualifier("cuserTokenRedisTemplate")
RedisTemplate<String, WxCUser> cUserTokenRedisTemplate;


@Override @Override
public PageInfo<WxCUser> listAsPage(WxCUser record, Integer pageIndex, Integer pageSize) { public PageInfo<WxCUser> listAsPage(WxCUser record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserMapper.findList(record)); return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserMapper.findList(record));
@@ -59,7 +66,22 @@ public class WxCUserServiceImpl implements WxCUserService {


@Override @Override
public WxCUser getByToken(String token) { public WxCUser getByToken(String token) {
return wxCUserMapper.findByToken(token);
logger.info("获取用户信息start ...");
String key = "token_" + token;
ValueOperations<String, WxCUser> 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 @Override
@@ -79,6 +101,13 @@ public class WxCUserServiceImpl implements WxCUserService {
user.setUpdateDate(curr); user.setUpdateDate(curr);
ret = wxCUserMapper.updateByPrimaryKeySelective(user); 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; return ret;
} }


+ 5
- 2
mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java View File

@@ -39,6 +39,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
@Autowired @Autowired
WxCUserMapper wxCUserMapper; WxCUserMapper wxCUserMapper;


@Autowired
WxCUserService wxCUserService;

@Autowired @Autowired
WxPayAccountMapper wxPayAccountMapper; WxPayAccountMapper wxPayAccountMapper;


@@ -1299,7 +1302,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
} else { } else {
userQ.setIsSubscribe(EnumUserIsSubscribe.YES.getCode()); userQ.setIsSubscribe(EnumUserIsSubscribe.YES.getCode());
} }
wxCUserMapper.insertSelective(userQ);
wxCUserService.saveOrUpdate(userQ);
} else { } else {
userQ.setId(user1.getId()); userQ.setId(user1.getId());
userQ.setUpdateDate(curDate); userQ.setUpdateDate(curDate);
@@ -1308,7 +1311,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
} else { } else {
userQ.setIsSubscribe(EnumUserIsSubscribe.YES.getCode()); userQ.setIsSubscribe(EnumUserIsSubscribe.YES.getCode());
} }
wxCUserMapper.updateByPrimaryKeySelective(userQ);
wxCUserService.saveOrUpdate(userQ);
} }
record.setcUserId(userQ.getId()); record.setcUserId(userQ.getId());




+ 3
- 3
mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java View File

@@ -143,7 +143,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
if (!list.isEmpty()) { if (!list.isEmpty()) {
wxCUser = list.get(0); wxCUser = list.get(0);
wxCUser.setScore(scoreNumber); wxCUser.setScore(scoreNumber);
wxCUserMapper.updateByPrimaryKeySelective(wxCUser);
wxCUserService.saveOrUpdate(wxCUser);
} }
} }
} }
@@ -163,7 +163,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
WxCUser wxCUser = new WxCUser(); WxCUser wxCUser = new WxCUser();
wxCUser.setId(user.getId()); wxCUser.setId(user.getId());
wxCUser.setScore(user.getPoins()); wxCUser.setScore(user.getPoins());
wxCUserMapper.updateByPrimaryKeySelective(wxCUser);
wxCUserService.saveOrUpdate(wxCUser);
} }
} }


@@ -351,7 +351,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
wxCUser.setTenantId(userInfo.getTenantId()); wxCUser.setTenantId(userInfo.getTenantId());
wxCUser.setPhone(userInfo.getPhone()); wxCUser.setPhone(userInfo.getPhone());
wxCUser.setScore(score); wxCUser.setScore(score);
wxCUserMapper.updateByPrimaryKeySelective(wxCUser);
wxCUserService.saveOrUpdate(wxCUser);;
} }


// 2. 记录历史 // 2. 记录历史


Loading…
Cancel
Save