Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
smart_gov_platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
smart_gov_platform
Commits
ba919266
Commit
ba919266
authored
Feb 01, 2023
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加服务检测拉起脚本
parent
16e2df0a
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
233 additions
and
4 deletions
+233
-4
base-manager/src/main/java/com/mortals/xhx/module/app/service/impl/AppServiceImpl.java
...m/mortals/xhx/module/app/service/impl/AppServiceImpl.java
+16
-2
base-manager/src/main/java/com/mortals/xhx/module/app/service/impl/AppVersionServiceImpl.java
...ls/xhx/module/app/service/impl/AppVersionServiceImpl.java
+9
-1
base-manager/src/main/java/com/mortals/xhx/module/site/service/impl/SiteServiceImpl.java
...mortals/xhx/module/site/service/impl/SiteServiceImpl.java
+1
-0
base-manager/src/main/java/com/mortals/xhx/module/workman/service/impl/WorkmanServiceImpl.java
...s/xhx/module/workman/service/impl/WorkmanServiceImpl.java
+8
-1
common-lib/src/main/java/com/mortals/xhx/utils/EncodeUtil.java
...n-lib/src/main/java/com/mortals/xhx/utils/EncodeUtil.java
+199
-0
No files found.
base-manager/src/main/java/com/mortals/xhx/module/app/service/impl/AppServiceImpl.java
View file @
ba919266
...
...
@@ -23,6 +23,7 @@ import com.mortals.xhx.module.app.model.*;
import
com.mortals.xhx.module.app.service.*
;
import
com.mortals.xhx.module.site.model.SiteEntity
;
import
com.mortals.xhx.module.site.service.SiteService
;
import
com.mortals.xhx.utils.EncodeUtil
;
import
com.mortals.xhx.version.model.VersionEntity
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -34,6 +35,7 @@ import com.mortals.xhx.module.app.dao.AppDao;
import
org.springframework.util.ObjectUtils
;
import
java.io.File
;
import
java.nio.charset.Charset
;
import
java.util.*
;
import
java.util.stream.Collectors
;
...
...
@@ -130,7 +132,13 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
FileUtil
.
del
(
disPath
);
}
//ZipUtils.unzip(new File(targetFilePath), disPath);
ZipUtil
.
unzip
(
targetFilePath
,
disPath
);
String
fileEncode
=
"UTF-8"
;
try
{
fileEncode
=
EncodeUtil
.
getEncode
(
targetFilePath
,
true
);
}
catch
(
Exception
e
)
{
log
.
error
(
"异常"
,
e
);
}
ZipUtil
.
unzip
(
targetFilePath
,
disPath
,
Charset
.
forName
(
fileEncode
));
//更新
appEntity
.
setDistributeFilePath
(
disPath
);
appEntity
.
setDistribute
(
YesNoEnum
.
YES
.
getValue
());
...
...
@@ -158,7 +166,13 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
FileUtil
.
del
(
disPath
);
}
// ZipUtils.unzip(new File(targetFilePath), disPath);
ZipUtil
.
unzip
(
targetFilePath
,
disPath
);
String
fileEncode
=
"UTF-8"
;
try
{
fileEncode
=
EncodeUtil
.
getEncode
(
targetFilePath
,
true
);
}
catch
(
Exception
e
)
{
log
.
error
(
"异常"
,
e
);
}
ZipUtil
.
unzip
(
targetFilePath
,
disPath
,
Charset
.
forName
(
fileEncode
));
return
Rest
.
ok
(
"基础应用部署成功!"
);
}
...
...
base-manager/src/main/java/com/mortals/xhx/module/app/service/impl/AppVersionServiceImpl.java
View file @
ba919266
...
...
@@ -14,6 +14,7 @@ import com.mortals.xhx.module.app.model.AppVersionQuery;
import
com.mortals.xhx.module.app.service.AppService
;
import
com.mortals.xhx.module.site.model.SiteEntity
;
import
com.mortals.xhx.module.site.service.SiteService
;
import
com.mortals.xhx.utils.EncodeUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
...
...
@@ -23,6 +24,7 @@ import com.mortals.xhx.module.app.model.AppVersionEntity;
import
com.mortals.xhx.module.app.service.AppVersionService
;
import
java.io.File
;
import
java.nio.charset.Charset
;
import
java.util.Date
;
...
...
@@ -71,8 +73,14 @@ public class AppVersionServiceImpl extends AbstractCRUDServiceImpl<AppVersionDao
if
(
FileUtil
.
isDirectory
(
disPath
))
{
FileUtil
.
del
(
disPath
);
}
String
fileEncode
=
"UTF-8"
;
try
{
fileEncode
=
EncodeUtil
.
getEncode
(
targetFilePath
,
true
);
}
catch
(
Exception
e
)
{
log
.
error
(
"异常"
,
e
);
}
// ZipUtils.unzip(new File(targetFilePath), disPath);
ZipUtil
.
unzip
(
targetFilePath
,
disPath
);
ZipUtil
.
unzip
(
targetFilePath
,
disPath
,
Charset
.
forName
(
fileEncode
)
);
return
disPath
;
}
...
...
base-manager/src/main/java/com/mortals/xhx/module/site/service/impl/SiteServiceImpl.java
View file @
ba919266
...
...
@@ -2,6 +2,7 @@ package com.mortals.xhx.module.site.service.impl;
import
cn.hutool.core.collection.ListUtil
;
import
cn.hutool.core.util.URLUtil
;
import
cn.hutool.core.util.ZipUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.mortals.framework.ap.GlobalSysInfo
;
import
com.mortals.framework.common.Rest
;
...
...
base-manager/src/main/java/com/mortals/xhx/module/workman/service/impl/WorkmanServiceImpl.java
View file @
ba919266
...
...
@@ -15,6 +15,7 @@ import com.mortals.xhx.module.workman.dao.WorkmanDao;
import
com.mortals.xhx.module.workman.model.WorkmanEntity
;
import
com.mortals.xhx.module.workman.model.WorkmanQuery
;
import
com.mortals.xhx.module.workman.service.WorkmanService
;
import
com.mortals.xhx.utils.EncodeUtil
;
import
lombok.Getter
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.poi.ss.formula.functions.T
;
...
...
@@ -151,7 +152,13 @@ public class WorkmanServiceImpl extends AbstractCRUDCacheServiceImpl<WorkmanDao,
throw
new
AppException
(
"文件不存在!"
);
}
//解压图片
ZipUtil
.
unzip
(
targetFilePath
,
disPath
,
Charset
.
forName
(
"GBK"
));
String
fileEncode
=
"UTF-8"
;
try
{
fileEncode
=
EncodeUtil
.
getEncode
(
targetFilePath
,
true
);
}
catch
(
Exception
e
)
{
log
.
error
(
"异常"
,
e
);
}
ZipUtil
.
unzip
(
targetFilePath
,
disPath
,
Charset
.
forName
(
fileEncode
));
//读取目录下的所有图片
File
[]
files
=
FileUtil
.
ls
(
disPath
);
for
(
File
file
:
files
)
{
...
...
common-lib/src/main/java/com/mortals/xhx/utils/EncodeUtil.java
0 → 100644
View file @
ba919266
package
com.mortals.xhx.utils
;
import
java.io.BufferedInputStream
;
import
java.io.BufferedReader
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.FileOutputStream
;
import
java.io.InputStreamReader
;
import
java.io.OutputStreamWriter
;
import
java.io.Writer
;
import
java.util.BitSet
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
/**
* @author 自动识别文件编码格式
*/
public
class
EncodeUtil
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
EncodeUtil
.
class
);
private
static
int
BYTE_SIZE
=
8
;
public
static
String
CODE_UTF8
=
"UTF-8"
;
public
static
String
CODE_UTF8_BOM
=
"UTF-8_BOM"
;
public
static
String
CODE_GBK
=
"GBK"
;
/**
* 通过文件全名称获取编码集名称
*
* @param fullFileName
* @param ignoreBom
* @return
* @throws Exception
*/
public
static
String
getEncode
(
String
fullFileName
,
boolean
ignoreBom
)
throws
Exception
{
logger
.
debug
(
"fullFileName ; {}"
,
fullFileName
);
BufferedInputStream
bis
=
new
BufferedInputStream
(
new
FileInputStream
(
fullFileName
));
return
getEncode
(
bis
,
ignoreBom
);
}
/**
* 通过文件缓存流获取编码集名称,文件流必须为未曾
*
* @param bis
* @param ignoreBom 是否忽略utf-8 bom
* @return
* @throws Exception
*/
public
static
String
getEncode
(
BufferedInputStream
bis
,
boolean
ignoreBom
)
throws
Exception
{
bis
.
mark
(
0
);
String
encodeType
=
"未识别"
;
byte
[]
head
=
new
byte
[
3
];
bis
.
read
(
head
);
if
(
head
[
0
]
==
-
1
&&
head
[
1
]
==
-
2
)
{
encodeType
=
"UTF-16"
;
}
else
if
(
head
[
0
]
==
-
2
&&
head
[
1
]
==
-
1
)
{
encodeType
=
"Unicode"
;
}
else
if
(
head
[
0
]
==
-
17
&&
head
[
1
]
==
-
69
&&
head
[
2
]
==
-
65
)
{
//带BOM
if
(
ignoreBom
)
{
encodeType
=
CODE_UTF8
;
}
else
{
encodeType
=
CODE_UTF8_BOM
;
}
}
else
if
(
"Unicode"
.
equals
(
encodeType
))
{
encodeType
=
"UTF-16"
;
}
else
if
(
isUTF8
(
bis
))
{
encodeType
=
CODE_UTF8
;
}
else
{
encodeType
=
CODE_GBK
;
}
logger
.
info
(
"result encode type : "
+
encodeType
);
return
encodeType
;
}
/**
* 是否是无BOM的UTF8格式,不判断常规场景,只区分无BOM UTF8和GBK
*
* @param bis
* @return
*/
private
static
boolean
isUTF8
(
BufferedInputStream
bis
)
throws
Exception
{
bis
.
reset
();
//读取第一个字节
int
code
=
bis
.
read
();
do
{
BitSet
bitSet
=
convert2BitSet
(
code
);
//判断是否为单字节
if
(
bitSet
.
get
(
0
))
{
//多字节时,再读取N个字节
if
(!
checkMultiByte
(
bis
,
bitSet
))
{
//未检测通过,直接返回
return
false
;
}
}
else
{
//单字节时什么都不用做,再次读取字节
}
code
=
bis
.
read
();
}
while
(
code
!=
-
1
);
return
true
;
}
/**
* 检测多字节,判断是否为utf8,已经读取了一个字节
*
* @param bis
* @param bitSet
* @return
*/
private
static
boolean
checkMultiByte
(
BufferedInputStream
bis
,
BitSet
bitSet
)
throws
Exception
{
int
count
=
getCountOfSequential
(
bitSet
);
byte
[]
bytes
=
new
byte
[
count
-
1
];
//已经读取了一个字节,不能再读取
bis
.
read
(
bytes
);
for
(
byte
b
:
bytes
)
{
if
(!
checkUtf8Byte
(
b
))
{
return
false
;
}
}
return
true
;
}
/**
* 检测单字节,判断是否为utf8
*
* @param b
* @return
*/
private
static
boolean
checkUtf8Byte
(
byte
b
)
throws
Exception
{
BitSet
bitSet
=
convert2BitSet
(
b
);
return
bitSet
.
get
(
0
)
&&
!
bitSet
.
get
(
1
);
}
/**
* 检测bitSet中从开始有多少个连续的1
*
* @param bitSet
* @return
*/
private
static
int
getCountOfSequential
(
BitSet
bitSet
)
{
int
count
=
0
;
for
(
int
i
=
0
;
i
<
BYTE_SIZE
;
i
++)
{
if
(
bitSet
.
get
(
i
))
{
count
++;
}
else
{
break
;
}
}
return
count
;
}
/**
* 将整形转为BitSet
*
* @param code
* @return
*/
private
static
BitSet
convert2BitSet
(
int
code
)
{
BitSet
bitSet
=
new
BitSet
(
BYTE_SIZE
);
for
(
int
i
=
0
;
i
<
BYTE_SIZE
;
i
++)
{
int
tmp3
=
code
>>
(
BYTE_SIZE
-
i
-
1
);
int
tmp2
=
0x1
&
tmp3
;
if
(
tmp2
==
1
)
{
bitSet
.
set
(
i
);
}
}
return
bitSet
;
}
/**
* 将一指定编码的文件转换为另一编码的文件
*
* @param oldFullFileName
* @param oldCharsetName
* @param newFullFileName
* @param newCharsetName
*/
public
static
void
convert
(
String
oldFullFileName
,
String
oldCharsetName
,
String
newFullFileName
,
String
newCharsetName
)
throws
Exception
{
logger
.
info
(
"the old file name is : {}, The oldCharsetName is : {}"
,
oldFullFileName
,
oldCharsetName
);
logger
.
info
(
"the new file name is : {}, The newCharsetName is : {}"
,
newFullFileName
,
newCharsetName
);
StringBuffer
content
=
new
StringBuffer
();
BufferedReader
bin
=
new
BufferedReader
(
new
InputStreamReader
(
new
FileInputStream
(
oldFullFileName
),
oldCharsetName
));
String
line
;
while
((
line
=
bin
.
readLine
())
!=
null
)
{
content
.
append
(
line
);
content
.
append
(
System
.
getProperty
(
"line.separator"
));
}
newFullFileName
=
newFullFileName
.
replace
(
"\\"
,
"/"
);
File
dir
=
new
File
(
newFullFileName
.
substring
(
0
,
newFullFileName
.
lastIndexOf
(
"/"
)));
if
(!
dir
.
exists
())
{
dir
.
mkdirs
();
}
Writer
out
=
new
OutputStreamWriter
(
new
FileOutputStream
(
newFullFileName
),
newCharsetName
);
out
.
write
(
content
.
toString
());
}
}
Write
Preview
Markdown
is supported
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