| @@ -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(); | ||||
| } | } | ||||
| } | } | ||||
| @@ -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()); | ||||
| } | } | ||||
| @@ -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); | ||||
| @@ -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()); | ||||
| } | } | ||||
| @@ -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; | ||||
| } | } | ||||
| @@ -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()); | ||||
| } | } | ||||
| @@ -12,4 +12,6 @@ public interface CUserTokenService { | |||||
| */ | */ | ||||
| BaseCUserEntity getByToken(String token); | BaseCUserEntity getByToken(String token); | ||||
| void removeTokenCache(String token); | |||||
| } | } | ||||
| @@ -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); | |||||
| } | |||||
| } | |||||
| } | } | ||||