Просмотр исходного кода

fix wxcuser cache

release_toaliyun_real
xiaohanzi 5 лет назад
Родитель
Сommit
c0c57b53bd
6 измененных файлов: 67 добавлений и 25 удалений
  1. +8
    -0
      mallinkCApi/src/main/java/com/iformall/controller/BaseController.java
  2. +16
    -14
      mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java
  3. +2
    -0
      mallinkService/src/main/java/com/iformall/service/CUserTokenService.java
  4. +3
    -1
      mallinkService/src/main/java/com/iformall/service/cuser/CUserServiceApapter.java
  5. +13
    -3
      mallinkService/src/main/java/com/iformall/service/cuser/wx/WxCUserServiceAdapter.java
  6. +25
    -7
      mallinkService/src/main/java/com/iformall/service/impl/CUserTokenServiceImpl.java

+ 8
- 0
mallinkCApi/src/main/java/com/iformall/controller/BaseController.java Просмотреть файл

@@ -14,6 +14,7 @@ import com.iformall.service.CUserTokenService;
import com.iformall.service.WxAppinfoService;
import com.iformall.service.WxCUserBasicInfoService;
import com.iformall.service.WxCUserService;
import com.iformall.service.cuser.CUserServiceFactory;
import com.iformall.service.wechat.FmOpenService;
import com.iformall.utils.Constant;
import com.iformall.utils.IPUtil;
@@ -56,6 +57,9 @@ public class BaseController {
@Autowired
private CUserTokenService cUserTokenService;
@Autowired
private CUserServiceFactory cuserFactory;
@Autowired
@Qualifier("cUserBasicInfoRedisTemplate")
RedisTemplate<String, WxCUserBasicInfo> cuserBasicInfoTemplate;
@@ -147,6 +151,10 @@ public class BaseController {
cUserTokenService.removeTokenCache(baseuser.getToken());
}
public void updateCacheCUser(String token,Object cuser) {
cUserTokenService.updateTokenCache(token, cuser);
}
private WxCUserBasicInfo getCacheMember(Long memberId,String key,long seconds) throws Exception {
ValueOperations<String, WxCUserBasicInfo> operations = cuserBasicInfoTemplate.opsForValue();
WxCUserBasicInfo member;


+ 16
- 14
mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java Просмотреть файл

@@ -173,7 +173,7 @@ public class WxUserGrantController extends BaseController {
return new ResultData(ErrorCode.APP_ID_NOT_ENABLE);
}

wxAppinfo = wxAppinfoService.getByAppIdFromRedis(appId);
wxAppinfo = wxAppinfoService.getByAppId(appId);
if(wxAppinfo == null){
return new ResultData(ErrorCode.APP_ID_NOT_FOUND);
}
@@ -239,9 +239,9 @@ public class WxUserGrantController extends BaseController {
session_key = session.getSessionKey();
openId = session.getOpenid();
unionId = session.getUnionid();
if (StringUtils.isNotBlank(unionId)) {
boolHaveUnionId = true;
}
// if (StringUtils.isNotBlank(unionId)) {
// boolHaveUnionId = true;
// }

logger.info("session_key: " + session_key + ", openId: " + openId + ", unionId: " + unionId);
resultMap.put("openId", openId);
@@ -262,16 +262,16 @@ public class WxUserGrantController extends BaseController {
}

WxCUser oldUser = null;
if (boolHaveUnionId) {
// 优先根据unionId查询
WxCUser userQ = new WxCUser();
userQ.updateTenantInfo(wxMall.getTenantInfo());
userQ.setUnionId(unionId);
oldUser = wxCUserService.getByObject(userQ);
if(oldUser != null) {
boolFindByUnionId = true;
}
}
// if (boolHaveUnionId) {
// // 优先根据unionId查询
// WxCUser userQ = new WxCUser();
// userQ.updateTenantInfo(wxMall.getTenantInfo());
// userQ.setUnionId(unionId);
// oldUser = wxCUserService.getByObject(userQ);
// if(oldUser != null) {
// boolFindByUnionId = true;
// }
// }
if (oldUser == null) {
oldUser = wxCUserService.getByOpenId(newUser);
}
@@ -349,6 +349,7 @@ public class WxUserGrantController extends BaseController {

// 登录后处理
int score = wxCUserService.actionAfterLogin(oldUser, boolFindByUnionId);
updateCacheCUser(token, oldUser);
resultMap.put("score", score);
} else {
// 新用户
@@ -403,6 +404,7 @@ public class WxUserGrantController extends BaseController {
// 登录后处理
int score = wxCUserService.actionAfterLogin(newUser, null);
resultMap.put("score", score);
updateCacheCUser(token, newUser);
}
return new ResultData(resultMap);
}


+ 2
- 0
mallinkService/src/main/java/com/iformall/service/CUserTokenService.java Просмотреть файл

@@ -14,4 +14,6 @@ public interface CUserTokenService {
void removeTokenCache(String token);
void updateTokenCache(String token,Object updateCuser);
}

+ 3
- 1
mallinkService/src/main/java/com/iformall/service/cuser/CUserServiceApapter.java Просмотреть файл

@@ -8,5 +8,7 @@ import com.iformall.domain.po.base.BaseCUserEntity;
*/
public interface CUserServiceApapter {

public BaseCUserEntity getToken(String token);
public BaseCUserEntity getByToken(String token);
public BaseCUserEntity getByObj(Object cuser);
}

+ 13
- 3
mallinkService/src/main/java/com/iformall/service/cuser/wx/WxCUserServiceAdapter.java Просмотреть файл

@@ -18,9 +18,7 @@ public class WxCUserServiceAdapter implements CUserServiceApapter{
@Autowired
WxCUserMapper wxCUserMapper;
@Override
public BaseCUserEntity getToken(String token) {
WxCUser wxCUser = wxCUserMapper.findByToken(token);
private BaseCUserEntity generateBaseEntity(WxCUser wxCUser) {
BaseCUserEntity entity = new BaseCUserEntity();
entity.setId(wxCUser.getId());
entity.setExpireTime(wxCUser.getExpireTime());
@@ -29,5 +27,17 @@ public class WxCUserServiceAdapter implements CUserServiceApapter{
entity.setRealUser(JSON.parseObject(JSON.toJSONString(wxCUser, SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteNullNumberAsZero, SerializerFeature.WriteMapNullValue), Map.class));
return entity;
}
@Override
public BaseCUserEntity getByToken(String token) {
WxCUser wxCUser = wxCUserMapper.findByToken(token);
return generateBaseEntity(wxCUser);
}
@Override
public BaseCUserEntity getByObj(Object cuser) {
WxCUser wxCUser = (WxCUser) cuser;
return generateBaseEntity(wxCUser);
}

}

+ 25
- 7
mallinkService/src/main/java/com/iformall/service/impl/CUserTokenServiceImpl.java Просмотреть файл

@@ -1,7 +1,9 @@
package com.iformall.service.impl;

import com.iformall.common.ErrorCode;
import com.iformall.domain.po.base.BaseCUserEntity;
import com.iformall.enums.EnumAppPlat;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.WxCUserMapper;
import com.iformall.service.CUserTokenService;
import com.iformall.service.cuser.CUserServiceFactory;
@@ -30,6 +32,21 @@ public class CUserTokenServiceImpl implements CUserTokenService {
@Autowired
CUserServiceFactory cuserFactory;

private EnumAppPlat getPlat(String token) {
if(token.endsWith(Constant.TOKEN_WXC_END)){
return EnumAppPlat.WX;
}
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(), token+"token解析错误") ;
}
private void setCache(String token,BaseCUserEntity baseUser) {
if (null != baseUser) {
String key = Constant.tokenPrev + token;
ValueOperations<String, BaseCUserEntity> operations = baseCUserTokenRedisTemplate.opsForValue();
operations.set(key, baseUser, 3600*24*3, TimeUnit.SECONDS);
}
}
@Override
public BaseCUserEntity getByToken(String token) {

@@ -47,13 +64,8 @@ public class CUserTokenServiceImpl implements CUserTokenService {
logger.info("缓存中获取用户信息End-" + token);
return baseUser;
}
if(token.endsWith(Constant.TOKEN_WXC_END)){
baseUser = cuserFactory.getCUserService(EnumAppPlat.WX).getToken(token);
}
// 插入缓存
if (null != baseUser) {
operations.set(key, baseUser, 3600*24*3, TimeUnit.SECONDS);
}
baseUser = cuserFactory.getCUserService(getPlat(token)).getByToken(token);
setCache(token,baseUser);
//operations.set(key, user, 3600, TimeUnit.SECONDS);
//logger.info("DB中获取用户信息End-" + token);
return baseUser;
@@ -67,4 +79,10 @@ public class CUserTokenServiceImpl implements CUserTokenService {
baseCUserTokenRedisTemplate.delete(key);
}
}

@Override
public void updateTokenCache(String token,Object cuser) {
BaseCUserEntity baseUser = cuserFactory.getCUserService(getPlat(token)).getByObj(cuser);
setCache(token,baseUser);
}
}

Загрузка…
Отмена
Сохранить