From 947059a1e6accb7ea48b629ca64b429a8cea6246 Mon Sep 17 00:00:00 2001 From: b2baccline <23131013+b2baccline@users.noreply.github.com> Date: Tue, 28 Jul 2020 21:45:00 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E6=96=B0=E5=A2=9E=20kafka-starter?= =?UTF-8?q?=20=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/modules/lov/enums/HttpMethod.java | 31 ++++++++ .../modules/lov/enums/HttpParamsPosition.java | 31 ++++++++ .../ballcat/admin/modules/lov/enums/Tag.java | 33 +++++++++ .../admin/modules/lov/model/entity/Lov.java | 70 +++++++++++++++++++ .../modules/lov/model/entity/LovBody.java | 54 ++++++++++++++ .../modules/lov/model/entity/LovSearch.java | 67 ++++++++++++++++++ ballcat-dependencies/pom.xml | 5 ++ .../extend/kafka/KafkaProducerBuilder.java | 10 +-- .../ballcat-spring-boot-starter-kafka/pom.xml | 31 ++++++++ .../starter/kafka/KafkaAutoConfiguration.java | 35 ++++++++++ .../hccake/starter/kafka/KafkaProperties.java | 47 +++++++++++++ .../main/resources/META-INF/spring.factories | 2 + ballcat-starters/pom.xml | 3 +- 13 files changed, 414 insertions(+), 5 deletions(-) create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/enums/HttpMethod.java create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/enums/HttpParamsPosition.java create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/enums/Tag.java create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/model/entity/Lov.java create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/model/entity/LovBody.java create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/model/entity/LovSearch.java create mode 100644 ballcat-starters/ballcat-spring-boot-starter-kafka/pom.xml create mode 100644 ballcat-starters/ballcat-spring-boot-starter-kafka/src/main/java/com/hccake/starter/kafka/KafkaAutoConfiguration.java create mode 100644 ballcat-starters/ballcat-spring-boot-starter-kafka/src/main/java/com/hccake/starter/kafka/KafkaProperties.java create mode 100644 ballcat-starters/ballcat-spring-boot-starter-kafka/src/main/resources/META-INF/spring.factories diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/enums/HttpMethod.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/enums/HttpMethod.java new file mode 100644 index 00000000..ac635b4c --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/enums/HttpMethod.java @@ -0,0 +1,31 @@ +package com.hccake.ballcat.admin.modules.lov.enums; + +import com.baomidou.mybatisplus.core.enums.IEnum; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 用于设置 请求方式 + * + * @author lingting 2020/7/5 16:18 + */ +@Getter +@AllArgsConstructor +public enum HttpMethod implements IEnum { + + /** + * http 请求方式 + */ + GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE,; + + @Override + public String getValue() { + return toString(); + } + + @Override + public String toString() { + return name(); + } + +} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/enums/HttpParamsPosition.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/enums/HttpParamsPosition.java new file mode 100644 index 00000000..1abd5ab7 --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/enums/HttpParamsPosition.java @@ -0,0 +1,31 @@ +package com.hccake.ballcat.admin.modules.lov.enums; + +import com.baomidou.mybatisplus.core.enums.IEnum; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 请求参数存放位置 + * + * @author lingting 2020/7/5 16:23 + */ +@Getter +@AllArgsConstructor +public enum HttpParamsPosition implements IEnum { + + /** + * 定义http请求时 参数设置的位置 + */ + DATA, PARAMS,; + + @Override + public String getValue() { + return toString(); + } + + @Override + public String toString() { + return name().toLowerCase(); + } + +} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/enums/Tag.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/enums/Tag.java new file mode 100644 index 00000000..cb03340f --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/enums/Tag.java @@ -0,0 +1,33 @@ +package com.hccake.ballcat.admin.modules.lov.enums; + +import com.baomidou.mybatisplus.core.enums.IEnum; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author lingting 2020/7/6 10:04 + */ +@Getter +@AllArgsConstructor +public enum Tag implements IEnum { + + /** + * 标签类型 + */ + INPUT_TEXT, INPUT_NUMBER, SELECT,; + + @Override + public String getValue() { + return toString(); + } + + @Override + public String toString() { + return name().toLowerCase().replace("_", "-"); + } + + public static void main(String[] args) { + System.out.println(Tag.INPUT_NUMBER); + } + +} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/model/entity/Lov.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/model/entity/Lov.java new file mode 100644 index 00000000..75536639 --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/model/entity/Lov.java @@ -0,0 +1,70 @@ +package com.hccake.ballcat.admin.modules.lov.model.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.hccake.ballcat.admin.modules.lov.enums.HttpMethod; +import com.hccake.ballcat.admin.modules.lov.enums.HttpParamsPosition; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; +import java.time.LocalDateTime; + +/** + * @author lingting 2020/7/5 16:04 + */ +@Data +@TableName("sys_lov") +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value = "lov模块") +public class Lov extends Model { + + @TableId + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("关键字,唯一,加载lov数据时通过关键字加载") + private String keyword; + + @NotBlank + @ApiModelProperty("获取数据时请求路径") + private String url; + + @NotBlank + @ApiModelProperty("http请求方式") + private HttpMethod method; + + @NotBlank + @ApiModelProperty("http请求参数设置位置") + private HttpParamsPosition position; + + @TableField("`key`") + @ApiModelProperty("数据的key") + private String key; + + @Pattern(regexp = "^\\{.*}") + @ApiModelProperty("固定请求参数,请设置 jsonString, 默认值 {}") + private String fixedParams; + + @ApiModelProperty("是否需要多选") + private boolean multiple; + + @ApiModelProperty("是否需要搜索框") + private boolean search; + + @ApiModelProperty("是否需要返回数据, false则不会有确定按钮` `") + private boolean ret; + + @TableField(fill = FieldFill.INSERT) + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/model/entity/LovBody.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/model/entity/LovBody.java new file mode 100644 index 00000000..78e98254 --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/model/entity/LovBody.java @@ -0,0 +1,54 @@ +package com.hccake.ballcat.admin.modules.lov.model.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.Pattern; +import java.time.LocalDateTime; + +/** + * @author lingting 2020/7/5 16:04 + */ +@Data +@TableName("sys_lov_body") +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value = "lov主体模块") +public class LovBody extends Model { + + @TableId + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("所属lov") + private Long lovId; + + @ApiModelProperty("标题") + private String title; + + @ApiModelProperty("字段, 同一lov下,field不可重复`") + private String field; + + @Pattern(regexp = "^\\{.*}") + @ApiModelProperty("自定义属性,请设置 jsonString, 默认值 {}") + private String property; + + @ApiModelProperty("是否自定义html") + private boolean custom; + + @ApiModelProperty("如果 custom=true 则当前值不能为空") + private String html; + + @TableField(fill = FieldFill.INSERT) + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/model/entity/LovSearch.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/model/entity/LovSearch.java new file mode 100644 index 00000000..b1c59af6 --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/lov/model/entity/LovSearch.java @@ -0,0 +1,67 @@ +package com.hccake.ballcat.admin.modules.lov.model.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.hccake.ballcat.admin.modules.lov.enums.Tag; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.Pattern; +import java.time.LocalDateTime; + +/** + * @author lingting 2020/7/5 16:04 + */ +@Data +@TableName("sys_lov_search") +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value = "lov搜索模块") +public class LovSearch extends Model { + + @TableId + @ApiModelProperty("编号") + private Long id; + + @NotEmpty + @ApiModelProperty("标签文字") + private String label; + + @NotEmpty + @ApiModelProperty("字段") + private String field; + + @ApiModelProperty("placeholder") + private String placeholder; + + @ApiModelProperty("标签") + private Tag tag; + + @Pattern(regexp = "\\[(\\{['|\"]key.*['|\"]value.*['|\"]label.*})*]$") + @ApiModelProperty("tag=SELECT时的选项, 请设置jsonString , 默认值 [] 示例: [{key:field, value:值, label:标签}]") + private String options; + + @ApiModelProperty("tag=INPUT_NUMBER时的选项,设置数字最小值") + private Integer min; + + @ApiModelProperty("tag=INPUT_NUMBER时的选项,设置数字最大值") + private Integer max; + + @ApiModelProperty("是否自定义html") + private boolean custom; + + @ApiModelProperty("如果 custom=true 则当前值不能为空") + private String html; + + @TableField(fill = FieldFill.INSERT) + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/ballcat-dependencies/pom.xml b/ballcat-dependencies/pom.xml index 1e191014..f193a309 100644 --- a/ballcat-dependencies/pom.xml +++ b/ballcat-dependencies/pom.xml @@ -113,6 +113,11 @@ ballcat-spring-boot-starter-dingtalk ${revision} + + com.hccake + ballcat-spring-boot-starter-kafka + ${revision} + com.hccake ballcat-extend-dingtalk diff --git a/ballcat-extends/ballcat-extend-kafka/src/main/java/com/hccake/extend/kafka/KafkaProducerBuilder.java b/ballcat-extends/ballcat-extend-kafka/src/main/java/com/hccake/extend/kafka/KafkaProducerBuilder.java index 76273021..4fcf7056 100644 --- a/ballcat-extends/ballcat-extend-kafka/src/main/java/com/hccake/extend/kafka/KafkaProducerBuilder.java +++ b/ballcat-extends/ballcat-extend-kafka/src/main/java/com/hccake/extend/kafka/KafkaProducerBuilder.java @@ -7,10 +7,7 @@ import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.clients.producer.ProducerConfig; import org.apache.kafka.common.serialization.Serializer; -import java.util.Collection; -import java.util.HashSet; -import java.util.Properties; -import java.util.Set; +import java.util.*; import java.util.function.Function; import static com.hccake.extend.kafka.KafkaConstants.BOOTSTRAP_SERVERS_DELIMITER; @@ -78,6 +75,11 @@ public class KafkaProducerBuilder { return this; } + public KafkaProducerBuilder putAll(Map map) { + this.properties.putAll(map); + return this; + } + public KafkaExtendProducer build(Function> function) { return function.apply(getProperties()); } diff --git a/ballcat-starters/ballcat-spring-boot-starter-kafka/pom.xml b/ballcat-starters/ballcat-spring-boot-starter-kafka/pom.xml new file mode 100644 index 00000000..ffdb954d --- /dev/null +++ b/ballcat-starters/ballcat-spring-boot-starter-kafka/pom.xml @@ -0,0 +1,31 @@ + + + + ballcat-starters + com.hccake + ${revision} + + 4.0.0 + + ballcat-spring-boot-starter-kafka + jar + + + + com.hccake + ballcat-extend-kafka + + + + org.springframework.boot + spring-boot-configuration-processor + true + + + org.springframework.boot + spring-boot-autoconfigure + + + \ No newline at end of file diff --git a/ballcat-starters/ballcat-spring-boot-starter-kafka/src/main/java/com/hccake/starter/kafka/KafkaAutoConfiguration.java b/ballcat-starters/ballcat-spring-boot-starter-kafka/src/main/java/com/hccake/starter/kafka/KafkaAutoConfiguration.java new file mode 100644 index 00000000..b7dfe6cd --- /dev/null +++ b/ballcat-starters/ballcat-spring-boot-starter-kafka/src/main/java/com/hccake/starter/kafka/KafkaAutoConfiguration.java @@ -0,0 +1,35 @@ +package com.hccake.starter.kafka; + +import com.hccake.extend.kafka.KafkaExtendProducer; +import com.hccake.extend.kafka.KafkaProducerBuilder; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; + +/** + * @author lingting 2020/7/28 21:17 + */ +@Slf4j +@RequiredArgsConstructor +@EnableConfigurationProperties({ KafkaProperties.class }) +public class KafkaAutoConfiguration { + + @Bean + public KafkaExtendProducer producer(KafkaProperties properties) { + KafkaProducerBuilder builder = new KafkaProducerBuilder() + .addAllBootstrapServers(properties.getBootstrapServers()).putAll(properties.getExtend()); + + if (properties.getKeySerializer() != null || properties.getKeySerializerClassName() != null) { + builder.keySerializer(properties.getKeySerializer() == null ? properties.getKeySerializerClassName() + : properties.getKeySerializer().getName()); + } + + if (properties.getValueSerializer() != null || properties.getValueSerializerClassName() != null) { + builder.keySerializer(properties.getValueSerializer() == null ? properties.getValueSerializerClassName() + : properties.getValueSerializer().getName()); + } + return builder.build(); + } + +} diff --git a/ballcat-starters/ballcat-spring-boot-starter-kafka/src/main/java/com/hccake/starter/kafka/KafkaProperties.java b/ballcat-starters/ballcat-spring-boot-starter-kafka/src/main/java/com/hccake/starter/kafka/KafkaProperties.java new file mode 100644 index 00000000..3cdb8c99 --- /dev/null +++ b/ballcat-starters/ballcat-spring-boot-starter-kafka/src/main/java/com/hccake/starter/kafka/KafkaProperties.java @@ -0,0 +1,47 @@ +package com.hccake.starter.kafka; + +import lombok.Data; +import org.apache.kafka.common.serialization.Serializer; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Map; +import java.util.Set; + +/** + * @author lingting 2020/7/28 21:15 + */ +@Data +@ConfigurationProperties(prefix = "ballcat.starter.kafka") +public class KafkaProperties { + + /** + * 所属服务 + */ + private Set bootstrapServers; + + /** + * key 序列化 + */ + private Class> keySerializer; + + /** + * key 序列化 类名 + */ + private String keySerializerClassName; + + /** + * value 序列化 + */ + private Class> valueSerializer; + + /** + * value 序列化 类名 + */ + private String valueSerializerClassName; + + /** + * 额外参数 + */ + private Map extend; + +} diff --git a/ballcat-starters/ballcat-spring-boot-starter-kafka/src/main/resources/META-INF/spring.factories b/ballcat-starters/ballcat-spring-boot-starter-kafka/src/main/resources/META-INF/spring.factories new file mode 100644 index 00000000..d8602416 --- /dev/null +++ b/ballcat-starters/ballcat-spring-boot-starter-kafka/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + com.hccake.starter.kafka.KafkaAutoConfiguration \ No newline at end of file diff --git a/ballcat-starters/pom.xml b/ballcat-starters/pom.xml index 5ecc3ac8..6d437e77 100644 --- a/ballcat-starters/pom.xml +++ b/ballcat-starters/pom.xml @@ -21,6 +21,7 @@ ballcat-spring-boot-starter-easyexcel ballcat-spring-boot-starter-redis ballcat-spring-boot-starter-dingtalk - + ballcat-spring-boot-starter-kafka + \ No newline at end of file