Browse Source

明文查询

master
zxc 3 years ago
parent
commit
fcdd2efc60
  1. 2
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/RocketMQConsumerRegister.java
  2. 120
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/listener/CheckAndExportOperationLogListener.java
  3. 5
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java
  4. 5
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java
  5. 28
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/CheckMQMsg.java
  6. 2
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/constant/NeighborhoodConstant.java
  7. 25
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/DetailByTypeFormDTO.java
  8. 20
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DetailByTypeResultDTO.java
  9. 17
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java
  10. 15
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java
  11. 60
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java

2
epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/RocketMQConsumerRegister.java

@ -5,6 +5,7 @@ import com.epmet.commons.rocketmq.constants.TopicConstants;
import com.epmet.commons.rocketmq.register.MQAbstractRegister;
import com.epmet.commons.rocketmq.register.MQConsumerProperties;
import com.epmet.mq.listener.listener.AuthOperationLogListener;
import com.epmet.mq.listener.listener.CheckAndExportOperationLogListener;
import com.epmet.mq.listener.listener.PointOperationLogListener;
import com.epmet.mq.listener.listener.ProjectOperationLogListener;
import org.apache.rocketmq.common.protocol.heartbeat.MessageModel;
@ -19,6 +20,7 @@ public class RocketMQConsumerRegister extends MQAbstractRegister {
register(consumerProperties, ConsomerGroupConstants.AUTH_OPERATION_LOG_GROUP, MessageModel.CLUSTERING, TopicConstants.AUTH, "*", new AuthOperationLogListener());
register(consumerProperties, ConsomerGroupConstants.PROJECT_OPERATION_LOG_GROUP, MessageModel.CLUSTERING, TopicConstants.PROJECT_CHANGED, "*", new ProjectOperationLogListener());
register(consumerProperties, ConsomerGroupConstants.POINT_OPERATION_LOG_GROUP, MessageModel.CLUSTERING, TopicConstants.POINT, "*", new PointOperationLogListener());
register(consumerProperties, ConsomerGroupConstants.CHECK_OR_EXPORT_GROUP, MessageModel.CLUSTERING, TopicConstants.CHECK_OR_EXPORT, "*", new CheckAndExportOperationLogListener());
// ...其他监听器类似
}

120
epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/listener/CheckAndExportOperationLogListener.java

