Sfoglia il codice sorgente

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

release_toaliyun_real
Stormeye Wu 7 anni fa
parent
commit
4dc7f1629e
7 ha cambiato i file con 70 aggiunte e 21 eliminazioni
  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 Vedi File

@@ -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<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 Vedi File

@@ -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);


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

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

@Autowired
private WxCUserMapper wxCUserMapper;

@Autowired
private WxCouponSendMapper wxCouponSendMapper;



+ 4
- 5
mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java Vedi 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())
{
//生成一个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 Vedi File

@@ -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<String, WxCUser> cUserTokenRedisTemplate;


@Override
public PageInfo<WxCUser> 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<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
@@ -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;
}


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

@@ -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());



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

@@ -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. 记录历史


Caricamento…
Annulla
Salva