parent
0494bd9234
commit
741df1fcba
19 changed files with 739 additions and 12 deletions
@ -0,0 +1,42 @@ |
|||||||
|
package com.daqing.financial.hrauth.annotation; |
||||||
|
|
||||||
|
|
||||||
|
import com.daqing.financial.hrauth.enums.OperationType; |
||||||
|
import com.daqing.financial.hrauth.enums.OperationUnit; |
||||||
|
|
||||||
|
import java.lang.annotation.*; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Rogers |
||||||
|
* 操作日志注解 |
||||||
|
* @create 2020-07-03 |
||||||
|
*/ |
||||||
|
@Target({ElementType.METHOD}) |
||||||
|
@Retention(RetentionPolicy.RUNTIME) |
||||||
|
@Documented |
||||||
|
public @interface Log { |
||||||
|
|
||||||
|
/** |
||||||
|
* 方法描述,可使用占位符获取参数:{{tel}} |
||||||
|
*/ |
||||||
|
String detail() default ""; |
||||||
|
|
||||||
|
/** |
||||||
|
* 日志等级:自己定,此处分为1-9 |
||||||
|
*/ |
||||||
|
int level() default 0; |
||||||
|
|
||||||
|
/** |
||||||
|
* 操作类型(enum):主要是select,insert,update,delete |
||||||
|
*/ |
||||||
|
OperationType operationType() default OperationType.UNKNOWN; |
||||||
|
|
||||||
|
/** |
||||||
|
* 被操作的对象(此处使用enum):可以是任何对象,如表名(user),或者是工具(redis) |
||||||
|
*/ |
||||||
|
OperationUnit operationUnit() default OperationUnit.UNKNOWN; |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
@ -0,0 +1,124 @@ |
|||||||
|
package com.daqing.financial.hrauth.aspect; |
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject; |
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||||
|
import com.daqing.financial.hrauth.annotation.Log; |
||||||
|
import com.daqing.financial.hrauth.dao.SystemLogMapper; |
||||||
|
import com.daqing.financial.hrauth.service.TokenService; |
||||||
|
import com.daqing.financial.hrauth.service.UserLoginService; |
||||||
|
import com.daqing.financial.hrauth.util.IpUtils; |
||||||
|
import com.daqing.framework.domain.hrms.SystemLog; |
||||||
|
import com.daqing.framework.domain.hrms.Token; |
||||||
|
import com.daqing.framework.domain.hrms.UserEntity; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.apache.commons.lang3.StringUtils; |
||||||
|
import org.aspectj.lang.JoinPoint; |
||||||
|
import org.aspectj.lang.reflect.MethodSignature; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.scheduling.annotation.Async; |
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
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.Date; |
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.Map; |
||||||
|
import java.util.UUID; |
||||||
|
|
||||||
|
/** |
||||||
|
* @ClassName Operation |
||||||
|
* @Description 操作日志类 |
||||||
|
* @Date 2020/9/29 10:06 |
||||||
|
* @Version 1.0 |
||||||
|
*/ |
||||||
|
@Slf4j |
||||||
|
@Component |
||||||
|
public class Operation { |
||||||
|
|
||||||
|
@Resource |
||||||
|
private SystemLogMapper systemLogMapper; |
||||||
|
@Autowired |
||||||
|
private TokenService tokenService; |
||||||
|
@Autowired |
||||||
|
private UserLoginService userLoginService; |
||||||
|
@Async |
||||||
|
public void addOperationLog(JoinPoint joinPoint, Object res, long time, UserEntity systemUser) { |
||||||
|
// synchronized (SysLogAspect.class) {//获得登录用户信息
|
||||||
|
// User systemUser = (User) SecurityUtils.getSubject().getPrincipal();
|
||||||
|
MethodSignature signature = (MethodSignature) joinPoint.getSignature(); |
||||||
|
SystemLog operationLog = new SystemLog(); |
||||||
|
//获取内网地址IpUtils.intranetIp()
|
||||||
|
//获取外网地址IpUtils.internetIp()
|
||||||
|
// operationLog.setIpAddressLan("");
|
||||||
|
// operationLog.setIpAddressWan("");
|
||||||
|
operationLog.setIpAddressLan(IpUtils.intranetIp()); |
||||||
|
//获取不到外网IP设置内网IP
|
||||||
|
if (StringUtils.isBlank(IpUtils.internetIp())) { |
||||||
|
operationLog.setIpAddressWan(IpUtils.intranetIp()); |
||||||
|
} else { |
||||||
|
operationLog.setIpAddressWan(IpUtils.internetIp()); |
||||||
|
} |
||||||
|
// operationLog.setRunTime(time);
|
||||||
|
//operationLog.setRunTime(0L);
|
||||||
|
operationLog.setReturnValue(JSONObject.toJSONString(res)); |
||||||
|
operationLog.setId(UUID.randomUUID().toString()); |
||||||
|
operationLog.setArgs(JSONObject.toJSONString(joinPoint.getArgs())); |
||||||
|
operationLog.setCreateTime(new Date()); |
||||||
|
operationLog.setMethod(signature.getDeclaringTypeName() + "." + signature.getName()); |
||||||
|
operationLog.setUserId(systemUser.getId() + ""); |
||||||
|
operationLog.setUserName(systemUser.getAccount()); |
||||||
|
Log annotation = signature.getMethod().getAnnotation(Log.class); |
||||||
|
if (annotation != null) { |
||||||
|
operationLog.setLogLevel(annotation.level()); |
||||||
|
operationLog.setLogDescribe(getDetail(((MethodSignature) joinPoint.getSignature()).getParameterNames(), joinPoint.getArgs(), annotation)); |
||||||
|
operationLog.setOperationType(annotation.operationType().getValue()); |
||||||
|
operationLog.setOperationUnit(annotation.operationUnit().getValue()); |
||||||
|
} |
||||||
|
|
||||||
|
//这里保存日志
|
||||||
|
// log.info("######记录日志:{}######", operationLog.toString());
|
||||||
|
int b = systemLogMapper.insert(operationLog); |
||||||
|
log.info("######记录日志:{}######", operationLog.toString()); |
||||||
|
if (b<= 0) { |
||||||
|
log.error("#####新增###记录日志失败:{}####", operationLog); |
||||||
|
} |
||||||
|
// }
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 对当前登录用户和占位符处理 |
||||||
|
* |
||||||
|
* @param argNames 方法参数名称数组 |
||||||
|
* @param args 方法参数数组 |
||||||
|
* @param annotation 注解信息 |
||||||
|
* @return 返回处理后的描述 |
||||||
|
*/ |
||||||
|
private String getDetail(String[] argNames, Object[] args, Log annotation) { |
||||||
|
//获得登录用户信息
|
||||||
|
//User systemUser = (User) SecurityUtils.getSubject().getPrincipal();
|
||||||
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); |
||||||
|
String token = request.getHeader("token"); |
||||||
|
Token userToken = tokenService.getOne(new QueryWrapper<Token>().eq("token", token)); |
||||||
|
UserEntity systemUser = userLoginService.getOne(new QueryWrapper<UserEntity>().eq("id",userToken.getUserId())); |
||||||
|
|
||||||
|
Map<Object, Object> map = new HashMap<>(4); |
||||||
|
for (int i = 0; i < argNames.length; i++) { |
||||||
|
map.put(argNames[i], args[i]); |
||||||
|
} |
||||||
|
|
||||||
|
String detail = annotation.detail(); |
||||||
|
try { |
||||||
|
detail = "'" + systemUser.getAccount() + "'=》" + annotation.detail(); |
||||||
|
for (Map.Entry<Object, Object> entry : map.entrySet()) { |
||||||
|
Object k = entry.getKey(); |
||||||
|
Object v = entry.getValue(); |
||||||
|
detail = detail.replace("{{" + k + "}}", JSONObject.toJSONString(v)); |
||||||
|
} |
||||||
|
} catch (Exception e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
return detail; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,178 @@ |
|||||||
|
package com.daqing.financial.hrauth.aspect; |
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject; |
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||||
|
import com.daqing.financial.hrauth.annotation.Log; |
||||||
|
import com.daqing.financial.hrauth.service.TokenService; |
||||||
|
import com.daqing.financial.hrauth.service.UserLoginService; |
||||||
|
import com.daqing.framework.domain.hrms.Token; |
||||||
|
import com.daqing.framework.domain.hrms.UserEntity; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.aspectj.lang.JoinPoint; |
||||||
|
import org.aspectj.lang.ProceedingJoinPoint; |
||||||
|
import org.aspectj.lang.annotation.*; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
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; |
||||||
|
|
||||||
|
/** |
||||||
|
* @ClassName actionLogAspect |
||||||
|
* @Description 操作日志切面 |
||||||
|
* @Author Rogers |
||||||
|
* @Date 2020/7/3 23:24 |
||||||
|
* @Version 1.0 |
||||||
|
*/ |
||||||
|
@Slf4j |
||||||
|
@Aspect |
||||||
|
@Component |
||||||
|
public class SysLogAspect { |
||||||
|
/* @Resource |
||||||
|
private ISystemLogService logService; |
||||||
|
@Resource |
||||||
|
private SystemLogMapper systemLogMapper;*/ |
||||||
|
|
||||||
|
@Resource |
||||||
|
private Operation operation; |
||||||
|
@Autowired |
||||||
|
private TokenService tokenService; |
||||||
|
@Autowired |
||||||
|
private UserLoginService userLoginService; |
||||||
|
/** |
||||||
|
* 此处的切点是注解的方式,也可以用包名的方式达到相同的效果 |
||||||
|
* '@Pointcut("execution(* com.wwj.springboot.service.impl.*.*(..))")' |
||||||
|
*/ |
||||||
|
@Pointcut("@annotation(com.daqing.financial.hrauth.annotation.Log)") |
||||||
|
public void operationLog() { |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 环绕增强,相当于MethodInterceptor |
||||||
|
*/ |
||||||
|
@Around("operationLog()") |
||||||
|
public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable { |
||||||
|
Object res = null; |
||||||
|
long time = System.currentTimeMillis(); |
||||||
|
try { |
||||||
|
res = joinPoint.proceed(); |
||||||
|
time = System.currentTimeMillis() - time; |
||||||
|
return res; |
||||||
|
} finally { |
||||||
|
try { |
||||||
|
//User systemUser = (User) SecurityUtils.getSubject().getPrincipal();
|
||||||
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); |
||||||
|
String token = request.getHeader("token"); |
||||||
|
Token userToken = tokenService.getOne(new QueryWrapper<Token>().eq("token", token)); |
||||||
|
UserEntity systemUser = userLoginService.getOne(new QueryWrapper<UserEntity>().eq("id",userToken.getUserId())); |
||||||
|
operation.addOperationLog(joinPoint,res,time,systemUser); |
||||||
|
//方法执行完成后增加日志
|
||||||
|
// addOperationLog(joinPoint, res, time);
|
||||||
|
} catch (Exception e) { |
||||||
|
log.error("LogAspect 操作失败:" + e.getMessage()); |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 对当前登录用户和占位符处理 |
||||||
|
* |
||||||
|
* @param argNames 方法参数名称数组 |
||||||
|
* @param args 方法参数数组 |
||||||
|
* @param annotation 注解信息 |
||||||
|
* @return 返回处理后的描述 |
||||||
|
*/ |
||||||
|
private String getDetail(String[] argNames, Object[] args, Log annotation) { |
||||||
|
//获得登录用户信息
|
||||||
|
//User systemUser = (User) SecurityUtils.getSubject().getPrincipal();
|
||||||
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); |
||||||
|
UserEntity systemUser = (UserEntity) request.getUserPrincipal(); |
||||||
|
|
||||||
|
Map<Object, Object> map = new HashMap<>(4); |
||||||
|
for (int i = 0; i < argNames.length; i++) { |
||||||
|
map.put(argNames[i], args[i]); |
||||||
|
} |
||||||
|
|
||||||
|
String detail = annotation.detail(); |
||||||
|
try { |
||||||
|
detail = "'" + systemUser.getAccount() + "'=》" + annotation.detail(); |
||||||
|
for (Map.Entry<Object, Object> entry : map.entrySet()) { |
||||||
|
Object k = entry.getKey(); |
||||||
|
Object v = entry.getValue(); |
||||||
|
detail = detail.replace("{{" + k + "}}", JSONObject.toJSONString(v)); |
||||||
|
} |
||||||
|
} catch (Exception e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
return detail; |
||||||
|
} |
||||||
|
|
||||||
|
@Before("operationLog()") |
||||||
|
public void doBeforeAdvice(JoinPoint joinPoint) { |
||||||
|
// System.out.println("进入方法前执行.....");
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 处理完请求,返回内容 |
||||||
|
* |
||||||
|
* @param ret |
||||||
|
*/ |
||||||
|
@AfterReturning(returning = "ret", pointcut = "operationLog()") |
||||||
|
public void doAfterReturning(Object ret) { |
||||||
|
// System.out.println("方法的返回值 : " + ret);
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 后置异常通知 |
||||||
|
*/ |
||||||
|
@AfterThrowing("operationLog()") |
||||||
|
public void throwss(JoinPoint jp) { |
||||||
|
// System.out.println("方法异常时执行.....");
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 后置最终通知,final增强,不管是抛出异常或者正常退出都会执行 |
||||||
|
*/ |
||||||
|
@After("operationLog()") |
||||||
|
public void after(JoinPoint jp) { |
||||||
|
// System.out.println("方法最后执行.....");
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 获取客户端ip地址 |
||||||
|
* |
||||||
|
* @param request |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public static String getClientIp(HttpServletRequest request) { |
||||||
|
String ip = request.getHeader("x-forwarded-for"); |
||||||
|
if (ip == null || ip.trim() == "" || "unknown".equalsIgnoreCase(ip)) { |
||||||
|
ip = request.getHeader("Proxy-Client-IP"); |
||||||
|
} |
||||||
|
if (ip == null || ip.trim() == "" || "unknown".equalsIgnoreCase(ip)) { |
||||||
|
ip = request.getHeader("WL-Proxy-Client-IP"); |
||||||
|
} |
||||||
|
if (ip == null || ip.trim() == "" || "unknown".equalsIgnoreCase(ip)) { |
||||||
|
ip = request.getRemoteAddr(); |
||||||
|
} |
||||||
|
// 多个路由时,取第一个非unknown的ip
|
||||||
|
final String[] arr = ip.split(","); |
||||||
|
for (final String str : arr) { |
||||||
|
if (!"unknown".equalsIgnoreCase(str)) { |
||||||
|
ip = str; |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
return ip; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,18 @@ |
|||||||
|
package com.daqing.financial.hrauth.dao; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
import com.daqing.framework.domain.hrms.SystemLog; |
||||||
|
import org.apache.ibatis.annotations.Mapper; |
||||||
|
|
||||||
|
/** |
||||||
|
* @ClassName UserActionMapper |
||||||
|
* @Description 用户动作记录 |
||||||
|
* @Author Rogers |
||||||
|
* @Date 2020/7/3 22:08 |
||||||
|
* @Version 1.0 |
||||||
|
*/ |
||||||
|
@Mapper |
||||||
|
public interface SystemLogMapper extends BaseMapper<SystemLog> { |
||||||
|
} |
||||||
|
|
@ -0,0 +1,66 @@ |
|||||||
|
package com.daqing.financial.hrauth.enums; |
||||||
|
|
||||||
|
/** |
||||||
|
* 日志操作类型 |
||||||
|
*/ |
||||||
|
public enum BusinessType |
||||||
|
{ |
||||||
|
/** |
||||||
|
* 其它 |
||||||
|
*/ |
||||||
|
OTHER, |
||||||
|
/** |
||||||
|
* 新增 |
||||||
|
*/ |
||||||
|
INSERT, |
||||||
|
/** |
||||||
|
* 修改 |
||||||
|
*/ |
||||||
|
UPDATE, |
||||||
|
/** |
||||||
|
* 删除 |
||||||
|
*/ |
||||||
|
DELETE, |
||||||
|
/** |
||||||
|
* 查询 |
||||||
|
*/ |
||||||
|
SELECT, |
||||||
|
/** |
||||||
|
* 导出 |
||||||
|
*/ |
||||||
|
EXPORT, |
||||||
|
/** |
||||||
|
* 导入 |
||||||
|
*/ |
||||||
|
IMPORT; |
||||||
|
|
||||||
|
public static String getMsg(BusinessType type){ |
||||||
|
String result = null; |
||||||
|
switch (type) { |
||||||
|
case INSERT: |
||||||
|
result = "新增"; |
||||||
|
break; |
||||||
|
case UPDATE: |
||||||
|
result = "修改"; |
||||||
|
break; |
||||||
|
case DELETE: |
||||||
|
result = "删除"; |
||||||
|
break; |
||||||
|
case SELECT: |
||||||
|
result = "查询"; |
||||||
|
break; |
||||||
|
case EXPORT: |
||||||
|
result = "导出"; |
||||||
|
break; |
||||||
|
case IMPORT: |
||||||
|
result = "导入"; |
||||||
|
break; |
||||||
|
case OTHER: |
||||||
|
result = "其它"; |
||||||
|
break; |
||||||
|
default: |
||||||
|
break; |
||||||
|
} |
||||||
|
return result; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,52 @@ |
|||||||
|
package com.daqing.financial.hrauth.enums; |
||||||
|
|
||||||
|
public enum OperationType { |
||||||
|
|
||||||
|
/** |
||||||
|
* 操作类型 |
||||||
|
*/ |
||||||
|
UNKNOWN("UNKNOWN"), |
||||||
|
DELETE("DELETE"), |
||||||
|
SELECT("SELECT"), |
||||||
|
UPDATE("UPDATE"), |
||||||
|
INSERT("INSERT"); |
||||||
|
|
||||||
|
private String value; |
||||||
|
|
||||||
|
public String getValue() { |
||||||
|
return value; |
||||||
|
} |
||||||
|
|
||||||
|
public void setValue(String value) { |
||||||
|
this.value = value; |
||||||
|
} |
||||||
|
|
||||||
|
OperationType(String s) { |
||||||
|
this.value = s; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static String getMsg(BusinessType type){ |
||||||
|
String result = null; |
||||||
|
switch (type) { |
||||||
|
case INSERT: |
||||||
|
result = "新增"; |
||||||
|
break; |
||||||
|
case UPDATE: |
||||||
|
result = "修改"; |
||||||
|
break; |
||||||
|
case DELETE: |
||||||
|
result = "删除"; |
||||||
|
break; |
||||||
|
case SELECT: |
||||||
|
result = "查询"; |
||||||
|
break; |
||||||
|
case OTHER: |
||||||
|
result = "其它"; |
||||||
|
break; |
||||||
|
default: |
||||||
|
break; |
||||||
|
} |
||||||
|
return result; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
package com.daqing.financial.hrauth.enums; |
||||||
|
|
||||||
|
public enum OperationUnit { |
||||||
|
/** |
||||||
|
* 被操作的单元 |
||||||
|
*/ |
||||||
|
UNKNOWN("unknown"), |
||||||
|
USER("user"), |
||||||
|
LOG("log"), |
||||||
|
PERMISSION("permission"), |
||||||
|
ROLE("role"), |
||||||
|
DEVICE("device"), |
||||||
|
WITHDRAW("withdraw"), |
||||||
|
ATRUSER("atrUser"), |
||||||
|
ASSERT("ASSERT"), |
||||||
|
COIN("coin"), |
||||||
|
NOTICE("notice"), |
||||||
|
DATASTATISTIC("datastatistic"), |
||||||
|
BlockGroup("blockGroup"), |
||||||
|
C2C("c2c"), |
||||||
|
USERROLE("userRole"); |
||||||
|
|
||||||
|
private String value; |
||||||
|
|
||||||
|
OperationUnit(String value) { |
||||||
|
this.value = value; |
||||||
|
} |
||||||
|
|
||||||
|
public String getValue() { |
||||||
|
return value; |
||||||
|
} |
||||||
|
|
||||||
|
public void setValue(String value) { |
||||||
|
this.value = value; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,68 @@ |
|||||||
|
package com.daqing.financial.hrauth.util; |
||||||
|
|
||||||
|
import java.net.Inet4Address; |
||||||
|
import java.net.InetAddress; |
||||||
|
import java.net.NetworkInterface; |
||||||
|
import java.util.Enumeration; |
||||||
|
|
||||||
|
/** |
||||||
|
* @ClassName IpUtils |
||||||
|
* @Description Ip工具类,获取ip |
||||||
|
* @Author Rogers |
||||||
|
* @Date 2020/7/4 14:36 |
||||||
|
* @Version 1.0 |
||||||
|
*/ |
||||||
|
public class IpUtils { |
||||||
|
/*** |
||||||
|
* 获取外网IP |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public static String internetIp() { |
||||||
|
try { |
||||||
|
|
||||||
|
Enumeration<NetworkInterface> networks = NetworkInterface.getNetworkInterfaces(); |
||||||
|
InetAddress inetAddress = null; |
||||||
|
Enumeration<InetAddress> inetAddresses = null; |
||||||
|
while (networks.hasMoreElements()) { |
||||||
|
inetAddresses = networks.nextElement().getInetAddresses(); |
||||||
|
while (inetAddresses.hasMoreElements()) { |
||||||
|
inetAddress = inetAddresses.nextElement(); |
||||||
|
if (inetAddress != null |
||||||
|
&& inetAddress instanceof Inet4Address |
||||||
|
&& !inetAddress.isSiteLocalAddress() |
||||||
|
&& !inetAddress.isLoopbackAddress() |
||||||
|
&& inetAddress.getHostAddress().indexOf(":") == -1) { |
||||||
|
return inetAddress.getHostAddress(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return null; |
||||||
|
|
||||||
|
} catch (Exception e) { |
||||||
|
|
||||||
|
throw new RuntimeException(e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取内网IP |
||||||
|
* |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public static String intranetIp() { |
||||||
|
try { |
||||||
|
return InetAddress.getLocalHost().getHostAddress(); |
||||||
|
} catch (Exception e) { |
||||||
|
throw new RuntimeException(e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取服务启动host |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public static String getHost(){ |
||||||
|
return internetIp()==null?intranetIp():internetIp(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,12 @@ |
|||||||
|
#security: |
||||||
|
# oauth2: |
||||||
|
# client: |
||||||
|
# client-id: user-client |
||||||
|
# client-secret: user-secret-8888 |
||||||
|
# user-authorization-uri: http://localhost:7000/oauth/authorize |
||||||
|
# access-token-uri: http://localhost:7000/oauth/token |
||||||
|
# resource: |
||||||
|
# id: user-client |
||||||
|
# user-info-uri: user-info |
||||||
|
# authorization: |
||||||
|
# check-token-access: http://localhost:7000/oauth/check_token |
@ -0,0 +1,102 @@ |
|||||||
|
package com.daqing.framework.domain.hrms; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||||
|
import io.swagger.annotations.ApiModel; |
||||||
|
import io.swagger.annotations.ApiModelProperty; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import lombok.Builder; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.NoArgsConstructor; |
||||||
|
|
||||||
|
import java.util.Date; |
||||||
|
|
||||||
|
/** |
||||||
|
* @ClassName SystemLog |
||||||
|
* @Description 操作日志 |
||||||
|
* @Date 2020/9/29 14:30 |
||||||
|
* @Version 1.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
@NoArgsConstructor |
||||||
|
@AllArgsConstructor |
||||||
|
@Builder |
||||||
|
@Data |
||||||
|
@TableName("sys_action_log") |
||||||
|
@ApiModel("操作日志") |
||||||
|
public class SystemLog { |
||||||
|
@TableId(value = "id", type = IdType.UUID) |
||||||
|
private String id; |
||||||
|
/** |
||||||
|
* 创建时间 |
||||||
|
*/ |
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
||||||
|
// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
// @TableField(fill = FieldFill.INSERT_UPDATE)
|
||||||
|
@ApiModelProperty("创建时间") |
||||||
|
private Date createTime; |
||||||
|
/** |
||||||
|
* 日志等级 |
||||||
|
*/ |
||||||
|
@ApiModelProperty("日志等级") |
||||||
|
private Integer logLevel; |
||||||
|
/** |
||||||
|
* 被操作的对象 |
||||||
|
*/ |
||||||
|
@ApiModelProperty("被操作的对象") |
||||||
|
private String operationUnit; |
||||||
|
/** |
||||||
|
* 方法名 |
||||||
|
*/ |
||||||
|
@ApiModelProperty("method") |
||||||
|
private String method; |
||||||
|
/** |
||||||
|
* 参数 |
||||||
|
*/ |
||||||
|
@ApiModelProperty("参数") |
||||||
|
private String args; |
||||||
|
/** |
||||||
|
* 操作人id |
||||||
|
*/ |
||||||
|
@ApiModelProperty("操作人id") |
||||||
|
private String userId; |
||||||
|
/** |
||||||
|
* 操作人 |
||||||
|
*/ |
||||||
|
@ApiModelProperty("操作人") |
||||||
|
private String userName; |
||||||
|
/** |
||||||
|
* 日志描述 |
||||||
|
*/ |
||||||
|
@ApiModelProperty("日志描述") |
||||||
|
private String logDescribe; |
||||||
|
/** |
||||||
|
* 操作类型 |
||||||
|
*/ |
||||||
|
@ApiModelProperty("操作类型") |
||||||
|
private String operationType; |
||||||
|
/** |
||||||
|
* 方法运行时间 |
||||||
|
*/ |
||||||
|
@ApiModelProperty("方法运行时间") |
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
||||||
|
private Long runTime; |
||||||
|
/** |
||||||
|
* 方法返回值 |
||||||
|
*/ |
||||||
|
@ApiModelProperty("方法返回值") |
||||||
|
private String returnValue; |
||||||
|
/** |
||||||
|
* 内网IP地址 |
||||||
|
*/ |
||||||
|
@ApiModelProperty("内网IP地址") |
||||||
|
private String ipAddressLan; |
||||||
|
|
||||||
|
/** |
||||||
|
* 外网IP地址 |
||||||
|
*/ |
||||||
|
@ApiModelProperty("外网IP地址") |
||||||
|
private String ipAddressWan; |
||||||
|
} |
Loading…
Reference in new issue