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

wxcuser缓存

release_toaliyun_real
xiaohanzi 5 лет назад
Родитель
Сommit
a15297e7bf
7 измененных файлов: 33 добавлений и 21 удалений
  1. +17
    -9
      mallinkCApi/src/main/java/com/iformall/controller/BaseController.java
  2. +0
    -1
      mallinkCApi/src/main/java/com/iformall/controller/WxMsgValidationcodeController.java
  3. +1
    -0
      mallinkCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java
  4. +1
    -1
      mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java
  5. +9
    -6
      mallinkService/src/main/java/com/iformall/service/impl/CUserTokenServiceImpl.java
  6. +1
    -0
      mallinkService/src/main/java/com/iformall/utils/Constant.java
  7. +4
    -4
      mallinkService/src/main/resources/mapper/WxCUserMapper.xml

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

@@ -9,6 +9,7 @@ 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;
import com.iformall.exception.MallinkException; import com.iformall.exception.MallinkException;
import com.iformall.service.CUserTokenService;
import com.iformall.service.WxAppinfoService; import com.iformall.service.WxAppinfoService;
import com.iformall.service.WxCUserBasicInfoService; import com.iformall.service.WxCUserBasicInfoService;
import com.iformall.service.WxCUserService; import com.iformall.service.WxCUserService;
@@ -20,6 +21,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@@ -31,6 +33,7 @@ import java.beans.PropertyEditorSupport;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.concurrent.TimeUnit;


