Commit 29679ff1 authored by 杨锐's avatar 杨锐

user_hash_mapping && user_hash_phone_no_id_no_mapping 数据一致性。

parent fa252412
...@@ -21,4 +21,11 @@ public class UserHashPhoneNoIdNoMapping { ...@@ -21,4 +21,11 @@ public class UserHashPhoneNoIdNoMapping {
private Timestamp createdAt; private Timestamp createdAt;
@Column(name = "updated_at") @Column(name = "updated_at")
private Timestamp updatedAt; private Timestamp updatedAt;
public UserHashPhoneNoIdNoMapping() {
}
public UserHashPhoneNoIdNoMapping(Long userId) {
this.userId = userId;
}
} }
package cn.quantgroup.xyqb.event; package cn.quantgroup.xyqb.event;
import cn.quantgroup.xyqb.entity.UserHashMapping; import cn.quantgroup.xyqb.entity.UserHashMapping;
import cn.quantgroup.xyqb.entity.UserHashPhoneNoIdNoMapping;
import cn.quantgroup.xyqb.model.UserRegisterParam; import cn.quantgroup.xyqb.model.UserRegisterParam;
import cn.quantgroup.xyqb.repository.IUserHashMappingRepository; import cn.quantgroup.xyqb.repository.IUserHashMappingRepository;
import cn.quantgroup.xyqb.repository.IUserHashPhoneNoIdNoMappingRepository;
import cn.quantgroup.xyqb.util.encrypt.Md5Util; import cn.quantgroup.xyqb.util.encrypt.Md5Util;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener; import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.DigestUtils;
import javax.annotation.Resource;
import javax.persistence.PersistenceException; import javax.persistence.PersistenceException;
@Component @Component
...@@ -18,6 +22,8 @@ public class PhoneHashEventListener implements ApplicationListener<RegisterEvent ...@@ -18,6 +22,8 @@ public class PhoneHashEventListener implements ApplicationListener<RegisterEvent
@Autowired @Autowired
private IUserHashMappingRepository userHashMappingRepository; private IUserHashMappingRepository userHashMappingRepository;
@Resource
private IUserHashPhoneNoIdNoMappingRepository userHashPhoneNoIdNoMappingRepository;
@Override @Override
public void onApplicationEvent(RegisterEvent event) { public void onApplicationEvent(RegisterEvent event) {
...@@ -25,6 +31,24 @@ public class PhoneHashEventListener implements ApplicationListener<RegisterEvent ...@@ -25,6 +31,24 @@ public class PhoneHashEventListener implements ApplicationListener<RegisterEvent
String phoneNo = userRegisterParam.getPhoneNo(); String phoneNo = userRegisterParam.getPhoneNo();
Long userId = userRegisterParam.getUser().getId(); Long userId = userRegisterParam.getUser().getId();
String idNo = userRegisterParam.getIdNo();
/* modify by yangrui on 2019/12/16 下午5:47 */
UserHashPhoneNoIdNoMapping userHashPhoneNoIdNoMapping = userHashPhoneNoIdNoMappingRepository.findByUserId(userId);
if (userHashPhoneNoIdNoMapping == null) {
userHashPhoneNoIdNoMapping = new UserHashPhoneNoIdNoMapping(userId);
}
StringBuilder phoneNoIdNoMd5 = new StringBuilder(phoneNo);
if (StringUtils.isNotEmpty(idNo)) {
phoneNoIdNoMd5.append(idNo);
}
userHashPhoneNoIdNoMapping.setPhoneNoIdNoMd5(DigestUtils.md5DigestAsHex(phoneNoIdNoMd5.toString().toLowerCase().getBytes()));
try {
userHashPhoneNoIdNoMappingRepository.saveAndFlush(userHashPhoneNoIdNoMapping);
} catch (PersistenceException e) {
log.error("保存userHashPhoneNoIdNoMapping重复, 无需再保存, userId:{}", userId);
}
UserHashMapping userHashMapping = userHashMappingRepository.findByUserId(userId); UserHashMapping userHashMapping = userHashMappingRepository.findByUserId(userId);
if (userHashMapping != null && userHashMapping.getIdNoMd5() != null) { if (userHashMapping != null && userHashMapping.getIdNoMd5() != null) {
//已存在的用户, 并且已存在身份证号 //已存在的用户, 并且已存在身份证号
...@@ -37,7 +61,7 @@ public class PhoneHashEventListener implements ApplicationListener<RegisterEvent ...@@ -37,7 +61,7 @@ public class PhoneHashEventListener implements ApplicationListener<RegisterEvent
//无论如何都更新手机号 //无论如何都更新手机号
String phoneNoMd5 = Md5Util.build(phoneNo); String phoneNoMd5 = Md5Util.build(phoneNo);
userHashMapping.setPhoneNoMd5(phoneNoMd5); userHashMapping.setPhoneNoMd5(phoneNoMd5);
String idNo = userRegisterParam.getIdNo();
//如果有身份证号. 更新一下 //如果有身份证号. 更新一下
if (StringUtils.isNotEmpty(idNo)) { if (StringUtils.isNotEmpty(idNo)) {
......
...@@ -2,13 +2,17 @@ package cn.quantgroup.xyqb.event; ...@@ -2,13 +2,17 @@ package cn.quantgroup.xyqb.event;
import cn.quantgroup.xyqb.entity.UserDetail; import cn.quantgroup.xyqb.entity.UserDetail;
import cn.quantgroup.xyqb.entity.UserHashMapping; import cn.quantgroup.xyqb.entity.UserHashMapping;
import cn.quantgroup.xyqb.entity.UserHashPhoneNoIdNoMapping;
import cn.quantgroup.xyqb.repository.IUserHashMappingRepository; import cn.quantgroup.xyqb.repository.IUserHashMappingRepository;
import cn.quantgroup.xyqb.repository.IUserHashPhoneNoIdNoMappingRepository;
import cn.quantgroup.xyqb.util.encrypt.Md5Util; import cn.quantgroup.xyqb.util.encrypt.Md5Util;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener; import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.DigestUtils;
import javax.annotation.Resource;
import javax.persistence.PersistenceException; import javax.persistence.PersistenceException;
...@@ -21,6 +25,8 @@ public class UserDetailHashEventListener implements ApplicationListener<UserDeta ...@@ -21,6 +25,8 @@ public class UserDetailHashEventListener implements ApplicationListener<UserDeta
@Autowired @Autowired
private IUserHashMappingRepository userHashMappingRepository; private IUserHashMappingRepository userHashMappingRepository;
@Resource
private IUserHashPhoneNoIdNoMappingRepository userHashPhoneNoIdNoMappingRepository;
@Override @Override
public void onApplicationEvent(UserDetailUpdateEvent event) { public void onApplicationEvent(UserDetailUpdateEvent event) {
...@@ -45,5 +51,22 @@ public class UserDetailHashEventListener implements ApplicationListener<UserDeta ...@@ -45,5 +51,22 @@ public class UserDetailHashEventListener implements ApplicationListener<UserDeta
} catch (PersistenceException e) { } catch (PersistenceException e) {
log.error("保存userHashMapping重复, 无需再保存, userId:{}", userDetail.getUserId()); log.error("保存userHashMapping重复, 无需再保存, userId:{}", userDetail.getUserId());
} }
/* modify by yangrui on 2019/12/16 下午5:48 */
UserHashPhoneNoIdNoMapping userHashPhoneNoIdNoMapping = userHashPhoneNoIdNoMappingRepository.findByUserId(userDetail.getUserId());
//如果不存在, 我先保存一下
if (userHashPhoneNoIdNoMapping == null) {
userHashPhoneNoIdNoMapping = new UserHashPhoneNoIdNoMapping(userDetail.getUserId());
}
//可能存在手机号、身份证号修改. 搞一下.
userHashPhoneNoIdNoMapping.setPhoneNoIdNoMd5(DigestUtils.md5DigestAsHex((userDetail.getPhoneNo() + userDetail.getIdNo()).toLowerCase().getBytes()));
try {
userHashPhoneNoIdNoMappingRepository.save(userHashPhoneNoIdNoMapping);
} catch (PersistenceException e) {
log.error("保存userHashPhoneNoIdNoMapping重复, 无需再保存, userId:{}", userDetail.getUserId());
}
} }
} }
...@@ -6,4 +6,6 @@ import org.springframework.data.jpa.repository.JpaRepository; ...@@ -6,4 +6,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
public interface IUserHashPhoneNoIdNoMappingRepository extends JpaRepository<UserHashPhoneNoIdNoMapping, Long> { public interface IUserHashPhoneNoIdNoMappingRepository extends JpaRepository<UserHashPhoneNoIdNoMapping, Long> {
UserHashPhoneNoIdNoMapping findFirstByPhoneNoIdNoMd5(String phoneNoIdNoMd5); UserHashPhoneNoIdNoMapping findFirstByPhoneNoIdNoMd5(String phoneNoIdNoMd5);
UserHashPhoneNoIdNoMapping findByUserId(Long userId);
} }
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