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.domain.po.base.BaseCUserEntity;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumAppPlat;
import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.WxCUser;
import com.iformall.domain.po.WxCUserBasicInfo;
@@ -54,10 +55,10 @@ public class BaseController {
@Autowired
private CUserTokenService cUserTokenService;
@Autowired
@Qualifier("baseCUserTokenRedisTemplate")
RedisTemplate<String, BaseCUserEntity> baseCUserTokenRedisTemplate;
@Qualifier("cUserBasicInfoRedisTemplate")
RedisTemplate<String, WxCUserBasicInfo> cuserBasicInfoTemplate;
@InitBinder
public void InitBinder(WebDataBinder dataBinder) {
@@ -140,17 +141,61 @@ public class BaseController {
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) {
return wxAppinfoService.getByAppId(appId);
@@ -221,6 +266,7 @@ public class BaseController {
byId.setAvatarUrl(avatarUrl);
byId.setSex(sex);
wxCUserBasicInfoService.update(byId);
removeCacheMember(byId.getId());
return byId.getId();
}else{
Date cur = new Date();
@@ -237,6 +283,7 @@ public class BaseController {
basicInfo.setCreateDate(cur);
basicInfo.setUpdateDate(cur);
wxCUserBasicInfoService.save(basicInfo);
removeCacheMember(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;
try {
member = getMember();
member = getCacheMember();
} catch (Exception e1) {
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);
}else {
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();
resultMap.put("vendor", park.getVendorType());
//有的厂家没有初始化
@@ -146,7 +146,7 @@ public class WxCarController extends BaseController {
public ResultData bindCar(@RequestBody Map<String, String> paramMap) {
WxCUserBasicInfo member;
try {
member = getMember();
member = getCacheMember();
} catch (Exception e1) {
return new ResultData(Result.ERROR,e1.getMessage());
}
@@ -199,7 +199,7 @@ public class WxCarController extends BaseController {
return etcpHelper.etcpUnbindCar(paramMap, park, memberId);
} else {
try {
parkFactory.getParkService(park.getVendorType()).unbindCar(paramMap, park, getMember());
parkFactory.getParkService(park.getVendorType()).unbindCar(paramMap, park, getCacheMember());
return parkHelper.unbindCar(paramMap, park, getMemberId());
} catch (Exception 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();
WxCUserBasicInfo member;
try {
member = getMember();
member = getCacheMember();
} catch (Exception e) {
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
private WxAppinfoService WxAppinfoService;
@Autowired
private CUserTokenService cUserTokenService;

@GetMapping("sendvalidationcode")
@ApiImplicitParams({
@@ -90,10 +93,7 @@ public class WxMsgValidationcodeController extends BaseController {
wxCUserService.saveOrUpdate(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;
}


+ 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)) {
user.setScene(scene);
wxCUserService.updateScene(user);
removeCacheCUser();
}
}
return new ResultData();
@@ -463,6 +464,7 @@ public class WxUserGrantController extends BaseController {
if (!StringUtils.isBlank(latitude))
user.setLatitude(BigDecimal.valueOf(Double.valueOf(latitude)));
wxCUserService.updateLBS(user);
removeCacheCUser();
return new ResultData();
}

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

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

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

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

resultMap.put("openId", user.getOpenId());
resultMap.put("unionId", user.getUnionId());
resultMap.put("msg", "获取用户信息成功!");
@@ -678,10 +678,8 @@ public class WxUserGrantController extends BaseController {
wxCUserService.saveOrUpdate(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) {
// 首次授权, 增加成长值及积分
@@ -792,16 +790,23 @@ public class WxUserGrantController extends BaseController {
userVo.setScore(0);
userVo.setCredit(0);
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)
@@ -842,7 +847,7 @@ public class WxUserGrantController extends BaseController {
public ResultData carCount() {
WxCUserBasicInfo member;
try {
member = getMember();
member = getCacheMember();
} catch (Exception e) {
return new ResultData(Result.ERROR,e.getMessage());
}
@@ -974,7 +979,8 @@ public class WxUserGrantController extends BaseController {
public ResultData getDiscountInfo() {
WxCUserBasicInfo member;
try {
member = getMember();
Long memberId = getMemberId();
member = wxCUserBasicInfoService.getById(memberId);
} catch (Exception e) {
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);
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);
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