@Aspect
@Component
@Slf4j
public class UserLoginLogAspect {
@Autowired
UserLoginLogMapper userLoginLogMapper;
@Resource(name = "basicRedisTemplate")
RedisTemplate redisTemplate;
@Autowired
SiteInformationMapper siteInformationMapper;
@Pointcut("execution(* com.zemcho.cms.controller.site.SiteController.switchSite(..))")
public void userPointCut() {
}
@After("(userPointCut()) && args(response,token,params,..)")
public void writeLoginLog(HttpServletResponse response, String token, SwitchParams params) {
System.out.println("token = " + token);
System.out.println("params" + params);
String siteId = params.getSiteId();
SiteInformation siteInformation = siteInformationMapper.selectBySiteId(siteId);
String redisToken = "token:" + token;
LoginInformation loginInformation = (LoginInformation) redisTemplate.opsForValue().get(redisToken);
if (siteInformation != null && loginInformation != null) {
UserLoginLog entity = new UserLoginLog();
entity.setUserId(loginInformation.getUserId());
entity.setSiteId(siteId);
entity.setNickname(loginInformation.getUserName());
entity.setLoginSiteName(siteInformation.getSiteName());
entity.setLoginTime(LocalDateTime.now());
String ip = loginInformation.getIp();
System.out.println("requestIp" + ip);
entity.setLoginIp(ip);
userLoginLogMapper.insertUserLoginLog(entity);
}
log.info("用户登陆,记录登陆日志");
}
public static String getRequestIp(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (ip != null && !"unKnown".equalsIgnoreCase(ip)) {
int index = ip.indexOf(",");
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
}
}
ip = request.getHeader("X-Real-IP");
if (ip != null && !"unKnown".equalsIgnoreCase(ip)) {
return ip;
}
return request.getRemoteAddr();
}
}
@PostMapping("/switch")
public Result switchSite(HttpServletResponse response, @RequestHeader("token") String token, @Validated @RequestBody SwitchParams params, BindingResult result){
params.setToken(token);
params.setResponse(response);
return siteService.switchSite(params);
}