@ -0,0 +1,120 @@
package com.epmet.mq.listener.listener;
import com.alibaba.fastjson.JSON;
import com.epmet.auth.constants.AuthOperationEnum;
import com.epmet.commons.rocketmq.constants.MQUserPropertys;
import com.epmet.commons.rocketmq.messages.CheckMQMsg;
import com.epmet.commons.rocketmq.messages.LoginMQMsg;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.entity.LogOperationEntity;
import com.epmet.mq.listener.bean.log.LogOperationHelper;
import com.epmet.mq.listener.bean.log.OperatorInfo;
import com.epmet.service.LogOperationService;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.common.message.MessageExt;
import org.redisson.api.RLock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* @author zxc
* @Description 查询明文或者导出操作日志监听器
*/
public class CheckAndExportOperationLogListener implements MessageListenerConcurrently {
private Logger logger = LoggerFactory.getLogger(getClass());
private RedisUtils redisUtils;
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
if (redisUtils == null) {
redisUtils = SpringContextUtils.getBean(RedisUtils.class);
}
try {
msgs.forEach(msg -> consumeMessage(msg));
} catch (Exception e) {
logger.error(ExceptionUtils.getErrorStackTrace(e));
return ConsumeConcurrentlyStatus.RECONSUME_LATER;
}
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
private void consumeMessage(MessageExt messageExt) {
String tags = messageExt.getTags();
String msg = new String(messageExt.getBody());
String pendingMsgLabel = messageExt.getUserProperty(MQUserPropertys.BLOCKED_MSG_LABEL);
logger.info("查询明文或者导出操作日志监听器-收到消息内容:{}", msg);
CheckMQMsg msgObj = JSON.parseObject(msg, CheckMQMsg.class);
//获取操作人信息
OperatorInfo operatorInfo = LogOperationHelper.getInstance().getOperatorInfo(msgObj.getUserId());
LogOperationEntity logEntity = new LogOperationEntity();
logEntity.setCategory(messageExt.getTopic());
logEntity.setType(tags);
logEntity.setTypeDisplay(AuthOperationEnum.getDisplay(tags));
logEntity.setIp(msgObj.getIp());
logEntity.setFromApp(msgObj.getFromApp());
logEntity.setFromClient(msgObj.getFromClient());
logEntity.setTargetId("");
logEntity.setCustomerId(operatorInfo.getCustomerId());
logEntity.setOperatorId(msgObj.getUserId());
logEntity.setOperatorName(operatorInfo.getName());
logEntity.setOperatorMobile(operatorInfo.getMobile());
logEntity.setOperatingTime(msgObj.getOperateTime());
logEntity.setContent(msgObj.getContent());
DistributedLock distributedLock = null;
RLock lock = null;
try {
distributedLock = SpringContextUtils.getBean(DistributedLock.class);
lock = distributedLock.getLock(String.format("lock:auth_operation_log:%s:%s", logEntity.getType(), logEntity.getOperatorId()),
30L, 30L, TimeUnit.SECONDS);
SpringContextUtils.getBean(LogOperationService.class).log(logEntity);
} catch (RenException e) {
// 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试
logger.error("【RocketMQ】添加操作日志失败:".concat(ExceptionUtils.getErrorStackTrace(e)));
} catch (Exception e) {
// 不是我们自己抛出的异常,可以让MQ重试
logger.error("【RocketMQ】添加操作日志失败:".concat(ExceptionUtils.getErrorStackTrace(e)));
throw e;
} finally {
distributedLock.unLock(lock);
}
if (StringUtils.isNotBlank(pendingMsgLabel)) {
try {
removePendingMqMsgCache(pendingMsgLabel);
} catch (Exception e) {
logger.error("【查询明文或者导出操作日志监听器】-删除mq阻塞消息缓存失败:{}", ExceptionUtils.getErrorStackTrace(e));
}
}
}
/**
* @description
*
* @param pendingMsgLabel
* @return
* @author wxz
* @date 2021.10.14 16:32:32
*/
private void removePendingMqMsgCache(String pendingMsgLabel) {
String key = RedisKeys.blockedMqMsgKey(pendingMsgLabel);
redisUtils.delete(key);
//logger.info("【登录操作事件监听器】删除pendingMsgLabel成功:{}", pendingMsgLabel);
}
}

5
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java

@ -108,4 +108,9 @@ public interface ConsomerGroupConstants {
* 党建积分操作消费组
*/
String PARTY_BUILDING_GROUP = "party_building_group";
/**
* 查看或者导出 日志记录 消费组
*/
String CHECK_OR_EXPORT_GROUP = "check_or_export_group";
}

5
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java

@ -91,4 +91,9 @@ public interface TopicConstants {
String IC_MESSAGE = "ic_message";
String PARTY_BUILDING = "party_building";
/**
* 查看或者导出 日志记录
*/
String CHECK_OR_EXPORT = "check_or_export";
}

28
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/CheckMQMsg.java

@ -0,0 +1,28 @@
package com.epmet.commons.rocketmq.messages;
import lombok.Data;
import java.util.Date;
@Data
public class CheckMQMsg {
/**
* 谁登录
*/
private String userId;
private String content;
/**
* 操作时间
*/
private Date operateTime;
private String ip;
private String fromApp;
private String fromClient;
}

2
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/constant/NeighborhoodConstant.java

@ -12,4 +12,6 @@ public interface NeighborhoodConstant {
String BUILDING = "building";
String HOUSE = "house";
String IC_RESI_USER = "icResiUser";
}