@RestController @RestController
public class BaseController { public class BaseController {
@@ -48,11 +51,14 @@ public class BaseController {


@Autowired @Autowired
private WxCUserBasicInfoService wxCUserBasicInfoService; private WxCUserBasicInfoService wxCUserBasicInfoService;
@Autowired
private CUserTokenService cUserTokenService;


@Autowired @Autowired
@Qualifier("baseCUserTokenRedisTemplate") @Qualifier("baseCUserTokenRedisTemplate")
RedisTemplate<String, BaseCUserEntity> baseCUserTokenRedisTemplate; RedisTemplate<String, BaseCUserEntity> baseCUserTokenRedisTemplate;
@InitBinder @InitBinder
public void InitBinder(WebDataBinder dataBinder) { public void InitBinder(WebDataBinder dataBinder) {
dataBinder.registerCustomEditor(Date.class, new PropertyEditorSupport() { dataBinder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
@@ -93,11 +99,11 @@ public class BaseController {
return tenantEntity; return tenantEntity;
} }


public Long getUserId() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
Long cUserId = (Long) request.getAttribute(Constant.LOGIN_USER_KEY);
return cUserId;
}
// public Long getUserId() {
// HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
// Long cUserId = (Long) request.getAttribute(Constant.LOGIN_USER_KEY);
// return cUserId;
// }


public Long getMemberId() throws Exception { public Long getMemberId() throws Exception {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
@@ -113,8 +119,10 @@ public class BaseController {
* 请尽量多用getTenantId, getUserId * 请尽量多用getTenantId, getUserId
*/ */
public WxCUser getWxCUser() { public WxCUser getWxCUser() {
Long cUserId = getUserId();
WxCUser user = wxCUserService.getById(cUserId);
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
WxCUser user = (WxCUser) request.getAttribute(Constant.REQUEST_WX_C_USER_KEY);
// Long cUserId = getUserId();
// WxCUser user = wxCUserService.getById(cUserId);
if (user == null) { if (user == null) {
throw new MallinkException(ErrorCode.USER_IS_EMPTY); throw new MallinkException(ErrorCode.USER_IS_EMPTY);
} }
@@ -127,7 +135,7 @@ public class BaseController {
} }
return user; return user;
} }
/** /**
* *
*/ */


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

@@ -44,7 +44,6 @@ public class WxMsgValidationcodeController extends BaseController {
@ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true), @ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true),
@ApiImplicitParam(name = "type", value = "场景", dataType = "Integer", paramType = "query", required = true)}) @ApiImplicitParam(name = "type", value = "场景", dataType = "Integer", paramType = "query", required = true)})
public ResultData sendvalidationcode(String phone, Integer type) { public ResultData sendvalidationcode(String phone, Integer type) {
WxCUser user = getWxCUser();
WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode(); WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode();
wxMsgValidationcode.updateTenantInfo(getTenantInfo()); wxMsgValidationcode.updateTenantInfo(getTenantInfo());
wxMsgValidationcode.setPhone(phone); wxMsgValidationcode.setPhone(phone);


+ 1
- 0
mallinkCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java Просмотреть файл

@@ -67,6 +67,7 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter {
//设置userId到request里,后续根据userId,获取用户信息 //设置userId到request里,后续根据userId,获取用户信息
request.setAttribute(Constant.LOGIN_USER_KEY, cUser.getId()); request.setAttribute(Constant.LOGIN_USER_KEY, cUser.getId());
request.setAttribute(Constant.TENANT_ID, cUser.getTenantId()); request.setAttribute(Constant.TENANT_ID, cUser.getTenantId());
request.setAttribute(Constant.REQUEST_WX_C_USER_KEY, cUser);
if (StringUtils.isNotBlank(cUser.getParentTenantId())) { if (StringUtils.isNotBlank(cUser.getParentTenantId())) {
request.setAttribute(Constant.PARENT_TENANT_ID, cUser.getParentTenantId()); request.setAttribute(Constant.PARENT_TENANT_ID, cUser.getParentTenantId());
} }


+ 1
- 1
mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java Просмотреть файл

@@ -17,7 +17,7 @@ public interface WxCUserMapper extends CommonMapper<WxCUser, Long> {


WxCUser findByUnionId(WxCUser record); WxCUser findByUnionId(WxCUser record);


BaseCUserEntity findByToken(String token);
WxCUser findByToken(String token);
long findCount(WxCUserBasicInfoDto dto); long findCount(WxCUserBasicInfoDto dto);




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

@@ -1,5 +1,6 @@
package com.iformall.service.impl; package com.iformall.service.impl;


import com.iformall.domain.po.WxCUser;
import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.domain.po.base.BaseCUserEntity;
import com.iformall.mapper.WxCUserMapper; import com.iformall.mapper.WxCUserMapper;
import com.iformall.service.CUserTokenService; import com.iformall.service.CUserTokenService;
@@ -28,7 +29,7 @@ public class CUserTokenServiceImpl implements CUserTokenService {
@Override @Override
public BaseCUserEntity getByToken(String token) { public BaseCUserEntity getByToken(String token) {


BaseCUserEntity user = null;
BaseCUserEntity baseUser = null;


logger.info("获取用户信息start ..." + token); logger.info("获取用户信息start ..." + token);
String key = Constant.tokenPrev + token; String key = Constant.tokenPrev + token;
@@ -38,17 +39,19 @@ public class CUserTokenServiceImpl implements CUserTokenService {
boolean hasKey = baseCUserTokenRedisTemplate.hasKey(key); boolean hasKey = baseCUserTokenRedisTemplate.hasKey(key);
if(hasKey) { if(hasKey) {
// 从缓存获取用户信息 // 从缓存获取用户信息
user = operations.get(key);
baseUser = operations.get(key);
logger.info("缓存中获取用户信息End-" + token); logger.info("缓存中获取用户信息End-" + token);
return user;
return baseUser;
} }
if(token.endsWith(Constant.TOKEN_WXC_END)){ if(token.endsWith(Constant.TOKEN_WXC_END)){
user = wxCUserMapper.findByToken(token);
WxCUser user = wxCUserMapper.findByToken(token);
operations.set(key, user, 3600, TimeUnit.SECONDS);
baseUser = user;
} }
// 插入缓存 // 插入缓存
operations.set(key, user, 3600, TimeUnit.SECONDS);
//operations.set(key, user, 3600, TimeUnit.SECONDS);
logger.info("DB中获取用户信息End-" + token); logger.info("DB中获取用户信息End-" + token);
return user;
return baseUser;
} }






+ 1
- 0
mallinkService/src/main/java/com/iformall/utils/Constant.java Просмотреть файл

@@ -30,6 +30,7 @@ public class Constant {
public static final String LOGIN_MEMBER_KEY = "LOGIN_MEMBER_KEY"; public static final String LOGIN_MEMBER_KEY = "LOGIN_MEMBER_KEY";
public static final String TENANT_ID = "TENANT_ID"; public static final String TENANT_ID = "TENANT_ID";
public static final String PARENT_TENANT_ID = "PARENT_TENANT_ID"; public static final String PARENT_TENANT_ID = "PARENT_TENANT_ID";
public static final String REQUEST_WX_C_USER_KEY = "REQUEST_WX_C_USER";




public static final String adminPage = "https://admin.malls.iformall.com"; public static final String adminPage = "https://admin.malls.iformall.com";


+ 4
- 4
mallinkService/src/main/resources/mapper/WxCUserMapper.xml Просмотреть файл

@@ -231,12 +231,12 @@
</select> </select>


<select id="findByOpenId" parameterType="com.iformall.domain.po.WxCUser" resultMap="BaseResultMap"> <select id="findByOpenId" parameterType="com.iformall.domain.po.WxCUser" resultMap="BaseResultMap">
select * from wx_c_user
select <include refid="allColumns"/> from wx_c_user
where `app_id` = #{appId} and `open_id` = #{openId} where `app_id` = #{appId} and `open_id` = #{openId}
</select> </select>


<select id="findByUnionId" parameterType="com.iformall.domain.po.WxCUser" resultMap="BaseResultMap"> <select id="findByUnionId" parameterType="com.iformall.domain.po.WxCUser" resultMap="BaseResultMap">
select * from wx_c_user
select <include refid="allColumns"/> from wx_c_user
where `open_app_id` = #{openAppId} and `union_id` = #{unionId} where `open_app_id` = #{openAppId} and `union_id` = #{unionId}
</select> </select>


@@ -250,8 +250,8 @@
<result column="expire_time" jdbcType="TIMESTAMP" property="expireTime"/> <result column="expire_time" jdbcType="TIMESTAMP" property="expireTime"/>
</resultMap> </resultMap>


<select id="findByToken" resultMap="BaseCUserResultMap">
select id,user_id,tenant_id,parent_tenant_id,token,expire_time from wx_c_user
<select id="findByToken" resultMap="BaseResultMap">
select <include refid="allColumns"/> from wx_c_user
where `token` = #{token} where `token` = #{token}
</select> </select>




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