Commit 0c738b1e authored by dqjdda's avatar dqjdda
Browse files

代码优化,获取Ip优化

parent f26342ee
...@@ -23,10 +23,10 @@ import java.lang.reflect.Method; ...@@ -23,10 +23,10 @@ import java.lang.reflect.Method;
@Component @Component
public class LimitAspect { public class LimitAspect {
private final RedisTemplate redisTemplate; private final RedisTemplate<Object,Object> redisTemplate;
private static final Logger logger = LoggerFactory.getLogger(LimitAspect.class); private static final Logger logger = LoggerFactory.getLogger(LimitAspect.class);
public LimitAspect(RedisTemplate redisTemplate) { public LimitAspect(RedisTemplate<Object,Object> redisTemplate) {
this.redisTemplate = redisTemplate; this.redisTemplate = redisTemplate;
} }
...@@ -50,11 +50,11 @@ public class LimitAspect { ...@@ -50,11 +50,11 @@ public class LimitAspect {
} }
} }
ImmutableList keys = ImmutableList.of(StringUtils.join(limit.prefix(), "_", key, "_", request.getRequestURI().replaceAll("/","_"))); ImmutableList<Object> keys = ImmutableList.of(StringUtils.join(limit.prefix(), "_", key, "_", request.getRequestURI().replaceAll("/","_")));
String luaScript = buildLuaScript(); String luaScript = buildLuaScript();
RedisScript<Number> redisScript = new DefaultRedisScript<>(luaScript, Number.class); RedisScript<Number> redisScript = new DefaultRedisScript<>(luaScript, Number.class);
Number count = (Number) redisTemplate.execute(redisScript, keys, limit.count(), limit.period()); Number count = redisTemplate.execute(redisScript, keys, limit.count(), limit.period());
if (null != count && count.intValue() <= limit.count()) { if (null != count && count.intValue() <= limit.count()) {
logger.info("第{}次访问key为 {},描述为 [{}] 的接口", count, keys, limit.name()); logger.info("第{}次访问key为 {},描述为 [{}] 的接口", count, keys, limit.name());
return joinPoint.proceed(); return joinPoint.proceed();
......
...@@ -31,8 +31,6 @@ public class BaseEntity implements Serializable { ...@@ -31,8 +31,6 @@ public class BaseEntity implements Serializable {
@UpdateTimestamp @UpdateTimestamp
private Timestamp updateTime; private Timestamp updateTime;
public @interface New {}
public @interface Update {} public @interface Update {}
@Override @Override
......
...@@ -23,7 +23,6 @@ import org.springframework.data.redis.core.RedisOperations; ...@@ -23,7 +23,6 @@ import org.springframework.data.redis.core.RedisOperations;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.SerializationException;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.time.Duration; import java.time.Duration;
...@@ -56,7 +55,7 @@ public class RedisConfig extends CachingConfigurerSupport { ...@@ -56,7 +55,7 @@ public class RedisConfig extends CachingConfigurerSupport {
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, Object> template = new RedisTemplate<>(); RedisTemplate<Object, Object> template = new RedisTemplate<>();
//序列化 //序列化
FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer(Object.class); FastJsonRedisSerializer<Object> fastJsonRedisSerializer = new FastJsonRedisSerializer<>(Object.class);
// value值的序列化采用fastJsonRedisSerializer // value值的序列化采用fastJsonRedisSerializer
template.setValueSerializer(fastJsonRedisSerializer); template.setValueSerializer(fastJsonRedisSerializer);
template.setHashValueSerializer(fastJsonRedisSerializer); template.setHashValueSerializer(fastJsonRedisSerializer);
...@@ -140,7 +139,7 @@ public class RedisConfig extends CachingConfigurerSupport { ...@@ -140,7 +139,7 @@ public class RedisConfig extends CachingConfigurerSupport {
} }
@Override @Override
public byte[] serialize(T t) throws SerializationException { public byte[] serialize(T t) {
if (t == null) { if (t == null) {
return new byte[0]; return new byte[0];
} }
...@@ -148,7 +147,7 @@ public class RedisConfig extends CachingConfigurerSupport { ...@@ -148,7 +147,7 @@ public class RedisConfig extends CachingConfigurerSupport {
} }
@Override @Override
public T deserialize(byte[] bytes) throws SerializationException { public T deserialize(byte[] bytes) {
if (bytes == null || bytes.length <= 0) { if (bytes == null || bytes.length <= 0) {
return null; return null;
} }
......
...@@ -4,6 +4,7 @@ import com.fasterxml.classmate.TypeResolver; ...@@ -4,6 +4,7 @@ import com.fasterxml.classmate.TypeResolver;
import com.google.common.base.Predicates; import com.google.common.base.Predicates;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
...@@ -22,7 +23,6 @@ import springfox.documentation.spring.web.plugins.Docket; ...@@ -22,7 +23,6 @@ import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2; import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static com.google.common.collect.Lists.newArrayList; import static com.google.common.collect.Lists.newArrayList;
import static springfox.documentation.schema.AlternateTypeRules.newRule; import static springfox.documentation.schema.AlternateTypeRules.newRule;
...@@ -43,6 +43,7 @@ public class SwaggerConfig { ...@@ -43,6 +43,7 @@ public class SwaggerConfig {
private Boolean enabled; private Boolean enabled;
@Bean @Bean
@SuppressWarnings("all")
public Docket createRestApi() { public Docket createRestApi() {
ParameterBuilder ticketPar = new ParameterBuilder(); ParameterBuilder ticketPar = new ParameterBuilder();
List<Parameter> pars = new ArrayList<>(); List<Parameter> pars = new ArrayList<>();
...@@ -93,7 +94,8 @@ class SwaggerDataConfig { ...@@ -93,7 +94,8 @@ class SwaggerDataConfig {
} }
@ApiModel @ApiModel
static class Page { @Data
private static class Page {
@ApiModelProperty("页码 (0..N)") @ApiModelProperty("页码 (0..N)")
private Integer page; private Integer page;
...@@ -102,29 +104,5 @@ class SwaggerDataConfig { ...@@ -102,29 +104,5 @@ class SwaggerDataConfig {
@ApiModelProperty("以下列格式排序标准:property[,asc | desc]。 默认排序顺序为升序。 支持多种排序条件:如:id,asc") @ApiModelProperty("以下列格式排序标准:property[,asc | desc]。 默认排序顺序为升序。 支持多种排序条件:如:id,asc")
private List<String> sort; private List<String> sort;
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
public Integer getSize() {
return size;
}
public void setSize(Integer size) {
this.size = size;
}
public List<String> getSort() {
return sort;
}
public void setSort(List<String> sort) {
this.sort = sort;
}
} }
} }
...@@ -4,11 +4,11 @@ import cn.hutool.core.io.resource.ClassPathResource; ...@@ -4,11 +4,11 @@ import cn.hutool.core.io.resource.ClassPathResource;
import org.lionsoul.ip2region.DataBlock; import org.lionsoul.ip2region.DataBlock;
import org.lionsoul.ip2region.DbConfig; import org.lionsoul.ip2region.DbConfig;
import org.lionsoul.ip2region.DbSearcher; import org.lionsoul.ip2region.DbSearcher;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.File; import java.io.File;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
...@@ -109,17 +109,27 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { ...@@ -109,17 +109,27 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
*/ */
public static String getIp(HttpServletRequest request) { public static String getIp(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for"); String ip = request.getHeader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP"); ip = request.getHeader("Proxy-Client-IP");
} }
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP"); ip = request.getHeader("WL-Proxy-Client-IP");
} }
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr(); ip = request.getRemoteAddr();
} }
String[] ips = ip.split(","); if (ip.contains(",")) {
return "0:0:0:0:0:0:0:1".equals(ips[0])?"127.0.0.1":ips[0]; ip = ip.split(",")[0];
}
if ("127.0.0.1".equals(ip)) {
// 获取本机真正的ip地址
try {
ip = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
return ip;
} }
/** /**
......
package me.zhengjie.service; package me.zhengjie.service;
import me.zhengjie.domain.GenConfig; import me.zhengjie.domain.GenConfig;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
/** /**
* @author Zheng Jie * @author Zheng Jie
......
...@@ -28,6 +28,7 @@ public class GeneratorServiceImpl implements GeneratorService { ...@@ -28,6 +28,7 @@ public class GeneratorServiceImpl implements GeneratorService {
private EntityManager em; private EntityManager em;
@Override @Override
@SuppressWarnings("all")
public Object getTables(String name, int[] startEnd) { public Object getTables(String name, int[] startEnd) {
// 使用预编译防止sql注入 // 使用预编译防止sql注入
String sql = "select table_name ,create_time , engine, table_collation, table_comment from information_schema.tables " + String sql = "select table_name ,create_time , engine, table_collation, table_comment from information_schema.tables " +
...@@ -49,6 +50,7 @@ public class GeneratorServiceImpl implements GeneratorService { ...@@ -49,6 +50,7 @@ public class GeneratorServiceImpl implements GeneratorService {
} }
@Override @Override
@SuppressWarnings("all")
public Object getColumns(String name) { public Object getColumns(String name) {
// 使用预编译防止sql注入 // 使用预编译防止sql注入
String sql = "select column_name, is_nullable, data_type, column_comment, column_key, extra from information_schema.columns " + String sql = "select column_name, is_nullable, data_type, column_comment, column_key, extra from information_schema.columns " +
......
...@@ -2,7 +2,6 @@ package me.zhengjie.aspect; ...@@ -2,7 +2,6 @@ package me.zhengjie.aspect;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import me.zhengjie.domain.Log; import me.zhengjie.domain.Log;
import me.zhengjie.exception.BadRequestException;
import me.zhengjie.service.LogService; import me.zhengjie.service.LogService;
import me.zhengjie.utils.RequestHolder; import me.zhengjie.utils.RequestHolder;
import me.zhengjie.utils.SecurityUtils; import me.zhengjie.utils.SecurityUtils;
...@@ -14,11 +13,8 @@ import org.aspectj.lang.annotation.AfterThrowing; ...@@ -14,11 +13,8 @@ import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
/** /**
* @author Zheng Jie * @author Zheng Jie
* @date 2018-11-24 * @date 2018-11-24
...@@ -28,11 +24,14 @@ import javax.servlet.http.HttpServletRequest; ...@@ -28,11 +24,14 @@ import javax.servlet.http.HttpServletRequest;
@Slf4j @Slf4j
public class LogAspect { public class LogAspect {
@Autowired private final LogService logService;
private LogService logService;
private long currentTime = 0L; private long currentTime = 0L;
public LogAspect(LogService logService) {
this.logService = logService;
}
/** /**
* 配置切入点 * 配置切入点
*/ */
......
...@@ -19,7 +19,7 @@ public class VisitsInitialization implements ApplicationRunner { ...@@ -19,7 +19,7 @@ public class VisitsInitialization implements ApplicationRunner {
} }
@Override @Override
public void run(ApplicationArguments args) throws Exception { public void run(ApplicationArguments args){
System.out.println("--------------- 初始化站点统计,如果存在今日统计则跳过 ---------------"); System.out.println("--------------- 初始化站点统计,如果存在今日统计则跳过 ---------------");
visitsService.save(); visitsService.save();
System.out.println("--------------- 初始化站点统计完成 ---------------"); System.out.println("--------------- 初始化站点统计完成 ---------------");
......
...@@ -4,7 +4,6 @@ import io.swagger.annotations.Api; ...@@ -4,7 +4,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import me.zhengjie.modules.monitor.service.VisitsService; import me.zhengjie.modules.monitor.service.VisitsService;
import me.zhengjie.utils.RequestHolder; import me.zhengjie.utils.RequestHolder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
......
package me.zhengjie.modules.monitor.service; package me.zhengjie.modules.monitor.service;
import me.zhengjie.modules.monitor.domain.vo.RedisVo;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
......
package me.zhengjie.modules.quartz.domain; package me.zhengjie.modules.quartz.domain;
import lombok.Data; import lombok.Getter;
import lombok.Setter;
import me.zhengjie.base.BaseEntity; import me.zhengjie.base.BaseEntity;
import javax.persistence.*; import javax.persistence.*;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
...@@ -10,7 +11,8 @@ import javax.validation.constraints.NotNull; ...@@ -10,7 +11,8 @@ import javax.validation.constraints.NotNull;
* @author Zheng Jie * @author Zheng Jie
* @date 2019-01-07 * @date 2019-01-07
*/ */
@Data @Getter
@Setter
@Entity @Entity
@Table(name = "quartz_job") @Table(name = "quartz_job")
public class QuartzJob extends BaseEntity { public class QuartzJob extends BaseEntity {
......
package me.zhengjie.modules.quartz.task; package me.zhengjie.modules.quartz.task;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import me.zhengjie.exception.BadRequestException;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
...@@ -12,7 +11,7 @@ import org.springframework.stereotype.Component; ...@@ -12,7 +11,7 @@ import org.springframework.stereotype.Component;
@Slf4j @Slf4j
@Component @Component
public class TestTask { public class TestTask {
public void run(){ public void run(){
log.info("执行成功"); log.info("执行成功");
} }
......
...@@ -29,6 +29,7 @@ public class ExecutionJob extends QuartzJobBean { ...@@ -29,6 +29,7 @@ public class ExecutionJob extends QuartzJobBean {
private ExecutorService executorService = Executors.newSingleThreadExecutor(); private ExecutorService executorService = Executors.newSingleThreadExecutor();
@Override @Override
@SuppressWarnings("unchecked")
protected void executeInternal(JobExecutionContext context) { protected void executeInternal(JobExecutionContext context) {
QuartzJob quartzJob = (QuartzJob) context.getMergedJobDataMap().get(QuartzJob.JOB_KEY); QuartzJob quartzJob = (QuartzJob) context.getMergedJobDataMap().get(QuartzJob.JOB_KEY);
// 获取spring bean // 获取spring bean
......
package me.zhengjie.modules.system.domain; package me.zhengjie.modules.system.domain;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import me.zhengjie.base.BaseEntity; import me.zhengjie.base.BaseEntity;
......
package me.zhengjie.modules.system.domain; package me.zhengjie.modules.system.domain;
import lombok.Data;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import me.zhengjie.base.BaseEntity; import me.zhengjie.base.BaseEntity;
import javax.persistence.*; import javax.persistence.*;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List; import java.util.List;
/** /**
......
package me.zhengjie.modules.system.domain; package me.zhengjie.modules.system.domain;
import lombok.Data;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import me.zhengjie.base.BaseEntity; import me.zhengjie.base.BaseEntity;
import javax.persistence.*; import javax.persistence.*;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.io.Serializable;
/** /**
* @author Zheng Jie * @author Zheng Jie
......
package me.zhengjie.modules.system.domain; package me.zhengjie.modules.system.domain;
import lombok.Data;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import me.zhengjie.base.BaseEntity; import me.zhengjie.base.BaseEntity;
import org.hibernate.annotations.*;
import javax.persistence.*; import javax.persistence.*;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Table; import javax.persistence.Table;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.sql.Timestamp;
import java.io.Serializable;
/** /**
* @author Zheng Jie * @author Zheng Jie
......
...@@ -4,12 +4,9 @@ import com.fasterxml.jackson.annotation.JsonIgnore; ...@@ -4,12 +4,9 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import me.zhengjie.base.BaseEntity; import me.zhengjie.base.BaseEntity;
import org.hibernate.annotations.CreationTimestamp;
import javax.persistence.*; import javax.persistence.*;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
......
...@@ -4,12 +4,9 @@ import com.fasterxml.jackson.annotation.JsonIgnore; ...@@ -4,12 +4,9 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import me.zhengjie.base.BaseEntity; import me.zhengjie.base.BaseEntity;
import org.hibernate.annotations.CreationTimestamp;
import javax.persistence.*; import javax.persistence.*;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Set; import java.util.Set;
/** /**
......
Supports Markdown
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