diff --git a/mallinkAdmin/src/main/java/com/iformall/config/RedisConfig.java b/mallinkAdmin/src/main/java/com/iformall/config/RedisConfig.java index 1555983a5..8b004fe40 100644 --- a/mallinkAdmin/src/main/java/com/iformall/config/RedisConfig.java +++ b/mallinkAdmin/src/main/java/com/iformall/config/RedisConfig.java @@ -2,6 +2,7 @@ package com.iformall.config; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.*; +import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxCouponChannelVo; import org.slf4j.Logger; @@ -142,6 +143,23 @@ public class RedisConfig extends CachingConfigurerSupport { return template; } + @Bean("baseCUserTokenRedisTemplate") + public RedisTemplate getBaseCUserTokenRedisTemplate(RedisConnectionFactory connectionFactory) { + RedisTemplate template = new RedisTemplate(); + + Jackson2JsonRedisSerializer j = new Jackson2JsonRedisSerializer(BaseCUserEntity.class); + // value值的序列化 + template.setValueSerializer(j); + template.setHashKeySerializer(j); + + // key的序列化 + template.setKeySerializer(new StringRedisSerializer()); + template.setHashKeySerializer(new StringRedisSerializer()); + + template.setConnectionFactory(connectionFactory); + return template; + } + @Bean("mallRedisTemplate") public RedisTemplate getMallRedisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate template = new RedisTemplate(); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxUserStructureController.java b/mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxUserStructureController.java index a7811670d..53e3e7b3d 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxUserStructureController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxUserStructureController.java @@ -122,7 +122,7 @@ public class WxUserStructureController extends BaseController { for( int i = 0; i < levelList.size(); i++) { WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto(); - dto.updateFinalTenantInfo(getTenantInfo()); + dto.updateTenantInfo(getTenantInfo()); dto.setStartTime(startTime); dto.setEndTime(endTime); if (i + 1 < levelList.size()) { diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/mem/AsyncTask.java b/mallinkAdmin/src/main/java/com/iformall/controller/mem/AsyncTask.java index 09c55d94f..347143745 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/mem/AsyncTask.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/mem/AsyncTask.java @@ -7,7 +7,6 @@ import cn.afterturn.easypoi.handler.impl.ExcelDataHandlerDefaultImpl; import cn.afterturn.easypoi.handler.inter.IExcelDataHandler; import com.iformall.domain.po.MallUserInfo; import com.iformall.domain.po.WxTags; -import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.CUserBaseInfoT; import com.iformall.service.WxCUserBasicInfoService; import com.iformall.service.WxTagsService; diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserBasicInfoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserBasicInfoController.java index 6bd5f2b65..55204dfd6 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserBasicInfoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserBasicInfoController.java @@ -148,7 +148,7 @@ public class WxCUserBasicInfoController extends BaseController { } } wxCUserBasicInfo.updateTenantInfo(getTenantInfo()); - wxCUserBasicInfo.setSortColumns(BaseEntity.SortField.ActiveTime_DESC); +// wxCUserBasicInfo.setSortColumns(BaseEntity.SortField.ActiveTime_DESC); PageInfo page = wxCUserBasicInfoService.listAsPage(wxCUserBasicInfo, pageNum, pageSize); if (page.getSize() > 0) { diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxLevelConfigController.java b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxLevelConfigController.java index 56a25fdc0..48425e291 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxLevelConfigController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxLevelConfigController.java @@ -47,10 +47,11 @@ public class WxLevelConfigController extends BaseController { public ResultData list(@ModelAttribute WxLevelConfig wxLevelConfig, Integer pageNum, Integer pageSize) { logger.debug("[" + getIpAddr() + "] WxLevelConfigController::list"); if (null == wxLevelConfig) wxLevelConfig = new WxLevelConfig(); - if(StringUtils.isNotBlank(getTenantInfo().getParentTenantId())){ - wxLevelConfig.setTenantId(getTenantInfo().getParentTenantId()); + TenantEntity tenantEntity = ifParentUpdateTenantInfo(); + if(StringUtils.isNotBlank(tenantEntity.getParentTenantId())){ + wxLevelConfig.setTenantId(tenantEntity.getParentTenantId()); }else{ - wxLevelConfig.setTenantId(getTenantInfo().getTenantId()); + wxLevelConfig.setTenantId(tenantEntity.getTenantId()); } wxLevelConfig.setSortColumns(BaseEntity.SortField.Points_ASC); final PageInfo page = wxLevelConfigService.listAsPage(wxLevelConfig, pageNum, pageSize); @@ -63,10 +64,11 @@ public class WxLevelConfigController extends BaseController { public ResultData add(@RequestBody List levelConfigs) { logger.debug("[" + getIpAddr() + "] WxLevelConfigController::add"); try { - if (StringUtils.isNotBlank(getTenantInfo().getParentTenantId())) { + + if (StringUtils.isNotBlank(ifParentUpdateTenantInfo().getParentTenantId())) { return new ResultData(ErrorCode.USER_NO_PERMISSION.getCode(), "广场用户无此权限"); } - wxLevelConfigService.batchSave(getTenantInfo(), levelConfigs); + wxLevelConfigService.batchSave(ifParentUpdateTenantInfo(), levelConfigs); } catch (Exception e) { logger.error(e.getMessage()); return new ResultData(ErrorCode.DB_FAIL); @@ -80,10 +82,10 @@ public class WxLevelConfigController extends BaseController { public ResultData updateCapabilities(@RequestBody List levelConfigs) { logger.debug("[" + getIpAddr() + "] WxLevelConfigController::add"); try { - if (StringUtils.isNotBlank(getTenantInfo().getParentTenantId())) { + if (StringUtils.isNotBlank(ifParentUpdateTenantInfo().getParentTenantId())) { return new ResultData(ErrorCode.USER_NO_PERMISSION.getCode(), "广场用户无此权限"); } - wxLevelConfigService.batchUpdateCapabilities(getTenantInfo(), levelConfigs); + wxLevelConfigService.batchUpdateCapabilities(ifParentUpdateTenantInfo(), levelConfigs); } catch (Exception e) { logger.error(e.getMessage()); return new ResultData(ErrorCode.DB_FAIL); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxScoreRulesController.java b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxScoreRulesController.java index 385f5cbc5..7838bcad3 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxScoreRulesController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxScoreRulesController.java @@ -30,7 +30,7 @@ public class WxScoreRulesController extends BaseController { @SystemControllerLog(description = "成长值-配置") public ResultData list() { logger.debug("[" + getIpAddr() + "] WxScoreRulesController::list"); - WxScoreRules scoreRules = wxScoreRulesService.getScoreRules(getTenantInfo()); + WxScoreRules scoreRules = wxScoreRulesService.getScoreRules(ifParentUpdateTenantInfo()); if (scoreRules.getCreditLocked() == null) { scoreRules.setCreditLocked(EnumCreditLockedStatus.OPEN.getCode()); } @@ -42,7 +42,7 @@ public class WxScoreRulesController extends BaseController { @SystemControllerLog(description = "成长值-积分-配置-新增") public ResultData add(@RequestBody WxScoreRules wxScoreRules) { logger.debug("[" + getIpAddr() + "] WxScoreRulesController::add"); - TenantEntity tenantEntity = getTenantInfo(); + TenantEntity tenantEntity = ifParentUpdateTenantInfo(); if (StringUtils.isNotBlank(tenantEntity.getParentTenantId())) { return new ResultData(ErrorCode.USER_NO_PERMISSION.getCode(), "广场用户无此权限"); } @@ -56,7 +56,7 @@ public class WxScoreRulesController extends BaseController { @SystemControllerLog(description = "积分-配置") public ResultData creditRulesList() { logger.debug("[" + getIpAddr() + "] WxScoreRulesController::list"); - WxScoreRules scoreRules = wxScoreRulesService.getCreditRules(getTenantInfo()); + WxScoreRules scoreRules = wxScoreRulesService.getCreditRules(ifParentUpdateTenantInfo()); return new ResultData(scoreRules); } @@ -71,7 +71,7 @@ public class WxScoreRulesController extends BaseController { if (null == wxScoreRules.getCreditLocked()) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "creditLocked不能为空"); } - TenantEntity tenantEntity = getTenantInfo(); + TenantEntity tenantEntity = ifParentUpdateTenantInfo(); if (StringUtils.isNotBlank(tenantEntity.getParentTenantId())) { return new ResultData(ErrorCode.USER_NO_PERMISSION.getCode(), "广场用户无此权限"); } diff --git a/mallinkAdmin/src/main/resources/db/migration/V202007311200__FOR_MEMBER_ONLY_001.sql b/mallinkAdmin/src/main/resources/db/migration/V202007311200__FOR_MEMBER_ONLY_001.sql index fd89442e4..d4730c5b0 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202007311200__FOR_MEMBER_ONLY_001.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202007311200__FOR_MEMBER_ONLY_001.sql @@ -41,5 +41,7 @@ ADD COLUMN `plat` SMALLINT(3) NOT NULL DEFAULT 1 COMMENT 'app平台 1:微信 2: ALTER TABLE `wx_profit_sharing_receiver` ADD COLUMN `plat` SMALLINT(3) NOT NULL DEFAULT 1 COMMENT '平台 1:微信 2:阿里 3:头条'; +update mall_sale_type set menus = '[1, 2, 5, 6, 8, 10, 50, 101, 102, 104, 105, 106, 108, 203, 204, 206, 207, 501, 502, 503, 504, 505, 506, 507, 511, 512, 522, 523, 509, 591, 595, 601, 621, 622, 623, 624, 625, 626, 627, 901, 902]' where id=100 + diff --git a/mallinkBApi/src/main/java/com/iformall/config/RedisConfig.java b/mallinkBApi/src/main/java/com/iformall/config/RedisConfig.java index f29ca155c..7daa04ba4 100644 --- a/mallinkBApi/src/main/java/com/iformall/config/RedisConfig.java +++ b/mallinkBApi/src/main/java/com/iformall/config/RedisConfig.java @@ -2,6 +2,7 @@ package com.iformall.config; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.*; +import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxCouponChannelVo; import org.slf4j.Logger; @@ -107,6 +108,23 @@ public class RedisConfig extends CachingConfigurerSupport { return template; } + @Bean("baseCUserTokenRedisTemplate") + public RedisTemplate getBaseCUserTokenRedisTemplate(RedisConnectionFactory connectionFactory) { + RedisTemplate template = new RedisTemplate(); + + Jackson2JsonRedisSerializer j = new Jackson2JsonRedisSerializer(BaseCUserEntity.class); + // value值的序列化 + template.setValueSerializer(j); + template.setHashKeySerializer(j); + + // key的序列化 + template.setKeySerializer(new StringRedisSerializer()); + template.setHashKeySerializer(new StringRedisSerializer()); + + template.setConnectionFactory(connectionFactory); + return template; + } + @Bean("mallRedisTemplate") public RedisTemplate getMallRedisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate template = new RedisTemplate(); diff --git a/mallinkCApi/src/main/java/com/iformall/aop/RedisCacheAspect.java b/mallinkCApi/src/main/java/com/iformall/aop/RedisCacheAspect.java index 8657cce81..474101374 100644 --- a/mallinkCApi/src/main/java/com/iformall/aop/RedisCacheAspect.java +++ b/mallinkCApi/src/main/java/com/iformall/aop/RedisCacheAspect.java @@ -4,7 +4,8 @@ package com.iformall.aop; import com.alibaba.fastjson.JSONObject; import com.iformall.annotation.RedisCache; import com.iformall.domain.po.WxCUser; -import com.iformall.service.WxCUserTokenService; +import com.iformall.domain.po.base.BaseCUserEntity; +import com.iformall.service.CUserTokenService; import com.iformall.utils.HashUtil; import com.iformall.utils.RedisLock; import lombok.extern.slf4j.Slf4j; @@ -48,7 +49,7 @@ public class RedisCacheAspect { RedisLock redisLock; @Autowired - private WxCUserTokenService userTokenService; + private CUserTokenService cUserTokenService; @Pointcut("@annotation(com.iformall.annotation.RedisCache)") public void cacheAspect() { @@ -66,14 +67,14 @@ public class RedisCacheAspect { } log.info("token>>>>>>>>>>>>>>>"+token); String tenantId; - WxCUser wxCUser = null ; + BaseCUserEntity cUser = null ; if(StringUtils.isNotBlank(token)) { - wxCUser = userTokenService.getByToken(token); + cUser = cUserTokenService.getByToken(token); } - if (Objects.isNull(wxCUser) || wxCUser.getExpireTime().getTime() < System.currentTimeMillis()) { + if (Objects.isNull(cUser) || cUser.getExpireTime().getTime() < System.currentTimeMillis()) { tenantId = "0"; } else { - tenantId = wxCUser.getTenantId(); + tenantId = cUser.getTenantId(); } // 请求参数 diff --git a/mallinkCApi/src/main/java/com/iformall/config/RedisConfig.java b/mallinkCApi/src/main/java/com/iformall/config/RedisConfig.java index e9135a6a7..494ca8136 100644 --- a/mallinkCApi/src/main/java/com/iformall/config/RedisConfig.java +++ b/mallinkCApi/src/main/java/com/iformall/config/RedisConfig.java @@ -2,6 +2,7 @@ package com.iformall.config; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.*; +import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxCouponChannelVo; import org.slf4j.Logger; @@ -106,6 +107,23 @@ public class RedisConfig extends CachingConfigurerSupport { template.setConnectionFactory(connectionFactory); return template; } + + @Bean("baseCUserTokenRedisTemplate") + public RedisTemplate getBaseCUserTokenRedisTemplate(RedisConnectionFactory connectionFactory) { + RedisTemplate template = new RedisTemplate(); + + Jackson2JsonRedisSerializer j = new Jackson2JsonRedisSerializer(BaseCUserEntity.class); + // value值的序列化 + template.setValueSerializer(j); + template.setHashKeySerializer(j); + + // key的序列化 + template.setKeySerializer(new StringRedisSerializer()); + template.setHashKeySerializer(new StringRedisSerializer()); + + template.setConnectionFactory(connectionFactory); + return template; + } @Bean("cUserBasicInfoRedisTemplate") public RedisTemplate getCUserBasicInfoRedisTemplate(RedisConnectionFactory connectionFactory) { diff --git a/mallinkCApi/src/main/java/com/iformall/controller/BaseController.java b/mallinkCApi/src/main/java/com/iformall/controller/BaseController.java index 91d3682b7..80132a362 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/BaseController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/BaseController.java @@ -3,6 +3,7 @@ package com.iformall.controller; import cn.binarywang.wx.miniapp.api.WxMaService; 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.domain.po.WxAppinfo; import com.iformall.domain.po.WxCUser; @@ -30,8 +31,6 @@ import java.beans.PropertyEditorSupport; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; -import java.util.List; -import java.util.Objects; @RestController public class BaseController { @@ -51,8 +50,8 @@ public class BaseController { private WxCUserBasicInfoService wxCUserBasicInfoService; @Autowired - @Qualifier("cuserTokenRedisTemplate") - RedisTemplate cUserTokenRedisTemplate; + @Qualifier("baseCUserTokenRedisTemplate") + RedisTemplate baseCUserTokenRedisTemplate; @InitBinder public void InitBinder(WebDataBinder dataBinder) { diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxMsgValidationcodeController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxMsgValidationcodeController.java index ecb861822..ce14c1c9e 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxMsgValidationcodeController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxMsgValidationcodeController.java @@ -30,12 +30,6 @@ public class WxMsgValidationcodeController extends BaseController { @Autowired private WxMsgValidationcodeService wxMsgValidationcodeService; - @Autowired - private WxMerchantBUserService wxMerchantBUserService; - - @Autowired - private WxMerchantService wxMerchantService; - @Autowired private WxCUserService wxCUserService; @@ -95,8 +89,8 @@ public class WxMsgValidationcodeController extends BaseController { wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_PHONE,user); String key = Constant.tokenPrev + user.getOpenId(); - if(cUserTokenRedisTemplate.hasKey(key)){ - cUserTokenRedisTemplate.delete(key); + if(baseCUserTokenRedisTemplate.hasKey(key)){ + baseCUserTokenRedisTemplate.delete(key); } } return rd; diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java index b054a727a..3424f868f 100755 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java @@ -29,8 +29,6 @@ import org.apache.commons.lang3.StringUtils; 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.web.bind.annotation.*; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -55,9 +53,6 @@ public class WxUserGrantController extends BaseController { @Autowired private boolean isFmOpen; - @Autowired - private WxCUserTokenService userTokenService; - @Autowired private WxCUserService wxCUserService; @@ -334,7 +329,7 @@ public class WxUserGrantController extends BaseController { } oldUser.setLoginCount(oldUser.getLoginCount() + 1); - userTokenService.saveOrUpdate(oldUser); + wxCUserService.saveOrUpdate(oldUser); // 登录后处理 int score = wxCUserService.actionAfterLogin(oldUser, boolFindByUnionId); @@ -371,7 +366,7 @@ public class WxUserGrantController extends BaseController { } newUser.setLoginCount(1); - userTokenService.saveOrUpdate(newUser); + wxCUserService.saveOrUpdate(newUser); resultMap.put("token", token); request.setAttribute(Constant.LOGIN_USER_KEY, newUser.getId()); @@ -418,7 +413,7 @@ public class WxUserGrantController extends BaseController { request.setAttribute(Constant.TENANT_ID, tenantId); request.setAttribute(Constant.PARENT_TENANT_ID, parentTenantId); user.setTenantId(tenantId); - userTokenService.saveOrUpdate(user); + wxCUserService.saveOrUpdate(user); } return new ResultData(); @@ -561,8 +556,8 @@ public class WxUserGrantController extends BaseController { wxCUserService.saveOrUpdate(updateUser); String key = Constant.tokenPrev + user.getOpenId(); - if(cUserTokenRedisTemplate.hasKey(key)){ - cUserTokenRedisTemplate.delete(key); + if(baseCUserTokenRedisTemplate.hasKey(key)){ + baseCUserTokenRedisTemplate.delete(key); } if(bFirstNickName) { @@ -666,8 +661,8 @@ public class WxUserGrantController extends BaseController { wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_PHONE, user); } String key = Constant.tokenPrev + user.getOpenId(); - if(cUserTokenRedisTemplate.hasKey(key)){ - cUserTokenRedisTemplate.delete(key); + if(baseCUserTokenRedisTemplate.hasKey(key)){ + baseCUserTokenRedisTemplate.delete(key); } if(isFirstPhone) { diff --git a/mallinkCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java b/mallinkCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java index fd1133238..50d904222 100644 --- a/mallinkCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java +++ b/mallinkCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java @@ -5,9 +5,9 @@ import com.iformall.annotation.AuthIgnore; import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.TenantThreadLocal; -import com.iformall.domain.po.WxCUser; +import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.exception.MallinkException; -import com.iformall.service.WxCUserTokenService; +import com.iformall.service.CUserTokenService; import com.iformall.utils.Constant; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -27,7 +27,7 @@ import javax.servlet.http.HttpServletResponse; @Component public class AuthorizationInterceptor extends HandlerInterceptorAdapter { @Autowired - private WxCUserTokenService userTokenService; + private CUserTokenService cUserTokenService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { @@ -59,22 +59,21 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { } // 查询token信息 - WxCUser wxCUser = userTokenService.getByToken(token); - if(wxCUser == null || wxCUser.getExpireTime().getTime() < System.currentTimeMillis()){ + BaseCUserEntity cUser = cUserTokenService.getByToken(token); + if(cUser == null || cUser.getExpireTime().getTime() < System.currentTimeMillis()){ throw new MallinkException(ErrorCode.NET_TOKEN_INVALID.getCode(), "URL:" + request.getRequestURL() + " token失效,请重新登录"); } //设置userId到request里,后续根据userId,获取用户信息 - request.setAttribute(Constant.LOGIN_USER_KEY, wxCUser.getId()); - request.setAttribute(Constant.TENANT_ID, wxCUser.getTenantId()); - if (StringUtils.isNotBlank(wxCUser.getParentTenantId())) { - request.setAttribute(Constant.PARENT_TENANT_ID, wxCUser.getParentTenantId()); + request.setAttribute(Constant.LOGIN_USER_KEY, cUser.getId()); + request.setAttribute(Constant.TENANT_ID, cUser.getTenantId()); + if (StringUtils.isNotBlank(cUser.getParentTenantId())) { + request.setAttribute(Constant.PARENT_TENANT_ID, cUser.getParentTenantId()); } - if(wxCUser.isBasicInfo()){ - request.setAttribute(Constant.LOGIN_MEMBER_KEY, wxCUser.getUserId()); + if(cUser.isBasicInfo()){ + request.setAttribute(Constant.LOGIN_MEMBER_KEY, cUser.getUserId()); } - //如果是要不需要自动设置tenantI信息 TenantIgnore tenantIgnoreAnnotation = null; if(handler instanceof HandlerMethod) { @@ -85,9 +84,8 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { if(tenantIgnoreAnnotation != null){ TenantThreadLocal.remove(); }else { - TenantThreadLocal.setCurrentThreadTenant(wxCUser.getTenantId(), wxCUser.getParentTenantId()); + TenantThreadLocal.setCurrentThreadTenant(cUser.getTenantId(), cUser.getParentTenantId()); } - return true; } diff --git a/mallinkCApi/src/main/java/com/iformall/resolver/LoginUserHandlerMethodArgumentResolver.java b/mallinkCApi/src/main/java/com/iformall/resolver/LoginUserHandlerMethodArgumentResolver.java index a1cf6ddd8..da09118ea 100644 --- a/mallinkCApi/src/main/java/com/iformall/resolver/LoginUserHandlerMethodArgumentResolver.java +++ b/mallinkCApi/src/main/java/com/iformall/resolver/LoginUserHandlerMethodArgumentResolver.java @@ -1,8 +1,8 @@ package com.iformall.resolver; import com.iformall.annotation.LoginUser; -import com.iformall.domain.po.WxCUser; -import com.iformall.service.WxCUserTokenService; +import com.iformall.domain.po.base.BaseCUserEntity; +import com.iformall.service.CUserTokenService; import com.iformall.utils.Constant; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.MethodParameter; @@ -22,11 +22,11 @@ import org.springframework.web.method.support.ModelAndViewContainer; @Component public class LoginUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver { @Autowired - private WxCUserTokenService userTokenService; + private CUserTokenService cUserTokenService; @Override public boolean supportsParameter(MethodParameter parameter) { - return parameter.getParameterType().isAssignableFrom(WxCUser.class) && parameter.hasParameterAnnotation(LoginUser.class); + return parameter.getParameterType().isAssignableFrom(BaseCUserEntity.class) && parameter.hasParameterAnnotation(LoginUser.class); } @Override @@ -39,7 +39,7 @@ public class LoginUserHandlerMethodArgumentResolver implements HandlerMethodArgu } //获取用户信息 - WxCUser user = userTokenService.getByToken((String)object); + BaseCUserEntity user = cUserTokenService.getByToken((String)object); return user; } diff --git a/mallinkCallback/src/main/java/com/iformall/config/RedisConfig.java b/mallinkCallback/src/main/java/com/iformall/config/RedisConfig.java index fd8256d22..4e25e54ea 100644 --- a/mallinkCallback/src/main/java/com/iformall/config/RedisConfig.java +++ b/mallinkCallback/src/main/java/com/iformall/config/RedisConfig.java @@ -2,6 +2,7 @@ package com.iformall.config; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.*; +import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxCouponChannelVo; import org.slf4j.Logger; @@ -142,6 +143,23 @@ public class RedisConfig extends CachingConfigurerSupport { return template; } + @Bean("baseCUserTokenRedisTemplate") + public RedisTemplate getBaseCUserTokenRedisTemplate(RedisConnectionFactory connectionFactory) { + RedisTemplate template = new RedisTemplate(); + + Jackson2JsonRedisSerializer j = new Jackson2JsonRedisSerializer(BaseCUserEntity.class); + // value值的序列化 + template.setValueSerializer(j); + template.setHashKeySerializer(j); + + // key的序列化 + template.setKeySerializer(new StringRedisSerializer()); + template.setHashKeySerializer(new StringRedisSerializer()); + + template.setConnectionFactory(connectionFactory); + return template; + } + @Bean("cUserBasicInfoRedisTemplate") public RedisTemplate getCUserBasicInfoRedisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate template = new RedisTemplate(); diff --git a/mallinkMQConsumer/src/main/java/com/iformall/config/RedisConfig.java b/mallinkMQConsumer/src/main/java/com/iformall/config/RedisConfig.java index 731c327e8..1dcf751a9 100644 --- a/mallinkMQConsumer/src/main/java/com/iformall/config/RedisConfig.java +++ b/mallinkMQConsumer/src/main/java/com/iformall/config/RedisConfig.java @@ -2,6 +2,7 @@ package com.iformall.config; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.*; +import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxCouponChannelVo; import org.slf4j.Logger; @@ -127,6 +128,23 @@ public class RedisConfig extends CachingConfigurerSupport { return template; } + @Bean("baseCUserTokenRedisTemplate") + public RedisTemplate getBaseCUserTokenRedisTemplate(RedisConnectionFactory connectionFactory) { + RedisTemplate template = new RedisTemplate(); + + Jackson2JsonRedisSerializer j = new Jackson2JsonRedisSerializer(BaseCUserEntity.class); + // value值的序列化 + template.setValueSerializer(j); + template.setHashKeySerializer(j); + + // key的序列化 + template.setKeySerializer(new StringRedisSerializer()); + template.setHashKeySerializer(new StringRedisSerializer()); + + template.setConnectionFactory(connectionFactory); + return template; + } + @Bean("cUserBasicInfoRedisTemplate") public RedisTemplate getCUserBasicInfoRedisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate template = new RedisTemplate(); diff --git a/mallinkPosApi/src/main/java/com/iformall/config/RedisConfig.java b/mallinkPosApi/src/main/java/com/iformall/config/RedisConfig.java index 50c795bd4..9d428fab5 100644 --- a/mallinkPosApi/src/main/java/com/iformall/config/RedisConfig.java +++ b/mallinkPosApi/src/main/java/com/iformall/config/RedisConfig.java @@ -2,6 +2,7 @@ package com.iformall.config; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.*; +import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxCouponChannelVo; import org.slf4j.Logger; @@ -105,6 +106,23 @@ public class RedisConfig extends CachingConfigurerSupport { return template; } + @Bean("baseCUserTokenRedisTemplate") + public RedisTemplate getBaseCUserTokenRedisTemplate(RedisConnectionFactory connectionFactory) { + RedisTemplate template = new RedisTemplate(); + + Jackson2JsonRedisSerializer j = new Jackson2JsonRedisSerializer(BaseCUserEntity.class); + // value值的序列化 + template.setValueSerializer(j); + template.setHashKeySerializer(j); + + // key的序列化 + template.setKeySerializer(new StringRedisSerializer()); + template.setHashKeySerializer(new StringRedisSerializer()); + + template.setConnectionFactory(connectionFactory); + return template; + } + @Bean("cUserBasicInfoRedisTemplate") public RedisTemplate getCUserBasicInfoRedisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate template = new RedisTemplate(); diff --git a/mallinkSchedule/src/main/java/com/iformall/config/RedisConfig.java b/mallinkSchedule/src/main/java/com/iformall/config/RedisConfig.java index 9ea780307..346fb1db5 100644 --- a/mallinkSchedule/src/main/java/com/iformall/config/RedisConfig.java +++ b/mallinkSchedule/src/main/java/com/iformall/config/RedisConfig.java @@ -2,6 +2,7 @@ package com.iformall.config; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.*; +import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxCouponChannelVo; import org.slf4j.Logger; @@ -127,6 +128,23 @@ public class RedisConfig extends CachingConfigurerSupport { return template; } + @Bean("baseCUserTokenRedisTemplate") + public RedisTemplate getBaseCUserTokenRedisTemplate(RedisConnectionFactory connectionFactory) { + RedisTemplate template = new RedisTemplate(); + + Jackson2JsonRedisSerializer j = new Jackson2JsonRedisSerializer(BaseCUserEntity.class); + // value值的序列化 + template.setValueSerializer(j); + template.setHashKeySerializer(j); + + // key的序列化 + template.setKeySerializer(new StringRedisSerializer()); + template.setHashKeySerializer(new StringRedisSerializer()); + + template.setConnectionFactory(connectionFactory); + return template; + } + @Bean("cUserBasicInfoRedisTemplate") public RedisTemplate getCUserBasicInfoRedisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate template = new RedisTemplate(); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java index 2a4a04efe..8b6dc4742 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java @@ -3,12 +3,9 @@ package com.iformall.domain.po; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.iformall.domain.po.base.BaseEntity; -import com.iformall.domain.po.base.BaseTenantEntity; -import com.iformall.domain.po.base.TenantEntity; -import com.iformall.utils.Constant; -import com.iformall.utils.UserUtil; +import com.iformall.domain.po.base.BaseCUserEntity; +import com.iformall.utils.Constant; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; @@ -24,12 +21,8 @@ import java.util.UUID; @Data @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) -public class WxCUser extends TenantEntity { +public class WxCUser extends BaseCUserEntity { - protected Long id; - - @io.swagger.annotations.ApiModelProperty(value="userId",name="userId") - private Long userId; @io.swagger.annotations.ApiModelProperty(value="微信openId",name="openId") private String openId; @io.swagger.annotations.ApiModelProperty(value="微信unionId",name="unionId") @@ -74,12 +67,6 @@ public class WxCUser extends TenantEntity { private Date createDate; @io.swagger.annotations.ApiModelProperty(value="小程序的appId",name="appId") private String appId; - /*用户登录用token**/ - @io.swagger.annotations.ApiModelProperty(value="用户登录用token",name="token") - private String token; - /*用户过期时间**/ - @io.swagger.annotations.ApiModelProperty(value="用户过期时间",name="expireTime") - private Date expireTime; /*经度**/ @io.swagger.annotations.ApiModelProperty(value="经度",name="longitude") private BigDecimal longitude; @@ -148,21 +135,13 @@ public class WxCUser extends TenantEntity { private Long operatorId; public String createToken(Date currentDate) { - if (expireTime == null || expireTime.getTime() - Constant.H_EXPIRE < currentDate.getTime()) + if (this.getExpireTime() == null || this.getExpireTime().getTime() - Constant.H_EXPIRE < currentDate.getTime()) { //生成一个token - this.token = UUID.randomUUID().toString(); + this.setToken(UUID.randomUUID().toString()+Constant.TOKEN_WXC_END); //过期时间 - this.expireTime = new Date(currentDate.getTime() + Constant.EXPIRE); + this.setExpireTime(new Date(currentDate.getTime() + Constant.EXPIRE)); } - return this.token; - } - - /** - * 是否是会员 - * @return - */ - public boolean isBasicInfo() { - return UserUtil.CuserIsBasicInfo(this.getUserId()); + return this.getToken(); } } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/base/BaseCUserEntity.java b/mallinkService/src/main/java/com/iformall/domain/po/base/BaseCUserEntity.java new file mode 100644 index 000000000..5070f5602 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/base/BaseCUserEntity.java @@ -0,0 +1,38 @@ +package com.iformall.domain.po.base; + +import com.iformall.utils.Constant; +import com.iformall.utils.UserUtil; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.apache.commons.lang3.StringUtils; + +import java.util.Date; +import java.util.UUID; + +/** + * @author Stormeye + * @date 2019/4/24 14:32 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class BaseCUserEntity extends TenantEntity { + protected Long id; + + @io.swagger.annotations.ApiModelProperty(value="userId",name="userId") + private Long userId; + + /*用户登录用token**/ + @io.swagger.annotations.ApiModelProperty(value="用户登录用token",name="token") + private String token; + /*用户过期时间**/ + @io.swagger.annotations.ApiModelProperty(value="用户过期时间",name="expireTime") + private Date expireTime; + + /** + * 是否是会员 + * @return + */ + public boolean isBasicInfo() { + return UserUtil.CuserIsBasicInfo(this.getUserId()); + } +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/base/TenantVEntity.java b/mallinkService/src/main/java/com/iformall/domain/po/base/TenantVEntity.java index 13676c0bc..badb97106 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/base/TenantVEntity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/base/TenantVEntity.java @@ -43,6 +43,9 @@ public class TenantVEntity extends BaseEntity { public TenantEntity getTenantInfo() { return new TenantEntity() {{ setTenantId(tenantId); + if (StringUtils.isNotBlank(parentTenantId)) { + setParentTenantId(parentTenantId); + } }}; } } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxBuserMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxBuserMapper.java index e67480165..0b03adcd8 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxBuserMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxBuserMapper.java @@ -1,14 +1,9 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; -import com.iformall.domain.dto.WxCUserBasicInfoDto; import com.iformall.domain.po.WxBuser; -import com.iformall.domain.po.WxCUser; -import com.iformall.domain.vo.UserCountVo; import java.util.List; -import java.util.Map; - /** * @author gongbiao */ diff --git a/mallinkService/src/main/java/com/iformall/service/CUserTokenService.java b/mallinkService/src/main/java/com/iformall/service/CUserTokenService.java new file mode 100644 index 000000000..a4231bebc --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/CUserTokenService.java @@ -0,0 +1,15 @@ +package com.iformall.service; + +import com.iformall.domain.po.base.BaseCUserEntity; + +public interface CUserTokenService { + + /** + * 根据token获得实体 + * + * @param token + * @return + */ + BaseCUserEntity getByToken(String token); + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java b/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java index 66ac5a842..b0f6dcdfd 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java @@ -6,7 +6,6 @@ import com.iformall.domain.dto.WxCUserBasicInfoDto; import com.iformall.domain.dto.WxCUserBasicInfoFilterDto; import com.iformall.domain.dto.WxCUserBasicInfoFilterListDto; import com.iformall.domain.po.*; -import com.iformall.domain.po.base.BaseTenantEntity; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.CUserBaseInfoT; import com.iformall.domain.vo.UserCountVo; @@ -106,6 +105,7 @@ public interface WxCUserBasicInfoService { */ long findCountByAge(WxCUserBasicInfoDto dto); + /** * 根据年龄积分查寻数量 * diff --git a/mallinkService/src/main/java/com/iformall/service/WxCUserTokenService.java b/mallinkService/src/main/java/com/iformall/service/WxCUserTokenService.java deleted file mode 100644 index 0f38f3416..000000000 --- a/mallinkService/src/main/java/com/iformall/service/WxCUserTokenService.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.iformall.service; - -import com.iformall.domain.po.WxCUser; - -public interface WxCUserTokenService { - - /** - * 根据token获得实体 - * - * @param token - * @return - */ - WxCUser getByToken(String token); - - /** - * 保存或更新实体 - * - * @param record - */ - int saveOrUpdate(WxCUser record); -} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/CUserTokenServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/CUserTokenServiceImpl.java new file mode 100644 index 000000000..c3888fa23 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/CUserTokenServiceImpl.java @@ -0,0 +1,55 @@ +package com.iformall.service.impl; + +import com.iformall.domain.po.base.BaseCUserEntity; +import com.iformall.mapper.WxCUserMapper; +import com.iformall.service.CUserTokenService; +import com.iformall.utils.Constant; +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.concurrent.TimeUnit; + +@Service +public class CUserTokenServiceImpl implements CUserTokenService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + WxCUserMapper wxCUserMapper; + + @Autowired + @Qualifier("baseCUserTokenRedisTemplate") + RedisTemplate baseCUserTokenRedisTemplate; + + @Override + public BaseCUserEntity getByToken(String token) { + + BaseCUserEntity user = null; + + logger.info("获取用户信息start ..." + token); + String key = Constant.tokenPrev + token; + ValueOperations operations = baseCUserTokenRedisTemplate.opsForValue(); + + // 缓存 + boolean hasKey = baseCUserTokenRedisTemplate.hasKey(key); + if(hasKey) { + // 从缓存获取用户信息 + user = operations.get(key); + logger.info("缓存中获取用户信息End-" + token); + return user; + } + if(token.endsWith(Constant.TOKEN_WXC_END)){ + user = wxCUserMapper.findByToken(token); + } + // 插入缓存 + operations.set(key, user, 3600, TimeUnit.SECONDS); + logger.info("DB中获取用户信息End-" + token); + return user; + } + + +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBusinessServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBusinessServiceImpl.java index a8e8db3be..ade7d731c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBusinessServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBusinessServiceImpl.java @@ -82,6 +82,8 @@ public class WxBusinessServiceImpl implements WxBusinessService { BigDecimal businessSumMoney = new BigDecimal(0); WxRentContract query = new WxRentContract(); query.setBusinessId((Integer) e.get("id")); + query.setIsDel(0); + query.updateTenantInfo(wxBusiness.getTenantInfo()); List rentContractList = wxRentContractMapper.selectList(new QueryWrapper<>(query)); for (WxRentContract dbRent : rentContractList) { if (dbRent.getStatus().equals(EnumRentContractStatus.INTENTION.getCode()) || @@ -103,6 +105,8 @@ public class WxBusinessServiceImpl implements WxBusinessService { WxPropertyContract pquery = new WxPropertyContract(); pquery.setBusinessId((Integer) e.get("id")); + query.setIsDel(0); + pquery.updateTenantInfo(wxBusiness.getTenantInfo()); List propertyContractList = wxPropertyContractMapper.selectList(new QueryWrapper<>(pquery)); for (WxPropertyContract dbRent : propertyContractList) { if (dbRent.getStatus().equals(EnumRentContractStatus.INTENTION.getCode()) || diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java index f06a86c34..269118521 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java @@ -9,6 +9,7 @@ import com.iformall.domain.po.WxAuthorizerInfo; import com.iformall.domain.po.WxCUser; import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxCreditHistory; +import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.domain.po.msg.FmInsideCLoginMsg; import com.iformall.domain.vo.UserCountVo; import com.iformall.enums.*; @@ -52,8 +53,8 @@ public class WxCUserServiceImpl implements WxCUserService { private MqBaseProducer mqBaseProducer; @Autowired - @Qualifier("cuserTokenRedisTemplate") - RedisTemplate cUserTokenRedisTemplate; + @Qualifier("baseCUserTokenRedisTemplate") + RedisTemplate baseCUserTokenRedisTemplate; @Override public PageInfo listAsPage(WxCUser record, Integer pageIndex, Integer pageSize) { @@ -91,6 +92,8 @@ public class WxCUserServiceImpl implements WxCUserService { if(oldUser != null) { // 已有,更新 user.setId(oldUser.getId()); + user.setLoginCount(oldUser.getLoginCount()==null?0:oldUser.getLoginCount() + 1); + user.setUpdateDate(curr); // TODO 是否其他信息需要更新 ret = wxCUserMapper.updateById(user); return ret; @@ -179,8 +182,8 @@ public class WxCUserServiceImpl implements WxCUserService { userL.setUpdateDate(curr); int ret = wxCUserMapper.updateById(userL); String key = Constant.tokenPrev + record.getOpenId(); - if(cUserTokenRedisTemplate.hasKey(key)){ - cUserTokenRedisTemplate.delete(key); + if(baseCUserTokenRedisTemplate.hasKey(key)){ + baseCUserTokenRedisTemplate.delete(key); } return ret; } @@ -195,8 +198,8 @@ public class WxCUserServiceImpl implements WxCUserService { userL.setUpdateDate(curr); int ret = wxCUserMapper.updateById(userL); String key = Constant.tokenPrev + record.getOpenId(); - if(cUserTokenRedisTemplate.hasKey(key)){ - cUserTokenRedisTemplate.delete(key); + if(baseCUserTokenRedisTemplate.hasKey(key)){ + baseCUserTokenRedisTemplate.delete(key); } return ret; } @@ -210,8 +213,8 @@ public class WxCUserServiceImpl implements WxCUserService { userL.setUpdateDate(curr); int ret = wxCUserMapper.updateById(userL); String key = Constant.tokenPrev + record.getOpenId(); - if(cUserTokenRedisTemplate.hasKey(key)){ - cUserTokenRedisTemplate.delete(key); + if(baseCUserTokenRedisTemplate.hasKey(key)){ + baseCUserTokenRedisTemplate.delete(key); } return ret; } @@ -311,8 +314,8 @@ public class WxCUserServiceImpl implements WxCUserService { } } String key = Constant.tokenPrev + user.getOpenId(); - if(cUserTokenRedisTemplate.hasKey(key)){ - cUserTokenRedisTemplate.delete(key); + if(baseCUserTokenRedisTemplate.hasKey(key)){ + baseCUserTokenRedisTemplate.delete(key); } return score; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTokenServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTokenServiceImpl.java deleted file mode 100644 index c49c62d4a..000000000 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTokenServiceImpl.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.iformall.service.impl; - -import com.iformall.common.IdWorker; -import com.iformall.domain.po.WxCUser; -import com.iformall.mapper.WxCUserMapper; -import com.iformall.mapper.WxCouponOrderMapper; -import com.iformall.mapper.WxScoreHistoryMapper; -import com.iformall.mapper.WxScoreRulesMapper; -import com.iformall.service.WxCUserTokenService; -import com.iformall.service.WxScoreRulesService; -import com.iformall.utils.Constant; -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.concurrent.TimeUnit; - -@Service -public class WxCUserTokenServiceImpl implements WxCUserTokenService { - private final Logger logger = LoggerFactory.getLogger(this.getClass()); - - @Autowired - WxCUserMapper wxCUserMapper; - - @Autowired - @Qualifier("cuserTokenRedisTemplate") - RedisTemplate cUserTokenRedisTemplate; - - @Override - public WxCUser getByToken(String token) { - logger.info("获取用户信息start ..." + token); - String key = Constant.tokenPrev + token; - ValueOperations operations = cUserTokenRedisTemplate.opsForValue(); - - // 缓存 - boolean hasKey = cUserTokenRedisTemplate.hasKey(key); - if(hasKey) { - // 从缓存获取用户信息 - WxCUser user = operations.get(key); - logger.info("缓存中获取用户信息End-" + token); - return user; - } - WxCUser user = wxCUserMapper.findByToken(token); - // 插入缓存 - operations.set(key, user, 3600, TimeUnit.SECONDS); - logger.info("DB中获取用户信息End-" + token); - return user; - } - - @Override - public int saveOrUpdate(WxCUser user) { - int ret = 0; - Date curr = new Date(); - if (user.getId() == null) { - //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); - final IdWorker idWorker = IdWorker.get(); - user.setId(idWorker.nextId()); - user.setLoginCount(1); - user.setCreateDate(curr); - user.setUpdateDate(curr); - ret = wxCUserMapper.insert(user); - } else { - user.setUpdateDate(curr); - ret = wxCUserMapper.updateById(user); - } - String key = Constant.tokenPrev + user.getToken(); - // 缓存已存在,删除 - boolean hasKey = cUserTokenRedisTemplate.hasKey(key); - if(hasKey) { - cUserTokenRedisTemplate.delete(key); - logger.info("更新用户,从缓存中删除用户 token >> " + user.getToken()); - } - - return ret; - } - -} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java index 9b5130b0e..a23afaf93 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java @@ -2168,7 +2168,7 @@ public class WxChartServiceImpl implements WxChartDataService { for (int i = 0; i < levelList.size(); i++) { WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto(); - dto.updateFinalTenantInfo(tenantEntity); + dto.updateTenantInfo(tenantEntity); dto.setStartTime(DateUtils.stringToDate(startdate)); dto.setEndTime(DateUtils.stringToDate(enddate)); if (i + 1 < levelList.size()) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java index 7abc8d2e2..2514f637f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java @@ -59,7 +59,7 @@ public class WxLevelConfigServiceImpl implements WxLevelConfigService { l.setScale(WxLevelConfig.DEFAULT_SCALE); } WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto(); - dto.updateFinalTenantInfo(record); + dto.updateTenantInfo(record); dto.setLevelStartScore(l.getPoints()); if (i + 1 - `id`,`phone`,`birthdate`,`education`,`sex`,`email`,`address`,`poins`,`tag_id`, - `create_date`,`update_date`,`tenant_id`,`parent_tenant_id`,`final_tenant_id`,`name`,`nick_name`,`avatar_url`, - `credit`,`active_time`,`login_count`,`act_record` + distinct wcubi.`id`,wcubi.`phone`,wcubi.`birthdate`,wcubi.`education`,wcubi.`sex`,wcubi.`email`, + wcubi.`address`,wcubi.`poins`,wcubi.`tag_id`,wcubi.`create_date`,wcubi.`update_date`, + wcubi.`tenant_id`,wcubi.`parent_tenant_id`,wcubi.`final_tenant_id`,wcubi.`name`,wcubi.`nick_name`, + wcubi.`avatar_url`,wcubi.`credit`,wcubi.`active_time`,wcubi.`login_count`,wcubi.`act_record` ,(select level from wx_level_config where poins >= points and tenant_id=wcubi.tenant_id - order by points desc limit 1 ) level,status + order by points desc limit 1 ) level,wcubi.status where 1 = 1 - and `id` = #{id} + and wcubi.`id` = #{id} - and `tenant_id` = #{tenantId} + and wcu.`tenant_id` = #{tenantId} - and `parent_tenant_id` = #{parentTenantId} + and wcu.`parent_tenant_id` = #{parentTenantId} - and `final_tenant_id` = #{finalTenantId} + and wcubi.`final_tenant_id` = #{finalTenantId} - and `phone` like concat('%', #{phone},'%') + and wcubi.`phone` like concat('%', #{phone},'%') - and `birthdate` = #{birthdate} + and wcubi.`birthdate` = #{birthdate} - and `education` like concat('%', #{education},'%') + and wcubi.`education` like concat('%', #{education},'%') - and `sex` = #{sex} + and wcubi.`sex` = #{sex} - and `email` like concat('%', #{email},'%') + and wcubi.`email` like concat('%', #{email},'%') - and `address` like concat('%', #{address},'%') + and wcubi.`address` like concat('%', #{address},'%') - and `poins` = #{poins} + and wcubi.`poins` = #{poins} - and `credit` = #{credit} + and wcubi.`credit` = #{credit} - and `tag_id` = #{tagId} + and wcubi.`tag_id` = #{tagId} - and `create_date` = #{createDate} + and wcubi.`create_date` = #{createDate} - and `update_date` = #{updateDate} + and wcubi.`update_date` = #{updateDate} - and `act_record` = #{actRecord} + and wcubi.`act_record` = #{actRecord} - and `name` like concat('%', #{name},'%') + and wcubi.`name` like concat('%', #{name},'%') - and `create_date` between #{startTime} and #{endTime} + and wcubi.`create_date` between #{startTime} and #{endTime} - and `status` = #{status} + and wcubi.`status` = #{status} - and id in + and wcubi.id in #{idItem} - order by ${sortColumns} + order by wcubi.`active_time` DESC + + - - c.`id`,c.`phone`,cb.`birthdate`,cb.`education`,cb.`sex`,cb.`email`,cb.`address`,cb.`poins`,cb.`tag_id`, - cb.`create_date`,cb.`update_date`,c.`tenant_id`,cb.`name`,cb.`level`,cb.`nick_name`,cb.`act_record`,cb.`parent_tenant_id` - - update wx_c_user_basic_info set poins=#{poins} where id=#{id} @@ -160,85 +159,90 @@ - cub.id,cub.phone,cub.birthdate,cub.education,cub.sex,cub.email,cub.address,cub.poins,cub.tag_id, + distinct cub.id,cub.phone,cub.birthdate,cub.education,cub.sex,cub.email,cub.address,cub.poins,cub.tag_id, cub.create_date,cub.update_date,cub.tenant_id,cub.name,cub.level,cub.nick_name,cub.score_date,cub.parent_tenant_id @@ -247,7 +251,7 @@ from wx_c_user_basic_info cub inner join wx_c_user cu on cu.user_id = cub.id - where 1=1 and cub.status=0 + where cub.status=0 and cub.poins >= #{levelStartScore} @@ -262,10 +266,10 @@ - and cub.`tenant_id` = #{tenantId} + and cu.`tenant_id` = #{tenantId} - and cub.`parent_tenant_id` = #{parentTenantId} + and cu.`parent_tenant_id` = #{parentTenantId} @@ -274,84 +278,88 @@ select from wx_c_user_basic_info cub inner join wx_c_user cu on cu.user_id = cub.id - where cub.status = 0 and cu.phone is not null + where cub.status = 0 AND DATE_FORMAT(cub.birthdate,'%m-%d') >= #{begin} AND DATE_FORMAT(cub.birthdate,'%m-%d') <= #{end} - and cub.`tenant_id` = #{tenantId} + and cu.`tenant_id` = #{tenantId} - and cub.`parent_tenant_id` = #{parentTenantId} + and cu.`parent_tenant_id` = #{parentTenantId} @@ -369,6 +377,7 @@ + @@ -378,9 +387,9 @@ - cu.`id`,cu.`phone`,cu.`birthdate`,cu.`education`,cu.`sex`,cu.`email`,cu.`address`,cu.`poins`,cu.`tag_id`, + distinct cu.`id`,cu.`phone`,cu.`birthdate`,cu.`education`,cu.`sex`,cu.`email`,cu.`address`,cu.`poins`,cu.`tag_id`, cu.`create_date`,cu.`update_date`,cu.`tenant_id`,cu.`name`,cu.`level`,cu.`nick_name`, - cut.`tags`,cu.`credit`,cu.`active_time`,cu.`act_record`,cu.`parent_tenant_id` + cut.`tags`,cu.`credit`,cu.`active_time`,cu.`act_record`,cu.`parent_tenant_id`,cu.`final_tenant_id` @@ -391,10 +400,13 @@ - and cu.`tenant_id` = #{tenantId} + and c.`tenant_id` = #{tenantId} - and cu.`parent_tenant_id` = #{parentTenantId} + and c.`parent_tenant_id` = #{parentTenantId} + + + and cu.`final_tenant_id` = #{finalTenantId} @@ -460,30 +472,32 @@ select from wx_c_user_basic_info cu + left join wx_c_user c on c.user_id = cu.id left join wx_c_user_tags cut on cut.`id` = cu.`tag_id` - cu.`id`,cu.`phone`,cu.`email` + distinct cu.`id`,cu.`phone`,cu.`email` where 1=1 - and cu.`tenant_id` = #{tenantId} + and c.`tenant_id` = #{tenantId} - and cu.`parent_tenant_id` = #{parentTenantId} + and c.`parent_tenant_id` = #{parentTenantId} @@ -550,7 +564,8 @@ select from wx_c_user_basic_info cu + left join wx_c_user c on c.user_id = cu.id join wx_c_user_tags cut on cut.`id` = cu.`tag_id` @@ -568,22 +584,26 @@ diff --git a/mallinkService/src/main/resources/mapper/WxCUserCarMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserCarMapper.xml index 4316f7a1d..28763d65f 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserCarMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserCarMapper.xml @@ -87,11 +87,9 @@ where uc.c_user_id = ubi.id and uc.tenant_id = #{tenantId} - and ubi.tenant_id = #{tenantId} and uc.parent_tenant_id = #{parentTenantId} - and ubi.parent_tenant_id = #{parentTenantId} and ubi.create_date >= #{startTime} @@ -119,11 +117,9 @@ WHERE uc.c_user_id = ubi.id and uc.tenant_id = #{tenantId} - and ubi.tenant_id = #{tenantId} and uc.parent_tenant_id = #{parentTenantId} - and ubi.parent_tenant_id = #{parentTenantId} AND ubi.create_date BETWEEN #{startdate} AND #{enddate}) c GROUP BY c.create_time ORDER BY c.create_time diff --git a/mallinkSysAdmin/src/main/java/com/iformall/config/RedisConfig.java b/mallinkSysAdmin/src/main/java/com/iformall/config/RedisConfig.java index f298da375..0d2da6c01 100644 --- a/mallinkSysAdmin/src/main/java/com/iformall/config/RedisConfig.java +++ b/mallinkSysAdmin/src/main/java/com/iformall/config/RedisConfig.java @@ -2,6 +2,7 @@ package com.iformall.config; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.*; +import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxCouponChannelVo; import org.slf4j.Logger; @@ -142,6 +143,23 @@ public class RedisConfig extends CachingConfigurerSupport { return template; } + @Bean("baseCUserTokenRedisTemplate") + public RedisTemplate getBaseCUserTokenRedisTemplate(RedisConnectionFactory connectionFactory) { + RedisTemplate template = new RedisTemplate(); + + Jackson2JsonRedisSerializer j = new Jackson2JsonRedisSerializer(BaseCUserEntity.class); + // value值的序列化 + template.setValueSerializer(j); + template.setHashKeySerializer(j); + + // key的序列化 + template.setKeySerializer(new StringRedisSerializer()); + template.setHashKeySerializer(new StringRedisSerializer()); + + template.setConnectionFactory(connectionFactory); + return template; + } + @Bean("cUserBasicInfoRedisTemplate") public RedisTemplate getCUserBasicInfoRedisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate template = new RedisTemplate(); diff --git a/mallinkWebSocketServer/src/main/java/com/iformall/config/RedisConfig.java b/mallinkWebSocketServer/src/main/java/com/iformall/config/RedisConfig.java index 34982e852..605d67b98 100644 --- a/mallinkWebSocketServer/src/main/java/com/iformall/config/RedisConfig.java +++ b/mallinkWebSocketServer/src/main/java/com/iformall/config/RedisConfig.java @@ -2,6 +2,7 @@ package com.iformall.config; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.*; +import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxCouponChannelVo; import org.slf4j.Logger; @@ -127,6 +128,23 @@ public class RedisConfig extends CachingConfigurerSupport { return template; } + @Bean("baseCUserTokenRedisTemplate") + public RedisTemplate getBaseCUserTokenRedisTemplate(RedisConnectionFactory connectionFactory) { + RedisTemplate template = new RedisTemplate(); + + Jackson2JsonRedisSerializer j = new Jackson2JsonRedisSerializer(BaseCUserEntity.class); + // value值的序列化 + template.setValueSerializer(j); + template.setHashKeySerializer(j); + + // key的序列化 + template.setKeySerializer(new StringRedisSerializer()); + template.setHashKeySerializer(new StringRedisSerializer()); + + template.setConnectionFactory(connectionFactory); + return template; + } + @Bean("cUserBasicInfoRedisTemplate") public RedisTemplate getCUserBasicInfoRedisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate template = new RedisTemplate(); diff --git a/mallinkWebSocketServer/src/main/java/com/iformall/interceptor/AuthHandshakeInterceptor.java b/mallinkWebSocketServer/src/main/java/com/iformall/interceptor/AuthHandshakeInterceptor.java index 32e27efd3..43190f805 100644 --- a/mallinkWebSocketServer/src/main/java/com/iformall/interceptor/AuthHandshakeInterceptor.java +++ b/mallinkWebSocketServer/src/main/java/com/iformall/interceptor/AuthHandshakeInterceptor.java @@ -1,9 +1,9 @@ package com.iformall.interceptor; import com.iformall.common.ErrorCode; -import com.iformall.domain.po.WxCUser; +import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.exception.MallinkException; -import com.iformall.service.WxCUserTokenService; +import com.iformall.service.CUserTokenService; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -29,7 +29,7 @@ public class AuthHandshakeInterceptor implements HandshakeInterceptor { private Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired - WxCUserTokenService userTokenService; + CUserTokenService cUserTokenService; public static final String LOGIN_USER_KEY = "LOGIN_USER_KEY"; public static final String TENANT_ID = "TENANT_ID"; @@ -52,15 +52,15 @@ public class AuthHandshakeInterceptor implements HandshakeInterceptor { } // 查询token信息 - WxCUser wxCUser = userTokenService.getByToken(token); - if(wxCUser == null || wxCUser.getExpireTime().getTime() < System.currentTimeMillis()){ + BaseCUserEntity cUser = cUserTokenService.getByToken(token); + if(cUser == null || cUser.getExpireTime().getTime() < System.currentTimeMillis()){ throw new MallinkException(ErrorCode.NET_TOKEN_INVALID.getCode(), "URL:" + serverHttpRequest.getServletRequest().getRequestURI() + " token失效,请重新登录"); } HttpSession session = serverHttpRequest.getServletRequest().getSession(); if (session != null) { //attributes.put("userId", session.getAttribute("userId")); - attributes.put(LOGIN_USER_KEY, wxCUser.getId()); - attributes.put(TENANT_ID, wxCUser.getTenantId()); + attributes.put(LOGIN_USER_KEY, cUser.getId()); + attributes.put(TENANT_ID, cUser.getTenantId()); } return true; }