Commit a29887b4 authored by killer's avatar killer

销户

parent 89edbf40
...@@ -49,6 +49,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -49,6 +49,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.validation.constraints.Min; import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.text.ParseException; import java.text.ParseException;
import java.util.*; import java.util.*;
...@@ -1597,4 +1598,23 @@ public class InnerController implements IBaseController { ...@@ -1597,4 +1598,23 @@ public class InnerController implements IBaseController {
cleanDataService.cleanData(); cleanDataService.cleanData();
return JsonResult.buildSuccessResult("已经开始清洗"); return JsonResult.buildSuccessResult("已经开始清洗");
} }
/**
* 注销用户
*
* @param userId 用户id
* @return 销户结果
*/
@ApiOperation(value = "注销用户", httpMethod = "GET", notes="注销用户")
@GetMapping("/user/delete/{userId}")
public JsonResult<?> deregister(@NotNull @PathVariable("userId") Long userId) {
log.info("用户id[{}], 销户开始", userId);
/* 执行销户 */
userService.deregister(userId);
log.info("用户id[{}], 销户成功", userId);
return JsonResult.buildSuccessResult("用户销户成功", true);
}
} }
\ No newline at end of file
package cn.quantgroup.xyqb.service.register; package cn.quantgroup.xyqb.service.register;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserDeregisterRecord; import cn.quantgroup.xyqb.entity.UserDeregisterRecord;
import java.util.List; import java.util.List;
...@@ -20,4 +21,10 @@ public interface IUserDeregisterService { ...@@ -20,4 +21,10 @@ public interface IUserDeregisterService {
*/ */
List<UserDeregisterRecord> queryByPhoneNo(String phoneNo); List<UserDeregisterRecord> queryByPhoneNo(String phoneNo);
/**
* 保存用户销户记录
*
* @param user 用户
*/
void save(User user);
} }
package cn.quantgroup.xyqb.service.register.impl; package cn.quantgroup.xyqb.service.register.impl;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserDeregisterRecord; import cn.quantgroup.xyqb.entity.UserDeregisterRecord;
import cn.quantgroup.xyqb.repository.IUserDeregisterRecordRepository; import cn.quantgroup.xyqb.repository.IUserDeregisterRecordRepository;
import cn.quantgroup.xyqb.service.register.IUserDeregisterService; import cn.quantgroup.xyqb.service.register.IUserDeregisterService;
import cn.quantgroup.xyqb.util.encrypt.Md5Util;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -26,4 +29,19 @@ public class IUserDeregisterServiceImpl implements IUserDeregisterService { ...@@ -26,4 +29,19 @@ public class IUserDeregisterServiceImpl implements IUserDeregisterService {
public List<UserDeregisterRecord> queryByPhoneNo(String phoneNo) { public List<UserDeregisterRecord> queryByPhoneNo(String phoneNo) {
return userDeregisterRecordRepository.findByPhoneNo(phoneNo); return userDeregisterRecordRepository.findByPhoneNo(phoneNo);
} }
@Override
public void save(User user) {
UserDeregisterRecord build = UserDeregisterRecord.builder()
.userId(user.getId())
.deregisterTime(new Date())
.password(user.getPassword())
.registeredFrom(user.getRegisteredFrom())
.uuid(user.getUuid())
.phoneNo(Md5Util.build(user.getPhoneNo()))
.build();
userDeregisterRecordRepository.save(build);
}
} }
...@@ -105,9 +105,9 @@ public interface IUserService { ...@@ -105,9 +105,9 @@ public interface IUserService {
void logout(String token); void logout(String token);
/** /**
* 通过userId删除用户记录 * 通过userId销户
* *
* @param userId 用户id * @param userId 用户id
*/ */
void deleteByUserId(Long userId); void deregister(Long userId);
} }
...@@ -12,10 +12,12 @@ import cn.quantgroup.xyqb.entity.*; ...@@ -12,10 +12,12 @@ import cn.quantgroup.xyqb.entity.*;
import cn.quantgroup.xyqb.event.PhoneNoUpdateEvent; import cn.quantgroup.xyqb.event.PhoneNoUpdateEvent;
import cn.quantgroup.xyqb.exception.DataException; import cn.quantgroup.xyqb.exception.DataException;
import cn.quantgroup.xyqb.exception.UserNotExistException; import cn.quantgroup.xyqb.exception.UserNotExistException;
import cn.quantgroup.xyqb.exception.UserRegisterLoginException;
import cn.quantgroup.xyqb.model.*; import cn.quantgroup.xyqb.model.*;
import cn.quantgroup.xyqb.repository.IUserHashMappingRepository; import cn.quantgroup.xyqb.repository.IUserHashMappingRepository;
import cn.quantgroup.xyqb.repository.IUserHashPhoneNoIdNoMappingRepository; import cn.quantgroup.xyqb.repository.IUserHashPhoneNoIdNoMappingRepository;
import cn.quantgroup.xyqb.repository.IUserRepository; import cn.quantgroup.xyqb.repository.IUserRepository;
import cn.quantgroup.xyqb.service.register.IUserDeregisterService;
import cn.quantgroup.xyqb.service.register.IUserRegisterService; import cn.quantgroup.xyqb.service.register.IUserRegisterService;
import cn.quantgroup.xyqb.service.session.ISessionService; import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.service.user.*; import cn.quantgroup.xyqb.service.user.*;
...@@ -91,6 +93,9 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -91,6 +93,9 @@ public class UserServiceImpl implements IUserService, IBaseController {
@Autowired @Autowired
private ITenantService tenantService; private ITenantService tenantService;
@Autowired
private IUserDeregisterService userDeregisterService;
@Override @Override
// @Cacheable(value = "usercache", key = "'xyqbuser' + #phone", unless = "#result == null", cacheManager = "cacheManager") // @Cacheable(value = "usercache", key = "'xyqbuser' + #phone", unless = "#result == null", cacheManager = "cacheManager")
public User findByPhoneInDb(String phone) { public User findByPhoneInDb(String phone) {
...@@ -115,7 +120,7 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -115,7 +120,7 @@ public class UserServiceImpl implements IUserService, IBaseController {
//校验租户ID //校验租户ID
if (!tenantId.equals(tenantId)) { if (!tenantId.equals(tenantId)) {
users = tenantService.selectUsersByTenantId(users, tenantId); users = tenantService.selectUsersByTenantId(users, tenantId);
}else { } else {
users = tenantService.validationTentIdByTentId(users, tenantId); users = tenantService.validationTentIdByTentId(users, tenantId);
} }
users.forEach(user -> userIdAndPhoneMap.put(user.getId(), user.getPhoneNo())); users.forEach(user -> userIdAndPhoneMap.put(user.getId(), user.getPhoneNo()));
...@@ -356,28 +361,28 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -356,28 +361,28 @@ public class UserServiceImpl implements IUserService, IBaseController {
return JsonResult.buildErrorStateResult("登录时微信关联失败", null); return JsonResult.buildErrorStateResult("登录时微信关联失败", null);
} }
try { try {
String scDeviceId=request.getHeader("scDeviceId"); String scDeviceId = request.getHeader("scDeviceId");
if(!StringUtils.isEmpty(scDeviceId)){ if (!StringUtils.isEmpty(scDeviceId)) {
iSensorsAnalytics.trackSignUp( user.getUuid(),scDeviceId); iSensorsAnalytics.trackSignUp(user.getUuid(), scDeviceId);
} }
String terminal=request.getHeader("terminal"); String terminal = request.getHeader("terminal");
String channel=request.getHeader("channel"); String channel = request.getHeader("channel");
log.info("--------手机号{}-------scDeviceId{},terminal{},channel{},是否注册{}",phoneNo,scDeviceId,terminal,channel,register); log.info("--------手机号{}-------scDeviceId{},terminal{},channel{},是否注册{}", phoneNo, scDeviceId, terminal, channel, register);
if(!StringUtils.isEmpty(terminal)&&"APP".equals(terminal)||!StringUtils.isEmpty(channel)&&("214".equals(channel)||"217".equals(channel))){ if (!StringUtils.isEmpty(terminal) && "APP".equals(terminal) || !StringUtils.isEmpty(channel) && ("214".equals(channel) || "217".equals(channel))) {
if(register){ if (register) {
EventRecord userRecord = EventRecord.builder().setDistinctId(user.getUuid()).isLoginId(Boolean.TRUE) EventRecord userRecord = EventRecord.builder().setDistinctId(user.getUuid()).isLoginId(Boolean.TRUE)
.setEventName("App_RegisterEvent") .setEventName("App_RegisterEvent")
.build(); .build();
iSensorsAnalytics.track(userRecord); iSensorsAnalytics.track(userRecord);
}else { } else {
EventRecord userRecord = EventRecord.builder().setDistinctId(user.getUuid()).isLoginId(Boolean.TRUE) EventRecord userRecord = EventRecord.builder().setDistinctId(user.getUuid()).isLoginId(Boolean.TRUE)
.setEventName("App_LoginEvent") .setEventName("App_LoginEvent")
.build(); .build();
iSensorsAnalytics.track(userRecord); iSensorsAnalytics.track(userRecord);
} }
iSensorsAnalytics.flush(); iSensorsAnalytics.flush();
}else { } else {
log.info("老神策埋点{},{}------------",user.getRegisteredFrom(),user.getUuid()); log.info("老神策埋点{},{}------------", user.getRegisteredFrom(), user.getUuid());
EventRecord userRecord = EventRecord.builder().setDistinctId(user.getUuid()).isLoginId(Boolean.TRUE) EventRecord userRecord = EventRecord.builder().setDistinctId(user.getUuid()).isLoginId(Boolean.TRUE)
.setEventName("PD_WUXIEC_UserLoginVccorCash") .setEventName("PD_WUXIEC_UserLoginVccorCash")
.addProperty("son_channel_id", user.getRegisteredFrom()) .addProperty("son_channel_id", user.getRegisteredFrom())
...@@ -506,14 +511,14 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -506,14 +511,14 @@ public class UserServiceImpl implements IUserService, IBaseController {
List<User> users = userRepository.findByIdIn(collect); List<User> users = userRepository.findByIdIn(collect);
if (!tenantId.equals(TenantUtil.TENANT_DEFAULT)) { if (!tenantId.equals(TenantUtil.TENANT_DEFAULT)) {
return tenantService.selectUsersByTenantId(users, tenantId); return tenantService.selectUsersByTenantId(users, tenantId);
}else { } else {
return tenantService.validationTentIdByTentId(users, tenantId); return tenantService.validationTentIdByTentId(users, tenantId);
} }
} else { //不是1 就是 uuids } else { //不是1 就是 uuids
List<User> users = userRepository.findByUuidIn(vals); List<User> users = userRepository.findByUuidIn(vals);
if (!tenantId.equals(TenantUtil.TENANT_DEFAULT)) { if (!tenantId.equals(TenantUtil.TENANT_DEFAULT)) {
return tenantService.selectUsersByTenantId(users, tenantId); return tenantService.selectUsersByTenantId(users, tenantId);
}else { } else {
return tenantService.validationTentIdByTentId(users, tenantId); return tenantService.validationTentIdByTentId(users, tenantId);
} }
} }
...@@ -525,8 +530,25 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -525,8 +530,25 @@ public class UserServiceImpl implements IUserService, IBaseController {
sessionService.deleteSession(token); sessionService.deleteSession(token);
} }
@Transactional(rollbackFor = Exception.class)
@Override @Override
public void deleteByUserId(Long userId) { public void deregister(Long userId) {
User user = userRepository.findById(userId);
if (Objects.isNull(user)) {
throw new UserRegisterLoginException("用户不存在");
}
/* 保存用户销户记录 */
userDeregisterService.save(user);
/* 删除用户 */
userRepository.deleteById(userId); userRepository.deleteById(userId);
/* 清空session */
sessionService.deleteByUserId(user.getId());
/* 清空缓存 */
sessionService.deleteUserCatch(user);
/* 禁用微信 */
wechatService.forbiddenUserWeChat(user.getId());
} }
} }
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