Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
polysoft-nafmii
/
polysoft-parent
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit c6cebdb2
authored
May 11, 2021
by
ypenglv
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
FTP
1 parent
ed7ce71d
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
420 additions
and
17 deletions
nafmii-app/src/main/java/org/nafmii/app/NafmiiAppApplication.java
nafmii-app/src/main/java/org/nafmii/app/user/controller/TestClinet.java
nafmii-app/src/main/java/org/nafmii/app/user/controller/UserController.java
nafmii-app/src/main/resources/application-dev.yml
nafmii-common/pom.xml
nafmii-common/src/main/java/org/nafmii/common/config/EncryptConfig.java
nafmii-common/src/main/java/org/nafmii/common/ftp/EnableFtpServer.java
nafmii-common/src/main/java/org/nafmii/common/ftp/FTPClientConfigure.java
nafmii-common/src/main/java/org/nafmii/common/ftp/FTPClientFactory.java
nafmii-common/src/main/java/org/nafmii/common/ftp/FTPClientHelper.java
nafmii-common/src/main/java/org/nafmii/common/ftp/FileDownLoadForm.java
nafmii-common/src/main/java/org/nafmii/common/ftp/FileVO.java
nafmii-common/src/main/java/org/nafmii/common/utils/FtpUtil.java
nafmii-common/src/main/resources/META-INF/spring.factories
nafmii-common/src/main/resources/application.properties
nafmii-app/src/main/java/org/nafmii/app/NafmiiAppApplication.java
View file @
c6cebdb
package
org
.
nafmii
.
app
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.nafmii.common.ftp.EnableFtpServer
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.cloud.netflix.eureka.EnableEurekaClient
;
...
...
@@ -10,6 +11,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
@EnableEurekaClient
@EnableFeignClients
@MapperScan
(
"org.nafmii.app/**/dao"
)
@EnableFtpServer
public
class
NafmiiAppApplication
{
public
static
void
main
(
String
[]
args
)
{
...
...
nafmii-app/src/main/java/org/nafmii/app/user/controller/TestClinet.java
0 → 100644
View file @
c6cebdb
package
org
.
nafmii
.
app
.
user
.
controller
;
import
org.nafmii.app.user.param.LoginParam
;
import
org.nafmii.common.response.ApiResponse
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
/**
* @author lvyp
* @date 2021/5/11
*/
@FeignClient
(
"nafmii-app"
)
@RequestMapping
(
value
=
""
)
public
interface
TestClinet
{
@PostMapping
(
"/login"
)
@ResponseBody
public
ApiResponse
login
(
@RequestBody
LoginParam
loginParam
);
}
nafmii-app/src/main/java/org/nafmii/app/user/controller/UserController.java
View file @
c6cebdb
package
org
.
nafmii
.
app
.
user
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.nafmii.app.user.dto.LoginDto
;
...
...
@@ -8,13 +10,17 @@ import org.nafmii.app.user.param.LoginParam;
import
org.nafmii.app.user.param.RegisterParam
;
import
org.nafmii.app.user.service.UserService
;
import
org.nafmii.app.user.vo.UserVO
;
import
org.nafmii.common.ftp.FTPClientHelper
;
import
org.nafmii.common.response.ApiResponse
;
import
org.nafmii.common.utils.BeanTransferUtils
;
import
org.nafmii.common.utils.RequestUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
sun.net.ftp.FtpClient
;
import
javax.annotation.Resource
;
import
java.io.File
;
/**
* @author:zhoujh
...
...
@@ -27,10 +33,12 @@ import javax.annotation.Resource;
@RestController
@RequestMapping
(
"/app/nafmii/user"
)
@Api
(
tags
=
"2.0.1"
,
description
=
"用户登陆注册操作操作【zjh】"
)
public
class
UserController
{
@Resource
private
UserService
userService
;
@Resource
private
TestClinet
testClinet
;
@ApiOperation
(
value
=
"模拟用户登陆"
,
notes
=
"模拟用户登陆"
)
@PostMapping
(
"/loginTest"
)
@ResponseBody
...
...
@@ -54,6 +62,24 @@ public class UserController {
ApiResponse
<
UserVO
>
login
=
userService
.
userLogin
(
loginParam
);
return
login
;
}
@ApiOperation
(
value
=
"app用户登陆接口(密码加验证码)"
,
notes
=
"app用户登陆接口(密码加验证码)"
)
@PostMapping
(
"/testFtp"
)
@ResponseBody
public
ApiResponse
testFtp
(){
String
ftpClient
=
FTPClientHelper
.
uploadFile
(
"1"
,
new
File
(
"e:/new1.txt"
),
"aa"
);
System
.
out
.
println
(
ftpClient
);
return
new
ApiResponse
();
}
@ApiOperation
(
value
=
"app用户登陆接口(密码加验证码)"
,
notes
=
"app用户登陆接口(密码加验证码)"
)
@PostMapping
(
"/yyy"
)
@ResponseBody
public
ApiResponse
yyy
(
@RequestBody
JSONObject
object
){
LoginParam
loginParam
=
BeanTransferUtils
.
transfer
(
object
,
LoginParam
.
class
);
if
(
"001"
.
equals
(
object
.
get
(
"apiCode"
))){
testClinet
.
login
(
loginParam
);
}
return
new
ApiResponse
();
}
}
nafmii-app/src/main/resources/application-dev.yml
View file @
c6cebdb
...
...
@@ -27,16 +27,16 @@ spring:
pool-name
:
NFMII_HikariCP
connection-test-query
:
SELECT 1
redis
:
# Redis
数据库索引(默认为0)
# Redis
数据库索引(默认为0)
database
:
0
# Redis
服务器地址
# Redis
服务器地址
host
:
127.0.0.1
port
:
6379
# Redis
服务器连接密码(默认为空)
# Redis
服务器连接密码(默认为空)
password
:
jedis
:
pool
:
#
连接池最大连接数(使用负值表示没有限制)
#
连接池最大连接数(使用负值表示没有限制)
max-active
:
20
max-wait
:
-1ms
max-idle
:
10
...
...
@@ -50,7 +50,12 @@ spring:
client
:
enabled
:
true
sampler
:
probability
:
1.0
#zipkin
采集率 0.1表示 10%采集率
probability
:
1.0
#zipkin
采集率 0.1表示 10%采集率
nafmii
:
log-path
:
D:/NAFMII
dao-uri
:
org.nafmii.app
ftp
:
host
:
127.0.0.1
password
:
peng1003
prot
:
21
username
:
ypenglv
\ No newline at end of file
nafmii-common/pom.xml
View file @
c6cebdb
...
...
@@ -18,6 +18,7 @@
<fastjson.version>
1.2.58
</fastjson.version>
<ojdbc.version>
10.2.0.4
</ojdbc.version>
<jjwt.version>
0.9.1
</jjwt.version>
<jasypt.version>
3.0.2
</jasypt.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign -->
...
...
@@ -215,7 +216,28 @@
<artifactId>
HikariCP
</artifactId>
<version>
4.0.0
</version>
</dependency>
<!-- ftp -->
<dependency>
<groupId>
commons-net
</groupId>
<artifactId>
commons-net
</artifactId>
<version>
3.6
</version>
</dependency>
<!-- jasypt -->
<dependency>
<groupId>
com.github.ulisesbocchio
</groupId>
<artifactId>
jasypt-spring-boot-starter
</artifactId>
<version>
${jasypt.version}
</version>
</dependency>
<!-- 线程池-->
<dependency>
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-pool2
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-configuration-processor
</artifactId>
<optional>
true
</optional>
</dependency>
</dependencies>
<build>
...
...
nafmii-common/src/main/java/org/nafmii/common/config/EncryptConfig.java
0 → 100644
View file @
c6cebdb
package
org
.
nafmii
.
common
.
config
;
import
org.jasypt.encryption.StringEncryptor
;
import
org.jasypt.encryption.pbe.PooledPBEStringEncryptor
;
import
org.jasypt.encryption.pbe.StandardPBEByteEncryptor
;
import
org.jasypt.encryption.pbe.config.SimpleStringPBEConfig
;
import
org.jasypt.exceptions.EncryptionOperationNotPossibleException
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
/**
* @author by zhangbr
* @date 2020/7/25
*/
@Configuration
public
class
EncryptConfig
{
private
final
static
String
ENCRYPT_PASSWORD
=
"P0O9I8U7Y6T5R4E3W2Q1"
;
private
static
StringEncryptor
encrypt
=
initStringEncrypt
();
@Bean
(
"jasyptStringEncryptor"
)
public
StringEncryptor
stringEncryptor
()
{
return
encrypt
;
}
private
static
StringEncryptor
initStringEncrypt
(){
PooledPBEStringEncryptor
encrypt
=
new
PooledPBEStringEncryptor
();
SimpleStringPBEConfig
config
=
new
SimpleStringPBEConfig
();
config
.
setPassword
(
ENCRYPT_PASSWORD
);
config
.
setAlgorithm
(
StandardPBEByteEncryptor
.
DEFAULT_ALGORITHM
);
config
.
setKeyObtentionIterations
(
"1000"
);
config
.
setPoolSize
(
"1"
);
config
.
setProviderName
(
"SunJCE"
);
config
.
setSaltGeneratorClassName
(
"org.jasypt.salt.RandomSaltGenerator"
);
config
.
setStringOutputType
(
"base64"
);
encrypt
.
setConfig
(
config
);
return
encrypt
;
}
/**
* 加密
* @param code 编码
* @return String
*/
public
static
String
encrypt
(
String
code
){
return
encrypt
.
encrypt
(
code
);
}
/**
* 解密
* @param code 编码
* @return String
*/
public
static
String
decrypt
(
String
code
)
throws
EncryptionOperationNotPossibleException
{
return
encrypt
.
decrypt
(
code
);
}
}
nafmii-common/src/main/java/org/nafmii/common/ftp/EnableFtpServer.java
0 → 100644
View file @
c6cebdb
package
org
.
nafmii
.
common
.
ftp
;
import
org.springframework.context.annotation.Import
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
/**
* @author by zhangbr
* @date 2020/7/24.
*/
@Target
({
ElementType
.
TYPE
})
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Documented
@Import
({
FTPClientConfigure
.
class
,
FTPClientHelper
.
class
})
public
@interface
EnableFtpServer
{
}
nafmii-common/src/main/java/org/nafmii/common/ftp/FTPClientConfigure.java
0 → 100644
View file @
c6cebdb
package
org
.
nafmii
.
common
.
ftp
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
org.apache.commons.net.ftp.FTPClient
;
import
org.apache.commons.pool2.impl.GenericObjectPoolConfig
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
/**
* @author by zhangbr
* @date 2020/7/24.
*/
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
@ConfigurationProperties
(
"nafmii.ftp"
)
class
FTPClientConfigure
extends
GenericObjectPoolConfig
<
FTPClient
>
{
/**
* ftp服务器地址
*/
private
String
host
;
/**
* ftp登录账号
*/
private
String
username
;
/**
* ftp登录密码
*/
private
String
password
;
/**
* ftp服务器端口号,默认为21
*/
private
Integer
port
=
21
;
/**
* 上传附件前缀
*/
private
String
prefix
;
/**
* ftp连接超时时间,毫秒,0 = 无限超时
*/
private
int
connectTimeOut
=
0
;
/**
* 缓冲区大小
*/
private
int
bufferSize
=
1024
;
/**
* 传输文件类型
*/
private
int
transferFileType
=
FTPClient
.
BINARY_FILE_TYPE
;
/**
* 编码格式
*/
private
String
controlEncoding
=
"utf-8"
;
/**
* 默认120S
*/
private
int
dataTimeout
=
120
*
1000
;
/**
* 是否启用被动模式
*/
private
boolean
passiveMode
=
true
;
/**
* 开启线程数
*/
private
int
threadNum
=
8
;
/**
* 是否上传文件重命名;
*/
private
boolean
renameUploaded
=
false
;
/**
* 重试次数
*/
private
int
retryTimes
=
3
;
private
boolean
ipv4
=
false
;
}
nafmii-common/src/main/java/org/nafmii/common/ftp/FTPClientFactory.java
0 → 100644
View file @
c6cebdb
package
org
.
nafmii
.
common
.
ftp
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.net.ftp.FTPClient
;
import
org.apache.commons.net.ftp.FTPReply
;
import
org.nafmii.common.exception.BusinessException
;
import
javax.annotation.Resource
;
import
java.io.IOException
;
/**
* FTPClient工厂类,通过FTPClient工厂提供FTPClient实例的创建和销毁
* @author by zhangbr
* @date 2020/7/24.
*/
@Slf4j
public
class
FTPClientFactory
{
private
FTPClientConfigure
config
;
public
FTPClientFactory
(
FTPClientConfigure
config
){
this
.
config
=
config
;
}
/**
* 新建对象
*/
public
FTPClient
create
()
{
FTPClient
ftpClient
=
new
FTPClient
();
ftpClient
.
setConnectTimeout
(
config
.
getConnectTimeOut
());
try
{
log
.
info
(
"======连接ftp服务器:"
+
config
.
getHost
()
+
":"
+
config
.
getPort
()
+
"======"
);
ftpClient
.
connect
(
config
.
getHost
(),
config
.
getPort
());
int
reply
=
ftpClient
.
getReplyCode
();
if
(!
FTPReply
.
isPositiveCompletion
(
reply
))
{
ftpClient
.
disconnect
();
log
.
info
(
"======FTPServer连接被拒绝======"
);
return
null
;
}
boolean
result
=
ftpClient
.
login
(
config
.
getUsername
(),
config
.
getPassword
());
if
(!
result
)
{
throw
new
BusinessException
(-
100
,
"ftpClient登陆失败"
);
}
ftpClient
.
setControlEncoding
(
config
.
getControlEncoding
());
ftpClient
.
setBufferSize
(
config
.
getBufferSize
());
ftpClient
.
setFileType
(
config
.
getTransferFileType
());
ftpClient
.
setDataTimeout
(
config
.
getDataTimeout
());
ftpClient
.
setUseEPSVwithIPv4
(
config
.
isIpv4
());
if
(
config
.
isPassiveMode
())
{
ftpClient
.
enterLocalPassiveMode
();
}
}
catch
(
IOException
e
)
{
log
.
info
(
"FTP连接失败:"
,
e
.
getMessage
());
throw
new
BusinessException
(-
100
,
"FTP服务器连接失败"
);
}
return
ftpClient
;
}
}
\ No newline at end of file
nafmii-common/src/main/java/org/nafmii/common/ftp/FTPClientHelper.java
0 → 100644
View file @
c6cebdb
This diff is collapsed.
Click to expand it.
nafmii-common/src/main/java/org/nafmii/common/ftp/FileDownLoadForm.java
0 → 100644
View file @
c6cebdb
package
org
.
nafmii
.
common
.
ftp
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
org.jasypt.exceptions.EncryptionOperationNotPossibleException
;
import
org.nafmii.common.config.EncryptConfig
;
import
org.nafmii.common.constant.MessageEnum
;
import
org.nafmii.common.exception.BusinessException
;
import
org.springframework.util.StringUtils
;
import
javax.validation.constraints.NotEmpty
;
import
java.io.File
;
/**
* @author by zhangbr
* @date 2020/7/25
*/
@Slf4j
@Data
public
class
FileDownLoadForm
{
@ApiModelProperty
(
"附件ID"
)
@NotEmpty
(
message
=
"附件ID不能为空"
)
private
String
fileId
;
public
String
encodeFileId
()
{
if
(!
StringUtils
.
isEmpty
(
fileId
)){
try
{
return
EncryptConfig
.
decrypt
(
fileId
);
}
catch
(
EncryptionOperationNotPossibleException
e
)
{
log
.
info
(
"======文件ID解码失败======"
);
throw
new
BusinessException
(
MessageEnum
.
FILE_DOWN_FAIL
.
getCode
(),
MessageEnum
.
FILE_DOWN_FAIL
.
getRemarks
());
}
}
return
null
;
}
public
String
encodeFileName
(){
if
(!
StringUtils
.
isEmpty
(
fileId
)){
try
{
String
filePath
=
EncryptConfig
.
decrypt
(
fileId
);
if
(!
StringUtils
.
isEmpty
(
filePath
)){
String
fileName
=
filePath
;
if
(
filePath
.
lastIndexOf
(
File
.
separator
)
>=
0
){
fileName
=
filePath
.
substring
(
filePath
.
lastIndexOf
(
File
.
separator
)
+
1
);
}
return
fileName
;
}
}
catch
(
EncryptionOperationNotPossibleException
e
)
{
log
.
info
(
"======文件名称解码失败======"
);
throw
new
BusinessException
(
MessageEnum
.
FILE_DOWN_FAIL
.
getCode
(),
MessageEnum
.
FILE_DOWN_FAIL
.
getRemarks
());
}
}
return
null
;
}
}
nafmii-common/src/main/java/org/nafmii/common/ftp/FileVO.java
0 → 100644
View file @
c6cebdb
package
org
.
nafmii
.
common
.
ftp
;
import
io.swagger.annotations.ApiModelProperty
;
import
org.nafmii.common.config.EncryptConfig
;
import
org.springframework.util.StringUtils
;
/**
* @author by zhangbr
* @date 2020/7/25
*/
public
class
FileVO
{
public
FileVO
(
String
fileId
,
String
fileName
)
{
if
(!
StringUtils
.
isEmpty
(
fileId
)){
this
.
fileId
=
EncryptConfig
.
encrypt
(
fileId
);
}
this
.
fileName
=
fileName
;
}
@ApiModelProperty
(
"附件ID"
)
private
String
fileId
;
@ApiModelProperty
(
"附件名称"
)
private
String
fileName
;
public
String
getFileId
()
{
return
fileId
;
}
public
void
setFileId
(
String
fileId
)
{
if
(!
StringUtils
.
isEmpty
(
fileId
)){
this
.
fileId
=
EncryptConfig
.
encrypt
(
fileId
);
}
}
public
String
getFileName
()
{
return
fileName
;
}
public
void
setFileName
(
String
fileName
)
{
this
.
fileName
=
fileName
;
}
@Override
public
String
toString
()
{
return
"FileVO{"
+
"fileId='"
+
fileId
+
'\''
+
'}'
;
}
}
nafmii-common/src/main/java/org/nafmii/common/utils/FtpUtil.java
View file @
c6cebdb
This diff is collapsed.
Click to expand it.
nafmii-common/src/main/resources/META-INF/spring.factories
0 → 100644
View file @
c6cebdb
org.springframework.boot.autoconfigure.EnableAutoConfiguration = \
org.nafmii.common.config.RedisConfig,\
org.nafmii.common.utils.SpringUtils,\
org.nafmii.common.config.JsonSerializerConfig,\
org.nafmii.common.exception.BusinessExceptionHandler,\
org.nafmii.common.config.EncryptConfig
\ No newline at end of file
nafmii-common/src/main/resources/application.properties
deleted
100644 → 0
View file @
ed7ce71
#ftp地址-ftp请求。
ftp.host
=
127.0.0.1
#ftp端口号
ftp.port
=
21
#ftp请求的用户名
ftp.username
=
ftpUser2
#ftp请求的密码
ftp.password
=
ftpUser2
#ftp请求读取写入的文件路径
ftp.filepath
=
/data/ftp
\ No newline at end of file
Write
Preview
Markdown
is supported
Attach a file
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 post a comment