Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Jeepay
Commits
48c5d532
Commit
48c5d532
authored
Jul 12, 2021
by
terrfly
Browse files
Merge remote-tracking branch 'origin/dev' into master
parents
deb2eeb9
d657b58b
Changes
41
Hide whitespace changes
Inline
Side-by-side
conf/devCommons/config/application.yml
View file @
48c5d532
#################################
# 开发环境通用配置文件
放置目录
# 开发环境通用配置文件
(每个项目通用配置)
#################################
server
:
servlet
:
context-path
:
/
#设置应用的目录. 前缀需要带/, 无需设置后缀, 示例 【 /xxx 】 or 【 / 】
spring
:
servlet
:
multipart
:
enabled
:
true
#是否启用http上传处理
max-request-size
:
10MB
#最大请求文件的大小
max-file-size
:
10MB
#设置单个文件最大长度
resources
:
static-locations
:
classpath:/static
#项目静态资源路径 (可直接通过http访问)
freemarker
:
template-loader-path
:
classpath:/templates
#freemarker模板目录
template-encoding
:
UTF-8
suffix
:
.ftl
settings
:
classic_compatible
:
true
# 如果变量为null,转化为空字符串,比如做比较的时候按照空字符做比较
number_format
:
'
#'
#数字格式进行原样显示,不加格式化字符例如 100,00
datasource
:
# yml填写url连接串, 无需将&符号进行转义
url
:
jdbc:mysql://127.0.0.1:3306/jeepaydb?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false
url
:
jdbc:mysql://127.0.0.1:3306/jeepaydb?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false
&allowPublicKeyRetrieval=true
username
:
root
password
:
druid
:
# 连接池配置项
initial-size
:
5
#初始化时建立物理连接的个数
min-idle
:
5
#最小连接池数量
max-active
:
30
#最大连接池数量
max-wait
:
60000
#获取连接时最大等待时间,单位毫秒
# 检测相关
test-while-idle
:
true
# 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
test-on-borrow
:
false
# 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
test-on-return
:
false
# 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
time-between-eviction-runs-millis
:
60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
min-evictable-idle-time-millis
:
300000
#连接保持空闲而不被驱逐的最小时间
validation-query
:
SELECT 1 FROM DUAL
# 是否缓存preparedStatement
pool-prepared-statements
:
false
# 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
max-pool-prepared-statement-per-connection-size
:
20
# 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计 通过connectProperties属性来打开mergeSql功能;慢SQL记录
filters
:
stat,wall
connection-properties
:
druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
cache
:
type
:
redis
redis
:
host
:
127.0.0.1
port
:
6379
timeout
:
1000
password
:
# 注意:以下MQ配置需注意【如需使用activeMQ则需将rabbitMQ配置注释即可】
profiles
:
include
:
-
activeMQ
# - rabbitMQ # 需要安装延迟队列插件:https://www.rabbitmq.com/blog/2015/04/16/scheduling-messages-with-rabbitmq/
#- rabbitMQ # 需要安装延迟队列插件:https://www.rabbitmq.com/blog/2015/04/16/scheduling-messages-with-rabbitmq/
#- rocketMQ
#activeMQ配置
activemq
:
...
...
@@ -30,6 +70,12 @@ spring:
# dynamic: true
# virtual-host: /
#rocketmq配置
# rocketmq:
# name-server: 127.0.0.1:9876
# producer:
# group: rocket-group
#日志配置参数。
# 当存在logback-spring.xml文件时: 该配置将引进到logback配置, springboot配置不生效。
# 不存在logback-spring.xml 文件时, 使用springboot的配置, 同样可用。
...
...
@@ -41,5 +87,23 @@ logging:
#系统业务参数
isys
:
oss-file
:
root-path
:
/home/jeepay/upload
#存储根路径 ( 无需以‘/’结尾 )
#是否允许跨域请求 [生产环境建议关闭, 若api与前端项目没有在同一个域名下时,应开启此配置或在nginx统一配置允许跨域]
allow-cors
:
true
oss
:
file-root-path
:
/home/jeepay/upload
#存储根路径 ( 无需以‘/’结尾 )
file-public-path
:
${isys.oss.file-root-path}/public
#公共读取块 ( 一般配合root-path参数进行设置,需以‘/’ 开头, 无需以‘/’结尾 )
file-private-path
:
${isys.oss.file-root-path}/private
#私有化本地访问,不允许url方式公共读取 ( 一般配合root-path参数进行设置,需以‘/’ 开头, 无需以‘/’结尾 )
# [local]: 本地存储,所有的文件将存在放本地,可通过nfs, rsync工具实现多机共享;
# [aliyun-oss]: 将文件统一上传到阿里云oss服务器; 注意:需调整jeepay-oss/pom.xml中的aliyun-sdk-oss组件依赖方式
service-type
:
local
# 阿里云OSS服务配置信息
aliyun-oss
:
endpoint
:
oss-cn-beijing.aliyuncs.com
#endpoint 如: oss-cn-beijing.aliyuncs.com
public-bucket-name
:
bucket1
#公共读 桶名称
private-bucket-name
:
bucket2
#私有 桶名称
access-key-id
:
KEY_KEY_KEY
#AccessKeyId
access-key-secret
:
SECRET_SECRET_SECRET
#AccessKeySecret
jeepay-core/src/main/java/com/jeequan/jeepay/core/constants/CS.java
View file @
48c5d532
...
...
@@ -128,28 +128,28 @@ public class CS {
public
interface
MQ
{
/** 更新配置的通知消息 **/
String
TOPIC_MODIFY_SYS_CONFIG
=
"topic
.
modify
.
sys
.
config"
;
String
TOPIC_MODIFY_SYS_CONFIG
=
"topic
-
modify
-
sys
-
config"
;
/** 更新商户配置信息 **/
String
TOPIC_MODIFY_MCH_INFO
=
"topic
.
modify
.
mch
.
info"
;
String
TOPIC_MODIFY_MCH_INFO
=
"topic
-
modify
-
mch
-
info"
;
/** 更新商户应用配置信息 **/
String
TOPIC_MODIFY_MCH_APP
=
"topic
.
modify
.
mch
.
app"
;
String
TOPIC_MODIFY_MCH_APP
=
"topic
-
modify
-
mch
-
app"
;
/** 更新服务商配置信息 **/
String
TOPIC_MODIFY_ISV_INFO
=
"topic
.
modify
.
isv
.
info"
;
String
TOPIC_MODIFY_ISV_INFO
=
"topic
-
modify
-
isv
-
info"
;
/** 支付订单 商户通知MQ **/
String
QUEUE_PAYORDER_MCH_NOTIFY
=
"queue
.
payorder
.
mch
.
notify"
;
String
QUEUE_PAYORDER_MCH_NOTIFY
=
"queue
-
payorder
-
mch
-
notify"
;
/** 轮询查单 MQ **/
String
QUEUE_CHANNEL_ORDER_QUERY
=
"queue
.
channel
.
order
.
query"
;
String
QUEUE_CHANNEL_ORDER_QUERY
=
"queue
-
channel
-
order
-
query"
;
/** 清除商户登录用户信息 **/
String
QUEUE_MODIFY_MCH_USER_REMOVE
=
"queue
.
modify
.
mch
.
user
.
remove"
;
String
QUEUE_MODIFY_MCH_USER_REMOVE
=
"queue
-
modify
-
mch
-
user
-
remove"
;
/** 用于activemq 发布订阅模式交换机**/
String
FANOUT_MODIFY_SYS_CONFIG
=
"fanout
.
modify
.
sys
.
config"
;
String
FANOUT_MODIFY_SYS_CONFIG
=
"fanout
-
modify
-
sys
-
config"
;
/** MQ消息类型 **/
String
MQ_TYPE_MODIFY_MCH_APP
=
"modify.mch.app"
;
...
...
@@ -170,6 +170,7 @@ public class CS {
public
static
class
MQTYPE
{
public
static
final
String
ACTIVE_MQ
=
"activeMQ"
;
public
static
final
String
RABBIT_MQ
=
"rabbitMQ"
;
public
static
final
String
ROCKET_MQ
=
"rocketMQ"
;
}
//菜单类型
...
...
jeepay-core/src/main/java/com/jeequan/jeepay/core/service/ISysConfigService.java
0 → 100644
View file @
48c5d532
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.core.service
;
import
com.jeequan.jeepay.core.model.DBApplicationConfig
;
public
interface
ISysConfigService
{
/** 获取应用的配置参数 **/
DBApplicationConfig
getDBApplicationConfig
();
}
jeepay-manager/pom.xml
View file @
48c5d532
...
...
@@ -25,6 +25,13 @@
<version>
${isys.version}
</version>
</dependency>
<!-- 依赖[ oss ]包 -->
<dependency>
<groupId>
com.jeequan
</groupId>
<artifactId>
jeepay-oss
</artifactId>
<version>
${isys.version}
</version>
</dependency>
<!-- 依赖 sping-boot-web -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
...
...
@@ -95,6 +102,13 @@
<artifactId>
spring-boot-starter-amqp
</artifactId>
</dependency>
<!-- 添加对rocketMQ的支持 -->
<dependency>
<groupId>
org.apache.rocketmq
</groupId>
<artifactId>
rocketmq-spring-boot-starter
</artifactId>
<version>
${rocketmq.spring.boot.starter.version}
</version>
</dependency>
<!-- 引入 jeepay-sdk-java -->
<dependency>
<groupId>
com.jeequan
</groupId>
...
...
jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/config/SystemYmlConfig.java
View file @
48c5d532
...
...
@@ -17,7 +17,6 @@ package com.jeequan.jeepay.mgr.config;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.boot.context.properties.NestedConfigurationProperty
;
import
org.springframework.stereotype.Component
;
/**
...
...
@@ -38,23 +37,6 @@ public class SystemYmlConfig {
/** 生成jwt的秘钥。 要求每个系统有单独的秘钥管理机制。 **/
private
String
jwtSecret
;
@NestedConfigurationProperty
//指定该属性为嵌套值, 否则默认为简单值导致对象为空(外部类不存在该问题, 内部static需明确指定)
private
OssFile
ossFile
;
/** 系统oss配置信息 **/
@Data
public
static
class
OssFile
{
/** 存储根路径 **/
private
String
rootPath
;
/** 公共读取块 **/
private
String
publicPath
;
/** 私有读取块 **/
private
String
privatePath
;
}
}
...
...
jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/ctrl/common/StaticController.java
View file @
48c5d532
...
...
@@ -16,6 +16,8 @@
package
com.jeequan.jeepay.mgr.ctrl.common
;
import
com.jeequan.jeepay.mgr.ctrl.CommonCtrl
;
import
com.jeequan.jeepay.oss.config.OssYmlConfig
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.io.InputStreamResource
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpStatus
;
...
...
@@ -38,6 +40,8 @@ import java.io.InputStream;
@Controller
public
class
StaticController
extends
CommonCtrl
{
@Autowired
private
OssYmlConfig
ossYmlConfig
;
/** 图片预览 **/
@GetMapping
(
"/api/anon/localOssFiles/**/*.*"
)
public
ResponseEntity
<?>
imgView
()
{
...
...
@@ -45,7 +49,7 @@ public class StaticController extends CommonCtrl {
try
{
//查找图片文件
File
imgFile
=
new
File
(
main
Config
.
getOss
File
().
getPublicPath
()
+
File
.
separator
+
request
.
getRequestURI
().
substring
(
24
));
File
imgFile
=
new
File
(
ossYml
Config
.
getOss
().
get
File
PublicPath
()
+
File
.
separator
+
request
.
getRequestURI
().
substring
(
24
));
if
(!
imgFile
.
isFile
()
||
!
imgFile
.
exists
())
return
new
ResponseEntity
<>(
HttpStatus
.
NOT_FOUND
);
//输出文件流(图片格式)
...
...
jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/mq/RocketMqSend.java
0 → 100644
View file @
48c5d532
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mgr.mq
;
import
com.jeequan.jeepay.core.constants.CS
;
import
com.jeequan.jeepay.core.mq.MqCommonService
;
import
com.jeequan.jeepay.service.impl.SysConfigService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.rocketmq.spring.annotation.MessageModel
;
import
org.apache.rocketmq.spring.annotation.RocketMQMessageListener
;
import
org.apache.rocketmq.spring.core.RocketMQListener
;
import
org.apache.rocketmq.spring.core.RocketMQTemplate
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Profile
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Service
;
/**
*
* @author pangxiaoyu
* @site https://www.jeepay.vip
* @date 2021-06-07 07:15
*/
@Slf4j
@Component
@Profile
(
CS
.
MQTYPE
.
ROCKET_MQ
)
public
class
RocketMqSend
extends
MqCommonService
{
@Autowired
private
RocketMQTemplate
rocketMQTemplate
;
@Autowired
private
SysConfigService
sysConfigService
;
@Override
public
void
send
(
String
msg
,
String
sendType
)
{
if
(
sendType
.
equals
(
CS
.
MQ
.
MQ_TYPE_PAY_ORDER_MCH_NOTIFY
))
{
// 商户订单回调
payOrderMchNotify
(
msg
);
}
else
if
(
sendType
.
equals
(
CS
.
MQ
.
MQ_TYPE_MODIFY_ISV_INFO
))
{
// 服务商信息修改
modifyIsvInfo
(
msg
);
}
else
if
(
sendType
.
equals
(
CS
.
MQ
.
MQ_TYPE_MODIFY_MCH_APP
))
{
// 商户应用修改
modifyMchApp
(
msg
);
}
else
if
(
sendType
.
equals
(
CS
.
MQ
.
MQ_TYPE_MODIFY_MCH_INFO
))
{
// 商户信息修改
modifyMchInfo
(
msg
);
}
else
if
(
sendType
.
equals
(
CS
.
MQ
.
MQ_TYPE_MODIFY_SYS_CONFIG
))
{
// 系统配置修改
modifySysConfig
(
msg
);
}
else
if
(
sendType
.
equals
(
CS
.
MQ
.
MQ_TYPE_MCH_LOGIN_USER_REMOVE
))
{
// 商户登录用户清除信息
mchLoginUserRemove
(
msg
);
}
}
@Override
public
void
send
(
String
msg
,
long
delay
,
String
sendType
)
{
}
/** 发送商户订单回调消息 **/
public
void
payOrderMchNotify
(
String
msg
)
{
sendMsg
(
msg
,
CS
.
MQ
.
QUEUE_PAYORDER_MCH_NOTIFY
);
}
/** 发送服务商信息修改消息 **/
public
void
modifyIsvInfo
(
String
msg
)
{
sendMsg
(
msg
,
CS
.
MQ
.
TOPIC_MODIFY_ISV_INFO
);
}
/** 发送商户应用修改消息 **/
public
void
modifyMchApp
(
String
msg
)
{
sendMsg
(
msg
,
CS
.
MQ
.
TOPIC_MODIFY_MCH_APP
);
}
/** 发送商户信息修改消息 **/
public
void
modifyMchInfo
(
String
msg
)
{
sendMsg
(
msg
,
CS
.
MQ
.
TOPIC_MODIFY_MCH_INFO
);
}
/** 发送系统配置修改消息 **/
public
void
modifySysConfig
(
String
msg
)
{
sendMsg
(
msg
,
CS
.
MQ
.
TOPIC_MODIFY_SYS_CONFIG
);
}
/** 发送商户登录用户清除信息消息 **/
public
void
mchLoginUserRemove
(
String
msg
)
{
sendMsg
(
msg
,
CS
.
MQ
.
QUEUE_MODIFY_MCH_USER_REMOVE
);
}
public
void
sendMsg
(
String
msg
,
String
group
)
{
// 这里的分组和消息名称未做区分
rocketMQTemplate
.
getProducer
().
setProducerGroup
(
group
);
this
.
rocketMQTemplate
.
convertAndSend
(
group
,
msg
);
}
/** 接收 更新系统配置项的消息 **/
@Service
@RocketMQMessageListener
(
topic
=
CS
.
MQ
.
TOPIC_MODIFY_SYS_CONFIG
,
consumerGroup
=
CS
.
MQ
.
TOPIC_MODIFY_SYS_CONFIG
,
messageModel
=
MessageModel
.
BROADCASTING
)
class
RocketMqReceive
implements
RocketMQListener
<
String
>
{
@Override
public
void
onMessage
(
String
msg
)
{
log
.
info
(
"成功接收更新系统配置的订阅通知, msg={}"
,
msg
);
sysConfigService
.
initDBConfig
(
msg
);
log
.
info
(
"系统配置静态属性已重置"
);
}
}
}
jeepay-manager/src/main/resources/application.yml
View file @
48c5d532
server
:
port
:
9217
#设置端口为 9217
servlet
:
context-path
:
/
#设置应用的目录. 前缀需要带/, 无需设置后缀, 示例 【 /xxx 】 or 【 / 】
spring
:
mvc
:
servlet
:
multipart
:
enabled
:
true
#是否启用http上传处理
max-request-size
:
10MB
#最大请求文件的大小
max-file-size
:
10MB
#设置单个文件最大长度
resources
:
static-locations
:
classpath:/static
#项目静态资源路径 (可直接通过http访问)
freemarker
:
template-loader-path
:
classpath:/templates
#freemarker模板目录
template-encoding
:
UTF-8
suffix
:
.ftl
settings
:
classic_compatible
:
true
# 如果变量为null,转化为空字符串,比如做比较的时候按照空字符做比较
number_format
:
'
#'
#数字格式进行原样显示,不加格式化字符例如 100,00
datasource
:
# yml填写url连接串, 无需将&符号进行转义
url
:
jdbc:mysql://127.0.0.1:3306/jeepaydb?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false
username
:
root
password
:
druid
:
# 连接池配置项
initial-size
:
5
#初始化时建立物理连接的个数
min-idle
:
5
#最小连接池数量
max-active
:
30
#最大连接池数量
max-wait
:
60000
#获取连接时最大等待时间,单位毫秒
# 检测相关
test-while-idle
:
true
# 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
test-on-borrow
:
false
# 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
test-on-return
:
false
# 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
time-between-eviction-runs-millis
:
60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
min-evictable-idle-time-millis
:
300000
#连接保持空闲而不被驱逐的最小时间
validation-query
:
SELECT 1 FROM DUAL
# 是否缓存preparedStatement
pool-prepared-statements
:
false
# 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
max-pool-prepared-statement-per-connection-size
:
20
# 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计 通过connectProperties属性来打开mergeSql功能;慢SQL记录
filters
:
stat,wall
connection-properties
:
druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
cache
:
type
:
redis
redis
:
host
:
127.0.0.1
port
:
6379
timeout
:
1000
database
:
1
#1库:运营平台 #2库:商户系统 #3库:支付网关
password
:
# 注意:以下MQ配置需注意【如需使用activeMQ则需将rabbitMQ配置注释即可】
# profiles:
# include:
# - activeMQ
# - rabbitMQ # 需要安装延迟队列插件:https://www.rabbitmq.com/blog/2015/04/16/scheduling-messages-with-rabbitmq/
#activeMQ配置
# activemq:
# broker-url: tcp://localhost:61616 #连接地址
port
:
9217
#设置端口
#rabbitmq配置
# rabbitmq:
# addresses: 127.0.0.1:5672
# username: guest
# password: guest
# dynamic: true
# virtual-host: /
#日志配置参数。
# 当存在logback-spring.xml文件时: 该配置将引进到logback配置, springboot配置不生效。
# 不存在logback-spring.xml 文件时, 使用springboot的配置, 同样可用。
logging
:
level
:
root
:
info
#主日志级别
com.jeequan.jeepay
:
debug
#该项目日志级别,当需要打印sql时请开启为debug
path
:
E:/logs
#日志存放地址
spring
:
redis
:
database
:
1
#1库:运营平台 #2库:商户系统 #3库:支付网关
#系统业务参数
isys
:
allow-cors
:
true
#是否允许跨域请求 [生产环境建议关闭, 若api与前端项目没有在同一个域名下时,应开启此配置或在nginx统一配置允许跨域]
jwt-secret
:
t7w3P8X6472qWc3u
#生成jwt的秘钥。 要求每个系统有单独的秘钥管理机制。
# 文件系统配置项(系统内oss, 并非云oss)
oss-file
:
root-path
:
/home/jeepay/upload
#存储根路径 ( 无需以‘/’结尾 )
public-path
:
${isys.oss-file.root-path}/public
#公共读取块 ( 一般配合root-path参数进行设置,需以‘/’ 开头, 无需以‘/’结尾 )
private-path
:
${isys.oss-file.root-path}/private
#私有化本地访问,不允许url方式公共读取 ( 一般配合root-path参数进行设置,需以‘/’ 开头, 无需以‘/’结尾 )
jeepay-merchant/pom.xml
View file @
48c5d532
...
...
@@ -25,6 +25,13 @@
<version>
${isys.version}
</version>
</dependency>
<!-- 依赖[ oss ]包 -->
<dependency>
<groupId>
com.jeequan
</groupId>
<artifactId>
jeepay-oss
</artifactId>
<version>
${isys.version}
</version>
</dependency>
<!-- 依赖 sping-boot-web -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
...
...
@@ -95,6 +102,13 @@
<artifactId>
spring-boot-starter-amqp
</artifactId>
</dependency>
<!-- 添加对rocketMQ的支持 -->
<dependency>
<groupId>
org.apache.rocketmq
</groupId>
<artifactId>
rocketmq-spring-boot-starter
</artifactId>
<version>
${rocketmq.spring.boot.starter.version}
</version>
</dependency>
<!-- 引入 jeepay-sdk-java -->
<dependency>
<groupId>
com.jeequan
</groupId>
...
...
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/config/SystemYmlConfig.java
View file @
48c5d532
...
...
@@ -17,7 +17,6 @@ package com.jeequan.jeepay.mch.config;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.boot.context.properties.NestedConfigurationProperty
;
import
org.springframework.stereotype.Component
;
/**
...
...
@@ -38,21 +37,4 @@ public class SystemYmlConfig {
/** 生成jwt的秘钥。 要求每个系统有单独的秘钥管理机制。 **/
private
String
jwtSecret
;
@NestedConfigurationProperty
//指定该属性为嵌套值, 否则默认为简单值导致对象为空(外部类不存在该问题, 内部static需明确指定)
private
OssFile
ossFile
;
/** 系统oss配置信息 **/
@Data
public
static
class
OssFile
{
/** 存储根路径 **/
private
String
rootPath
;
/** 公共读取块 **/
private
String
publicPath
;
/** 私有读取块 **/
private
String
privatePath
;
}
}
\ No newline at end of file
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/ctrl/common/OssFileController.java
deleted
100644 → 0
View file @
deb2eeb9
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.ctrl.common
;
import
cn.hutool.core.lang.UUID
;
import
com.jeequan.jeepay.core.constants.ApiCodeEnum
;
import
com.jeequan.jeepay.core.exception.BizException
;
import
com.jeequan.jeepay.core.model.ApiRes
;
import
com.jeequan.jeepay.core.model.OssFileConfig
;
import
com.jeequan.jeepay.core.utils.FileKit
;
import
com.jeequan.jeepay.mch.config.SystemYmlConfig
;
import
com.jeequan.jeepay.mch.ctrl.CommonCtrl
;
import
com.jeequan.jeepay.service.impl.SysConfigService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.File
;
/*
* 统一文件上传接口(ossFile)
*
* @author terrfly
* @site https://www.jeepay.vip
* @date 2021/6/8 17:07
*/
@RestController
@RequestMapping
(
"/api/ossFiles"
)
public
class
OssFileController
extends
CommonCtrl
{
@Autowired
private
SystemYmlConfig
systemYmlConfig
;
@Autowired
private
SysConfigService
sysConfigService
;
/** 上传文件 (单文件上传) */
@PostMapping
(
"/{bizType}"
)
public
ApiRes
singleFileUpload
(
@RequestParam
(
"file"
)
MultipartFile
file
,
@PathVariable
(
"bizType"
)
String
bizType
)
{
if
(
file
==
null
)
return
ApiRes
.
fail
(
ApiCodeEnum
.
SYSTEM_ERROR
,
"选择文件不存在"
);
try
{
OssFileConfig
ossFileConfig
=
OssFileConfig
.
getOssFileConfigByBizType
(
bizType
);
//1. 判断bizType 是否可用
if
(
ossFileConfig
==
null
){
throw
new
BizException
(
"类型有误"
);
}
// 2. 判断文件是否支持
String
fileSuffix
=
FileKit
.
getFileSuffix
(
file
.
getOriginalFilename
(),
false
);
if
(
!
ossFileConfig
.
isAllowFileSuffix
(
fileSuffix
)
){
throw
new
BizException
(
"上传文件格式不支持!"
);
}
// 3. 判断文件大小是否超限
if
(
!
ossFileConfig
.
isMaxSizeLimit
(
file
.
getSize
())
){
throw
new
BizException
(
"上传大小请限制在["
+
ossFileConfig
.
getMaxSize
()
/
1024
/
1024
+
"M]以内!"
);
}
boolean
isAllowPublicRead
=
ossFileConfig
.
isAllowPublicRead
();
//是否允许公共读, true:公共读, false:私有文件
//公共读 & 是否上传到oss
boolean
isYunOss
=
false
;
//TODO 暂时不支持云oss方式
if
(
isAllowPublicRead
&&
isYunOss
){
return
null
;
}
//以下为文件上传到本地
// 新文件地址
String
newFileName
=
UUID
.
fastUUID
()
+
"."
+
fileSuffix
;
// 保存的文件夹名称
String
saveFilePath
=
isAllowPublicRead
?
systemYmlConfig
.
getOssFile
().
getPublicPath
()
:
systemYmlConfig
.
getOssFile
().
getPrivatePath
();
saveFilePath
=
saveFilePath
+
File
.
separator
+
bizType
+
File
.
separator
+
newFileName
;
//保存文件
saveFile
(
file
,
saveFilePath
);
//返回响应结果
String
resultUrl
=
bizType
+
"/"
+
newFileName
;
if
(
isAllowPublicRead
){
//允许公共读取
resultUrl
=
sysConfigService
.
getDBApplicationConfig
().
getOssPublicSiteUrl
()
+
"/"
+
resultUrl
;
}
return
ApiRes
.
ok
(
resultUrl
);
}
catch
(
BizException
biz
)
{
throw
biz
;
}
catch
(
Exception
e
)
{
logger
.
error
(
"upload error, fileName = {}"
,
file
==
null
?
null
:
file
.
getOriginalFilename
(),
e
);
throw
new
BizException
(
ApiCodeEnum
.
SYSTEM_ERROR
);
}
}
}
\ No newline at end of file
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/mq/ActiveMqSend.java
View file @
48c5d532
...
...
@@ -28,8 +28,6 @@ import org.springframework.jms.core.JmsTemplate;
import
org.springframework.stereotype.Component
;
/*
* 更改商户应用信息
*
* @author terrfly
* @site https://www.jeepay.vip
* @date 2021/6/8 17:10
...
...
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/mq/RabbitMqSend.java
View file @
48c5d532
...
...
@@ -25,7 +25,6 @@ import org.springframework.stereotype.Component;
/**
* RabbitMq
* 商户应用修改推送
* @author xiaoyu
* @site https://www.jeepay.vip
* @date 2021/6/25 17:10
...
...
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/mq/RocketMqSend.java
0 → 100644
View file @
48c5d532
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.mq
;
import
com.jeequan.jeepay.core.constants.CS
;
import
com.jeequan.jeepay.core.mq.MqCommonService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.rocketmq.spring.core.RocketMQTemplate
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Profile
;
import
org.springframework.stereotype.Component
;
/**
* RocketMQ
* @author xiaoyu
* @site https://www.jeepay.vip
* @date 2021/6/25 17:10
*/
@Slf4j
@Component
@Profile
(
CS
.
MQTYPE
.
ROCKET_MQ
)
public
class
RocketMqSend
extends
MqCommonService
{
@Autowired
private
RocketMQTemplate
rocketMQTemplate
;
/** 推送消息到各个节点 **/
@Override
public
void
send
(
String
msg
,
String
sendType
)
{
if
(
sendType
.
equals
(
CS
.
MQ
.
MQ_TYPE_MODIFY_MCH_APP
))
{
// 商户应用修改
topicModifyMchApp
(
msg
);
}
}
@Override
public
void
send
(
String
msg
,
long
delay
,
String
sendType
)
{
}
/** 发送商户应用修改信息 **/
public
void
topicModifyMchApp
(
String
msg
)
{
rocketMQTemplate
.
getProducer
().
setProducerGroup
(
CS
.
MQ
.
TOPIC_MODIFY_MCH_APP
);
rocketMQTemplate
.
convertAndSend
(
CS
.
MQ
.
TOPIC_MODIFY_MCH_APP
,
msg
);
}
}
jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/mq/rocketmq/RocketMqReceive.java
0 → 100644
View file @
48c5d532
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.mch.mq.rocketmq
;
import
com.jeequan.jeepay.core.constants.CS
;
import
com.jeequan.jeepay.mch.mq.receive.MqReceiveCommon
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.rocketmq.spring.annotation.MessageModel
;
import
org.apache.rocketmq.spring.annotation.RocketMQMessageListener
;
import
org.apache.rocketmq.spring.core.RocketMQListener
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Profile
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Service
;
/**
* 消息接收
* @author pangxiaoyu
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@Slf4j
@Component
@Profile
(
CS
.
MQTYPE
.
ROCKET_MQ
)
public
class
RocketMqReceive
{
@Autowired
private
MqReceiveCommon
mqReceiveCommon
;
/**
* @author: pangxiaoyu
* @date: 2021/6/7 16:17
* @describe: 接收 商户用户登录信息清除消息
*/
@Service
@RocketMQMessageListener
(
topic
=
CS
.
MQ
.
QUEUE_MODIFY_MCH_USER_REMOVE
,
consumerGroup
=
CS
.
MQ
.
QUEUE_MODIFY_MCH_USER_REMOVE
)
class
receiveRemoveMchUser
implements
RocketMQListener
<
String
>
{
@Override
public
void
onMessage
(
String
userIdStr
)
{
mqReceiveCommon
.
removeMchUser
(
userIdStr
);
}
}
/** 接收 更新系统配置项的消息 **/
@Service
@RocketMQMessageListener
(
topic
=
CS
.
MQ
.
TOPIC_MODIFY_SYS_CONFIG
,
consumerGroup
=
CS
.
MQ
.
TOPIC_MODIFY_SYS_CONFIG
,
messageModel
=
MessageModel
.
BROADCASTING
)
class
receiveInitDbConfig
implements
RocketMQListener
<
String
>
{
@Override
public
void
onMessage
(
String
msg
)
{
mqReceiveCommon
.
initDbConfig
(
msg
);
}
}
}
jeepay-merchant/src/main/resources/application.yml
View file @
48c5d532
server
:
port
:
9218
#设置端口为 9218
servlet
:
context-path
:
/
#设置应用的目录. 前缀需要带/, 无需设置后缀, 示例 【 /xxx 】 or 【 / 】
spring
:
mvc
:
servlet
:
multipart
:
enabled
:
true
#是否启用http上传处理
max-request-size
:
10MB
#最大请求文件的大小
max-file-size
:
10MB
#设置单个文件最大长度
resources
:
static-locations
:
classpath:/static
#项目静态资源路径 (可直接通过http访问)
freemarker
:
template-loader-path
:
classpath:/templates
#freemarker模板目录
template-encoding
:
UTF-8
suffix
:
.ftl
settings
:
classic_compatible
:
true
# 如果变量为null,转化为空字符串,比如做比较的时候按照空字符做比较
number_format
:
'
#'
#数字格式进行原样显示,不加格式化字符例如 100,00
datasource
:
# yml填写url连接串, 无需将&符号进行转义
url
:
jdbc:mysql://127.0.0.1:3306/jeepaydb?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false
username
:
root
password
:
druid
:
# 连接池配置项
initial-size
:
5
#初始化时建立物理连接的个数
min-idle
:
5
#最小连接池数量
max-active
:
30
#最大连接池数量
max-wait
:
60000
#获取连接时最大等待时间,单位毫秒
# 检测相关
test-while-idle
:
true
# 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
test-on-borrow
:
false
# 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
test-on-return
:
false
# 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
time-between-eviction-runs-millis
:
60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
min-evictable-idle-time-millis
:
300000
#连接保持空闲而不被驱逐的最小时间
validation-query
:
SELECT 1 FROM DUAL
# 是否缓存preparedStatement
pool-prepared-statements
:
false
# 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
max-pool-prepared-statement-per-connection-size
:
20
# 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计 通过connectProperties属性来打开mergeSql功能;慢SQL记录
filters
:
stat,wall
connection-properties
:
druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
cache
:
type
:
redis
redis
:
host
:
127.0.0.1
port
:
6379
timeout
:
1000
database
:
2
#1库:运营平台 #2库:商户系统 #3库:支付网关
password
:
# 注意:以下MQ配置需注意【如需使用activeMQ则需将rabbitMQ配置注释即可】
# profiles:
# include:
# - activeMQ
# - rabbitMQ # 需要安装延迟队列插件:https://www.rabbitmq.com/blog/2015/04/16/scheduling-messages-with-rabbitmq/
#activeMQ配置
# activemq:
# broker-url: tcp://localhost:61616 #连接地址
port
:
9218
#设置端口
#rabbitmq配置
# rabbitmq:
# addresses: 127.0.0.1:5672
# username: guest
# password: guest
# dynamic: true
# virtual-host: /
#日志配置参数。
# 当存在logback-spring.xml文件时: 该配置将引进到logback配置, springboot配置不生效。
# 不存在logback-spring.xml 文件时, 使用springboot的配置, 同样可用。
logging
:
level
:
root
:
info
#主日志级别
com.jeequan.jeepay
:
debug
#该项目日志级别,当需要打印sql时请开启为debug
path
:
E:/logs
#日志存放地址
spring
:
redis
:
database
:
2
#1库:运营平台 #2库:商户系统 #3库:支付网关
#系统业务参数
isys
:
allow-cors
:
true
#是否允许跨域请求 [生产环境建议关闭, 若api与前端项目没有在同一个域名下时,应开启此配置或在nginx统一配置允许跨域]
jwt-secret
:
ARNXp4MzjOOQqxtv
#生成jwt的秘钥。 要求每个系统有单独的秘钥管理机制。
# 文件系统配置项(系统内oss, 并非云oss)
oss-file
:
root-path
:
/home/jeepay/upload
#存储根路径 ( 无需以‘/’结尾 )
public-path
:
${isys.oss-file.root-path}/public
#公共读取块 ( 一般配合root-path参数进行设置,需以‘/’ 开头, 无需以‘/’结尾 )
private-path
:
${isys.oss-file.root-path}/private
#私有化本地访问,不允许url方式公共读取 ( 一般配合root-path参数进行设置,需以‘/’ 开头, 无需以‘/’结尾 )
jeepay-oss/pom.xml
0 → 100644
View file @
48c5d532
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<!-- POM模型版本 -->
<groupId>
com.jeequan
</groupId>
<!-- 组织名, 类似于包名 -->
<artifactId>
jeepay-oss
</artifactId>
<!-- 项目名称 -->
<packaging>
jar
</packaging>
<!-- 项目的最终打包类型/发布形式, 可选[jar, war, pom, maven-plugin]等 -->
<version>
${isys.version}
</version>
<!-- 项目当前版本号 -->
<description>
Jeepay计全支付系统 [jeepay-oss]
</description>
<!-- 项目描述 -->
<url>
https://www.jeequan.com
</url>
<parent>
<groupId>
com.jeequan
</groupId>
<artifactId>
jeepay
</artifactId>
<version>
Final
</version>
</parent>
<!-- 项目依赖声明 -->
<dependencies>
<dependency>
<groupId>
com.jeequan
</groupId>
<artifactId>
jeepay-core
</artifactId>
<version>
${isys.version}
</version>
</dependency>
<!-- 添加 spring-webmvc 基础依赖 -->
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-webmvc
</artifactId>
<scope>
provided
</scope>
<!-- 仅编译依赖该jar, 运行时存在 -->
</dependency>
<!-- slf4j -->
<dependency>
<groupId>
org.slf4j
</groupId>
<artifactId>
slf4j-api
</artifactId>
</dependency>
<!-- spring-boot 相关注解 -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot
</artifactId>
<scope>
provided
</scope>
<!-- 仅编译依赖该jar, 运行时存在 -->
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-autoconfigure
</artifactId>
<scope>
provided
</scope>
<!-- 仅编译依赖该jar, 运行时存在 -->
</dependency>
<!-- 阿里云oss组件 -->
<dependency>
<groupId>
com.aliyun.oss
</groupId>
<artifactId>
aliyun-sdk-oss
</artifactId>
<scope>
provided
</scope>
<!-- 当对象存储使用aliyunOSS时,需要改为:compile, 否则使用provided仅用于编译代码 -->
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>
src/main/resources
</directory>
</resource>
<resource>
<directory>
src/main/java
</directory>
<includes><include>
**/*.xml
</include></includes>
<!-- maven可以将mapper.xml进行打包处理,否则仅对java文件处理 -->
</resource>
</resources>
</build>
</project>
jeepay-oss/src/main/java/com/jeequan/jeepay/oss/config/AliyunOssYmlConfig.java
0 → 100644
View file @
48c5d532
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.oss.config
;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.stereotype.Component
;
/**
* aliyun oss 的yml配置参数
*
* @author terrfly
* @site https://www.jeepay.vip
* @date 2021/7/12 18:18
*/
@Data
@Component
@ConfigurationProperties
(
prefix
=
"isys.oss.aliyun-oss"
)
public
class
AliyunOssYmlConfig
{
private
String
endpoint
;
private
String
publicBucketName
;
private
String
privateBucketName
;
private
String
accessKeyId
;
private
String
accessKeySecret
;
}
jeepay-oss/src/main/java/com/jeequan/jeepay/oss/config/OssYmlConfig.java
0 → 100644
View file @
48c5d532
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.oss.config
;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.boot.context.properties.NestedConfigurationProperty
;
import
org.springframework.stereotype.Component
;
/**
* 系统Yml配置参数定义Bean
*
* @author terrfly
* @site https://www.jeepay.vip
* @date 2021-04-27 15:50
*/
@Data
@Component
@ConfigurationProperties
(
prefix
=
"isys"
)
public
class
OssYmlConfig
{
@NestedConfigurationProperty
//指定该属性为嵌套值, 否则默认为简单值导致对象为空(外部类不存在该问题, 内部static需明确指定)
private
Oss
oss
;
/** 系统oss配置信息 **/
@Data
public
static
class
Oss
{
/** 存储根路径 **/
private
String
fileRootPath
;
/** 公共读取块 **/
private
String
filePublicPath
;
/** 私有读取块 **/
private
String
filePrivatePath
;
/** oss类型 **/
private
String
serviceType
;
}
}
jeepay-oss/src/main/java/com/jeequan/jeepay/oss/constant/OssSavePlaceEnum.java
0 → 100644
View file @
48c5d532
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.jeequan.jeepay.oss.constant
;
/*
* oss 存储位置
* @author terrfly
* @site https://www.jeepay.vip
* @date 2021/7/12 10:48
*/
public
enum
OssSavePlaceEnum
{
PUBLIC
,
//公共读取
PRIVATE
;
//私有存储
}
Prev
1
2
3
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment