Commit 28ccf13c authored by xiaoguang.xu's avatar xiaoguang.xu

feat: userDetail update 更新userHashMapping

parent 3b2477ef
......@@ -49,7 +49,7 @@ public class UserDetailController implements IBaseController {
*/
@RequestMapping("/save")
@ApiOperation(httpMethod = "POST", value = "保存/更新用户实名信息")
public JsonResult saveUserdetail(String idNo,
public JsonResult saveUserDetail(String idNo,
@ChineseName @RequestParam String name) {
if (!ValidationUtil.validateChinese(name)) {
log.error("姓名错误,name:{}", name);
......
package cn.quantgroup.xyqb.event;
import java.util.Objects;
import javax.annotation.Resource;
import cn.quantgroup.acolyte.buddhistscriptures.ingester.UserIngest;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import cn.quantgroup.acolyte.buddhistscriptures.ingester.UserIngest;
import javax.annotation.Resource;
import java.util.Objects;
/**
* 发送到Kafka - 综合统计中心 - 登录
......@@ -22,14 +20,8 @@ public class KafkaUserEventListener implements ApplicationListener<StatisticsEve
@Override
public void onApplicationEvent(StatisticsEvent event) {
if(Objects.nonNull(event.getRegister())){
userIngest.sendRegisterInfo(event.getRegister());
}
if(Objects.nonNull(event.getLogin())){
if (Objects.nonNull(event.getLogin())) {
userIngest.sendLoginInfo(event.getLogin());
}
if(Objects.nonNull(event.getUserRealInfo())){
userIngest.sendUserRealInfo(event.getUserRealInfo());
}
}
}
package cn.quantgroup.xyqb.event;
import javax.annotation.Resource;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import cn.quantgroup.acolyte.buddhistscriptures.ingester.UserIngest;
import cn.quantgroup.acolyte.buddhistscriptures.pojo.Register;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.model.UserRegisterParam;
import cn.quantgroup.xyqb.util.MqUtils;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* 发mq, 目前只有数据可视化分析系统需要这个
......@@ -19,8 +17,10 @@ import cn.quantgroup.xyqb.util.MqUtils;
*/
@Component
public class MQRegisteredEventListener implements ApplicationListener<RegisterEvent> {
@Resource
private ApplicationEventPublisher applicationEventPublisher;
private UserIngest userIngest;
@Override
public void onApplicationEvent(RegisterEvent event) {
......@@ -31,11 +31,13 @@ public class MQRegisteredEventListener implements ApplicationListener<RegisterEv
Long channelId = userRegisterParam.getChannelId();
String dimension = userRegisterParam.getDimension();
User user = userRegisterParam.getUser();
if (user != null) {
// 发送注册成功统计消息
MqUtils.sendRegisterMessage(channelId, dimension, user);
Register register = new Register(user.getUuid(), user.getId(), user.getPhoneNo(), user.getRegisteredFrom(), channelId, dimension, user.getCreatedAt().getTime());
applicationEventPublisher.publishEvent(new StatisticsEvent(this, register));
//拿不到user对象. 就是没注册了
if (user == null) {
return;
}
// 发送注册成功统计消息
MqUtils.sendRegisterMessage(channelId, dimension, user);
Register register = new Register(user.getUuid(), user.getId(), user.getPhoneNo(), user.getRegisteredFrom(), channelId, dimension, user.getCreatedAt().getTime());
userIngest.sendRegisterInfo(register);
}
}
package cn.quantgroup.xyqb.event;
import org.springframework.context.ApplicationEvent;
import cn.quantgroup.acolyte.buddhistscriptures.pojo.Login;
import lombok.Getter;
import lombok.Setter;
import cn.quantgroup.acolyte.buddhistscriptures.pojo.Login;
import cn.quantgroup.acolyte.buddhistscriptures.pojo.Register;
import cn.quantgroup.acolyte.buddhistscriptures.pojo.UserRealInfo;
import org.springframework.context.ApplicationEvent;
/**
* 统计事件
......@@ -22,29 +18,13 @@ public class StatisticsEvent extends ApplicationEvent {
* 登录统计
*/
private Login login;
/**
* 注册统计
*/
private Register register;
/**
* 实名统计
*/
private UserRealInfo userRealInfo;
public StatisticsEvent(Object source) {
super(source);
}
public StatisticsEvent(Object source, Login login) {
super(source);
this.login = login;
}
public StatisticsEvent(Object source, Register register) {
super(source);
this.register = register;
}
public StatisticsEvent(Object source, UserRealInfo userRealInfo) {
super(source);
this.userRealInfo = userRealInfo;
}
}
package cn.quantgroup.xyqb.event;
import cn.quantgroup.xyqb.entity.UserDetail;
import cn.quantgroup.xyqb.entity.UserHashMapping;
import cn.quantgroup.xyqb.repository.IUserHashMappingRepository;
import cn.quantgroup.xyqb.util.encrypt.MD5Util;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
/**
* userDetail 更新时, 保存 hashMapping 数据
*/
@Component
public class UserDetailHashEventListener implements ApplicationListener<UserDetailUpdateEvent> {
@Autowired
private IUserHashMappingRepository userHashMappingRepository;
@Override
public void onApplicationEvent(UserDetailUpdateEvent event) {
UserDetail userDetail = event.getUserDetail();
UserHashMapping userHashMapping = userHashMappingRepository.findByUserId(userDetail.getUserId());
String idNoMd5 = userHashMapping.getIdNoMd5();
String idNo = userDetail.getIdNo().toUpperCase();
String idNoMd5New = MD5Util.build(idNo);
//新旧相同, 直接跳过
if (StringUtils.equals(idNoMd5, idNoMd5New)) {
return;
}
userHashMapping.setIdNoMd5(idNoMd5New);
userHashMappingRepository.save(userHashMapping);
}
}
package cn.quantgroup.xyqb.event;
import cn.quantgroup.acolyte.buddhistscriptures.ingester.UserIngest;
import cn.quantgroup.acolyte.buddhistscriptures.pojo.UserRealInfo;
import cn.quantgroup.xyqb.entity.UserDetail;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* 用户保存或更新 userDetail 时发送统计信息
*/
@Component
public class UserDetailStatisticsEventListener implements ApplicationListener<UserDetailUpdateEvent> {
@Resource
private UserIngest userIngest;
@Override
public void onApplicationEvent(UserDetailUpdateEvent event) {
UserDetail userDetail = event.getUserDetail();
UserRealInfo userRealInfo = new UserRealInfo();
userRealInfo.setUserId(userDetail.getUserId());
userRealInfo.setIdType(userDetail.getIdType().ordinal());
userRealInfo.setName(userDetail.getName());
userRealInfo.setIdNo(userDetail.getIdNo());
userIngest.sendUserRealInfo(userRealInfo);
}
}
package cn.quantgroup.xyqb.event;
import cn.quantgroup.xyqb.entity.UserDetail;
import lombok.Getter;
import org.springframework.context.ApplicationEvent;
@Getter
public class UserDetailUpdateEvent extends ApplicationEvent {
/**
* Create a new ApplicationEvent.
*
* @param source the object on which the event initially occurred (never {@code null})
*/
public UserDetailUpdateEvent(Object source) {
super(source);
}
private UserDetail userDetail;
public UserDetailUpdateEvent(Object source, UserDetail userDetail) {
super(source);
this.userDetail = userDetail;
}
}
package cn.quantgroup.xyqb.service.user.impl;
import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.persistence.criteria.Predicate;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import cn.quantgroup.acolyte.buddhistscriptures.pojo.UserRealInfo;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserDetail;
import cn.quantgroup.xyqb.event.StatisticsEvent;
import cn.quantgroup.xyqb.event.UserDetailUpdateEvent;
import cn.quantgroup.xyqb.model.Gender;
import cn.quantgroup.xyqb.model.IdCardInfo;
import cn.quantgroup.xyqb.repository.IUserDetailRepository;
......@@ -34,6 +12,23 @@ import cn.quantgroup.xyqb.service.auth.IIdCardService;
import cn.quantgroup.xyqb.service.user.IUserDetailService;
import cn.quantgroup.xyqb.service.user.vo.UserDetailVO;
import cn.quantgroup.xyqb.util.ValidationUtil;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import javax.persistence.criteria.Predicate;
import java.util.*;
import java.util.stream.Collectors;
/**
* Created by 11 on 2016/12/29.
......@@ -58,10 +53,9 @@ public class UserDetailServiceImpl implements IUserDetailService {
@Override
public UserDetail saveUserDetail(UserDetail userDetail) throws DataIntegrityViolationException {
UserDetail userDetail1 = userDetailRepository.save(userDetail);
if(Objects.nonNull(userDetail)){
if (Objects.nonNull(userDetail)) {
// 发送实名登记统计消息
UserRealInfo userRealInfo = new UserRealInfo(userDetail.getUserId(), userDetail.getName(), userDetail.getIdNo(), userDetail.getIdType().ordinal());
applicationEventPublisher.publishEvent(new StatisticsEvent(this, userRealInfo));
applicationEventPublisher.publishEvent(new UserDetailUpdateEvent(this, userDetail1));
}
return userDetail1;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment