Browse Source

Merge branch 'dev_bugfix_user_cache' into dev

dev_shibei_match
wangchao 5 years ago
parent
commit
241326e39e
  1. 5
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/RegisterRelationDao.java
  2. 91
      epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBaseInfoRedis.java
  3. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GridLatestServiceImpl.java
  4. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java
  5. 1
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java
  6. 28
      epmet-user/epmet-user-server/src/main/resources/mapper/RegisterRelationDao.xml

5
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/RegisterRelationDao.java

@ -18,11 +18,11 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.RegisterRelationDTO;
import com.epmet.entity.RegisterRelationEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
@ -44,4 +44,7 @@ public interface RegisterRelationDao extends BaseDao<RegisterRelationEntity> {
* @date 2020.07.23 15:31
**/
RegisterRelationEntity selectRegisteredGridIdByUserId(@Param("userId") String userId);
RegisterRelationEntity selectRegisteredGridIdByUserIdAndCustomerId(@Param("userId") String userId, @Param("customerId")String customerId);
}

91
epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBaseInfoRedis.java

@ -190,6 +190,97 @@ public class UserBaseInfoRedis {
return null;
}
/**
* @Description 缓存中获取用户基本信息
* @param userId
* @return
* @author wangc
* @date 2020.07.23 14:58
**/
public UserBaseInfoResultDTO getUserInfo(String userId,String customerId){
if(StringUtils.isNotBlank(userId)){
//获取居民缓存key
Map<String,Object> map = redisUtils.hGetAll(UserRedisKeys.getResiUserKey(userId));
if(null != map && !map.isEmpty()) {
//缓存中有数据,直接返回
return BeanUtil.mapToBean(map, UserBaseInfoResultDTO.class, true);
}
//缓存中没有数据,先查数据库,放入缓存后再返回
UserBaseInfoResultDTO baseInfo = userBaseInfoDao.selectListByUserIdList(userId);
if(null != baseInfo && StringUtils.isNotBlank(baseInfo.getId())){
//如果没有首次注册网格,则没有网格名称(xx机关-xx网格)、显示昵称(xx网格-x先生/女士)
RegisterRelationEntity relation = registerRelationDao.selectRegisteredGridIdByUserIdAndCustomerId(userId,customerId);
if(null != relation && StringUtils.isNotBlank(relation.getGridId())){
baseInfo.setCustomerId(relation.getCustomerId());
BelongGridNameFormDTO gridParam = new BelongGridNameFormDTO();
gridParam.setGridId(relation.getGridId());
baseInfo.setRegisteredGridId(relation.getGridId());
Result<BelongGridNameResultDTO> gridResult =
govOrgOpenFeignClient.getGridNameByGridId(gridParam);
if(gridResult.success() && null != gridResult.getData()
&& StringUtils.isNotBlank(gridResult.getData().getBelongsGridName())){
String gridFullName = gridResult.getData().getBelongsGridName();
baseInfo.setRegisteredGridName(gridFullName);
StringBuffer buffer = new StringBuffer(gridFullName.split(ModuleConstant.DASH)[NumConstant.ONE]).append(ModuleConstant.DASH).append(baseInfo.getSurname());
switch (baseInfo.getGender()) {
case NumConstant.ONE_STR:
buffer.append(ModuleConstant.RESI_USER_NICKNAME_SUFFIX_MALE);
break;
case NumConstant.TWO_STR:
buffer.append(ModuleConstant.RESI_USER_NICKNAME_SUFFIX_FEMALE);
break;
default:
buffer.append(ModuleConstant.RESI_USER_NICKNAME_SUFFIX_GENDER_UNKNOWN);
}
baseInfo.setShowName(buffer.toString());
}
}
else{
//如果没有居民注册记录,说明当前用户是陌生人,需要从陌生人网格访问列表中查询所属的客户Id
LatestGridInfoResultDTO gridLatest =
gridLatestDao.selectLatestGridInfoByUserId(userId);
if(null != gridLatest){
baseInfo.setCustomerId(gridLatest.getCustomerId());
}
}
set(baseInfo);
return baseInfo;
}else{
//如果没有,说明这里是陌生人
//陌生人不放入缓存,也不更新用户基础信息表
baseInfo = new UserBaseInfoResultDTO();
baseInfo.setUserId(userId);
List<UserWechatEntity> wechatInfo = userWechatDao.selectByUserId(userId);
if(null != wechatInfo && !wechatInfo.isEmpty()){
baseInfo.setNickname(wechatInfo.get(NumConstant.ZERO).getNickname());
if(StringUtils.isBlank(baseInfo.getNickname())){
baseInfo.setNickname(ModuleConstant.EMPTY_STR);
}
}else{
return null;
}
RegisterRelationEntity relation = registerRelationDao.selectRegisteredGridIdByUserId(userId);
if(null != relation && StringUtils.isNotBlank(relation.getGridId())){
baseInfo.setCustomerId(relation.getCustomerId());
}else{
LatestGridInfoResultDTO gridLatest =
gridLatestDao.selectLatestGridInfoByUserId(userId);
if(null != gridLatest){
baseInfo.setCustomerId(gridLatest.getCustomerId());
}
}
}
return baseInfo;
}
return null;
}
/**
* @Description 更新缓存
* @param entity

2
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GridLatestServiceImpl.java

@ -210,7 +210,7 @@ public class GridLatestServiceImpl extends BaseServiceImpl<GridLatestDao, GridLa
}
allData.forEach(info -> {
if(StringUtils.isNotBlank(info.getUserId())){
UserBaseInfoResultDTO cache = userBaseInfoRedis.getUserInfo(info.getUserId());
UserBaseInfoResultDTO cache = userBaseInfoRedis.getUserInfo(info.getUserId(),customerUserFormDTO.getCustomerId());
if(null != cache) {
info.setRegisteredGrid(StringUtils.isBlank(cache.getRegisteredGridName()) ? ModuleConstant.EMPTY_STR : cache.getRegisteredGridName());
}

2
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java

@ -342,7 +342,7 @@ public class UserBadgeServiceImpl implements UserBadgeService {
//居民端
CertificationDetailResultDTO resiResult = userBadgeDao.selectBadgeAuthRecord(tokenDto.getUserId(), certificationDetailFormDTO.getBadgeId(),certificationDetailFormDTO.getRecordId());
if(null == resiResult){
UserBaseInfoResultDTO userInfo = userBaseInfoRedis.getUserInfo(tokenDto.getUserId());
UserBaseInfoResultDTO userInfo = userBaseInfoRedis.getUserInfo(tokenDto.getUserId(),certificationDetailFormDTO.getCustomerId());
resiResult = ConvertUtils.sourceToTarget(userInfo,CertificationDetailResultDTO.class);
if(null != resiResult) resiResult.setIdcard(userInfo.getIdNum());
}

1
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java

@ -366,6 +366,7 @@ public class UserBaseInfoServiceImpl extends BaseServiceImpl<UserBaseInfoDao, Us
logger.error("com.epmet.service.impl.UserBaseInfoServiceImpl.extUserInfo,查询不到用户最近访问的网格,用户Id:{}",param.getUserId());
return result;
}
result.setCustomerId(currentGrid.getCustomerId());
result.setGridId(currentGrid.getGridId());
UserRoleFormDTO roleParam = new UserRoleFormDTO();
roleParam.setGridId(currentGrid.getGridId());

28
epmet-user/epmet-user-server/src/main/resources/mapper/RegisterRelationDao.xml

@ -33,6 +33,7 @@
<!-- 查询用户的首次注册网格Id -->
<select id="selectRegisteredGridIdByUserId" resultType="com.epmet.entity.RegisterRelationEntity">
SELECT
DISTINCT
GRID_ID,
CUSTOMER_ID
FROM
@ -43,6 +44,33 @@
user_id = #{userId}
AND
first_register = '1'
ORDER BY
CREATED_TIME desc
LIMIT 1
</select>
<!-- 查询用户的首次注册网格Id -->
<select id="selectRegisteredGridIdByUserIdAndCustomerId" resultType="com.epmet.entity.RegisterRelationEntity">
SELECT
DISTINCT
GRID_ID,
CUSTOMER_ID
FROM
register_relation
WHERE
del_flag = '0'
AND
user_id = #{userId}
AND
customer_id = #{customerId}
AND
first_register = '1'
ORDER BY
CREATED_TIME desc
LIMIT 1
</select>
</mapper>
Loading…
Cancel
Save