25
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/DetailByTypeFormDTO.java

@ -0,0 +1,25 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/10/17 13:42
* @DESC
*/
@Data
public class DetailByTypeFormDTO implements Serializable {
private static final long serialVersionUID = 8190270734257503603L;
public interface DetailByTypeForm{}
@NotBlank(message = "type不能为空",groups = DetailByTypeForm.class)
private String type;
@NotBlank(message = "id不能为空",groups = DetailByTypeForm.class)
private String id;
}

20
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DetailByTypeResultDTO.java

@ -0,0 +1,20 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/10/17 13:41
* @DESC
*/
@Data
public class DetailByTypeResultDTO implements Serializable {
private static final long serialVersionUID = -8067849365791132347L;
private String idCard;
private String mobile;
}

17
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java

@ -26,12 +26,10 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.IcHouseDTO;
import com.epmet.dto.IcVaccinePrarmeterDTO;
import com.epmet.dto.form.CheckHouseInfoFormDTO;
import com.epmet.dto.form.DetailByTypeFormDTO;
import com.epmet.dto.form.HouseFormDTO;
import com.epmet.dto.form.VaccinePrarmeterListFormDTO;
import com.epmet.dto.result.HouseAgencyInfoResultDTO;
import com.epmet.dto.result.HouseInfoDTO;
import com.epmet.dto.result.HouseListResultDTO;
import com.epmet.dto.result.HousesNameResultDTO;
import com.epmet.dto.result.*;
import com.epmet.service.IcHouseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -154,6 +152,17 @@ public class IcHouseController {
ValidatorUtils.validateEntity(formDTO, PageFormDTO.AddUserInternalGroup.class);
formDTO.setCustomerId(tokenDto.getCustomerId());
return icHouseService.checkHomeInfo(formDTO);
}
/**
* Desc: 数据明文查询
* @param formDTO
* @author zxc
* @date 2022/10/17 13:45
*/
@PostMapping("detailByType")
public Result<DetailByTypeResultDTO> detailByType(@RequestBody DetailByTypeFormDTO formDTO,@LoginUser TokenDto tokenDto){
ValidatorUtils.validateEntity(formDTO, DetailByTypeFormDTO.DetailByTypeForm.class);
return new Result<DetailByTypeResultDTO>().ok(icHouseService.detailByType(formDTO,tokenDto));
}
}

15
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java

@ -7,11 +7,9 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.IcHouseDTO;
import com.epmet.dto.ImportGeneralDTO;
import com.epmet.dto.form.CheckHouseInfoFormDTO;
import com.epmet.dto.form.DetailByTypeFormDTO;
import com.epmet.dto.form.HouseFormDTO;
import com.epmet.dto.result.HouseAgencyInfoResultDTO;
import com.epmet.dto.result.HouseInfoDTO;
import com.epmet.dto.result.HouseListResultDTO;
import com.epmet.dto.result.HousesNameResultDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.IcHouseEntity;
import java.util.List;
@ -139,4 +137,13 @@ public interface IcHouseService extends BaseService<IcHouseEntity> {
* @return
*/
Result checkHomeInfo(CheckHouseInfoFormDTO formDTO);
/**
* Desc: 数据明文查询
* @param formDTO
* @author zxc
* @date 2022/10/17 13:45
*/
DetailByTypeResultDTO detailByType(DetailByTypeFormDTO formDTO, TokenDto tokenDto);
}

60
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java

