Browse Source

fix wxcuser cache

release_toaliyun_real
xiaohanzi 5 years ago
parent
commit
8ba82237cf
8 changed files with 106 additions and 42 deletions
  1. +59
    -12
      mallinkCApi/src/main/java/com/iformall/controller/BaseController.java
  2. +1
    -1
      mallinkCApi/src/main/java/com/iformall/controller/WxActivityJoinController.java
  3. +3
    -3
      mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java
  4. +1
    -1
      mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java
  5. +4
    -4
      mallinkCApi/src/main/java/com/iformall/controller/WxMsgValidationcodeController.java
  6. +27
    -21
      mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java
  7. +2
    -0
      mallinkService/src/main/java/com/iformall/service/CUserTokenService.java
  8. +9
    -0
      mallinkService/src/main/java/com/iformall/service/impl/CUserTokenServiceImpl.java

+ 59
- 12
mallinkCApi/src/main/java/com/iformall/controller/BaseController.java View File

@@ -5,6 +5,7 @@ import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker; import com.iformall.common.IdWorker;
import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.domain.po.base.BaseCUserEntity;
import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumAppPlat;
import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.WxCUser; import com.iformall.domain.po.WxCUser;
import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxCUserBasicInfo;
@@ -54,10 +55,10 @@ public class BaseController {
@Autowired @Autowired
private CUserTokenService cUserTokenService; private CUserTokenService cUserTokenService;
@Autowired @Autowired
@Qualifier("baseCUserTokenRedisTemplate")
RedisTemplate<String, BaseCUserEntity> baseCUserTokenRedisTemplate;
@Qualifier("cUserBasicInfoRedisTemplate")
RedisTemplate<String, WxCUserBasicInfo> cuserBasicInfoTemplate;
@InitBinder @InitBinder
public void InitBinder(WebDataBinder dataBinder) { public void InitBinder(WebDataBinder dataBinder) {
@@ -140,17 +141,61 @@ public class BaseController {
return user; return user;
} }
/**
*
*/
public WxCUserBasicInfo getMember() throws Exception {
Long memberId = getMemberId();
WxCUserBasicInfo member = wxCUserBasicInfoService.getById(memberId);
if (member == null) {
throw new MallinkException(ErrorCode.USER_IS_EMPTY);
public void removeCacheCUser() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
BaseCUserEntity baseuser = (BaseCUserEntity) request.getAttribute(Constant.REQUEST_C_USER_KEY);
cUserTokenService.removeTokenCache(baseuser.getToken());
}
private WxCUserBasicInfo getCacheMember(Long memberId,String key,long seconds) throws Exception {
ValueOperations<String, WxCUserBasicInfo> operations = cuserBasicInfoTemplate.opsForValue();
WxCUserBasicInfo member;
// 缓存
boolean hasKey = cuserBasicInfoTemplate.hasKey(key);
if(hasKey) {
member = operations.get(key);
return member;
}else {
member = wxCUserBasicInfoService.getById(memberId);
if (member == null) {
throw new MallinkException(ErrorCode.USER_IS_EMPTY);
}
operations.set(key, member, seconds, TimeUnit.SECONDS);
} }
return member;
return operations.get(key);
}
public WxCUserBasicInfo getCacheMember() throws Exception {
Long memberId = getMemberId();
String key = "webapp:member:"+memberId;
return getCacheMember(memberId, key, 3600*24*3);
}
/*此处缓存短暂时间,因为积分、成长值记录*/
public WxCUserBasicInfo getShortCacheMember(Long memberId) throws Exception {
String key = "webapp:short:member:"+memberId;
return getCacheMember(memberId, key, 100);
}
public void removeCacheMember(Long memberId) {
String key = "webapp:member:"+memberId;
if (cuserBasicInfoTemplate.hasKey(key)) {
cuserBasicInfoTemplate.delete(key);
}
String shortKey = "webapp:short:member:"+memberId;
if (cuserBasicInfoTemplate.hasKey(shortKey)) {
cuserBasicInfoTemplate.delete(shortKey);
}
} }
// public WxCUserBasicInfo getMember() throws Exception {
// Long memberId = getMemberId();
// WxCUserBasicInfo member = wxCUserBasicInfoService.getById(memberId);
// if (member == null) {
// throw new MallinkException(ErrorCode.USER_IS_EMPTY);
// }
// return member;
// }


public WxAppinfo getAppInfo(String appId) { public WxAppinfo getAppInfo(String appId) {
return wxAppinfoService.getByAppId(appId); return wxAppinfoService.getByAppId(appId);
@@ -221,6 +266,7 @@ public class BaseController {
byId.setAvatarUrl(avatarUrl); byId.setAvatarUrl(avatarUrl);
byId.setSex(sex); byId.setSex(sex);
wxCUserBasicInfoService.update(byId); wxCUserBasicInfoService.update(byId);
removeCacheMember(byId.getId());
return byId.getId(); return byId.getId();
}else{ }else{
Date cur = new Date(); Date cur = new Date();
@@ -237,6 +283,7 @@ public class BaseController {
basicInfo.setCreateDate(cur); basicInfo.setCreateDate(cur);
basicInfo.setUpdateDate(cur); basicInfo.setUpdateDate(cur);
wxCUserBasicInfoService.save(basicInfo); wxCUserBasicInfoService.save(basicInfo);
removeCacheMember(basicInfo.getId());
return basicInfo.getId(); return basicInfo.getId();
} }
} }


+ 1
- 1
mallinkCApi/src/main/java/com/iformall/controller/WxActivityJoinController.java View File

@@ -68,7 +68,7 @@ public class WxActivityJoinController extends BaseController {
WxCUserBasicInfo member; WxCUserBasicInfo member;
try { try {
member = getMember();
member = getCacheMember();
} catch (Exception e1) { } catch (Exception e1) {
return new ResultData(Result.ERROR,e1.getMessage()); return new ResultData(Result.ERROR,e1.getMessage());
} }


+ 3
- 3
mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java View File

@@ -118,7 +118,7 @@ public class WxCarController extends BaseController {
return etcpHelper.initForEtcp(paramMap, memberId, park); return etcpHelper.initForEtcp(paramMap, memberId, park);
}else { }else {
try { try {
String vendorPersonId = parkFactory.getParkService(park.getVendorType()).initLogin(paramMap, park, getMember());
String vendorPersonId = parkFactory.getParkService(park.getVendorType()).initLogin(paramMap, park, getCacheMember());
Map resultMap = new HashMap(); Map resultMap = new HashMap();
resultMap.put("vendor", park.getVendorType()); resultMap.put("vendor", park.getVendorType());
//有的厂家没有初始化 //有的厂家没有初始化
@@ -146,7 +146,7 @@ public class WxCarController extends BaseController {
public ResultData bindCar(@RequestBody Map<String, String> paramMap) { public ResultData bindCar(@RequestBody Map<String, String> paramMap) {
WxCUserBasicInfo member; WxCUserBasicInfo member;
try { try {
member = getMember();
member = getCacheMember();
} catch (Exception e1) { } catch (Exception e1) {
return new ResultData(Result.ERROR,e1.getMessage()); return new ResultData(Result.ERROR,e1.getMessage());
} }
@@ -199,7 +199,7 @@ public class WxCarController extends BaseController {
return etcpHelper.etcpUnbindCar(paramMap, park, memberId); return etcpHelper.etcpUnbindCar(paramMap, park, memberId);
} else { } else {
try { try {
parkFactory.getParkService(park.getVendorType()).unbindCar(paramMap, park, getMember());
parkFactory.getParkService(park.getVendorType()).unbindCar(paramMap, park, getCacheMember());
return parkHelper.unbindCar(paramMap, park, getMemberId()); return parkHelper.unbindCar(paramMap, park, getMemberId());
} catch (Exception e) { } catch (Exception e) {
logger.error("park unbindCar error",e); logger.error("park unbindCar error",e);


+ 1
- 1
mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java View File

@@ -376,7 +376,7 @@ public class WxCouponOrderController extends BaseController {
TenantEntity tenantEntity = getTenantInfo(); TenantEntity tenantEntity = getTenantInfo();
WxCUserBasicInfo member; WxCUserBasicInfo member;
try { try {
member = getMember();
member = getCacheMember();
} catch (Exception e) { } catch (Exception e) {
return new ResultData(Result.ERROR,e.getMessage()); return new ResultData(Result.ERROR,e.getMessage());
} }


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

@@ -38,6 +38,9 @@ public class WxMsgValidationcodeController extends BaseController {
@Autowired @Autowired
private WxAppinfoService WxAppinfoService; private WxAppinfoService WxAppinfoService;
@Autowired
private CUserTokenService cUserTokenService;


@GetMapping("sendvalidationcode") @GetMapping("sendvalidationcode")
@ApiImplicitParams({ @ApiImplicitParams({
@@ -90,10 +93,7 @@ public class WxMsgValidationcodeController extends BaseController {
wxCUserService.saveOrUpdate(user); wxCUserService.saveOrUpdate(user);
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_PHONE,user); wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_PHONE,user);


String key = Constant.tokenPrev + user.getToken();
if(baseCUserTokenRedisTemplate.hasKey(key)){
baseCUserTokenRedisTemplate.delete(key);
}
cUserTokenService.removeTokenCache(user.getToken());
} }
return rd; return rd;
} }


+ 27
- 21
mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java View File

@@ -444,6 +444,7 @@ public class WxUserGrantController extends BaseController {
if(StringUtils.isNotBlank(scene) && scene.equalsIgnoreCase(Constant.UNDEFINED)) { if(StringUtils.isNotBlank(scene) && scene.equalsIgnoreCase(Constant.UNDEFINED)) {
user.setScene(scene); user.setScene(scene);
wxCUserService.updateScene(user); wxCUserService.updateScene(user);
removeCacheCUser();
} }
} }
return new ResultData(); return new ResultData();
@@ -463,6 +464,7 @@ public class WxUserGrantController extends BaseController {
if (!StringUtils.isBlank(latitude)) if (!StringUtils.isBlank(latitude))
user.setLatitude(BigDecimal.valueOf(Double.valueOf(latitude))); user.setLatitude(BigDecimal.valueOf(Double.valueOf(latitude)));
wxCUserService.updateLBS(user); wxCUserService.updateLBS(user);
removeCacheCUser();
return new ResultData(); return new ResultData();
} }


@@ -480,6 +482,7 @@ public class WxUserGrantController extends BaseController {
user.setExtraInfo(extraInfo.toJSONString()); user.setExtraInfo(extraInfo.toJSONString());
} }
wxCUserService.updateExtInfo(user); wxCUserService.updateExtInfo(user);
removeCacheCUser();
return new ResultData(); return new ResultData();
} }


@@ -573,12 +576,10 @@ public class WxUserGrantController extends BaseController {
wxCUserBasicInfo.setSex(user.getGender()); wxCUserBasicInfo.setSex(user.getGender());
wxCUserBasicInfo.setAvatarUrl(user.getAvatarUrl()); wxCUserBasicInfo.setAvatarUrl(user.getAvatarUrl());
wxCUserBasicInfoService.update(wxCUserBasicInfo); wxCUserBasicInfoService.update(wxCUserBasicInfo);
removeCacheMember(user.getUserId());
} }


String key = Constant.tokenPrev + user.getToken();
if(baseCUserTokenRedisTemplate.hasKey(key)){
baseCUserTokenRedisTemplate.delete(key);
}
removeCacheCUser();


if(bFirstNickName) { if(bFirstNickName) {
// 首次获取昵称 // 首次获取昵称
@@ -587,7 +588,6 @@ public class WxUserGrantController extends BaseController {
//增加积分 //增加积分
wxCUserService.addCredit(user, EnumScoreType.WECHAT_PERSION); wxCUserService.addCredit(user, EnumScoreType.WECHAT_PERSION);
} }

resultMap.put("openId", user.getOpenId()); resultMap.put("openId", user.getOpenId());
resultMap.put("unionId", user.getUnionId()); resultMap.put("unionId", user.getUnionId());
resultMap.put("msg", "获取用户信息成功!"); resultMap.put("msg", "获取用户信息成功!");
@@ -678,10 +678,8 @@ public class WxUserGrantController extends BaseController {
wxCUserService.saveOrUpdate(user); wxCUserService.saveOrUpdate(user);
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_PHONE, user); wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_PHONE, user);
} }
String key = Constant.tokenPrev + user.getToken();
if(baseCUserTokenRedisTemplate.hasKey(key)){
baseCUserTokenRedisTemplate.delete(key);
}
removeCacheCUser();


if(isFirstPhone) { if(isFirstPhone) {
// 首次授权, 增加成长值及积分 // 首次授权, 增加成长值及积分
@@ -792,16 +790,23 @@ public class WxUserGrantController extends BaseController {
userVo.setScore(0); userVo.setScore(0);
userVo.setCredit(0); userVo.setCredit(0);
if(user.basicInfoIs()){ if(user.basicInfoIs()){
WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(user.getUserId());
if (wxCUserBasicInfo != null) {
userVo.setScore(wxCUserBasicInfo.getPoins());
userVo.setCredit(wxCUserBasicInfo.getCredit());
userVo.setName(wxCUserBasicInfo.getName());
userVo.setBirthdate(wxCUserBasicInfo.getBirthdate());
userVo.setSex(wxCUserBasicInfo.getSex());
userVo.setAddress(wxCUserBasicInfo.getAddress());
userVo.setStatus(wxCUserBasicInfo.getStatus());
}
WxCUserBasicInfo wxCUserBasicInfo;
try {
wxCUserBasicInfo = getShortCacheMember(user.getUserId());
//WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(user.getUserId());
if (wxCUserBasicInfo != null) {
userVo.setScore(wxCUserBasicInfo.getPoins());
userVo.setCredit(wxCUserBasicInfo.getCredit());
userVo.setName(wxCUserBasicInfo.getName());
userVo.setBirthdate(wxCUserBasicInfo.getBirthdate());
userVo.setSex(wxCUserBasicInfo.getSex());
userVo.setAddress(wxCUserBasicInfo.getAddress());
userVo.setStatus(wxCUserBasicInfo.getStatus());
}
} catch (Exception e) {
logger.error("userinfo error.",e);
}
} }


if (userVo.getScore() == null) if (userVo.getScore() == null)
@@ -842,7 +847,7 @@ public class WxUserGrantController extends BaseController {
public ResultData carCount() { public ResultData carCount() {
WxCUserBasicInfo member; WxCUserBasicInfo member;
try { try {
member = getMember();
member = getCacheMember();
} catch (Exception e) { } catch (Exception e) {
return new ResultData(Result.ERROR,e.getMessage()); return new ResultData(Result.ERROR,e.getMessage());
} }
@@ -974,7 +979,8 @@ public class WxUserGrantController extends BaseController {
public ResultData getDiscountInfo() { public ResultData getDiscountInfo() {
WxCUserBasicInfo member; WxCUserBasicInfo member;
try { try {
member = getMember();
Long memberId = getMemberId();
member = wxCUserBasicInfoService.getById(memberId);
} catch (Exception e) { } catch (Exception e) {
return new ResultData(Result.ERROR,e.getMessage()); return new ResultData(Result.ERROR,e.getMessage());
} }


+ 2
- 0
mallinkService/src/main/java/com/iformall/service/CUserTokenService.java View File

@@ -12,4 +12,6 @@ public interface CUserTokenService {
*/ */
BaseCUserEntity getByToken(String token); BaseCUserEntity getByToken(String token);
void removeTokenCache(String token);
} }

+ 9
- 0
mallinkService/src/main/java/com/iformall/service/impl/CUserTokenServiceImpl.java View File

@@ -58,4 +58,13 @@ public class CUserTokenServiceImpl implements CUserTokenService {
//logger.info("DB中获取用户信息End-" + token); //logger.info("DB中获取用户信息End-" + token);
return baseUser; return baseUser;
} }

@Override
public void removeTokenCache(String token) {
String key = Constant.tokenPrev + token;
boolean hasKey = baseCUserTokenRedisTemplate.hasKey(key);
if (hasKey) {
baseCUserTokenRedisTemplate.delete(key);
}
}
} }

Loading…
Cancel
Save