From 136135cf893985fa9e2bdb4a011112823d2731c4 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Thu, 8 Aug 2024 22:25:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84ip=E9=BB=91=E5=90=8D=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lihongjie/coal/common/DictCode.java | 2 + .../coal/ipList/dto/CreateIpListDto.java | 9 +++ .../lihongjie/coal/ipList/dto/IpListDto.java | 15 +++++ .../coal/ipList/dto/UpdateIpListDto.java | 9 +++ .../ipList/repository/IpListRepository.java | 6 +- .../coal/ipList/service/IpListService.java | 10 +++- .../coal/spring/config/JacksonConfig.java | 60 +++++++++++++------ src/main/resources/config/dictionary.json | 15 +++++ 8 files changed, 104 insertions(+), 22 deletions(-) diff --git a/src/main/java/cn/lihongjie/coal/common/DictCode.java b/src/main/java/cn/lihongjie/coal/common/DictCode.java index cfb47e60..5b1aa910 100644 --- a/src/main/java/cn/lihongjie/coal/common/DictCode.java +++ b/src/main/java/cn/lihongjie/coal/common/DictCode.java @@ -33,6 +33,8 @@ public class DictCode { public static final String LOGINUSERHIS_LOGINSTATUS = "loginUserHis.loginStatus"; + public static final String IPLIST_ADDRESSTYPE = "ipList.addressType"; + public static final String LOGINUSERHIS_LOGINTYPE = "loginUserHis.loginType"; public static final String LOGINUSERHIS_LOGOUTTYPE = "loginUserHis.logoutType"; diff --git a/src/main/java/cn/lihongjie/coal/ipList/dto/CreateIpListDto.java b/src/main/java/cn/lihongjie/coal/ipList/dto/CreateIpListDto.java index bf97ab1e..4f5fe16f 100644 --- a/src/main/java/cn/lihongjie/coal/ipList/dto/CreateIpListDto.java +++ b/src/main/java/cn/lihongjie/coal/ipList/dto/CreateIpListDto.java @@ -12,6 +12,8 @@ import lombok.Data; import org.hibernate.annotations.Comment; import org.hibernate.annotations.Type; +import java.time.LocalDateTime; + @Data public class CreateIpListDto extends CommonDto { @Type(PostgreSQLInetType.class) @@ -24,4 +26,11 @@ public class CreateIpListDto extends CommonDto { @Comment("地址类型 0:黑名单 1:白名单") private String addressType; + + + @Comment("开始时间") + private LocalDateTime startTime; + + @Comment("结束时间") + private LocalDateTime endTime; } diff --git a/src/main/java/cn/lihongjie/coal/ipList/dto/IpListDto.java b/src/main/java/cn/lihongjie/coal/ipList/dto/IpListDto.java index 71109470..5e11d8be 100644 --- a/src/main/java/cn/lihongjie/coal/ipList/dto/IpListDto.java +++ b/src/main/java/cn/lihongjie/coal/ipList/dto/IpListDto.java @@ -1,6 +1,8 @@ package cn.lihongjie.coal.ipList.dto; import cn.lihongjie.coal.base.dto.CommonDto; +import cn.lihongjie.coal.common.DictCode; +import cn.lihongjie.coal.pojoProcessor.DictTranslate; import io.hypersistence.utils.hibernate.type.basic.Inet; import io.hypersistence.utils.hibernate.type.basic.PostgreSQLInetType; @@ -12,6 +14,8 @@ import lombok.Data; import org.hibernate.annotations.Comment; import org.hibernate.annotations.Type; +import java.time.LocalDateTime; + @Data public class IpListDto extends CommonDto { @Type(PostgreSQLInetType.class) @@ -24,4 +28,15 @@ public class IpListDto extends CommonDto { @Comment("地址类型 0:黑名单 1:白名单") private String addressType; + + + @DictTranslate(dictKey = DictCode.IPLIST_ADDRESSTYPE) + private String addressTypeName; + + @Comment("开始时间") + private LocalDateTime startTime; + + @Comment("结束时间") + private LocalDateTime endTime; + } diff --git a/src/main/java/cn/lihongjie/coal/ipList/dto/UpdateIpListDto.java b/src/main/java/cn/lihongjie/coal/ipList/dto/UpdateIpListDto.java index 072cc5ea..7c138b74 100644 --- a/src/main/java/cn/lihongjie/coal/ipList/dto/UpdateIpListDto.java +++ b/src/main/java/cn/lihongjie/coal/ipList/dto/UpdateIpListDto.java @@ -12,6 +12,8 @@ import lombok.Data; import org.hibernate.annotations.Comment; import org.hibernate.annotations.Type; +import java.time.LocalDateTime; + @Data public class UpdateIpListDto extends CommonDto { @Type(PostgreSQLInetType.class) @@ -24,4 +26,11 @@ public class UpdateIpListDto extends CommonDto { @Comment("地址类型 0:黑名单 1:白名单") private String addressType; + + + @Comment("开始时间") + private LocalDateTime startTime; + + @Comment("结束时间") + private LocalDateTime endTime; } diff --git a/src/main/java/cn/lihongjie/coal/ipList/repository/IpListRepository.java b/src/main/java/cn/lihongjie/coal/ipList/repository/IpListRepository.java index 1de29481..59a8110a 100644 --- a/src/main/java/cn/lihongjie/coal/ipList/repository/IpListRepository.java +++ b/src/main/java/cn/lihongjie/coal/ipList/repository/IpListRepository.java @@ -6,8 +6,10 @@ import cn.lihongjie.coal.ipList.entity.IpListEntity; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; +import java.time.LocalDateTime; + @Repository public interface IpListRepository extends BaseRepository { - @Query(value = "select address_type from t_ip_list where address >>= cast(?1 as inet) order by address_type desc limit 1 ", nativeQuery = true) - String getAddressType(String address); + @Query(value = "select address_type from t_ip_list where address >>= cast(?1 as inet) and start_time <=?2 and end_time>=?2 order by address_type desc limit 1 ", nativeQuery = true) + String getAddressType(String address, LocalDateTime now); } diff --git a/src/main/java/cn/lihongjie/coal/ipList/service/IpListService.java b/src/main/java/cn/lihongjie/coal/ipList/service/IpListService.java index 0c6682c3..98df9da5 100644 --- a/src/main/java/cn/lihongjie/coal/ipList/service/IpListService.java +++ b/src/main/java/cn/lihongjie/coal/ipList/service/IpListService.java @@ -23,6 +23,8 @@ import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; + @Service @Slf4j @Transactional @@ -75,7 +77,13 @@ public class IpListService extends BaseService { @Cacheable(value = Constants.CACHE_ADDRESS_TYPE, key = "#address") public String getAddressType(String address) { - return this.repository.getAddressType(address); + + if (address.contains(",")){ + address = address.split(",")[0]; + address = address.trim(); + } + + return this.repository.getAddressType(address, LocalDateTime.now()); } } diff --git a/src/main/java/cn/lihongjie/coal/spring/config/JacksonConfig.java b/src/main/java/cn/lihongjie/coal/spring/config/JacksonConfig.java index 7a9aff89..937f296b 100644 --- a/src/main/java/cn/lihongjie/coal/spring/config/JacksonConfig.java +++ b/src/main/java/cn/lihongjie/coal/spring/config/JacksonConfig.java @@ -35,28 +35,50 @@ public class JacksonConfig { LocalDateTime.class, new LocalDateTimeDeserializer(dateTimeFormatter)); module.addDeserializer(String.class, new CustomStringDeserializer()); - module.addSerializer(Inet.class, new JsonSerializer() { - @Override - public void serialize(Inet value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + module.addSerializer( + Inet.class, + new JsonSerializer() { + @Override + public void serialize( + Inet value, JsonGenerator gen, SerializerProvider serializers) + throws IOException { - gen.writeString(value.getAddress()); - } - }); - - module.addSerializer(Timestamp.class, new JsonSerializer() { - @Override - public void serialize(Timestamp value, JsonGenerator gen, SerializerProvider serializers) throws IOException { - gen.writeObject(value.toLocalDateTime()); - } - }); + gen.writeString(value.getAddress()); + } + }); - module.addDeserializer(Inet.class, new JsonDeserializer() { - @Override - public Inet deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { - return new Inet(p.getText()); - } + module.addSerializer( + Timestamp.class, + new JsonSerializer() { + @Override + public void serialize( + Timestamp value, JsonGenerator gen, SerializerProvider serializers) + throws IOException { + gen.writeObject(value.toLocalDateTime()); + } + }); + + module.addDeserializer( + Inet.class, + new JsonDeserializer() { + @Override + public Inet deserialize(JsonParser p, DeserializationContext ctxt) + throws IOException { + return new Inet(p.getText()); + } + }); + + module.addSerializer( + Inet.class, + new JsonSerializer() { + @Override + public void serialize( + Inet value, JsonGenerator gen, SerializerProvider serializers) + throws IOException { + gen.writeString(value.getAddress()); + } + }); - }); return module; } } diff --git a/src/main/resources/config/dictionary.json b/src/main/resources/config/dictionary.json index 2bd12a76..c043783d 100644 --- a/src/main/resources/config/dictionary.json +++ b/src/main/resources/config/dictionary.json @@ -1892,6 +1892,21 @@ ] }, + { + "code": "ipList.addressType", + "name": "ip地址类型", + "item": [ + { + "code": "0", + "name": "黑名单" + }, + { + "code": "1", + "name": "白名单" + } + ] + }, + { "code": "loginUserHis.loginType", "name": "登录类型",