Commit 3736a462 authored by 王亮's avatar 王亮

Feature upgrate 20230621

parent be2f293a
......@@ -181,7 +181,7 @@ public class UserController implements IBaseController {
return JsonResult.buildErrorStateResult("未知的连接", null);
}
if (StringUtils.length(userId) > Constants.UUID_MIN_LENGTH) {
return loginWithUserId(channelId, appChannel, createdFrom, userId, merchant, dimension, geetestLogId, request);
return loginWithUserId(channelId, appChannel, createdFrom, userId, merchant, geetestLogId, request);
} else {
return loginWithHttpBasic(channelId, appChannel, createdFrom, merchant, dimension, geetestLogId, request);
}
......@@ -779,7 +779,7 @@ public class UserController implements IBaseController {
return user;
}
private JsonResult loginWithUserId(Long channelId, String appChannel, Long createdFrom, String userId, Merchant merchant, String dimension, Long geetestLogId, HttpServletRequest request) {
private JsonResult loginWithUserId(Long channelId, String appChannel, Long createdFrom, String userId, Merchant merchant, Long geetestLogId, HttpServletRequest request) {
//查询用户
User user = userService.findByUuidInDb(userId);
if (Objects.isNull(user) || !user.getEnable()) {
......
......@@ -161,59 +161,6 @@ public class InnerController implements IBaseController {
return JsonResult.buildSuccessResult("", new UserRet(user));
}
/**
* @yapi http://yapi.quantgroups.com/project/17/interface/api/287
* @Deprecated 20210318
*/
@Deprecated
@GetMapping("/user/search/hash")
public JsonResult findByUuid(@RequestParam String md5Value,
@RequestParam(defaultValue = "1") Integer type) {
if (md5Value == null) {
return JsonResult.buildErrorStateResult("参数错误", null);
}
if (md5Value.length() != Constants.MD5_LENGTH) {
return JsonResult.buildErrorStateResult("参数长度有误", null);
}
User user = userService.findByMd5(type, md5Value);
if (user == null) {
return JsonResult.buildSuccessResult("", null);
}
UserRet userRet = new UserRet(user);
return JsonResult.buildSuccessResult("", userRet);
}
/**
* @yapi unknown
*/
//与旧的区别就是新的如果返回多个的时候只取最新的
@GetMapping("/user/search/hash2")
public JsonResult findByHash(@RequestParam String md5Value,
@RequestParam(defaultValue = "1") Integer type,
@RequestParam(required = false) Integer tenantId) {
if (md5Value == null) {
return JsonResult.buildErrorStateResult("参数错误", null);
}
if (md5Value.length() != Constants.MD5_LENGTH) {
return JsonResult.buildErrorStateResult("参数长度有误", null);
}
User user = userService.findByMd5New(type, md5Value);
if (user == null) {
return JsonResult.buildSuccessResult("", null);
}
if (tenantId != null && !TenantUtil.TENANT_DEFAULT.equals(tenantId)) {
// userId 查询对应productLogin 获取手机号和customerId
user = tenantService.getTenantUser(user, tenantId);
if (user == null) {
return JsonResult.buildErrorStateResult("", null);
}
}
UserRet userRet = new UserRet(user);
return JsonResult.buildSuccessResult("", userRet);
}
/**
* @yapi http://yapi.quantgroups.com/project/17/interface/api/229
*/
......
package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.util.HashUtil;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
@Data
@Entity
@Table(name = "user_hash_mapping")
@NoArgsConstructor
public class UserHashMapping extends BaseEntity implements Serializable {
private static final long serialVersionUID = -1L;
public UserHashMapping(Long userId) {
this.userId = userId;
}
@Column(name = "user_id")
private Long userId;
@Column(name = "phone_no_md5")
private String phoneNoMd5;
@Column(name = "phone_no_md5_short")
private Long phoneNoMd5Short;
public void setPhoneNoMd5(String phoneNoMd5) {
this.phoneNoMd5 = phoneNoMd5;
this.phoneNoMd5Short = HashUtil.crc32(phoneNoMd5);
}
}
\ No newline at end of file
package cn.quantgroup.xyqb.entity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import javax.persistence.*;
import java.io.Serializable;
/**
* Created by Miraculous on 15/10/29.
*/
@Entity
@Table(name = "uuid_phone_mapping", uniqueConstraints = @UniqueConstraint(columnNames = "uuid"))
@Getter
@Setter
@ToString
public class UuidPhoneMapping implements Serializable {
private static final long serialVersionUID = -1L;
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "uuid")
private String uuid;
@Column(name = "phone_no")
private String phoneNo;
}
package cn.quantgroup.xyqb.event;
import cn.quantgroup.xyqb.entity.UserHashMapping;
import cn.quantgroup.xyqb.model.UserRegisterParam;
import cn.quantgroup.xyqb.repository.IUserHashMappingRepository;
import cn.quantgroup.xyqb.util.encrypt.Md5Util;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import javax.annotation.Resource;
import javax.persistence.PersistenceException;
//@Component
@Slf4j
public class PhoneHashEventListener implements ApplicationListener<RegisterEvent> {
@Autowired
private IUserHashMappingRepository userHashMappingRepository;
@Override
public void onApplicationEvent(RegisterEvent event) {
UserRegisterParam userRegisterParam = event.getUserRegisterParam();
String phoneNo = userRegisterParam.getPhoneNo();
Long userId = userRegisterParam.getUser().getId();
UserHashMapping userHashMapping = userHashMappingRepository.findByUserId(userId);
if (userHashMapping != null) {
//已存在的用户, 并且已存在身份证号
return;
}
//创建一个新的
userHashMapping = new UserHashMapping(userId);
//无论如何都更新手机号
String phoneNoMd5 = Md5Util.build(phoneNo);
userHashMapping.setPhoneNoMd5(phoneNoMd5);
try {
userHashMappingRepository.saveAndFlush(userHashMapping);
} catch (PersistenceException e) {
// 可能与UserDetailUpdateEvent并发写入问题,暂不优化
log.warn("保存userHashMapping重复, 无需再保存, userId:{}", userId);
}
}
}
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 lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import javax.persistence.PersistenceException;
/**
* userDetail 更新时, 保存 hashMapping 数据
*/
@Slf4j
@Component
public class UserDetailHashEventListener implements ApplicationListener<UserDetailUpdateEvent> {
@Autowired
private IUserHashMappingRepository userHashMappingRepository;
@Override
public void onApplicationEvent(UserDetailUpdateEvent event) {
log.info("onApplicationEvent cn.quantgroup.xyqb.event.UserDetailHashEventListener start");
UserDetail userDetail = event.getUserDetail();
UserHashMapping userHashMapping = userHashMappingRepository.findByUserId(userDetail.getUserId());
//如果不存在, 我先保存一下
if (userHashMapping == null) {
userHashMapping = new UserHashMapping(userDetail.getUserId());
}
//可能存在手机号修改. 搞一下.
String phoneNo = userDetail.getPhoneNo();
userHashMapping.setPhoneNoMd5(Md5Util.build(phoneNo));
//可能存在身份证号修改. 搞一下.
try {
userHashMappingRepository.save(userHashMapping);
} catch (PersistenceException e) {
// 可能与RegisterEvent并发写入问题,暂不优化
log.warn("保存userHashMapping重复, 无需再保存, userId:{}", userDetail.getUserId());
}
}
}
package cn.quantgroup.xyqb.repository;
import cn.quantgroup.xyqb.entity.UserHashMapping;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.transaction.annotation.Transactional;
public interface IUserHashMappingRepository extends JpaRepository<UserHashMapping, Long> {
UserHashMapping findByPhoneNoMd5ShortAndPhoneNoMd5(Long phoneNoMd5Short, String phoneNoMd5);
// UserHashMapping findByIdNoMd5ShortAndIdNoMd5(Long idNoMd5Short, String idNoMd5);
// List<UserHashMapping> findByIdNoMd5AndIdNoMd5Short(String idNoMd5, Long idNoMd5Short);
UserHashMapping findByUserId(Long userId);
@Transactional
void deleteByUserId(Long userId);
}
package cn.quantgroup.xyqb.repository;
import cn.quantgroup.xyqb.entity.UuidPhoneMapping;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.transaction.annotation.Transactional;
/**
* Created by Miraculous on 15/10/29.
*/
public interface IUuidPhoneMappingRepository extends JpaRepository<UuidPhoneMapping, Long> {
UuidPhoneMapping findByUuid(String uuid);
@Transactional
void deleteByUuid(String uuid);
}
......@@ -9,7 +9,5 @@ import cn.quantgroup.xyqb.entity.MerchantConfig;
public interface IMerchantService {
MerchantConfig findConfigByMerchantIdAndConfigName(Long merchantId, String configName);
Merchant findMerchantById(Long merchantId);
Merchant findMerchantByName(String name);
}
......@@ -47,11 +47,6 @@ public class MerchantServiceImpl implements IMerchantService {
return MERCHANT_ID_CONFIG_MAP.getOrDefault(key, null);
}
@Override
public Merchant findMerchantById(Long merchantId) {
return MERCHANT_ID_MAP.getOrDefault(merchantId, null);
}
@Override
public Merchant findMerchantByName(String name) {
if (StringUtils.isEmpty(name)) {
......
......@@ -58,10 +58,6 @@ public interface IUserService {
List<UserInfo> findUserInfosByPhones(List<String> phones);
User findByMd5(Integer type, String md5Value);
User findByMd5New(Integer type, String md5Value);
/**
* 修改手机号码.
*
......
......@@ -8,7 +8,6 @@ import cn.quantgroup.xyqb.controller.internal.user.resp.UserFullResp;
import cn.quantgroup.xyqb.entity.Merchant;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserDetail;
import cn.quantgroup.xyqb.entity.UserHashMapping;
import cn.quantgroup.xyqb.event.PhoneNoUpdateEvent;
import cn.quantgroup.xyqb.exception.DataException;
import cn.quantgroup.xyqb.exception.UserNotExistException;
......@@ -68,8 +67,7 @@ public class UserServiceImpl implements IUserService, IBaseController {
@Autowired
private IUserRepository userRepository;
@Autowired
private IUserHashMappingRepository userHashMappingRepository;
@Autowired
private IUserDetailService userDetailService;
......@@ -104,9 +102,6 @@ public class UserServiceImpl implements IUserService, IBaseController {
@Autowired
private IUserBtRegisterRepository userBtRegisterRepository;
@Autowired
private IUuidPhoneMappingRepository uuidPhoneMappingRepository;
@Resource
private IWeChatUserRepository weChatUserRepository;
......@@ -301,40 +296,6 @@ public class UserServiceImpl implements IUserService, IBaseController {
return Collections.emptyList();
}
@Override
public User findByMd5(Integer type, String md5Value) {
md5Value = md5Value.toLowerCase();
long value = HashUtil.crc32(md5Value);
UserHashMapping userHashMapping;
if (FindByMd5Enum.PHONENO.getType() == type) {
userHashMapping = userHashMappingRepository.findByPhoneNoMd5ShortAndPhoneNoMd5(value, md5Value);
} else {
userHashMapping = null;
}
if (userHashMapping == null) {
return null;
}
Long userId = userHashMapping.getUserId();
return userRepository.findById(userId);
}
@Override
public User findByMd5New(Integer type, String md5Value) {
md5Value = md5Value.toLowerCase();
long value = HashUtil.crc32(md5Value);
UserHashMapping userHashMapping = null;
if (FindByMd5Enum.PHONENO.getType() == type) {
userHashMapping = userHashMappingRepository.findByPhoneNoMd5ShortAndPhoneNoMd5(value, md5Value);
} else {
userHashMapping = null;
}
if (userHashMapping == null) {
return null;
}
Long userId = userHashMapping.getUserId();
return userRepository.findById(userId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public User modifyPhoneNo(String oldPhoneNo, String newPhoneNo) {
......@@ -566,12 +527,6 @@ public class UserServiceImpl implements IUserService, IBaseController {
userAttachedRepository.deleteByUserId(userId);
/* 删除 user_bt_register 信息 */
userBtRegisterRepository.deleteByUserId(userId);
/* 删除用户身份证和手机的hashMapping */
userHashMappingRepository.deleteByUserId(userId);
/* 删除用户手机号加身份证hashMapping */
// userHashPhoneNoIdNoMappingRepository.deleteByUserId(userId);
/* 删除用户uuid和手机号mapping */
uuidPhoneMappingRepository.deleteByUuid(user.getUuid());
/* 清空session */
sessionService.deleteByUserId(user.getId());
......
package cn.quantgroup.xyqb.service.user.impl;
import cn.quantgroup.xyqb.repository.IUuidPhoneMappingRepository;
import cn.quantgroup.xyqb.service.user.IUuidPhoneMappingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* Created by Miraculous on 15/10/29.
*/
@Service
public class UuidPhoneMappingServiceImpl implements IUuidPhoneMappingService {
@Autowired
private IUuidPhoneMappingRepository uuidPhoneMappingRepository;
}
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