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 { ...@@ -49,7 +49,7 @@ public class UserDetailController implements IBaseController {
*/ */
@RequestMapping("/save") @RequestMapping("/save")
@ApiOperation(httpMethod = "POST", value = "保存/更新用户实名信息") @ApiOperation(httpMethod = "POST", value = "保存/更新用户实名信息")
public JsonResult saveUserdetail(String idNo, public JsonResult saveUserDetail(String idNo,
@ChineseName @RequestParam String name) { @ChineseName @RequestParam String name) {
if (!ValidationUtil.validateChinese(name)) { if (!ValidationUtil.validateChinese(name)) {
log.error("姓名错误,name:{}", name); log.error("姓名错误,name:{}", name);
......
package cn.quantgroup.xyqb.event; package cn.quantgroup.xyqb.event;
import java.util.Objects; import cn.quantgroup.acolyte.buddhistscriptures.ingester.UserIngest;
import javax.annotation.Resource;
import org.springframework.context.ApplicationListener; import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import cn.quantgroup.acolyte.buddhistscriptures.ingester.UserIngest; import javax.annotation.Resource;
import java.util.Objects;
/** /**
* 发送到Kafka - 综合统计中心 - 登录 * 发送到Kafka - 综合统计中心 - 登录
...@@ -22,14 +20,8 @@ public class KafkaUserEventListener implements ApplicationListener<StatisticsEve ...@@ -22,14 +20,8 @@ public class KafkaUserEventListener implements ApplicationListener<StatisticsEve
@Override @Override
public void onApplicationEvent(StatisticsEvent event) { public void onApplicationEvent(StatisticsEvent event) {
if(Objects.nonNull(event.getRegister())){ if (Objects.nonNull(event.getLogin())) {
userIngest.sendRegisterInfo(event.getRegister());
}
if(Objects.nonNull(event.getLogin())){
userIngest.sendLoginInfo(event.getLogin()); userIngest.sendLoginInfo(event.getLogin());
} }
if(Objects.nonNull(event.getUserRealInfo())){
userIngest.sendUserRealInfo(event.getUserRealInfo());
}
} }
} }
package cn.quantgroup.xyqb.event; package cn.quantgroup.xyqb.event;
import javax.annotation.Resource; import cn.quantgroup.acolyte.buddhistscriptures.ingester.UserIngest;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import cn.quantgroup.acolyte.buddhistscriptures.pojo.Register; import cn.quantgroup.acolyte.buddhistscriptures.pojo.Register;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.model.UserRegisterParam; import cn.quantgroup.xyqb.model.UserRegisterParam;
import cn.quantgroup.xyqb.util.MqUtils; import cn.quantgroup.xyqb.util.MqUtils;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/** /**
* 发mq, 目前只有数据可视化分析系统需要这个 * 发mq, 目前只有数据可视化分析系统需要这个
...@@ -19,8 +17,10 @@ import cn.quantgroup.xyqb.util.MqUtils; ...@@ -19,8 +17,10 @@ import cn.quantgroup.xyqb.util.MqUtils;
*/ */
@Component @Component
public class MQRegisteredEventListener implements ApplicationListener<RegisterEvent> { public class MQRegisteredEventListener implements ApplicationListener<RegisterEvent> {
@Resource @Resource
private ApplicationEventPublisher applicationEventPublisher; private UserIngest userIngest;
@Override @Override
public void onApplicationEvent(RegisterEvent event) { public void onApplicationEvent(RegisterEvent event) {
...@@ -31,11 +31,13 @@ public class MQRegisteredEventListener implements ApplicationListener<RegisterEv ...@@ -31,11 +31,13 @@ public class MQRegisteredEventListener implements ApplicationListener<RegisterEv
Long channelId = userRegisterParam.getChannelId(); Long channelId = userRegisterParam.getChannelId();
String dimension = userRegisterParam.getDimension(); String dimension = userRegisterParam.getDimension();
User user = userRegisterParam.getUser(); User user = userRegisterParam.getUser();
if (user != null) { //拿不到user对象. 就是没注册了
// 发送注册成功统计消息 if (user == null) {
MqUtils.sendRegisterMessage(channelId, dimension, user); return;
Register register = new Register(user.getUuid(), user.getId(), user.getPhoneNo(), user.getRegisteredFrom(), channelId, dimension, user.getCreatedAt().getTime());
applicationEventPublisher.publishEvent(new StatisticsEvent(this, register));
} }
// 发送注册成功统计消息
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; package cn.quantgroup.xyqb.event;
import org.springframework.context.ApplicationEvent; import cn.quantgroup.acolyte.buddhistscriptures.pojo.Login;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.springframework.context.ApplicationEvent;
import cn.quantgroup.acolyte.buddhistscriptures.pojo.Login;
import cn.quantgroup.acolyte.buddhistscriptures.pojo.Register;
import cn.quantgroup.acolyte.buddhistscriptures.pojo.UserRealInfo;
/** /**
* 统计事件 * 统计事件
...@@ -22,29 +18,13 @@ public class StatisticsEvent extends ApplicationEvent { ...@@ -22,29 +18,13 @@ public class StatisticsEvent extends ApplicationEvent {
* 登录统计 * 登录统计
*/ */
private Login login; private Login login;
/**
* 注册统计
*/
private Register register;
/**
* 实名统计
*/
private UserRealInfo userRealInfo;
public StatisticsEvent(Object source) { public StatisticsEvent(Object source) {
super(source); super(source);
} }
public StatisticsEvent(Object source, Login login) { public StatisticsEvent(Object source, Login login) {
super(source); super(source);
this.login = login; 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; 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.Constants;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserDetail; 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.Gender;
import cn.quantgroup.xyqb.model.IdCardInfo; import cn.quantgroup.xyqb.model.IdCardInfo;
import cn.quantgroup.xyqb.repository.IUserDetailRepository; import cn.quantgroup.xyqb.repository.IUserDetailRepository;
...@@ -34,6 +12,23 @@ import cn.quantgroup.xyqb.service.auth.IIdCardService; ...@@ -34,6 +12,23 @@ import cn.quantgroup.xyqb.service.auth.IIdCardService;
import cn.quantgroup.xyqb.service.user.IUserDetailService; import cn.quantgroup.xyqb.service.user.IUserDetailService;
import cn.quantgroup.xyqb.service.user.vo.UserDetailVO; import cn.quantgroup.xyqb.service.user.vo.UserDetailVO;
import cn.quantgroup.xyqb.util.ValidationUtil; 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. * Created by 11 on 2016/12/29.
...@@ -58,10 +53,9 @@ public class UserDetailServiceImpl implements IUserDetailService { ...@@ -58,10 +53,9 @@ public class UserDetailServiceImpl implements IUserDetailService {
@Override @Override
public UserDetail saveUserDetail(UserDetail userDetail) throws DataIntegrityViolationException { public UserDetail saveUserDetail(UserDetail userDetail) throws DataIntegrityViolationException {
UserDetail userDetail1 = userDetailRepository.save(userDetail); 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 UserDetailUpdateEvent(this, userDetail1));
applicationEventPublisher.publishEvent(new StatisticsEvent(this, userRealInfo));
} }
return 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