Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
C
chnmuseum-party
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liqin
chnmuseum-party
Commits
f7d53dcb
Commit
f7d53dcb
authored
Apr 23, 2021
by
liqin
💬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bug fixed
parent
13a3dcb0
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
82 additions
and
804 deletions
+82
-804
chnmuseum-party.zip
chnmuseum-party.zip
+0
-0
AssetTmp.java
src/main/java/cn/chnmuseum/party/model/AssetTmp.java
+0
-102
ExhibitionBoard.java
src/main/java/cn/chnmuseum/party/model/ExhibitionBoard.java
+0
-8
ExhibitionBoardTmp.java
...ain/java/cn/chnmuseum/party/model/ExhibitionBoardTmp.java
+0
-40
LearningContentTmp.java
...ain/java/cn/chnmuseum/party/model/LearningContentTmp.java
+0
-40
VideoContentTmp.java
src/main/java/cn/chnmuseum/party/model/VideoContentTmp.java
+0
-40
ExhibitionBoardController.java
...useum/party/web/controller/ExhibitionBoardController.java
+78
-66
FileUploadController.java
.../chnmuseum/party/web/controller/FileUploadController.java
+0
-453
LearningContentController.java
...useum/party/web/controller/LearningContentController.java
+4
-55
No files found.
chnmuseum-party.zip
0 → 100644
View file @
f7d53dcb
File added
src/main/java/cn/chnmuseum/party/model/AssetTmp.java
deleted
100644 → 0
View file @
13a3dcb0
package
cn
.
chnmuseum
.
party
.
model
;
import
cn.chnmuseum.party.common.validator.groups.Add
;
import
cn.chnmuseum.party.common.validator.groups.Update
;
import
com.baomidou.mybatisplus.annotation.*
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.*
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
/**
* <p>
* 文件资产临时
* </p>
*
* @author Danny Lee
* @since 2021-04-18
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
false
)
@TableName
(
"asset_tmp"
)
@ApiModel
(
value
=
"文件资产临时"
,
description
=
"文件资产临时"
)
public
class
AssetTmp
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"文件资产ID"
)
@TableId
(
value
=
"id"
,
type
=
IdType
.
ASSIGN_ID
)
@NotNull
(
message
=
"文件资产ID不能为空"
,
groups
=
{
Add
.
class
,
Update
.
class
})
private
String
id
;
@ApiModelProperty
(
"所属项ID"
)
@TableField
(
"ref_item_id"
)
private
String
refItemId
;
@ApiModelProperty
(
"原始文件名"
)
@TableField
(
"file_name"
)
private
String
fileName
;
@ApiModelProperty
(
"加密后文件名"
)
@TableField
(
"file_name_crypto"
)
private
String
fileNameCrypto
;
@ApiModelProperty
(
"扩展名"
)
@TableField
(
"file_ext_name"
)
private
String
fileExtName
;
@ApiModelProperty
(
"文件类型"
)
@TableField
(
"file_type"
)
private
String
fileType
;
@ApiModelProperty
(
"文件分类"
)
@TableField
(
"file_cat"
)
private
String
fileCat
;
@ApiModelProperty
(
"文件大小(B)"
)
@TableField
(
"file_size"
)
private
Long
fileSize
;
@ApiModelProperty
(
"下载链接"
)
@TableField
(
"file_url"
)
private
String
fileUrl
;
@ApiModelProperty
(
"加密链接"
)
@TableField
(
"file_url_crypto"
)
private
String
fileUrlCrypto
;
@ApiModelProperty
(
"视频缩略图"
)
@TableField
(
"thumbnail"
)
private
String
thumbnail
;
@ApiModelProperty
(
"语言"
)
@TableField
(
"language"
)
private
String
language
;
@ApiModelProperty
(
"MD5"
)
@TableField
(
"md5"
)
private
String
md5
;
@TableField
(
"crc32"
)
private
Long
crc32
;
@TableField
(
"video_content_name"
)
private
String
videoContentName
;
@ApiModelProperty
(
"创建日期"
)
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
private
LocalDateTime
createTime
;
@ApiModelProperty
(
"修改日期"
)
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
private
LocalDateTime
updateTime
;
}
src/main/java/cn/chnmuseum/party/model/ExhibitionBoard.java
View file @
f7d53dcb
...
...
@@ -158,18 +158,10 @@ public class ExhibitionBoard implements Serializable {
@TableField
(
exist
=
false
)
private
List
<
Asset
>
audioList
;
@ApiModelProperty
(
"展板视频(审核详情使用)"
)
@TableField
(
exist
=
false
)
private
List
<
AssetTmp
>
audioTmpList
;
@ApiModelProperty
(
"参考资料列表"
)
@TableField
(
exist
=
false
)
private
List
<
Asset
>
datumList
;
@ApiModelProperty
(
"参考资料列表(审核详情使用)"
)
@TableField
(
exist
=
false
)
private
List
<
AssetTmp
>
datumTmpList
;
@ApiModelProperty
(
"审核意见记录"
)
@TableField
(
exist
=
false
)
private
List
<
Audit
>
auditHistoryList
;
...
...
src/main/java/cn/chnmuseum/party/model/ExhibitionBoardTmp.java
deleted
100644 → 0
View file @
13a3dcb0
package
cn
.
chnmuseum
.
party
.
model
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.*
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
/**
* <p>
* 展板临时
* </p>
*
* @author Danny Lee
* @since 2021-04-17
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
false
)
@TableName
(
"exhibition_board_tmp"
)
public
class
ExhibitionBoardTmp
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
hidden
=
true
)
@TableId
(
value
=
"id"
,
type
=
IdType
.
INPUT
)
private
String
id
;
@ApiModelProperty
(
hidden
=
true
)
@TableField
(
"data"
)
private
String
data
;
}
src/main/java/cn/chnmuseum/party/model/LearningContentTmp.java
deleted
100644 → 0
View file @
13a3dcb0
package
cn
.
chnmuseum
.
party
.
model
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.*
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
/**
* <p>
* 学习内容临时
* </p>
*
* @author Danny Lee
* @since 2021-04-17
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
false
)
@TableName
(
"learning_content_tmp"
)
public
class
LearningContentTmp
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
hidden
=
true
)
@TableId
(
value
=
"id"
,
type
=
IdType
.
INPUT
)
private
String
id
;
@ApiModelProperty
(
hidden
=
true
)
@TableField
(
"data"
)
private
String
data
;
}
src/main/java/cn/chnmuseum/party/model/VideoContentTmp.java
deleted
100644 → 0
View file @
13a3dcb0
package
cn
.
chnmuseum
.
party
.
model
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.*
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
/**
* <p>
* 视频内容临时
* </p>
*
* @author Danny Lee
* @since 2021-04-17
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
false
)
@TableName
(
"video_content_tmp"
)
public
class
VideoContentTmp
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
hidden
=
true
)
@TableId
(
value
=
"id"
,
type
=
IdType
.
INPUT
)
private
String
id
;
@ApiModelProperty
(
hidden
=
true
)
@TableField
(
"data"
)
private
String
data
;
}
src/main/java/cn/chnmuseum/party/web/controller/ExhibitionBoardController.java
View file @
f7d53dcb
...
...
@@ -10,6 +10,7 @@ import cn.chnmuseum.party.common.vo.GenericPageParam;
import
cn.chnmuseum.party.model.*
;
import
cn.chnmuseum.party.service.*
;
import
cn.chnmuseum.party.web.controller.base.BaseController
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
...
...
@@ -120,66 +121,22 @@ public class ExhibitionBoardController extends BaseController {
@ApiOperation
(
value
=
"修改展板信息"
,
notes
=
"修改展板信息"
)
@MethodLog
(
operModule
=
OperModule
.
DISPLAYCONTENT
,
operType
=
OperType
.
UPDATE
)
public
Map
<
String
,
Object
>
updateExhibitionBoard
(
@Validated
(
value
=
{
Update
.
class
})
ExhibitionBoard
exhibitionBoard
)
{
final
LambdaQueryWrapper
<
ExhibitionBoard
>
lambdaQueryWrapper
=
Wrappers
.<
ExhibitionBoard
>
lambdaQuery
().
eq
(
ExhibitionBoard:
:
getName
,
exhibitionBoard
.
getName
().
trim
());
lambdaQueryWrapper
.
ne
(
ExhibitionBoard:
:
getId
,
exhibitionBoard
.
getId
());
final
int
count
=
this
.
exhibitionBoardService
.
count
(
lambdaQueryWrapper
);
if
(
count
>
0
)
{
return
getFailResult
(
"400"
,
"名称已存在,请修改名称"
);
}
final
ExhibitionBoard
one
=
this
.
exhibitionBoardService
.
getById
(
exhibitionBoard
.
getId
());
one
.
setAuditStatus
(
AuditStatusEnum
.
TBC
.
name
());
this
.
exhibitionBoardService
.
updateById
(
one
);
TUser
user
=
getcurUser
();
final
VideoContent
videoContent
=
this
.
videoContentService
.
getById
(
exhibitionBoard
.
getVideoContentId
());
exhibitionBoard
.
setVideoContentName
(
videoContent
.
getName
());
exhibitionBoard
.
setAuditStatus
(
AuditStatusEnum
.
TBC
.
name
());
boolean
flag
=
exhibitionBoardService
.
updateById
(
exhibitionBoard
);
if
(
flag
)
{
final
List
<
String
>
audioIdList
=
exhibitionBoard
.
getAudioIdList
();
if
(
audioIdList
!=
null
&&
!
audioIdList
.
isEmpty
())
{
final
LambdaQueryWrapper
<
Asset
>
assetQueryWrapper
=
Wrappers
.<
Asset
>
lambdaQuery
().
eq
(
Asset:
:
getRefItemId
,
exhibitionBoard
.
getId
());
assetQueryWrapper
.
eq
(
Asset:
:
getFileCat
,
FileCatEnum
.
EXHIBITION_BOARD_AUDIO
.
name
());
final
List
<
Asset
>
assetList
=
this
.
assetService
.
list
(
assetQueryWrapper
);
final
Map
<
String
,
String
>
collect
=
assetList
.
stream
().
collect
(
Collectors
.
toMap
(
Asset:
:
getId
,
Asset:
:
getFileUrl
));
for
(
String
audioId
:
audioIdList
)
{
final
Asset
asset
=
this
.
assetService
.
getById
(
audioId
);
asset
.
setFileType
(
FileTypeEnum
.
AUDIO
.
name
());
asset
.
setFileCat
(
FileCatEnum
.
EXHIBITION_BOARD_AUDIO
.
name
());
asset
.
setRefItemId
(
exhibitionBoard
.
getId
());
this
.
assetService
.
updateById
(
asset
);
collect
.
remove
(
audioId
);
}
collect
.
forEach
((
k
,
v
)
->
this
.
assetService
.
removeById
(
k
));
}
final
List
<
String
>
datumIdList
=
exhibitionBoard
.
getDatumIdList
();
if
(
datumIdList
!=
null
&&
!
datumIdList
.
isEmpty
())
{
final
LambdaQueryWrapper
<
Asset
>
assetQueryWrapper
=
Wrappers
.<
Asset
>
lambdaQuery
().
eq
(
Asset:
:
getRefItemId
,
exhibitionBoard
.
getId
());
assetQueryWrapper
.
eq
(
Asset:
:
getFileCat
,
FileCatEnum
.
EXHIBITION_BOARD_DATUM
.
name
());
final
List
<
Asset
>
assetList
=
this
.
assetService
.
list
(
assetQueryWrapper
);
final
Map
<
String
,
String
>
collect
=
assetList
.
stream
().
collect
(
Collectors
.
toMap
(
Asset:
:
getId
,
Asset:
:
getFileUrl
));
for
(
String
datumId
:
datumIdList
)
{
final
Asset
asset
=
this
.
assetService
.
getById
(
datumId
);
asset
.
setFileCat
(
FileCatEnum
.
EXHIBITION_BOARD_DATUM
.
name
());
asset
.
setRefItemId
(
exhibitionBoard
.
getId
());
this
.
assetService
.
updateById
(
asset
);
collect
.
remove
(
datumId
);
}
collect
.
forEach
((
k
,
v
)
->
this
.
assetService
.
removeById
(
k
));
}
final
Audit
audit
=
Audit
.
builder
()
.
content
(
exhibitionBoard
.
getName
())
.
name
(
exhibitionBoard
.
getName
())
.
refItemId
(
exhibitionBoard
.
getId
())
.
userId
(
user
.
getId
())
.
type
(
AuditTypeEnum
.
EXHIBITION_BOARD
.
name
())
.
operation
(
AuditOperationEnum
.
EDIT
.
name
())
.
status
(
AuditStatusEnum
.
TBC
.
name
())
.
level
(
AuditStatusEnum
.
TBC
.
name
())
.
build
();
this
.
auditService
.
save
(
audit
);
return
getSuccessResult
();
}
return
getFailResult
();
final
Audit
audit
=
Audit
.
builder
()
.
content
(
exhibitionBoard
.
getName
())
.
refItemId
(
exhibitionBoard
.
getId
())
.
userId
(
getcurUser
().
getId
())
.
type
(
AuditTypeEnum
.
EXHIBITION_BOARD
.
name
())
.
operation
(
AuditOperationEnum
.
EDIT
.
name
())
.
status
(
AuditStatusEnum
.
TBC
.
name
())
.
level
(
AuditStatusEnum
.
TBC
.
name
())
.
modelData
(
JSONObject
.
toJSONString
(
exhibitionBoard
))
.
build
();
this
.
auditService
.
save
(
audit
);
return
getSuccessResult
();
}
@PostMapping
(
"/getList"
)
...
...
@@ -362,7 +319,60 @@ public class ExhibitionBoardController extends BaseController {
exhibitionBoard
.
setDatumList
(
datumList
);
exhibitionBoard
.
setDatumIdList
(
datumList
.
stream
().
map
(
Asset:
:
getId
).
collect
(
Collectors
.
toList
()));
final
LambdaQueryWrapper
<
Audit
>
auditQueryWrapper
=
Wrappers
.<
Audit
>
lambdaQuery
().
eq
(
Audit:
:
getRefItemId
,
id
);
final
String
videoContentId
=
exhibitionBoard
.
getVideoContentId
();
if
(
videoContentId
!=
null
)
{
final
VideoContent
videoContent
=
this
.
videoContentService
.
getById
(
videoContentId
);
exhibitionBoard
.
setVideoContentName
(
videoContent
.
getName
());
assetQueryWrapper
.
clear
();
assetQueryWrapper
=
Wrappers
.<
Asset
>
lambdaQuery
().
eq
(
Asset:
:
getRefItemId
,
videoContentId
);
assetQueryWrapper
.
eq
(
Asset:
:
getFileCat
,
FileCatEnum
.
VIDEO_CONTENT
.
name
());
final
List
<
Asset
>
videoList
=
this
.
assetService
.
list
(
assetQueryWrapper
);
exhibitionBoard
.
setVideoList
(
videoList
);
}
return
getResult
(
exhibitionBoard
);
}
@ApiOperation
(
value
=
"获取展板详情(审核详情使用)"
,
notes
=
"获取展板详情(审核详情使用)"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"id"
,
value
=
"审核ID"
,
dataType
=
"String"
,
paramType
=
"path"
,
required
=
true
)
})
@GetMapping
(
"/getAudit/{id}"
)
@RequiresAuthentication
//@RequiresPermissions("video:content:get:id")
@MethodLog
(
operModule
=
OperModule
.
DISPLAYCONTENT
,
operType
=
OperType
.
SELECT
)
public
Map
<
String
,
Object
>
getAuditInfoById
(
@PathVariable
(
"auditId"
)
String
auditId
)
{
final
ExhibitionBoard
exhibitionBoard
=
JSONObject
.
parseObject
(
this
.
auditService
.
getById
(
auditId
).
getModelData
(),
ExhibitionBoard
.
class
);
String
exhibitionBoardCatId
=
exhibitionBoard
.
getExhibitionBoardCatId
();
if
(
exhibitionBoardCatId
!=
null
)
{
exhibitionBoard
.
setExhibitionBoardCatName
(
this
.
exhibitionBoardCatService
.
getById
(
exhibitionBoardCatId
).
getName
());
}
String
boardCopyrightOwnerId
=
exhibitionBoard
.
getBoardCopyrightOwnerId
();
if
(
boardCopyrightOwnerId
!=
null
)
{
exhibitionBoard
.
setBoardCopyrightOwnerName
(
this
.
copyrightOwnerService
.
getById
(
boardCopyrightOwnerId
).
getName
());
}
if
(
exhibitionBoard
.
getVideoContentCopyrightOwnerId
()
!=
null
)
{
String
name
=
this
.
copyrightOwnerService
.
getById
(
exhibitionBoard
.
getVideoContentCopyrightOwnerId
()).
getName
();
exhibitionBoard
.
setVideoContentCopyrightOwnerName
(
name
);
}
LambdaQueryWrapper
<
Asset
>
assetQueryWrapper
=
Wrappers
.<
Asset
>
lambdaQuery
().
eq
(
Asset:
:
getRefItemId
,
exhibitionBoard
.
getId
());
assetQueryWrapper
.
eq
(
Asset:
:
getFileCat
,
FileCatEnum
.
EXHIBITION_BOARD_AUDIO
.
name
());
final
List
<
Asset
>
audioList
=
this
.
assetService
.
list
(
assetQueryWrapper
);
if
(
audioList
!=
null
&&
!
audioList
.
isEmpty
())
{
exhibitionBoard
.
setAudioList
(
audioList
);
exhibitionBoard
.
setAudioIdList
(
audioList
.
stream
().
map
(
Asset:
:
getId
).
collect
(
Collectors
.
toList
()));
}
assetQueryWrapper
.
clear
();
assetQueryWrapper
=
Wrappers
.<
Asset
>
lambdaQuery
().
eq
(
Asset:
:
getRefItemId
,
exhibitionBoard
.
getId
());
assetQueryWrapper
.
eq
(
Asset:
:
getFileCat
,
FileCatEnum
.
EXHIBITION_BOARD_DATUM
.
name
());
final
List
<
Asset
>
datumList
=
this
.
assetService
.
list
(
assetQueryWrapper
);
if
(
datumList
!=
null
&&
!
datumList
.
isEmpty
())
{
exhibitionBoard
.
setDatumList
(
datumList
);
exhibitionBoard
.
setDatumIdList
(
datumList
.
stream
().
map
(
Asset:
:
getId
).
collect
(
Collectors
.
toList
()));
}
final
LambdaQueryWrapper
<
Audit
>
auditQueryWrapper
=
Wrappers
.<
Audit
>
lambdaQuery
().
eq
(
Audit:
:
getRefItemId
,
exhibitionBoard
.
getId
());
auditQueryWrapper
.
select
(
Audit:
:
getContent
);
auditQueryWrapper
.
select
(
Audit:
:
getType
);
auditQueryWrapper
.
select
(
Audit:
:
getOperation
);
...
...
@@ -378,12 +388,14 @@ public class ExhibitionBoardController extends BaseController {
final
String
videoContentId
=
exhibitionBoard
.
getVideoContentId
();
if
(
videoContentId
!=
null
)
{
final
VideoContent
videoContent
=
this
.
videoContentService
.
getById
(
videoContentId
);
exhibitionBoard
.
setVideoContentName
(
videoContent
.
getName
());
assetQueryWrapper
.
clear
();
assetQueryWrapper
=
Wrappers
.<
Asset
>
lambdaQuery
().
eq
(
Asset:
:
getRefItemId
,
videoContentId
);
assetQueryWrapper
.
eq
(
Asset:
:
getFileCat
,
FileCatEnum
.
VIDEO_CONTENT
.
name
());
final
List
<
Asset
>
videoList
=
this
.
assetService
.
list
(
assetQueryWrapper
);
if
(
videoContent
!=
null
)
{
exhibitionBoard
.
setVideoContentName
(
videoContent
.
getName
());
}
else
{
exhibitionBoard
.
setVideoContentName
(
"相关视频内容已被删除"
);
}
final
LambdaQueryWrapper
<
Asset
>
lambdaQueryWrapper
=
Wrappers
.<
Asset
>
lambdaQuery
().
eq
(
Asset:
:
getRefItemId
,
videoContentId
);
lambdaQueryWrapper
.
eq
(
Asset:
:
getFileCat
,
FileCatEnum
.
VIDEO_CONTENT
.
name
());
final
List
<
Asset
>
videoList
=
this
.
assetService
.
list
(
lambdaQueryWrapper
);
exhibitionBoard
.
setVideoList
(
videoList
);
}
return
getResult
(
exhibitionBoard
);
...
...
src/main/java/cn/chnmuseum/party/web/controller/FileUploadController.java
View file @
f7d53dcb
...
...
@@ -11,7 +11,6 @@ import cn.chnmuseum.party.common.video.VideoEncryptUtil;
import
cn.chnmuseum.party.common.vo.BatchUploadResVO
;
import
cn.chnmuseum.party.common.vo.ImageUploadResult
;
import
cn.chnmuseum.party.model.Asset
;
import
cn.chnmuseum.party.model.AssetTmp
;
import
cn.chnmuseum.party.service.AssetService
;
import
cn.chnmuseum.party.service.AssetTmpService
;
import
cn.chnmuseum.party.web.controller.base.BaseController
;
...
...
@@ -250,149 +249,6 @@ public class FileUploadController extends BaseController {
return
getResult
(
batchUploadResVO
);
}
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"file"
,
value
=
"资料"
,
paramType
=
"form"
,
dataType
=
"__file"
,
collectionFormat
=
"array"
,
allowMultiple
=
true
)
})
@PostMapping
(
value
=
"/datum/edit/upload"
,
headers
=
"content-type=multipart/form-data"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
)
@ApiOperation
(
value
=
"展板资料上传(修改时使用)"
,
notes
=
"展板资料上传(修改时使用)"
)
public
Map
<
String
,
Object
>
uploadDatumByEdit
(
@RequestPart
(
value
=
"file"
,
required
=
false
)
MultipartFile
[]
files
)
throws
IOException
{
if
(
files
==
null
||
files
.
length
==
0
)
{
return
getFailResult
(
"没有文件可供上传"
);
}
int
successCount
=
0
;
int
failureCount
=
0
;
List
<
BatchUploadResVO
.
HandleResult
>
handleList
=
new
ArrayList
<>();
Set
<
AssetTmp
>
datumUrlList
=
new
LinkedHashSet
<>();
for
(
MultipartFile
file
:
files
)
{
// 当前维度表下线结果
BatchUploadResVO
.
HandleResult
handleResult
=
new
BatchUploadResVO
.
HandleResult
();
// 原始文件名
String
originalFilename
=
file
.
getOriginalFilename
();
if
(
StringUtils
.
isBlank
(
originalFilename
))
{
handleResult
.
setFileName
(
""
);
handleResult
.
setFileUrl
(
""
);
handleResult
.
setHandleResult
(
HANDLE_STATUS_ENUM
.
FAILURE
.
getName
());
handleResult
.
setDescription
(
"文件名为空"
);
failureCount
++;
handleList
.
add
(
handleResult
);
continue
;
}
if
(
file
.
getSize
()
==
0L
)
{
handleResult
.
setFileName
(
""
);
handleResult
.
setFileUrl
(
""
);
handleResult
.
setHandleResult
(
HANDLE_STATUS_ENUM
.
FAILURE
.
getName
());
handleResult
.
setDescription
(
"文件"
+
originalFilename
+
"大小为0"
);
failureCount
++;
handleList
.
add
(
handleResult
);
continue
;
}
String
extName
=
FilenameUtils
.
getExtension
(
originalFilename
);
String
finalExtName
=
extName
;
boolean
anyMatch
=
Arrays
.
stream
(
DATUM_TYPE
).
anyMatch
(
s
->
Objects
.
equals
(
s
,
finalExtName
.
toUpperCase
()));
if
(
anyMatch
)
{
if
(
"MPEG"
.
equals
(
extName
.
toUpperCase
())
||
"MOV"
.
equals
(
extName
.
toUpperCase
()))
{
extName
=
"mp4"
;
originalFilename
=
FilenameUtils
.
getBaseName
(
originalFilename
)
+
"."
+
extName
;
}
final
AssetTmp
asset
=
AssetTmp
.
builder
()
.
fileName
(
originalFilename
)
.
fileExtName
(
extName
)
.
fileCat
(
FileCatEnum
.
EXHIBITION_BOARD_DATUM
.
name
())
.
build
();
String
fileUrl
=
null
;
final
Set
<
MetaData
>
metaDataSet
=
new
HashSet
<>();
metaDataSet
.
add
(
new
MetaData
(
"fileName"
,
originalFilename
));
if
(
Arrays
.
stream
(
VIDEO_TYPE
).
anyMatch
(
s
->
Objects
.
equals
(
s
,
finalExtName
.
toUpperCase
())))
{
metaDataSet
.
add
(
new
MetaData
(
"fileType"
,
FileTypeEnum
.
VIDEO
.
name
()));
handleResult
.
setFileType
(
FileTypeEnum
.
VIDEO
.
name
());
asset
.
setFileType
(
FileTypeEnum
.
VIDEO
.
name
());
fileUrl
=
FastDFSUtils
.
uploadVideo
(
file
.
getInputStream
(),
file
.
getSize
(),
originalFilename
,
metaDataSet
);
final
Set
<
MetaData
>
fileMetaData
=
FastDFSUtils
.
getFileMetaData
(
fileUrl
);
String
md5
=
fileMetaData
.
stream
().
filter
(
x
->
"MD5"
.
equals
(
x
.
getName
())).
map
(
MetaData:
:
getValue
).
findFirst
().
get
();
asset
.
setMd5
(
md5
);
}
else
if
(
Arrays
.
stream
(
AUDIO_TYPE
).
anyMatch
(
s
->
Objects
.
equals
(
s
,
finalExtName
.
toUpperCase
())))
{
metaDataSet
.
add
(
new
MetaData
(
"fileType"
,
FileTypeEnum
.
AUDIO
.
name
()));
handleResult
.
setFileType
(
FileTypeEnum
.
AUDIO
.
name
());
asset
.
setFileType
(
FileTypeEnum
.
AUDIO
.
name
());
fileUrl
=
FastDFSUtils
.
uploadFile
(
file
.
getInputStream
(),
file
.
getSize
(),
originalFilename
,
metaDataSet
);
}
else
if
(
Arrays
.
stream
(
IMAGE_TYPE
).
anyMatch
(
s
->
Objects
.
equals
(
s
,
finalExtName
.
toUpperCase
())))
{
metaDataSet
.
add
(
new
MetaData
(
"fileType"
,
FileTypeEnum
.
IMAGE
.
name
()));
handleResult
.
setFileType
(
FileTypeEnum
.
IMAGE
.
name
());
asset
.
setFileType
(
FileTypeEnum
.
IMAGE
.
name
());
fileUrl
=
FastDFSUtils
.
uploadFile
(
file
.
getInputStream
(),
file
.
getSize
(),
originalFilename
,
metaDataSet
);
asset
.
setThumbnail
(
fileUrl
);
}
else
if
(
Arrays
.
stream
(
DOC_TYPE
).
anyMatch
(
s
->
Objects
.
equals
(
s
,
finalExtName
.
toUpperCase
())))
{
metaDataSet
.
add
(
new
MetaData
(
"fileType"
,
FileTypeEnum
.
DOCUMENT
.
name
()));
handleResult
.
setFileType
(
FileTypeEnum
.
DOCUMENT
.
name
());
asset
.
setFileType
(
FileTypeEnum
.
DOCUMENT
.
name
());
fileUrl
=
FastDFSUtils
.
uploadFile
(
file
.
getInputStream
(),
file
.
getSize
(),
originalFilename
,
metaDataSet
);
}
String
language
=
null
;
if
(
originalFilename
.
contains
(
"汉语"
))
{
metaDataSet
.
add
(
new
MetaData
(
"language"
,
LanguageEnum
.
ZH
.
name
()));
language
=
LanguageEnum
.
ZH
.
name
();
}
else
if
(
originalFilename
.
contains
(
"英语"
))
{
metaDataSet
.
add
(
new
MetaData
(
"language"
,
LanguageEnum
.
EN
.
name
()));
language
=
LanguageEnum
.
EN
.
name
();
}
else
if
(
originalFilename
.
contains
(
"蒙语"
))
{
metaDataSet
.
add
(
new
MetaData
(
"language"
,
LanguageEnum
.
MN
.
name
()));
language
=
LanguageEnum
.
MN
.
name
();
}
else
if
(
originalFilename
.
contains
(
"藏语"
))
{
metaDataSet
.
add
(
new
MetaData
(
"language"
,
LanguageEnum
.
BO
.
name
()));
language
=
LanguageEnum
.
BO
.
name
();
}
else
if
(
originalFilename
.
contains
(
"维吾尔语"
))
{
metaDataSet
.
add
(
new
MetaData
(
"language"
,
LanguageEnum
.
UYG
.
name
()));
language
=
LanguageEnum
.
UYG
.
name
();
}
final
FileInfo
fileInfo
=
FastDFSUtils
.
getFileInfo
(
fileUrl
);
final
int
crc32
=
fileInfo
.
getCrc32
();
final
Asset
one
=
this
.
assetService
.
getOne
(
Wrappers
.<
Asset
>
lambdaQuery
().
eq
(
Asset:
:
getCrc32
,
(
long
)
crc32
).
last
(
" limit 1"
));
final
LocalDateTime
createTime
=
TimeUtils
.
getDateTimeOfTimestamp
(
fileInfo
.
getCreateTime
()
*
1000
);
asset
.
setFileSize
(
fileInfo
.
getFileSize
());
asset
.
setFileUrl
(
fileUrl
);
asset
.
setFileCat
(
FileCatEnum
.
EXHIBITION_BOARD_DATUM
.
name
());
asset
.
setLanguage
(
language
);
asset
.
setCrc32
((
long
)
crc32
);
asset
.
setCreateTime
(
createTime
);
asset
.
setUpdateTime
(
createTime
);
if
(
one
!=
null
)
{
FastDFSUtils
.
deleteFile
(
fileUrl
);
asset
.
setFileUrl
(
one
.
getFileUrl
());
}
this
.
assetTmpService
.
save
(
asset
);
datumUrlList
.
add
(
asset
);
handleResult
.
setFileUrl
(
fileUrl
);
handleResult
.
setFileName
(
originalFilename
);
handleResult
.
setHandleResult
(
HANDLE_STATUS_ENUM
.
SUCCESS
.
getName
());
handleResult
.
setDescription
(
""
);
successCount
++;
}
else
{
handleResult
.
setFileUrl
(
""
);
handleResult
.
setDescription
(
"文件"
+
originalFilename
+
"格式不支持"
);
failureCount
++;
}
// 设置处理的业务表信息
handleList
.
add
(
handleResult
);
}
BatchUploadResVO
batchUploadResVO
=
new
BatchUploadResVO
();
batchUploadResVO
.
setFailureCount
(
failureCount
);
batchUploadResVO
.
setSuccessCount
(
successCount
);
batchUploadResVO
.
setTotal
(
files
.
length
);
batchUploadResVO
.
setHandleList
(
handleList
);
batchUploadResVO
.
setFileTmpList
(
datumUrlList
);
if
(
failureCount
>
0
)
{
return
getFailResult
(
batchUploadResVO
);
}
return
getResult
(
batchUploadResVO
);
}
@PostMapping
(
value
=
"/image/upload"
,
headers
=
"content-type=multipart/form-data"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
)
@RequiresAuthentication
//@RequiresPermissions("file:image:upload")
@ApiOperation
(
value
=
"单图片上传(封面/缩略图)"
,
notes
=
"单图片上传(封面/缩略图)"
)
...
...
@@ -567,128 +423,6 @@ public class FileUploadController extends BaseController {
return
getResult
(
batchUploadResVO
);
}
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"file"
,
value
=
"音频文件"
,
paramType
=
"form"
,
dataType
=
"__file"
,
collectionFormat
=
"array"
,
allowMultiple
=
true
)
})
@PostMapping
(
value
=
"/audio/edit/upload"
,
headers
=
"content-type=multipart/form-data"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
)
@RequiresAuthentication
//@RequiresPermissions("audio:upload")
@ApiOperation
(
value
=
"展板多音频上传(修改时使用)"
,
notes
=
"展板多音频上传(修改时使用)"
)
public
Map
<
String
,
Object
>
uploadAudioByEdit
(
@RequestPart
(
value
=
"file"
,
required
=
false
)
MultipartFile
[]
files
)
throws
IOException
{
if
(
files
==
null
||
files
.
length
==
0
)
{
return
getFailResult
(
"没有文件可供上传"
);
}
final
boolean
existChineseAudio
=
Arrays
.
stream
(
files
).
anyMatch
(
s
->
Objects
.
requireNonNull
(
s
.
getOriginalFilename
()).
contains
(
"汉语"
));
if
(!
existChineseAudio
)
{
return
getFailResult
(
"必须包含汉语音频"
);
}
if
(
files
.
length
>
5
)
{
return
getFailResult
(
"一种语言只能对应一个文件,只能上传包含5种语言的音频"
);
}
int
successCount
=
0
;
int
failureCount
=
0
;
List
<
BatchUploadResVO
.
HandleResult
>
handleList
=
new
ArrayList
<>();
Set
<
AssetTmp
>
fileList
=
new
LinkedHashSet
<>();
for
(
MultipartFile
file
:
files
)
{
// 当前维度表下线结果
BatchUploadResVO
.
HandleResult
handleResult
=
new
BatchUploadResVO
.
HandleResult
();
// 原始文件名
String
originalFilename
=
file
.
getOriginalFilename
();
if
(
StringUtils
.
isBlank
(
originalFilename
))
{
handleResult
.
setFileName
(
""
);
handleResult
.
setFileType
(
FileTypeEnum
.
AUDIO
.
getName
());
handleResult
.
setFileUrl
(
""
);
handleResult
.
setHandleResult
(
HANDLE_STATUS_ENUM
.
FAILURE
.
getName
());
handleResult
.
setDescription
(
"文件名为空"
);
failureCount
++;
handleList
.
add
(
handleResult
);
continue
;
}
if
(
file
.
getSize
()
==
0L
)
{
handleResult
.
setFileName
(
""
);
handleResult
.
setFileUrl
(
""
);
handleResult
.
setHandleResult
(
HANDLE_STATUS_ENUM
.
FAILURE
.
getName
());
handleResult
.
setDescription
(
"文件"
+
originalFilename
+
"大小为0"
);
failureCount
++;
handleList
.
add
(
handleResult
);
continue
;
}
String
extName
=
FilenameUtils
.
getExtension
(
originalFilename
);
boolean
anyMatch
=
Arrays
.
stream
(
AUDIO_TYPE
).
anyMatch
(
s
->
Objects
.
equals
(
s
,
extName
.
toUpperCase
()));
if
(
anyMatch
)
{
String
language
=
null
;
final
Set
<
MetaData
>
metaDataSet
=
new
HashSet
<>();
metaDataSet
.
add
(
new
MetaData
(
"fileName"
,
originalFilename
));
metaDataSet
.
add
(
new
MetaData
(
"fileType"
,
FileTypeEnum
.
AUDIO
.
name
()));
if
(
originalFilename
.
contains
(
"汉语"
))
{
metaDataSet
.
add
(
new
MetaData
(
"language"
,
LanguageEnum
.
ZH
.
name
()));
language
=
LanguageEnum
.
ZH
.
name
();
}
else
if
(
originalFilename
.
contains
(
"英语"
))
{
metaDataSet
.
add
(
new
MetaData
(
"language"
,
LanguageEnum
.
EN
.
name
()));
language
=
LanguageEnum
.
EN
.
name
();
}
else
if
(
originalFilename
.
contains
(
"蒙语"
))
{
metaDataSet
.
add
(
new
MetaData
(
"language"
,
LanguageEnum
.
MN
.
name
()));
language
=
LanguageEnum
.
MN
.
name
();
}
else
if
(
originalFilename
.
contains
(
"藏语"
))
{
metaDataSet
.
add
(
new
MetaData
(
"language"
,
LanguageEnum
.
BO
.
name
()));
language
=
LanguageEnum
.
BO
.
name
();
}
else
if
(
originalFilename
.
contains
(
"维吾尔语"
))
{
metaDataSet
.
add
(
new
MetaData
(
"language"
,
LanguageEnum
.
UYG
.
name
()));
language
=
LanguageEnum
.
UYG
.
name
();
}
String
fileUrl
=
FastDFSUtils
.
uploadFile
(
file
.
getInputStream
(),
file
.
getSize
(),
originalFilename
,
metaDataSet
);
final
FileInfo
fileInfo
=
FastDFSUtils
.
getFileInfo
(
fileUrl
);
final
int
crc32
=
fileInfo
.
getCrc32
();
final
Asset
one
=
this
.
assetService
.
getOne
(
Wrappers
.<
Asset
>
lambdaQuery
().
eq
(
Asset:
:
getCrc32
,
(
long
)
crc32
).
last
(
" limit 1"
));
final
LocalDateTime
createTime
=
TimeUtils
.
getDateTimeOfTimestamp
(
fileInfo
.
getCreateTime
()
*
1000
);
final
long
fileSize
=
fileInfo
.
getFileSize
();
final
AssetTmp
asset
=
AssetTmp
.
builder
()
.
fileName
(
originalFilename
)
.
fileExtName
(
extName
)
.
fileType
(
FileTypeEnum
.
AUDIO
.
name
())
.
fileUrl
(
fileUrl
)
.
fileSize
(
fileSize
)
.
fileCat
(
FileCatEnum
.
EXHIBITION_BOARD_AUDIO
.
name
())
.
language
(
language
)
.
crc32
((
long
)
crc32
)
.
createTime
(
createTime
)
.
updateTime
(
createTime
)
.
build
();
if
(
one
!=
null
)
{
FastDFSUtils
.
deleteFile
(
fileUrl
);
asset
.
setFileUrl
(
one
.
getFileUrl
());
}
this
.
assetTmpService
.
save
(
asset
);
fileList
.
add
(
asset
);
handleResult
.
setFileUrl
(
fileUrl
);
handleResult
.
setFileName
(
originalFilename
);
handleResult
.
setFileType
(
FileTypeEnum
.
AUDIO
.
getName
());
handleResult
.
setHandleResult
(
HANDLE_STATUS_ENUM
.
SUCCESS
.
getName
());
handleResult
.
setDescription
(
""
);
successCount
++;
}
else
{
handleResult
.
setFileUrl
(
""
);
handleResult
.
setFileType
(
FileTypeEnum
.
AUDIO
.
getName
());
handleResult
.
setHandleResult
(
HANDLE_STATUS_ENUM
.
FAILURE
.
getName
());
handleResult
.
setDescription
(
"文件"
+
originalFilename
+
"格式不支持"
);
failureCount
++;
}
// 设置处理的业务表信息
handleList
.
add
(
handleResult
);
}
BatchUploadResVO
batchUploadResVO
=
new
BatchUploadResVO
();
batchUploadResVO
.
setFailureCount
(
failureCount
);
batchUploadResVO
.
setSuccessCount
(
successCount
);
batchUploadResVO
.
setTotal
(
files
.
length
);
batchUploadResVO
.
setHandleList
(
handleList
);
batchUploadResVO
.
setFileTmpList
(
fileList
);
return
getResult
(
batchUploadResVO
);
}
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"file"
,
value
=
"视频文件"
,
paramType
=
"form"
,
dataType
=
"__file"
,
collectionFormat
=
"array"
,
allowMultiple
=
true
,
required
=
true
)
})
...
...
@@ -873,193 +607,6 @@ public class FileUploadController extends BaseController {
return
getResult
(
batchUploadResVO
);
}
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"file"
,
value
=
"视频文件"
,
paramType
=
"form"
,
dataType
=
"__file"
,
collectionFormat
=
"array"
,
allowMultiple
=
true
,
required
=
true
)
})
@PostMapping
(
value
=
"/video/edit/upload"
,
headers
=
"content-type=multipart/form-data"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
)
@RequiresAuthentication
//@RequiresPermissions("file:video:content:upload")
@ApiOperation
(
value
=
"展板视频上传(修改时使用)"
,
notes
=
"展板视频上传(修改时使用)"
)
public
Map
<
String
,
Object
>
uploadContentVideoByEdit
(
@RequestPart
(
"file"
)
MultipartFile
[]
files
)
throws
Exception
{
if
(
files
==
null
||
files
.
length
==
0
)
{
return
getFailResult
(
"没有文件可供上传"
);
}
if
(
files
.
length
==
1
)
{
String
extName
=
FilenameUtils
.
getExtension
(
files
[
0
].
getOriginalFilename
());
boolean
anyMatch
=
Arrays
.
stream
(
VIDEO_TYPE
).
anyMatch
(
s
->
Objects
.
equals
(
s
,
extName
.
toUpperCase
()));
if
(!
anyMatch
)
{
return
getFailResult
(
"目前仅支持"
+
String
.
join
(
"、"
,
VIDEO_TYPE
)
+
"格式"
);
}
}
final
boolean
matchChinese
=
Arrays
.
stream
(
files
).
anyMatch
(
s
->
Objects
.
requireNonNull
(
s
.
getOriginalFilename
()).
contains
(
"汉语"
));
if
(!
matchChinese
)
{
return
getFailResult
(
"文件必须包含汉语视频"
);
}
String
videoContentName
=
null
;
String
text
;
LCSUtil
strie
=
null
;
final
String
[]
fileBaseNameArray
=
Arrays
.
stream
(
files
).
map
(
x
->
FilenameUtils
.
getBaseName
(
x
.
getOriginalFilename
())).
toArray
(
String
[]::
new
);
switch
(
fileBaseNameArray
.
length
)
{
case
1
:
videoContentName
=
fileBaseNameArray
[
0
];
break
;
case
2
:
text
=
fileBaseNameArray
[
0
]
+
SPLITTER_CHAR_2
[
0
]
+
fileBaseNameArray
[
1
]
+
SPLITTER_CHAR_2
[
1
];
strie
=
new
LCSUtil
(
text
,
SPLITTER_CHAR_2
);
break
;
case
3
:
text
=
fileBaseNameArray
[
0
]
+
SPLITTER_CHAR_3
[
0
]
+
fileBaseNameArray
[
1
]
+
SPLITTER_CHAR_3
[
1
]
+
fileBaseNameArray
[
2
]
+
SPLITTER_CHAR_3
[
2
];
strie
=
new
LCSUtil
(
text
,
SPLITTER_CHAR_3
);
break
;
case
4
:
text
=
fileBaseNameArray
[
0
]
+
SPLITTER_CHAR_4
[
0
]
+
fileBaseNameArray
[
1
]
+
SPLITTER_CHAR_4
[
1
]
+
fileBaseNameArray
[
2
]
+
SPLITTER_CHAR_4
[
2
]
+
fileBaseNameArray
[
3
]
+
SPLITTER_CHAR_4
[
3
];
strie
=
new
LCSUtil
(
text
,
SPLITTER_CHAR_4
);
break
;
case
5
:
text
=
fileBaseNameArray
[
0
]
+
SPLITTER_CHAR_5
[
0
]
+
fileBaseNameArray
[
1
]
+
SPLITTER_CHAR_5
[
1
]
+
fileBaseNameArray
[
2
]
+
SPLITTER_CHAR_5
[
2
]
+
fileBaseNameArray
[
3
]
+
SPLITTER_CHAR_5
[
3
]
+
fileBaseNameArray
[
4
]
+
SPLITTER_CHAR_5
[
4
];
strie
=
new
LCSUtil
(
text
,
SPLITTER_CHAR_5
);
break
;
default
:
break
;
}
if
(
strie
!=
null
)
{
strie
.
buildSuffixTree
();
videoContentName
=
strie
.
findLCS
();
if
(
StringUtils
.
isBlank
(
videoContentName
))
{
return
getFailResult
(
"请修改你的文件名并保持前缀一致后再上传"
);
}
else
{
videoContentName
=
StringUtils
.
removeEnd
(
videoContentName
.
trim
(),
"{"
);
videoContentName
=
StringUtils
.
removeEnd
(
videoContentName
.
trim
(),
"["
);
videoContentName
=
StringUtils
.
removeEnd
(
videoContentName
.
trim
(),
"【"
);
videoContentName
=
StringUtils
.
removeEnd
(
videoContentName
.
trim
(),
"("
);
videoContentName
=
StringUtils
.
removeEnd
(
videoContentName
.
trim
(),
"("
);
videoContentName
=
StringUtils
.
removeEnd
(
videoContentName
.
trim
(),
"-"
);
videoContentName
=
StringUtils
.
removeEnd
(
videoContentName
.
trim
(),
"_"
);
videoContentName
=
StringUtils
.
removeEnd
(
videoContentName
.
trim
(),
"之"
);
}
}
int
successCount
=
0
;
int
failureCount
=
0
;
List
<
BatchUploadResVO
.
HandleResult
>
handleList
=
new
ArrayList
<>();
Set
<
AssetTmp
>
fileList
=
new
LinkedHashSet
<>();
for
(
MultipartFile
file
:
files
)
{
// 当前维度表下线结果
BatchUploadResVO
.
HandleResult
handleResult
=
new
BatchUploadResVO
.
HandleResult
();
// 原始文件名
String
originalFilename
=
file
.
getOriginalFilename
();
if
(
StringUtils
.
isBlank
(
originalFilename
))
{
handleResult
.
setFileName
(
""
);
handleResult
.
setFileType
(
FileTypeEnum
.
VIDEO
.
getName
());
handleResult
.
setFileUrl
(
""
);
handleResult
.
setHandleResult
(
HANDLE_STATUS_ENUM
.
FAILURE
.
getName
());
handleResult
.
setDescription
(
"文件名为空"
);
failureCount
++;
handleList
.
add
(
handleResult
);
continue
;
}
if
(
file
.
getSize
()
==
0L
)
{
handleResult
.
setFileName
(
""
);
handleResult
.
setFileUrl
(
""
);
handleResult
.
setHandleResult
(
HANDLE_STATUS_ENUM
.
FAILURE
.
getName
());
handleResult
.
setDescription
(
"文件"
+
originalFilename
+
"大小为0"
);
failureCount
++;
handleList
.
add
(
handleResult
);
continue
;
}
final
String
baseName
=
FilenameUtils
.
getBaseName
(
originalFilename
);
String
extName
=
FilenameUtils
.
getExtension
(
originalFilename
);
String
finalExtName
=
extName
;
boolean
anyMatch
=
Arrays
.
stream
(
VIDEO_TYPE
).
anyMatch
(
s
->
Objects
.
equals
(
s
,
finalExtName
.
toUpperCase
()));
if
(
anyMatch
)
{
if
(
"MPEG"
.
equals
(
extName
.
toUpperCase
())
||
"MOV"
.
equals
(
extName
.
toUpperCase
()))
{
extName
=
"mp4"
;
originalFilename
=
baseName
+
"."
+
extName
;
}
String
language
=
null
;
final
Set
<
MetaData
>
metaDataSet
=
new
HashSet
<>();
metaDataSet
.
add
(
new
MetaData
(
"fileName"
,
originalFilename
));
metaDataSet
.
add
(
new
MetaData
(
"fileType"
,
FileTypeEnum
.
VIDEO
.
name
()));
if
(
originalFilename
.
contains
(
"汉语"
))
{
metaDataSet
.
add
(
new
MetaData
(
"language"
,
LanguageEnum
.
ZH
.
name
()));
language
=
LanguageEnum
.
ZH
.
name
();
}
else
if
(
originalFilename
.
contains
(
"英语"
))
{
metaDataSet
.
add
(
new
MetaData
(
"language"
,
LanguageEnum
.
EN
.
name
()));
language
=
LanguageEnum
.
EN
.
name
();
}
else
if
(
originalFilename
.
contains
(
"蒙语"
))
{
metaDataSet
.
add
(
new
MetaData
(
"language"
,
LanguageEnum
.
MN
.
name
()));
language
=
LanguageEnum
.
MN
.
name
();
}
else
if
(
originalFilename
.
contains
(
"藏语"
))
{
metaDataSet
.
add
(
new
MetaData
(
"language"
,
LanguageEnum
.
BO
.
name
()));
language
=
LanguageEnum
.
BO
.
name
();
}
else
if
(
originalFilename
.
contains
(
"维吾尔语"
))
{
metaDataSet
.
add
(
new
MetaData
(
"language"
,
LanguageEnum
.
UYG
.
name
()));
language
=
LanguageEnum
.
UYG
.
name
();
}
final
ByteArrayOutputStream
byteArrayOutputStream
=
new
ByteArrayOutputStream
();
IOUtils
.
copy
(
file
.
getInputStream
(),
byteArrayOutputStream
);
final
String
fileUrl
=
FastDFSUtils
.
uploadVideo
(
new
ByteArrayInputStream
(
byteArrayOutputStream
.
toByteArray
()),
file
.
getSize
(),
originalFilename
,
metaDataSet
);
metaDataSet
.
add
(
new
MetaData
(
"fileName"
,
baseName
+
".chnmuseum"
));
final
String
fileUrlCrypto
=
FastDFSUtils
.
uploadVideo
(
VideoEncryptUtil
.
encrypt
(
new
ByteArrayInputStream
(
byteArrayOutputStream
.
toByteArray
()),
VideoEncryptUtil
.
cipher
),
file
.
getSize
(),
baseName
+
".chnmuseum"
,
metaDataSet
);
final
Set
<
MetaData
>
fileMetaData
=
FastDFSUtils
.
getFileMetaData
(
fileUrlCrypto
);
String
md5
=
fileMetaData
.
stream
().
filter
(
x
->
"MD5"
.
equals
(
x
.
getName
())).
map
(
MetaData:
:
getValue
).
findFirst
().
get
();
final
FileInfo
fileInfo
=
FastDFSUtils
.
getFileInfo
(
fileUrl
);
final
int
crc32
=
fileInfo
.
getCrc32
();
final
Asset
one
=
this
.
assetService
.
getOne
(
Wrappers
.<
Asset
>
lambdaQuery
().
eq
(
Asset:
:
getCrc32
,
(
long
)
crc32
).
last
(
" limit 1"
));
final
LocalDateTime
createTime
=
TimeUtils
.
getDateTimeOfTimestamp
(
fileInfo
.
getCreateTime
()
*
1000
);
final
long
fileSize
=
fileInfo
.
getFileSize
();
final
AssetTmp
asset
=
AssetTmp
.
builder
()
.
fileName
(
originalFilename
)
.
fileNameCrypto
(
baseName
+
".chnmuseum"
)
.
fileExtName
(
extName
)
.
fileType
(
FileTypeEnum
.
VIDEO
.
name
())
.
fileSize
(
fileSize
)
.
fileUrl
(
fileUrl
)
.
fileUrlCrypto
(
fileUrlCrypto
)
.
fileCat
(
FileCatEnum
.
VIDEO_CONTENT
.
name
())
.
language
(
language
)
.
md5
(
md5
)
.
crc32
((
long
)
crc32
)
.
videoContentName
(
videoContentName
)
.
createTime
(
createTime
)
.
updateTime
(
createTime
)
.
build
();
if
(
one
!=
null
)
{
FastDFSUtils
.
deleteFile
(
fileUrl
);
FastDFSUtils
.
deleteFile
(
fileUrlCrypto
);
asset
.
setFileUrl
(
one
.
getFileUrl
());
asset
.
setFileUrlCrypto
(
one
.
getFileUrl
());
}
this
.
assetTmpService
.
save
(
asset
);
fileList
.
add
(
asset
);
handleResult
.
setFileUrl
(
fileUrl
);
handleResult
.
setFileName
(
originalFilename
);
handleResult
.
setFileType
(
FileTypeEnum
.
VIDEO
.
getName
());
handleResult
.
setHandleResult
(
HANDLE_STATUS_ENUM
.
SUCCESS
.
getName
());
handleResult
.
setDescription
(
""
);
successCount
++;
}
else
{
handleResult
.
setFileUrl
(
""
);
handleResult
.
setHandleResult
(
"上传失败"
);
handleResult
.
setDescription
(
"文件"
+
originalFilename
+
"格式不支持"
);
failureCount
++;
}
// 设置处理的业务表信息
handleList
.
add
(
handleResult
);
}
BatchUploadResVO
batchUploadResVO
=
new
BatchUploadResVO
();
batchUploadResVO
.
setFailureCount
(
failureCount
);
batchUploadResVO
.
setSuccessCount
(
successCount
);
batchUploadResVO
.
setTotal
(
files
.
length
);
batchUploadResVO
.
setHandleList
(
handleList
);
batchUploadResVO
.
setFileTmpList
(
fileList
);
return
getResult
(
batchUploadResVO
);
}
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"file"
,
value
=
"视频文件"
,
paramType
=
"form"
,
dataType
=
"__file"
,
collectionFormat
=
"array"
,
allowMultiple
=
true
,
required
=
true
)
})
...
...
src/main/java/cn/chnmuseum/party/web/controller/LearningContentController.java
View file @
f7d53dcb
...
...
@@ -15,7 +15,6 @@ import cn.chnmuseum.party.service.*;
import
cn.chnmuseum.party.web.controller.base.BaseController
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
io.swagger.annotations.Api
;
...
...
@@ -154,61 +153,14 @@ public class LearningContentController extends BaseController {
@ApiOperation
(
value
=
"修改学习内容信息"
,
notes
=
"修改学习内容信息"
)
@MethodLog
(
operModule
=
OperModule
.
LEARNCONTENT
,
operType
=
OperType
.
UPDATE
)
public
Map
<
String
,
Object
>
updateLearningContent
(
@Validated
(
value
=
{
Update
.
class
})
LearningContent
learningContent
)
{
final
LambdaQueryWrapper
<
LearningContent
>
lambdaQueryWrapper
=
Wrappers
.<
LearningContent
>
lambdaQuery
().
eq
(
LearningContent:
:
getName
,
learningContent
.
getName
().
trim
());
lambdaQueryWrapper
.
ne
(
LearningContent:
:
getId
,
learningContent
.
getId
());
final
int
count
=
this
.
learningContentService
.
count
(
lambdaQueryWrapper
);
if
(
count
>
0
)
{
return
getFailResult
(
"400"
,
"名称已存在,请修改名称"
);
}
TUser
user
=
getcurUser
();
learningContent
.
setAuditStatus
(
AuditStatusEnum
.
TBC
.
name
());
// 保存业务节点信息
final
String
learningContentId
=
learningContent
.
getId
();
final
List
<
String
>
exhibitionBoardCatIdList
=
learningContent
.
getExhibitionBoardCatIdList
();
if
(
exhibitionBoardCatIdList
!=
null
&&
!
exhibitionBoardCatIdList
.
isEmpty
())
{
LambdaUpdateWrapper
<
LearningContentBoardCat
>
lambdaUpdateWrapper
=
Wrappers
.<
LearningContentBoardCat
>
lambdaUpdate
().
eq
(
LearningContentBoardCat:
:
getLearningContentId
,
learningContentId
);
this
.
learningContentBoardCatService
.
remove
(
lambdaUpdateWrapper
);
for
(
String
exhibitionBoardCatId
:
exhibitionBoardCatIdList
)
{
LearningContentBoardCat
learningContentBoardCat
=
LearningContentBoardCat
.
builder
().
exhibitionBoardCatId
(
exhibitionBoardCatId
).
learningContentId
(
learningContentId
).
build
();
this
.
learningContentBoardCatService
.
save
(
learningContentBoardCat
);
}
}
final
List
<
String
>
copyrightOwnerIdList
=
learningContent
.
getCopyrightOwnerIdList
();
if
(
copyrightOwnerIdList
!=
null
&&
!
copyrightOwnerIdList
.
isEmpty
())
{
LambdaUpdateWrapper
<
LearningContentCopyrightOwner
>
lambdaUpdateWrapper
=
Wrappers
.<
LearningContentCopyrightOwner
>
lambdaUpdate
().
eq
(
LearningContentCopyrightOwner:
:
getLearningContentId
,
learningContentId
);
this
.
learningContentCopyrightOwnerService
.
remove
(
lambdaUpdateWrapper
);
for
(
String
copyrightOwnerId
:
copyrightOwnerIdList
)
{
LearningContentCopyrightOwner
contentCopyrightOwner
=
LearningContentCopyrightOwner
.
builder
().
copyrightOwnerId
(
copyrightOwnerId
).
learningContentId
(
learningContentId
).
build
();
this
.
learningContentCopyrightOwnerService
.
save
(
contentCopyrightOwner
);
}
}
final
LearningContent
one
=
this
.
learningContentService
.
getById
(
learningContent
.
getId
());
one
.
setAuditStatus
(
AuditStatusEnum
.
TBC
.
name
());
this
.
learningContentService
.
updateById
(
one
);
final
List
<
String
>
exhibitionBoardIdList
=
learningContent
.
getExhibitionBoardIdList
();
if
(
exhibitionBoardIdList
!=
null
&&
!
exhibitionBoardIdList
.
isEmpty
())
{
LambdaUpdateWrapper
<
LearningContentBoard
>
lambdaUpdateWrapper
=
Wrappers
.<
LearningContentBoard
>
lambdaUpdate
().
eq
(
LearningContentBoard:
:
getLearningContentId
,
learningContentId
);
this
.
learningContentBoardService
.
remove
(
lambdaUpdateWrapper
);
for
(
String
exhibitionBoardId
:
exhibitionBoardIdList
)
{
LearningContentBoard
learningContentBoard
=
LearningContentBoard
.
builder
()
.
learningContentId
(
learningContentId
)
.
exhibitionBoardCatId
(
this
.
exhibitionBoardService
.
getById
(
exhibitionBoardId
).
getExhibitionBoardCatId
())
.
exhibitionBoardId
(
exhibitionBoardId
)
.
build
();
this
.
learningContentBoardService
.
save
(
learningContentBoard
);
}
}
boolean
flag
=
learningContentService
.
updateById
(
learningContent
);
if
(
flag
)
{
final
Audit
audit
=
Audit
.
builder
()
.
content
(
learningContent
.
getName
())
.
name
(
learningContent
.
getName
())
.
userId
(
user
.
getId
())
.
userId
(
getcurUser
()
.
getId
())
.
refItemId
(
learningContent
.
getId
())
.
type
(
AuditTypeEnum
.
LEARNING_CONTENT
.
name
())
.
operation
(
AuditOperationEnum
.
EDIT
.
name
())
...
...
@@ -216,10 +168,7 @@ public class LearningContentController extends BaseController {
.
level
(
AuditStatusEnum
.
TBC
.
name
())
.
build
();
this
.
auditService
.
save
(
audit
);
return
getSuccessResult
();
}
return
getFailResult
();
}
@GetMapping
(
"/getList"
)
...
...
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