Commit 17690c4a authored by 李健华's avatar 李健华

修改登录注解拦截器的事件发送,修改注册个别方法的事件发送

parent 9cb811a7
......@@ -3,22 +3,21 @@ package cn.quantgroup.xyqb.aspect.captcha;
import cn.qg.ec.model.base.BusinessEventBaseInfo;
import cn.qg.ec.model.user.UserLoginRegEvent;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.model.AuthBean;
import cn.quantgroup.xyqb.risk.entity.CountDevice;
import cn.quantgroup.xyqb.entity.enums.Device;
import cn.quantgroup.xyqb.entity.enums.KeyType;
import cn.quantgroup.xyqb.model.AuthBean;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.model.LoginRefuseResult;
import cn.quantgroup.xyqb.risk.entity.CountDevice;
import cn.quantgroup.xyqb.risk.entity.LoginInfo;
import cn.quantgroup.xyqb.risk.repository.LoginInfoRepository;
import cn.quantgroup.xyqb.risk.repository.WhiteListRepository;
import cn.quantgroup.xyqb.risk.uereventcollecting.UserEventCollectingUtil;
import cn.quantgroup.xyqb.service.user.IUserService;
import cn.quantgroup.xyqb.service.user.impl.UserServiceImpl;
import cn.quantgroup.xyqb.util.TenantUtil;
import cn.quantgroup.xyqb.util.encrypt.Md5Util;
import com.amazonaws.util.Md5Utils;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Maps;
import com.qiniu.util.Md5;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
......@@ -26,11 +25,13 @@ import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.util.StreamUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
/**
......@@ -89,6 +90,14 @@ public class LoginInterceptorAspect {
private Object around(ProceedingJoinPoint pjp) throws Throwable {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
byte[] bodyBytes = StreamUtils.copyToByteArray(request.getInputStream());
String body = new String(bodyBytes, request.getCharacterEncoding());
Integer tenantId = null;
if (body != null) {
HashMap hashMap = JSON.parseObject(body, HashMap.class);
tenantId = Integer.parseInt(hashMap.get("tenantId").toString());
}
/**
* 拿参数
*/
......@@ -115,7 +124,7 @@ public class LoginInterceptorAspect {
/**
* 尝试登录发一下
*/
sendEvent(UserLoginRegEvent.SubEventType.user_attempt_login, device, phone, deviceId, realIp, null);
sendEvent(UserLoginRegEvent.SubEventType.user_attempt_login, device, phone, deviceId, realIp, null, tenantId);
LoginRefuseResult result = verification(scDeviceId, phone, device);
......@@ -133,7 +142,7 @@ public class LoginInterceptorAspect {
/**
* 保存登录信息
*/
saveLoginInfo(phone, device, deviceId, realIp, result, loginResult);
saveLoginInfo(phone, device, deviceId, realIp, result, loginResult, tenantId);
}
return loginResult;
}
......@@ -226,7 +235,7 @@ public class LoginInterceptorAspect {
* @param deviceId
* @param ip
*/
private void saveLoginInfo(String phone, Device device, String deviceId, String ip, LoginRefuseResult refuseResult, Object loginResult) {
private void saveLoginInfo(String phone, Device device, String deviceId, String ip, LoginRefuseResult refuseResult, Object loginResult, Integer tenantId) {
try {
/**
* 默认code不需要
......@@ -269,7 +278,7 @@ public class LoginInterceptorAspect {
if (loginResult instanceof JsonResult) {
if (((JsonResult) loginResult).isSuccess()) {
info.setIsLogin(Boolean.TRUE);
sendEvent(UserLoginRegEvent.SubEventType.user_only_login, device, phone, deviceId, ip, loginResult);
sendEvent(UserLoginRegEvent.SubEventType.user_only_login, device, phone, deviceId, ip, loginResult, tenantId);
} else {
info.setIsLogin(Boolean.FALSE);
info.setLoginFailMsg(((JsonResult) loginResult)
......@@ -307,7 +316,7 @@ public class LoginInterceptorAspect {
* @param ip
* @param loginResult
*/
private void sendEvent(UserLoginRegEvent.SubEventType type, Device device, String phone, String deviceId, String ip, Object loginResult) {
private void sendEvent(UserLoginRegEvent.SubEventType type, Device device, String phone, String deviceId, String ip, Object loginResult, Integer tenantId) {
try {
if (null == phone) {
......@@ -349,7 +358,9 @@ public class LoginInterceptorAspect {
baseInfoBuilder.deviceType(device.getCode());
builder.businessEventBaseInfo(baseInfoBuilder.build());
UserEventCollectingUtil.addEvent(builder.build());
if (tenantId == null || tenantId.equals(TenantUtil.TENANT_DEFAULT)) {
UserEventCollectingUtil.addEvent(builder.build());
}
} catch (Exception e) {
log.error("发送用户登录事件异常phone:{}", phone);
}
......
......@@ -327,9 +327,7 @@ public class AppController implements IBaseController {
return JsonResult.buildErrorStateResult("登录失败", null);
}
//校验租户ID tenantId
if (TenantUtil.checkoutTenantIsDefault(tenantId)) {
oauthLoginInfoService.addLoginInfo(user, tenantId);
}
oauthLoginInfoService.addLoginInfo(user, tenantId);
LoginProperties loginProperties = new LoginProperties("", 4, channelId, registerFrom, appChannel, null, "", tenantId);
AuthBean bean = sessionService.createSession(user, loginProperties);
log.info("第三方用户登录成功 [AppController] login2 --> loginFrom:{}, phoneNo:{},appChannel:{}", registerFrom, phoneNo, appChannel);
......
......@@ -332,7 +332,7 @@ public class InnerController implements IBaseController {
return JsonResult.buildSuccessResult(null, new UserRet(user));
}
//注册新用户
user = userRegisterService.register(registeredFrom, phoneNo, null, null, 0L, 0L);
user = userRegisterService.register(registeredFrom, phoneNo, null, null, 0L, 0L, tenantId);
//校验租户ID tenantId
iOauthLoginInfoService.addLoginInfo(user, tenantId);
return JsonResult.buildSuccessResult(null, new UserRet(user));
......
......@@ -95,7 +95,7 @@ public class AppletServiceImpl implements IAppletService {
User user = userService.findByPhoneInDb(appletParamEntry.getMobile());
//如果不存在就去注册一下
if (null == user) {
user = iUserRegisterService.register(appletParamEntry.getChannelId(), appletParamEntry.getMobile());
user = iUserRegisterService.register(appletParamEntry.getChannelId(), appletParamEntry.getMobile(), appletParamEntry.getTenantId());
}
iOauthLoginInfoService.addRegisterInfo(user, appletParamEntry);
return user.getId();
......
......@@ -13,6 +13,8 @@ import java.util.List;
public interface IUserRegisterService {
User register(Long registerFrom, String phoneNo);
User register(Long registerFrom, String phoneNo, Integer tenantId);
/**
* 替换AppController.register
* /app/login,/app/login_super
......@@ -27,6 +29,8 @@ public interface IUserRegisterService {
*/
User register(Long registerFrom, String phoneNo, String idNo, String name, Long channelId, Long btRegisterChannelId);
User register(Long registerFrom, String phoneNo, String idNo, String name, Long channelId, Long btRegisterChannelId, Integer tenantId);
/**
* 替换UserController.register里的userService.register
......
......@@ -9,6 +9,7 @@ import cn.quantgroup.xyqb.model.UserRegisterParam;
import cn.quantgroup.xyqb.service.register.IUserRegisterService;
import cn.quantgroup.xyqb.service.user.IUserService;
import cn.quantgroup.xyqb.util.PasswordUtil;
import cn.quantgroup.xyqb.util.TenantUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.ApplicationEventPublisher;
......@@ -16,7 +17,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.sql.Timestamp;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
......@@ -51,6 +51,24 @@ import java.util.UUID;
return user;
}
@Transactional(rollbackFor = Exception.class)
@Override
public User register(Long registerFrom, String phoneNo, Integer tenantId) {
UserRegisterParam userRegisterParam = UserRegisterParam.builder()
.registerFrom(registerFrom)
.phoneNo(phoneNo)
.channelId(registerFrom)
.sendSuccessSms(true)
.sendAppSms(true)
.sendSuccessMq(true)
.build();
User user = saveUser(userRegisterParam);
if (tenantId == null || tenantId.equals(TenantUtil.TENANT_DEFAULT)) {
applicationEventPublisher.publishEvent(new RegisterEvent(this, userRegisterParam));
}
return user;
}
@Transactional(rollbackFor = Exception.class)
@Override
public User register(Long registerFrom, String phoneNo, String idNo, String name, Long channelId, Long btRegisterChannelId) {
......@@ -70,6 +88,27 @@ import java.util.UUID;
return user;
}
@Transactional(rollbackFor = Exception.class)
@Override
public User register(Long registerFrom, String phoneNo, String idNo, String name, Long channelId, Long btRegisterChannelId, Integer tenantId) {
UserRegisterParam userRegisterParam = UserRegisterParam.builder()
.registerFrom(registerFrom)
.phoneNo(phoneNo)
.idNo(idNo)
.name(name)
.channelId(channelId)
.btRegisterChannelId(btRegisterChannelId)
.sendSuccessSms(true)
.sendAppSms(true)
.sendSuccessMq(true)
.build();
User user = saveUser(userRegisterParam);
if (tenantId == null || tenantId.equals(TenantUtil.TENANT_DEFAULT)) {
applicationEventPublisher.publishEvent(new RegisterEvent(this, userRegisterParam));
}
return user;
}
private User saveUser(UserRegisterParam userRegisterParam) {
String uuid = UUID.randomUUID().toString();
User user = new User();
......
This diff is collapsed.
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