Commit 00d8b44b authored by xiaoguang.xu's avatar xiaoguang.xu

user_detail hash 支持

parent 7e76d22d
...@@ -4,7 +4,6 @@ import cn.quantgroup.xyqb.entity.UserDetail; ...@@ -4,7 +4,6 @@ import cn.quantgroup.xyqb.entity.UserDetail;
import cn.quantgroup.xyqb.entity.UserHashMapping; import cn.quantgroup.xyqb.entity.UserHashMapping;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.repository.IUserDetailRepository; import cn.quantgroup.xyqb.repository.IUserDetailRepository;
import cn.quantgroup.xyqb.repository.IUserHashMappingRepository;
import cn.quantgroup.xyqb.util.encrypt.MD5Util; import cn.quantgroup.xyqb.util.encrypt.MD5Util;
import com.google.common.base.Stopwatch; import com.google.common.base.Stopwatch;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -27,18 +26,13 @@ import java.util.stream.Collectors; ...@@ -27,18 +26,13 @@ import java.util.stream.Collectors;
@RequestMapping("/ex/sync_hash") @RequestMapping("/ex/sync_hash")
public class SyncHashController { public class SyncHashController {
private Boolean isContinue = false; private Boolean isContinue = false;
private ExecutorService executorService = Executors.newSingleThreadExecutor(); private ExecutorService executorService = Executors.newSingleThreadExecutor();
@Autowired
private IUserHashMappingRepository userHashMappingRepository;
@Autowired @Autowired
private JdbcTemplate jdbcTemplate; private JdbcTemplate jdbcTemplate;
@Autowired @Autowired
private IUserDetailRepository userDetailRepository; private IUserDetailRepository userDetailRepository;
...@@ -83,14 +77,15 @@ public class SyncHashController { ...@@ -83,14 +77,15 @@ public class SyncHashController {
userHashMappings.forEach(userHashMapping -> sbSql.append(" WHEN ").append(userHashMapping.getUserId()).append(" THEN '").append(userHashMapping.getIdNoMd5()).append("'")); userHashMappings.forEach(userHashMapping -> sbSql.append(" WHEN ").append(userHashMapping.getUserId()).append(" THEN '").append(userHashMapping.getIdNoMd5()).append("'"));
sbSql.append(" END, `id_no_md5_short` = CASE `user_id` "); sbSql.append(" END, `id_no_md5_short` = CASE `user_id` ");
userHashMappings.forEach(userHashMapping -> sbSql.append(" WHEN ").append(userHashMapping.getUserId()).append(" THEN ").append(userHashMapping.getIdNoMd5Short())); userHashMappings.forEach(userHashMapping -> sbSql.append(" WHEN ").append(userHashMapping.getUserId()).append(" THEN ").append(userHashMapping.getIdNoMd5Short()));
sbSql.append(" END "); sbSql.append(" END WHERE `user_id` IN ( ");
sbSql.append("WHERE `user_id` IN ( ");
List<Long> userIds = userHashMappings.stream().map(UserHashMapping::getUserId).collect(Collectors.toList()); List<Long> userIds = userHashMappings.stream().map(UserHashMapping::getUserId).collect(Collectors.toList());
sbSql.append(StringUtils.collectionToCommaDelimitedString(userIds)); sbSql.append(StringUtils.collectionToCommaDelimitedString(userIds));
sbSql.append(") and `id_no_md5` is null "); sbSql.append(") and `id_no_md5` is null ");
jdbcTemplate.execute(sbSql.toString()); jdbcTemplate.execute(sbSql.toString());
// StringUtils.trimWhitespace()
log.info("batchUpdate需要的时间 : {}ms", started.elapsed(TimeUnit.MILLISECONDS)); log.info("batchUpdate需要的时间 : {}ms", started.elapsed(TimeUnit.MILLISECONDS));
log.info("来一波,start:{},end:{}", startPosition, endPosition); log.info("来一波,start:{},end:{}", startPosition, endPosition);
......
...@@ -144,9 +144,6 @@ public class InnerController implements IBaseController { ...@@ -144,9 +144,6 @@ public class InnerController implements IBaseController {
@ApiOperation(httpMethod = "GET", value = "根据md5(手机号)或md5(身份证号)查询用户信息") @ApiOperation(httpMethod = "GET", value = "根据md5(手机号)或md5(身份证号)查询用户信息")
public JsonResult findByUuid(@RequestParam String md5Value, public JsonResult findByUuid(@RequestParam String md5Value,
@RequestParam(defaultValue = "1") Integer type) { @RequestParam(defaultValue = "1") Integer type) {
if (type != 1) {
return JsonResult.buildErrorStateResult("尚未开放身份证号md5", null);
}
if (md5Value == null) { if (md5Value == null) {
return JsonResult.buildErrorStateResult("参数错误", null); return JsonResult.buildErrorStateResult("参数错误", null);
} }
...@@ -154,7 +151,7 @@ public class InnerController implements IBaseController { ...@@ -154,7 +151,7 @@ public class InnerController implements IBaseController {
return JsonResult.buildErrorStateResult("参数长度有误", null); return JsonResult.buildErrorStateResult("参数长度有误", null);
} }
User user = userService.findByPhoneMd5(md5Value); User user = userService.findByMd5(type, md5Value);
if (user == null) { if (user == null) {
return JsonResult.buildSuccessResult("", null); return JsonResult.buildSuccessResult("", null);
} }
...@@ -603,7 +600,7 @@ public class InnerController implements IBaseController { ...@@ -603,7 +600,7 @@ public class InnerController implements IBaseController {
* @param name - 姓名 * @param name - 姓名
* @param phoneNo - 手机号 * @param phoneNo - 手机号
* @param idNo - 身份证号 * @param idNo - 身份证号
* @return JsonResult<List < UserDetail>> * @return JsonResult<List < UserDetail>>
*/ */
@RequestMapping("/user_detail/search_list") @RequestMapping("/user_detail/search_list")
@ApiOperation(httpMethod = "POST", value = "按照姓名、份证号或手机号查询用户实名信息 - 精确查询,供客服用,不限制入参正确性") @ApiOperation(httpMethod = "POST", value = "按照姓名、份证号或手机号查询用户实名信息 - 精确查询,供客服用,不限制入参正确性")
...@@ -622,7 +619,7 @@ public class InnerController implements IBaseController { ...@@ -622,7 +619,7 @@ public class InnerController implements IBaseController {
* *
* @param phoneNo - 手机号 * @param phoneNo - 手机号
* @param idNo - 身份证号 * @param idNo - 身份证号
* @return JsonResult<List < UserDetail>> * @return JsonResult<List < UserDetail>>
*/ */
@ApiOperation(httpMethod = "POST", value = "按照身份证号和手机号查询用户实名信息查询 - 模糊查询") @ApiOperation(httpMethod = "POST", value = "按照身份证号和手机号查询用户实名信息查询 - 模糊查询")
@RequestMapping("/user_detail/fuzzyQuery") @RequestMapping("/user_detail/fuzzyQuery")
......
...@@ -7,6 +7,8 @@ public interface IUserHashMappingRepository extends JpaRepository<UserHashMappin ...@@ -7,6 +7,8 @@ public interface IUserHashMappingRepository extends JpaRepository<UserHashMappin
UserHashMapping findByPhoneNoMd5ShortAndPhoneNoMd5(Long phoneNoMd5Short, String phoneNoMd5); UserHashMapping findByPhoneNoMd5ShortAndPhoneNoMd5(Long phoneNoMd5Short, String phoneNoMd5);
UserHashMapping findByIdNoMd5ShortAndIdNoMd5(Long idNoMd5Short, String idNoMd5);
UserHashMapping findByUserId(Long userId); UserHashMapping findByUserId(Long userId);
} }
...@@ -25,8 +25,9 @@ public interface IUserService { ...@@ -25,8 +25,9 @@ public interface IUserService {
/** /**
* 根据手机号或身份证号查询用户UUID * 根据手机号或身份证号查询用户UUID
*
* @param phoneNo - 手机号 * @param phoneNo - 手机号
* @param idNo - 身份证号 * @param idNo - 身份证号
* @return user表的uuid * @return user表的uuid
*/ */
String findUuid(String phoneNo, String idNo); String findUuid(String phoneNo, String idNo);
...@@ -50,5 +51,5 @@ public interface IUserService { ...@@ -50,5 +51,5 @@ public interface IUserService {
List<UserInfo> findUserInfosByPhones(List<String> phones); List<UserInfo> findUserInfosByPhones(List<String> phones);
User findByPhoneMd5(String md5Value); User findByMd5(Integer type, String md5Value);
} }
...@@ -73,11 +73,11 @@ public class UserServiceImpl implements IUserService { ...@@ -73,11 +73,11 @@ public class UserServiceImpl implements IUserService {
@Override @Override
public String findUuid(String phoneNo, String idNo) { public String findUuid(String phoneNo, String idNo) {
// 优先按手机号查 // 优先按手机号查
if(ValidationUtil.validatePhoneNo(phoneNo)){ if (ValidationUtil.validatePhoneNo(phoneNo)) {
return userRepository.findUuidByPhoneNo(phoneNo); return userRepository.findUuidByPhoneNo(phoneNo);
} }
// 按身份证号查 // 按身份证号查
if(StringUtils.isNotBlank(idNo)){ if (StringUtils.isNotBlank(idNo)) {
return userRepository.findUuidByIdNo(idNo); return userRepository.findUuidByIdNo(idNo);
} }
return null; return null;
...@@ -185,10 +185,15 @@ public class UserServiceImpl implements IUserService { ...@@ -185,10 +185,15 @@ public class UserServiceImpl implements IUserService {
} }
@Override @Override
public User findByPhoneMd5(String md5Value) { public User findByMd5(Integer type, String md5Value) {
md5Value = md5Value.toLowerCase(); md5Value = md5Value.toLowerCase();
long value = HashUtil.crc32(md5Value); long value = HashUtil.crc32(md5Value);
UserHashMapping userHashMapping = userHashMappingRepository.findByPhoneNoMd5ShortAndPhoneNoMd5(value, md5Value); UserHashMapping userHashMapping;
if (type == 1) {
userHashMapping = userHashMappingRepository.findByPhoneNoMd5ShortAndPhoneNoMd5(value, md5Value);
} else {
userHashMapping = userHashMappingRepository.findByIdNoMd5ShortAndIdNoMd5(value, md5Value);
}
if (userHashMapping == null) { if (userHashMapping == null) {
return null; return null;
} }
......
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