Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
basic-api-boot
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Basic
basic-api-boot
Commits
f490012a
提交
f490012a
authored
4月 19, 2022
作者:
方治民
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 新增 Jts Jackson 序列化/反序列化配置、增加动态注入真源 RabbitMQ 消息监听和配置等
上级
2628e699
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
71 行增加
和
63 行删除
+71
-63
PushMessage.java
...src/main/java/com/yiring/app/push/domain/PushMessage.java
+24
-21
PushRabbitConfig.java
...n/java/com/yiring/app/push/rabbitmq/PushRabbitConfig.java
+3
-3
PushRabbitReceiver.java
...java/com/yiring/app/push/rabbitmq/PushRabbitReceiver.java
+2
-2
PushServiceImpl.java
...ava/com/yiring/app/push/service/impl/PushServiceImpl.java
+2
-1
build.gradle
app/build.gradle
+3
-4
JtsModuleConfig.java
app/src/main/java/com/yiring/app/config/JtsModuleConfig.java
+0
-21
PostgresDialect.java
...n/java/com/yiring/app/config/dialect/PostgresDialect.java
+2
-0
ZyConfigProperties.java
...ain/java/com/yiring/app/config/zy/ZyConfigProperties.java
+1
-0
ZyRabbitConfig.java
...rc/main/java/com/yiring/app/config/zy/ZyRabbitConfig.java
+4
-11
ZyRabbitmqReceiver.java
...n/java/com/yiring/app/rabbitmq/zy/ZyRabbitmqReceiver.java
+4
-0
HelloController.java
app/src/main/java/com/yiring/app/web/HelloController.java
+11
-0
application-dev.yml
app/src/main/resources/application-dev.yml
+1
-0
build.gradle
basic-common/core/build.gradle
+9
-0
JacksonConfig.java
...src/main/java/com/yiring/common/config/JacksonConfig.java
+5
-0
没有找到文件。
app-push/src/main/java/com/yiring/app/push/domain/PushMessage.java
浏览文件 @
f490012a
...
...
@@ -3,17 +3,19 @@ package com.yiring.app.push.domain;
import
com.alibaba.fastjson.JSON
;
import
com.vladmihalcea.hibernate.type.json.JsonType
;
import
com.yiring.common.domain.BasicEntity
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
java.util.Objects
;
import
javax.persistence.*
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
lombok.experimental.SuperBuilder
;
import
org.hibernate.Hibernate
;
import
org.hibernate.annotations.Comment
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.hibernate.annotations.Type
;
import
org.hibernate.annotations.TypeDef
;
import
org.hibernate.snowflake.SnowflakeId
;
/**
* 推送消息日志
...
...
@@ -26,7 +28,7 @@ import org.hibernate.snowflake.SnowflakeId;
@Getter
@Setter
@ToString
@
Builder
@
SuperBuilder
(
toBuilder
=
true
)
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
...
...
@@ -42,22 +44,15 @@ import org.hibernate.snowflake.SnowflakeId;
@Index
(
columnList
=
"sourceId"
),
@Index
(
columnList
=
"target"
),
@Index
(
columnList
=
"targetId"
),
@Index
(
columnList
=
"createTime"
),
@Index
(
columnList
=
"pushTime"
),
@Index
(
columnList
=
"updateTime"
),
}
)
@Comment
(
"推送消息日志"
)
public
class
PushMessage
implements
Serializable
{
public
class
PushMessage
extends
BasicEntity
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
1478640364892356248L
;
@Comment
(
"主键"
)
@Id
@GeneratedValue
(
generator
=
SnowflakeId
.
GENERATOR
)
@GenericGenerator
(
name
=
SnowflakeId
.
GENERATOR
,
strategy
=
SnowflakeId
.
Strategy
.
LONG
)
Long
id
;
@Comment
(
"消息类型"
)
@Enumerated
(
EnumType
.
STRING
)
Type
type
;
...
...
@@ -87,8 +82,9 @@ public class PushMessage implements Serializable {
Status
status
;
@Comment
(
"推送反馈结果"
)
@Column
(
columnDefinition
=
"TEXT"
)
String
result
;
@org
.
hibernate
.
annotations
.
Type
(
type
=
"json"
)
@Column
(
columnDefinition
=
"json"
)
JSON
result
;
@Comment
(
"重试次数"
)
Integer
retryCount
;
...
...
@@ -96,12 +92,6 @@ public class PushMessage implements Serializable {
@Comment
(
"推送时间"
)
LocalDateTime
pushTime
;
@Comment
(
"更新时间"
)
LocalDateTime
updateTime
;
@Comment
(
"创建时间"
)
LocalDateTime
createTime
;
@SuppressWarnings
({
"unused"
})
public
enum
Type
{
WS
(
"STOMP WebSocket 消息"
),
...
...
@@ -142,4 +132,17 @@ public class PushMessage implements Serializable {
return
this
.
text
;
}
}
@Override
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
if
(
o
==
null
||
Hibernate
.
getClass
(
this
)
!=
Hibernate
.
getClass
(
o
))
return
false
;
PushMessage
that
=
(
PushMessage
)
o
;
return
getId
()
!=
null
&&
Objects
.
equals
(
getId
(),
that
.
getId
());
}
@Override
public
int
hashCode
()
{
return
getClass
().
hashCode
();
}
}
app-push/src/main/java/com/yiring/app/push/rabbitmq/RabbitConfig.java
→
app-push/src/main/java/com/yiring/app/push/rabbitmq/
Push
RabbitConfig.java
浏览文件 @
f490012a
...
...
@@ -12,13 +12,13 @@ import org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.Configuration
;
/**
*
rabbitmq
配置
*
推送 rabbitmq
配置
*
* @author ifzm
* 2019/8/21 15:44
*/
@Configuration
(
"PushRabbitConfig"
)
public
class
RabbitConfig
{
@Configuration
public
class
Push
RabbitConfig
{
public
static
final
String
PUSH_TOPIC_EXCHANGE
=
"push.topic.exchange"
;
...
...
app-push/src/main/java/com/yiring/app/push/rabbitmq/RabbitReceiver.java
→
app-push/src/main/java/com/yiring/app/push/rabbitmq/
Push
RabbitReceiver.java
浏览文件 @
f490012a
...
...
@@ -20,13 +20,13 @@ import org.springframework.transaction.annotation.Transactional;
@Slf4j
@Component
(
"PushRabbitReceiver"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
class
RabbitReceiver
{
public
class
Push
RabbitReceiver
{
@Resource
PushMessageRepository
repository
;
@RabbitHandler
@RabbitListener
(
queues
=
RabbitConfig
.
PUSH_WS_QUEUE
)
@RabbitListener
(
queues
=
Push
RabbitConfig
.
PUSH_WS_QUEUE
)
public
void
receiverWebSocketMessage
(
Long
id
)
{
log
.
info
(
"接收到消息: "
+
id
);
...
...
app-push/src/main/java/com/yiring/app/push/service/impl/PushServiceImpl.java
浏览文件 @
f490012a
...
...
@@ -4,6 +4,7 @@ package com.yiring.app.push.service.impl;
import
com.alibaba.fastjson.JSONObject
;
import
com.yiring.app.push.domain.PushMessage
;
import
com.yiring.app.push.domain.PushMessageRepository
;
import
com.yiring.app.push.rabbitmq.PushRabbitConfig
;
import
com.yiring.app.push.service.PushService
;
import
java.time.LocalDateTime
;
import
javax.annotation.Resource
;
...
...
@@ -38,6 +39,6 @@ public class PushServiceImpl implements PushService {
message
.
setExtra
(
raw
);
message
.
setCreateTime
(
LocalDateTime
.
now
());
repository
.
saveAndFlush
(
message
);
amqpTemplate
.
convertAndSend
(
type
.
queue
(),
message
.
getId
());
amqpTemplate
.
convertAndSend
(
PushRabbitConfig
.
PUSH_TOPIC_EXCHANGE
,
type
.
queue
(),
message
.
getId
());
}
}
app/build.gradle
浏览文件 @
f490012a
...
...
@@ -46,18 +46,17 @@ dependencies {
// fastjson
implementation
"com.alibaba:fastjson:${fastJsonVersion}"
// hutool
-core
// hutool
implementation
"cn.hutool:hutool-core:${hutoolVersion}"
implementation
"cn.hutool:hutool-extra:${hutoolVersion}"
// JPA 增加空间字段支持
// https://blog.wuwii.com/jpa-spatial.html
implementation
(
"org.hibernate:hibernate-spatial:${hibernateSpatialVersion}"
)
{
exclude
group:
'org.postgresql'
,
module:
'postgresql'
}
// JTS 几何对象操作库
implementation
"org.locationtech.jts:jts-core:${jtsVersion}"
// https://mvnrepository.com/artifact/com.graphhopper.external/jackson-datatype-jts
implementation
'com.graphhopper.external:jackson-datatype-jts:1.0-2.7'
}
app/src/main/java/com/yiring/app/config/JtsModuleConfig.java
deleted
100644 → 0
浏览文件 @
2628e699
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
config
;
import
com.bedatadriven.jackson.datatype.jts.JtsModule
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
/**
* @author Jim
* @version 0.1
* 2022/4/8 11:18
*/
@Configuration
public
class
JtsModuleConfig
{
@Bean
public
JtsModule
jtsModule
()
{
return
new
JtsModule
();
}
}
app/src/main/java/com/yiring/app/config/dialect/PostgresDialect.java
浏览文件 @
f490012a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
config
.
dialect
;
import
java.io.Serial
;
import
org.hibernate.spatial.dialect.postgis.PostgisPG10Dialect
;
/**
...
...
@@ -15,6 +16,7 @@ import org.hibernate.spatial.dialect.postgis.PostgisPG10Dialect;
@SuppressWarnings
({
"unused"
})
public
class
PostgresDialect
extends
PostgisPG10Dialect
{
@Serial
private
static
final
long
serialVersionUID
=
187383913873678550L
;
public
PostgresDialect
()
{
...
...
app/src/main/java/com/yiring/app/config/zy/ZyConfigProperties.java
浏览文件 @
f490012a
...
...
@@ -36,6 +36,7 @@ public class ZyConfigProperties {
@ConfigurationProperties
(
prefix
=
"zy-config.rabbitmq"
)
public
static
class
ZyConfigRabbitmq
{
boolean
enabled
;
String
host
;
int
port
;
String
username
;
...
...
app/src/main/java/com/yiring/app/config/zy/ZyRabbitConfig.java
浏览文件 @
f490012a
...
...
@@ -6,9 +6,9 @@ import lombok.extern.slf4j.Slf4j;
import
org.springframework.amqp.core.AcknowledgeMode
;
import
org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory
;
import
org.springframework.amqp.rabbit.connection.CachingConnectionFactory
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
...
...
@@ -23,6 +23,7 @@ import org.springframework.context.annotation.Configuration;
@Slf4j
@Configuration
@ConditionalOnProperty
(
prefix
=
"zy-config.rabbitmq"
,
value
=
"enabled"
,
havingValue
=
"true"
)
public
class
ZyRabbitConfig
{
@Resource
...
...
@@ -31,7 +32,6 @@ public class ZyRabbitConfig {
@Resource
ConfigurableApplicationContext
context
;
public
static
final
String
TEMPLATE_NAME
=
"zyRabbitTemplate"
;
public
static
final
String
CONNECTION_FACTORY_NAME
=
"zyRabbitConnectionFactory"
;
public
static
final
String
LISTENER_FACTORY_NAME
=
"zyRabbitListenerFactory"
;
...
...
@@ -42,7 +42,7 @@ public class ZyRabbitConfig {
*/
public
static
final
String
MESSAGE_QUEUES_NAME
=
"tenant_msg_12A14FDC_sc21080400"
;
@Bean
(
name
=
CONNECTION_FACTORY_NAME
)
@Bean
(
CONNECTION_FACTORY_NAME
)
public
CachingConnectionFactory
zyConnectionFactory
()
{
return
connectionFactory
(
rabbitmq
.
getHost
(),
...
...
@@ -53,14 +53,7 @@ public class ZyRabbitConfig {
);
}
@Bean
(
name
=
TEMPLATE_NAME
)
public
RabbitTemplate
secondRabbitTemplate
(
@Qualifier
(
CONNECTION_FACTORY_NAME
)
CachingConnectionFactory
connectionFactory
)
{
return
new
RabbitTemplate
(
connectionFactory
);
}
@Bean
(
name
=
LISTENER_FACTORY_NAME
)
@Bean
(
LISTENER_FACTORY_NAME
)
public
SimpleRabbitListenerContainerFactory
secondFactory
(
SimpleRabbitListenerContainerFactoryConfigurer
configurer
,
@Qualifier
(
CONNECTION_FACTORY_NAME
)
CachingConnectionFactory
connectionFactory
...
...
app/src/main/java/com/yiring/app/rabbitmq/zy/ZyRabbitmqReceiver.java
浏览文件 @
f490012a
...
...
@@ -13,6 +13,8 @@ import lombok.extern.slf4j.Slf4j;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.rabbit.annotation.RabbitHandler
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
@@ -26,6 +28,8 @@ import org.springframework.transaction.annotation.Transactional;
@Slf4j
@Component
@Configuration
@ConditionalOnProperty
(
prefix
=
"zy-config.rabbitmq"
,
value
=
"enabled"
,
havingValue
=
"true"
)
public
class
ZyRabbitmqReceiver
{
// TODO
...
...
app/src/main/java/com/yiring/app/web/HelloController.java
浏览文件 @
f490012a
/* (C) 2021 YiRing, Inc. */
package
com
.
yiring
.
app
.
web
;
import
cn.hutool.extra.spring.SpringUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.yiring.app.constant.Code
;
import
com.yiring.app.exception.CodeException
;
import
com.yiring.app.push.domain.PushMessage
;
import
com.yiring.app.push.service.PushService
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.vo.PageVo
;
...
...
@@ -46,4 +50,11 @@ public class HelloController {
PageVo
<
String
>
vo
=
PageVo
.
build
(
data
,
data
.
size
());
return
Result
.
ok
(
vo
);
}
@GetMapping
(
"test"
)
public
Result
<
String
>
test
()
{
PushService
service
=
SpringUtil
.
getBean
(
PushService
.
class
);
service
.
push
(
PushMessage
.
Type
.
WS
,
new
JSONObject
().
fluentPut
(
"msg"
,
"hello"
));
return
Result
.
ok
();
}
}
app/src/main/resources/application-dev.yml
浏览文件 @
f490012a
...
...
@@ -56,6 +56,7 @@ zy-config:
host
:
project.yz-online.com
# RabbitMQ 订阅配置
rabbitmq
:
enabled
:
false
host
:
${zy-config.host}
port
:
672
username
:
admin
...
...
basic-common/core/build.gradle
浏览文件 @
f490012a
...
...
@@ -18,4 +18,13 @@ dependencies {
// fastjson
implementation
"com.alibaba:fastjson:${fastJsonVersion}"
// JTS 几何对象操作库
implementation
"org.locationtech.jts:jts-core:${jtsVersion}"
// https://mvnrepository.com/artifact/com.graphhopper.external/jackson-datatype-jts
implementation
(
"com.graphhopper.external:jackson-datatype-jts:1.0-2.7"
)
{
exclude
group:
'com.fasterxml.jackson.core'
,
module:
'jackson-databind'
exclude
group:
'org.locationtech.jts'
,
module:
'jts-core'
}
}
basic-common/core/src/main/java/com/yiring/common/config/JacksonConfig.java
浏览文件 @
f490012a
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
common
.
config
;
import
com.bedatadriven.jackson.datatype.jts.JtsModule
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
;
...
...
@@ -25,8 +26,12 @@ public class JacksonConfig {
@Bean
public
ObjectMapper
objectMapper
()
{
ObjectMapper
mapper
=
new
ObjectMapper
();
// 忽略空值
mapper
.
setSerializationInclusion
(
JsonInclude
.
Include
.
NON_NULL
);
// Java 8 Date/Time support
mapper
.
registerModule
(
javaTimeModule
);
// JTS Geometry support
mapper
.
registerModule
(
new
JtsModule
());
// feat: add AdminServerModule
return
mapper
;
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论