@ -3,6 +3,9 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.rocketmq.constants.TopicConstants;
import com.epmet.commons.rocketmq.messages.CheckMQMsg;
import com.epmet.commons.rocketmq.messages.LoginMQMsg;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.OptionResultDTO;
@ -10,10 +13,14 @@ import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.common.CustomerIcHouseRedis;
import com.epmet.commons.tools.redis.common.CustomerResiUserRedis;
import com.epmet.commons.tools.redis.common.bean.HouseInfoCache;
import com.epmet.commons.tools.redis.common.bean.ResiUserInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.IpUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.NeighborhoodConstant;
import com.epmet.dao.IcBuildingDao;
import com.epmet.dao.IcBuildingUnitDao;
import com.epmet.dao.IcHouseDao;
@ -23,7 +30,9 @@ import com.epmet.dto.IcResiCategoryStatsConfigDTO;
import com.epmet.dto.IcResiUserDTO;
import com.epmet.dto.ImportGeneralDTO;
import com.epmet.dto.form.CheckHouseInfoFormDTO;
import com.epmet.dto.form.DetailByTypeFormDTO;
import com.epmet.dto.form.HouseFormDTO;
import com.epmet.dto.form.SystemMsgFormDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.IcBuildingEntity;
import com.epmet.entity.IcBuildingUnitEntity;
@ -32,6 +41,7 @@ import com.epmet.entity.IcNeighborHoodEntity;
import com.epmet.enums.HousePurposeEnums;
import com.epmet.enums.HouseRentFlagEnums;
import com.epmet.enums.HouseTypeEnums;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.OperCustomizeOpenFeignClient;
import com.epmet.redis.IcHouseRedis;
@ -39,10 +49,14 @@ import com.epmet.service.IcHouseService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
@ -69,7 +83,8 @@ public class IcHouseServiceImpl extends BaseServiceImpl<IcHouseDao, IcHouseEntit
private IcBuildingDao icBuildingDao;
@Resource
private IcBuildingUnitDao buildingUnitDao;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Override
public IcHouseDTO get(String id) {
@ -400,4 +415,47 @@ public class IcHouseServiceImpl extends BaseServiceImpl<IcHouseDao, IcHouseEntit
return new Result<CheckHomeInfoResultInfo>().ok(checkHomeInfoResultInfo);
}
/**
* Desc: 数据明文查询
* @param formDTO
* @author zxc
* @date 2022/10/17 13:45
*/
@Override
public DetailByTypeResultDTO detailByType(DetailByTypeFormDTO formDTO, TokenDto tokenDto) {
DetailByTypeResultDTO result = new DetailByTypeResultDTO();
String customerId = tokenDto.getCustomerId();
String userId = tokenDto.getUserId();
CheckMQMsg msg = new CheckMQMsg();
if (formDTO.getType().equals(NeighborhoodConstant.HOUSE)){
HouseInfoCache houseInfo = CustomerIcHouseRedis.getHouseInfo(customerId, formDTO.getId());
if (null == houseInfo){
throw new EpmetException("查询房屋信息失败:"+formDTO.getId());
}
result.setMobile(houseInfo.getOwnerPhone());
result.setIdCard(houseInfo.getOwnerIdCard());
msg.setContent("查看房屋信息明文");
}else if (formDTO.getType().equals(NeighborhoodConstant.IC_RESI_USER)){
ResiUserInfoCache userBaseInfo = CustomerResiUserRedis.getUserBaseInfo(formDTO.getId());
if (null == userBaseInfo){
throw new EpmetException("查询icResiUser失败:"+formDTO.getId());
}
result.setIdCard(userBaseInfo.getIdNum());
result.setMobile(userBaseInfo.getMobile());
msg.setContent("查看居民信息明文");
}
// 发送mq消息
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
msg.setOperateTime(new Date());
msg.setUserId(userId);
msg.setFromApp(tokenDto.getApp());
msg.setIp(IpUtils.getIpAddr(request));
msg.setFromClient(tokenDto.getClient());
SystemMsgFormDTO form = new SystemMsgFormDTO();
form.setMessageType(TopicConstants.CHECK_OR_EXPORT);
form.setContent(msg);
epmetMessageOpenFeignClient.sendSystemMsgByMQ(form);
return result;
}
}

Loading…
Cancel
Save