Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 89cbdfc7
由
张少辉
编写于
2026-05-17 16:05:31 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
增加服务器备份功能
1 个父辈
f0858e97
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
214 行增加
和
1 行删除
.gitignore
src/main/java/com/neotel/smfcore/common/base/AbstractBaseDao.java
src/main/java/com/neotel/smfcore/core/config/mongodb/MongoDbConfig.java
src/main/java/com/neotel/smfcore/core/config/mongodb/bean/CustomMongoProperties.java
src/main/java/com/neotel/smfcore/custom/lizhen/LizhenApi.java
src/main/resources/config/application-prod.yml
.gitignore
查看文件 @
89cbdfc
...
...
@@ -31,3 +31,4 @@ build/
### VS Code ###
.vscode/
!/src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/common/base/AbstractBaseDao.java
查看文件 @
89cbdfc
package
com
.
neotel
.
smfcore
.
common
.
base
;
import
com.neotel.smfcore.core.config.mongodb.MongoDbConfig
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.FindAndModifyOptions
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
...
...
@@ -19,8 +21,15 @@ import java.util.regex.Pattern;
* Created by kangmor on 2015/9/14.
*/
public
abstract
class
AbstractBaseDao
implements
IBaseDao
{
@Autowired
@Qualifier
(
"masterMongoTemplate"
)
private
MongoTemplate
mongoTemplate
;
@Autowired
@Qualifier
(
"backUpMongoTemplate"
)
private
MongoTemplate
backUpMongoTemplate
;
private
final
static
int
DEFAULT_PAGE_SIZE
=
10
;
protected
final
transient
Logger
log
=
LogManager
.
getLogger
(
getClass
());
...
...
@@ -34,6 +43,15 @@ public abstract class AbstractBaseDao implements IBaseDao {
bean
.
setUpdateDate
(
new
Date
(
System
.
currentTimeMillis
()));
getMongoTemplate
().
save
(
bean
);
log
.
debug
(
"Bean "
+
getEntityClass
()
+
" is saved with id "
+
bean
.
getId
());
try
{
if
(
getBackUpMongoTemplate
()
!=
null
)
{
getBackUpMongoTemplate
().
save
(
bean
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"{}备份库操作失败:{}"
,
"save"
,
e
.
getMessage
());
}
return
bean
;
}
...
...
@@ -46,6 +64,14 @@ public abstract class AbstractBaseDao implements IBaseDao {
t
.
setUpdateDate
(
new
Date
(
System
.
currentTimeMillis
()));
}
getMongoTemplate
().
insertAll
(
beanList
);
try
{
if
(
getBackUpMongoTemplate
()
!=
null
)
{
getBackUpMongoTemplate
().
insertAll
(
beanList
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"{}备份库操作失败:{}"
,
"insertAll"
,
e
.
getMessage
());
}
}
return
beanList
;
}
...
...
@@ -104,11 +130,25 @@ public abstract class AbstractBaseDao implements IBaseDao {
@Override
public
void
updateMulti
(
Query
query
,
Update
update
){
getMongoTemplate
().
updateMulti
(
query
,
update
,
getEntityClass
());
try
{
if
(
getBackUpMongoTemplate
()
!=
null
)
{
getBackUpMongoTemplate
().
updateMulti
(
query
,
update
,
getEntityClass
());
}
}
catch
(
Exception
e
)
{
log
.
error
(
"{}备份库操作失败:{}"
,
"updateMulti"
,
e
.
getMessage
());
}
}
@Override
public
void
updateFirst
(
Query
query
,
Update
update
){
getMongoTemplate
().
updateFirst
(
query
,
update
,
getEntityClass
());
try
{
if
(
getBackUpMongoTemplate
()
!=
null
)
{
getBackUpMongoTemplate
().
updateFirst
(
query
,
update
,
getEntityClass
());
}
}
catch
(
Exception
e
)
{
log
.
error
(
"{}备份库操作失败:{}"
,
"updateFirst"
,
e
.
getMessage
());
}
}
@Override
...
...
@@ -156,6 +196,15 @@ public abstract class AbstractBaseDao implements IBaseDao {
T
t
=
findOneById
(
id
);
if
(
t
!=
null
)
{
getMongoTemplate
().
remove
(
t
);
try
{
if
(
getBackUpMongoTemplate
()
!=
null
)
{
getBackUpMongoTemplate
().
remove
(
t
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"{}备份库操作失败:{}"
,
"removeOneById"
,
e
.
getMessage
());
}
}
}
...
...
@@ -163,6 +212,13 @@ public abstract class AbstractBaseDao implements IBaseDao {
public
<
T
extends
BasePo
>
void
removeOne
(
Object
bean
)
{
if
(
bean
!=
null
)
{
getMongoTemplate
().
remove
(
bean
);
try
{
if
(
getBackUpMongoTemplate
()
!=
null
)
{
getBackUpMongoTemplate
().
remove
(
bean
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"{}备份库操作失败:{}"
,
"removeOne"
,
e
.
getMessage
());
}
}
}
...
...
@@ -177,6 +233,13 @@ public abstract class AbstractBaseDao implements IBaseDao {
if
(
list
!=
null
&&
list
.
size
()
>
0
)
{
for
(
T
t
:
list
)
{
getMongoTemplate
().
remove
(
t
);
try
{
if
(
getBackUpMongoTemplate
()
!=
null
)
{
getBackUpMongoTemplate
().
remove
(
t
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"{}备份库操作失败:{}"
,
"removeByQuery"
,
e
.
getMessage
());
}
}
}
}
...
...
@@ -187,6 +250,13 @@ public abstract class AbstractBaseDao implements IBaseDao {
if
(
list
!=
null
&&
list
.
size
()
>
0
){
for
(
T
t
:
list
){
getMongoTemplate
().
remove
(
t
);
try
{
if
(
getBackUpMongoTemplate
()
!=
null
)
{
getBackUpMongoTemplate
().
remove
(
t
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"{}备份库操作失败:{}"
,
"removeAll"
,
e
.
getMessage
());
}
}
}
}
...
...
@@ -220,6 +290,15 @@ public abstract class AbstractBaseDao implements IBaseDao {
}
}
try
{
if
(
getBackUpMongoTemplate
()
!=
null
)
{
getBackUpMongoTemplate
().
save
(
sequence
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"{}备份库操作失败:{}"
,
"getNextId"
,
e
.
getMessage
());
}
return
sequence
.
getSeq
().
toString
();
}
...
...
@@ -230,6 +309,18 @@ public abstract class AbstractBaseDao implements IBaseDao {
return
mongoTemplate
;
}
/**
* 如果没有配置数据源,则返回为空
* @return
*/
public
MongoTemplate
getBackUpMongoTemplate
()
{
String
databaseName
=
backUpMongoTemplate
.
getDb
().
getName
();
if
(
MongoDbConfig
.
getNoDatabase
().
equals
(
databaseName
))
{
return
null
;
}
return
backUpMongoTemplate
;
}
public
void
setMongoTemplate
(
MongoTemplate
mongoTemplate
)
{
this
.
mongoTemplate
=
mongoTemplate
;
}
...
...
src/main/java/com/neotel/smfcore/core/config/mongodb/MongoDbConfig.java
0 → 100644
查看文件 @
89cbdfc
package
com
.
neotel
.
smfcore
.
core
.
config
.
mongodb
;
import
com.mongodb.MongoClientSettings
;
import
com.mongodb.MongoCredential
;
import
com.mongodb.ServerAddress
;
import
com.mongodb.client.MongoClient
;
import
com.mongodb.client.MongoClients
;
import
com.mongodb.connection.ClusterConnectionMode
;
import
com.mongodb.connection.ClusterType
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.core.config.mongodb.bean.CustomMongoProperties
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Primary
;
import
org.springframework.data.mongodb.MongoDatabaseFactory
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory
;
import
java.util.ArrayList
;
import
java.util.List
;
@Configuration
public
class
MongoDbConfig
{
private
static
final
String
NO_HOST
=
"none"
;
private
static
final
Integer
NO_PORT
=
0
;
private
static
final
String
NO_DATABASE
=
"noConfigDatabase"
;
@Primary
@Bean
(
"masterMongoProperties"
)
@ConfigurationProperties
(
prefix
=
"spring.data.mongodb"
)
protected
CustomMongoProperties
masterMongoProperties
()
{
return
new
CustomMongoProperties
();
}
@Bean
(
"backUpMongoProperties"
)
@ConfigurationProperties
(
prefix
=
"spring.data.backup-mongodb"
)
protected
CustomMongoProperties
backUpMongoProperties
()
{
return
new
CustomMongoProperties
();
}
@Primary
@Bean
(
name
=
"masterMongoTemplate"
)
public
MongoTemplate
masterMongoTemplate
(
@Qualifier
(
"masterMongoProperties"
)
CustomMongoProperties
mongoProperties
)
{
return
new
MongoTemplate
(
mongoDbFactory
(
mongoProperties
));
}
@Bean
(
name
=
"backUpMongoTemplate"
)
public
MongoTemplate
backUpMongoTemplate
(
@Qualifier
(
"backUpMongoProperties"
)
CustomMongoProperties
mongoProperties
)
{
//如果没有配置的话,则模板返回为空
if
(
StringUtils
.
isBlank
(
mongoProperties
.
getHost
()))
{
mongoProperties
.
setHost
(
NO_HOST
);
mongoProperties
.
setPort
(
NO_PORT
);
mongoProperties
.
setDatabase
(
NO_DATABASE
);
}
return
new
MongoTemplate
(
mongoDbFactory
(
mongoProperties
));
}
private
MongoDatabaseFactory
mongoDbFactory
(
CustomMongoProperties
mongoProperties
)
{
ClusterConnectionMode
clusterConnectionMode
;
ClusterType
clusterType
;
List
<
ServerAddress
>
serverAddressList
=
new
ArrayList
<>();
clusterConnectionMode
=
ClusterConnectionMode
.
SINGLE
;
clusterType
=
ClusterType
.
STANDALONE
;
ServerAddress
serverAddress
=
new
ServerAddress
(
mongoProperties
.
getHost
(),
mongoProperties
.
getPort
());
serverAddressList
.
add
(
serverAddress
);
MongoClientSettings
.
Builder
settingBuilder
=
MongoClientSettings
.
builder
()
.
applyToClusterSettings
(
builder
->
builder
.
hosts
(
serverAddressList
)
.
mode
(
clusterConnectionMode
)
.
requiredClusterType
(
clusterType
)
).
applyToConnectionPoolSettings
(
builder
->
builder
.
maxSize
(
mongoProperties
.
getMaxConSize
())
.
minSize
(
mongoProperties
.
getMinConsize
())
);
if
(
StringUtils
.
isNotEmpty
(
mongoProperties
.
getUsername
())
&&
StringUtils
.
isNotEmpty
(
mongoProperties
.
getPassword
())){
MongoCredential
credential
=
MongoCredential
.
createCredential
(
mongoProperties
.
getUsername
(),
mongoProperties
.
getDatabase
(),
mongoProperties
.
getPassword
().
toCharArray
());
settingBuilder
.
credential
(
credential
);
}
MongoClientSettings
setting
=
settingBuilder
.
build
();
MongoClient
mongoClient
=
MongoClients
.
create
(
setting
);
return
new
SimpleMongoClientDatabaseFactory
(
mongoClient
,
mongoProperties
.
getDatabase
());
}
public
static
String
getNoDatabase
()
{
return
NO_DATABASE
;
}
}
src/main/java/com/neotel/smfcore/core/config/mongodb/bean/CustomMongoProperties.java
0 → 100644
查看文件 @
89cbdfc
package
com
.
neotel
.
smfcore
.
core
.
config
.
mongodb
.
bean
;
import
lombok.Getter
;
import
lombok.Setter
;
@Getter
@Setter
public
class
CustomMongoProperties
{
private
String
host
;
private
Integer
port
;
private
String
database
;
private
String
username
;
private
String
password
;
private
Integer
maxConSize
=
100
;
private
Integer
minConsize
=
50
;
}
\ No newline at end of file
src/main/java/com/neotel/smfcore/custom/lizhen/LizhenApi.java
查看文件 @
89cbdfc
...
...
@@ -722,7 +722,7 @@ public class LizhenApi extends DefaultSmfApiListener {
paramMap
.
put
(
"create_empno"
,
StringUtils
.
isEmpty
(
task
.
getCreator
())
?
"System"
:
task
.
getCreator
());
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
);
paramMap
.
put
(
"create_time"
,
sdf
.
format
(
task
.
getCreate
Date
()));
paramMap
.
put
(
"create_time"
,
sdf
.
format
(
new
Date
()));
paramList
.
add
(
paramMap
);
log
.
info
(
"出库通知入参为:"
+
JSON
.
toJSONString
(
paramList
)
+
"地址为:"
+
commonGIRecordUrl
);
...
...
src/main/resources/config/application-prod.yml
查看文件 @
89cbdfc
...
...
@@ -14,6 +14,15 @@ spring:
host
:
localhost
# 主机地址
port
:
27017
# 端口
database
:
smf
# 数据库
username
:
neotel
password
:
neotel
backup-mongodb
:
host
:
10.68.27.124
# 主机地址
port
:
8001
# 端口
database
:
smf
username
:
neotel
password
:
neotel
#kafka配置
kafka
:
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论