Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Q
qk_backend
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
quanku
qk_backend
Commits
6e3996b5
Commit
6e3996b5
authored
Aug 15, 2023
by
muhong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增 图片视频上传接口
parent
8b8b1fda
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
132 additions
and
4 deletions
+132
-4
ch-core/src/main/java/com/wwdz/ch/core/consts/CommConsts.java
...ore/src/main/java/com/wwdz/ch/core/consts/CommConsts.java
+4
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/ItemServiceImpl.java
...pi/src/main/java/com/wwdz/ch/wx/impl/ItemServiceImpl.java
+104
-4
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/ItemService.java
...api/src/main/java/com/wwdz/ch/wx/service/ItemService.java
+4
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/web/WxItemController.java
...pi/src/main/java/com/wwdz/ch/wx/web/WxItemController.java
+20
-0
No files found.
ch-core/src/main/java/com/wwdz/ch/core/consts/CommConsts.java
View file @
6e3996b5
...
...
@@ -22,4 +22,8 @@ public interface CommConsts {
*/
public
static
final
String
UPLOAD_PRE_DIRECTORY
=
"quanku/"
;
/**
* 上传视频目录
*/
public
static
final
String
UPLOAD_PRE_VEDIO_DIRECTORY
=
"quanku/vedio/"
;
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/ItemServiceImpl.java
View file @
6e3996b5
package
com.wwdz.ch.wx.impl
;
import
com.github.pagehelper.PageInfo
;
import
com.wwdz.ch.core.consts.CommConsts
;
import
com.wwdz.ch.core.consts.CommonEnum
;
import
com.wwdz.ch.core.consts.MediaTypeEnum
;
import
com.wwdz.ch.core.storage.QiniuStorage
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.util.MediaUtil
;
import
com.wwdz.ch.db.dao.*
;
import
com.wwdz.ch.db.domain.*
;
import
com.wwdz.ch.db.dto.request.CoinRequestDto
;
...
...
@@ -11,6 +15,7 @@ import com.wwdz.ch.wx.entity.vo.AgentTranceResponseVo;
import
com.wwdz.ch.wx.entity.vo.ItemResponseVo
;
import
com.wwdz.ch.wx.service.ItemService
;
import
com.wwdz.ch.wx.service.WxLoginService
;
import
com.xxdxxs.utils.CommonUtils
;
import
com.xxdxxs.utils.DateUtils
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -20,11 +25,13 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.imageio.ImageIO
;
import
javax.servlet.http.HttpServletResponse
;
import
java.
io.ByteArrayOutputStream
;
import
java.io.
InputStream
;
import
java.
io.OutputStream
;
import
java.
awt.image.BufferedImage
;
import
java.io.
*
;
import
java.
net.URL
;
import
java.util.*
;
@Service
...
...
@@ -44,6 +51,8 @@ public class ItemServiceImpl implements ItemService {
private
FavoritesDao
favoritesDao
;
@Autowired
private
WxLoginService
wxLoginService
;
@Autowired
private
QiniuStorage
qiniuStorage
;
@Override
public
Result
nameList
(
ItemRequestDto
dto
)
{
...
...
@@ -131,7 +140,9 @@ public class ItemServiceImpl implements ItemService {
item
.
setIsStd
(
false
);
item
.
setSort
(
100
);
item
.
setImages
(
dto
.
getImages
());
item
.
setVedios
(
dto
.
getVideos
());
if
(
StringUtils
.
isNotBlank
(
dto
.
getVideos
()))
{
item
.
setVedios
(
getVediosImage
(
dto
.
getVideos
()));
}
item
.
setPrice
(
Long
.
parseLong
(
dto
.
getPrice
())
/
100
);
item
.
setDetail
(
dto
.
getDetail
());
Date
now
=
new
Date
();
...
...
@@ -281,6 +292,9 @@ public class ItemServiceImpl implements ItemService {
item
.
setName
(
dto
.
getName
());
item
.
setCid
(
dto
.
getCid
());
item
.
setImages
(
dto
.
getImages
());
if
(
StringUtils
.
isNotBlank
(
dto
.
getVideos
()))
{
item
.
setVedios
(
getVediosImage
(
dto
.
getVideos
()));
}
item
.
setVedios
(
dto
.
getVideos
());
item
.
setPrice
(
Long
.
parseLong
(
dto
.
getPrice
())
/
100
);
item
.
setDetail
(
dto
.
getDetail
());
...
...
@@ -356,4 +370,90 @@ public class ItemServiceImpl implements ItemService {
return
Result
.
failed
(
"获取小程序链接失败"
);
}
}
@Override
public
Result
uploadImage
(
MultipartFile
file
)
{
try
{
InputStream
inputStream
=
file
.
getInputStream
();
BufferedImage
bufferedImage
=
ImageIO
.
read
(
inputStream
);
String
lastKey
=
".jpg"
;
if
(
StringUtils
.
isNotBlank
(
file
.
getOriginalFilename
()))
{
lastKey
=
file
.
getOriginalFilename
().
substring
(
file
.
getOriginalFilename
().
lastIndexOf
(
"."
));
}
String
keyName
=
CommConsts
.
UPLOAD_PRE_DIRECTORY
+
CommonUtils
.
getUUID
()
+
"_"
+
bufferedImage
.
getWidth
()
+
"x"
+
bufferedImage
.
getHeight
()
+
lastKey
;
InputStream
imageStream
=
bufferedImageToInputStream
(
bufferedImage
,
lastKey
.
substring
(
1
));
qiniuStorage
.
store
(
imageStream
,
file
.
getSize
(),
file
.
getContentType
(),
keyName
);
String
urlOfSize
=
qiniuStorage
.
generateUrl
(
keyName
);
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"url"
,
urlOfSize
);
return
Result
.
success
(
map
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"图片上传七牛云失败,原因:"
+
e
.
getMessage
(),
e
);
return
Result
.
failed
(
"文件上传失败"
);
}
}
@Override
public
Result
uploadVedio
(
MultipartFile
file
)
{
try
{
InputStream
inputStream
=
file
.
getInputStream
();
String
lastKey
=
".mp4"
;
if
(
StringUtils
.
isNotBlank
(
file
.
getOriginalFilename
()))
{
lastKey
=
file
.
getOriginalFilename
().
substring
(
file
.
getOriginalFilename
().
lastIndexOf
(
"."
));
}
String
keyName
=
CommConsts
.
UPLOAD_PRE_VEDIO_DIRECTORY
+
CommonUtils
.
getUUID
()
+
lastKey
;
qiniuStorage
.
store
(
inputStream
,
file
.
getSize
(),
file
.
getContentType
(),
keyName
);
String
urlOfSize
=
qiniuStorage
.
generateUrl
(
keyName
);
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"url"
,
urlOfSize
);
return
Result
.
success
(
map
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"视频上传七牛云失败,原因:"
+
e
.
getMessage
(),
e
);
return
Result
.
failed
(
"文件上传失败"
);
}
}
private
String
getVediosImage
(
String
vedios
)
{
String
vedio
=
""
;
String
[]
images
=
vedios
.
split
(
";"
);
StringBuffer
stringBuffer
=
new
StringBuffer
();
Arrays
.
stream
(
images
).
parallel
().
forEach
(
image
->
{
if
(
stringBuffer
.
length
()
!=
0
)
{
stringBuffer
.
append
(
";"
);
}
try
{
String
cutImage
=
MediaUtil
.
getImageByCutVedio
(
image
);
URL
url
=
new
URL
(
cutImage
);
InputStream
inputStream
=
url
.
openStream
();
BufferedImage
bufferedImage
=
ImageIO
.
read
(
inputStream
);
String
keyName
=
CommConsts
.
UPLOAD_PRE_DIRECTORY
+
CommonUtils
.
getUUID
()
+
"_"
+
bufferedImage
.
getWidth
()
+
"x"
+
bufferedImage
.
getHeight
()
+
"."
+
MediaTypeEnum
.
IMAGE_JPG
.
getExt
();
InputStream
imageStream
=
bufferedImageToInputStream
(
bufferedImage
,
MediaTypeEnum
.
IMAGE_JPG
.
getExt
());
qiniuStorage
.
store
(
imageStream
,
1
,
MediaTypeEnum
.
IMAGE_JPG
.
getMime
(),
keyName
);
String
urlOfSize
=
qiniuStorage
.
generateUrl
(
keyName
);
stringBuffer
.
append
(
image
).
append
(
","
).
append
(
urlOfSize
);
}
catch
(
Exception
e
)
{
stringBuffer
.
append
(
image
);
logger
.
error
(
"视频图片上传失败"
,
e
);
}
});
vedio
=
stringBuffer
.
toString
();
return
vedio
;
}
/**
* 将BufferedImage转换为InputStream
*
* @param image 数据源
* @param type 图片格式
* @return
*/
private
static
InputStream
bufferedImageToInputStream
(
BufferedImage
image
,
String
type
)
{
try
(
ByteArrayOutputStream
os
=
new
ByteArrayOutputStream
())
{
ImageIO
.
write
(
image
,
type
,
os
);
return
new
ByteArrayInputStream
(
os
.
toByteArray
());
}
catch
(
IOException
e
)
{
logger
.
error
(
"bufferedImageToInputStream 出错,原因: {}"
,
e
);
}
return
null
;
}
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/ItemService.java
View file @
6e3996b5
...
...
@@ -2,6 +2,7 @@ package com.wwdz.ch.wx.service;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.wx.entity.request.ItemRequestDto
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.servlet.http.HttpServletResponse
;
...
...
@@ -23,4 +24,7 @@ public interface ItemService {
void
getWxacode
(
String
page
,
String
scene
,
HttpServletResponse
response
);
Result
getWxLink
(
String
pageUrl
);
Result
uploadImage
(
MultipartFile
file
);
Result
uploadVedio
(
MultipartFile
file
);
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/web/WxItemController.java
View file @
6e3996b5
...
...
@@ -12,11 +12,13 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Objects
;
@RestController
@RequestMapping
(
"/wx/item"
)
...
...
@@ -252,4 +254,22 @@ public class WxItemController {
public
Result
getWxLink
(
String
pageUrl
)
{
return
itemService
.
getWxLink
(
pageUrl
);
}
@ApiOperation
(
"图片上传"
)
@PostMapping
(
value
=
"/uploadImage"
)
public
Result
uploadImage
(
@RequestParam
(
"image"
)
MultipartFile
file
)
{
if
(
Objects
.
isNull
(
file
)
||
file
.
isEmpty
())
{
return
Result
.
failed
(
"请上传图片"
);
}
return
itemService
.
uploadImage
(
file
);
}
@ApiOperation
(
"视频上传"
)
@PostMapping
(
value
=
"/uploadVedio"
)
public
Result
uploadVedio
(
@RequestParam
(
"vedio"
)
MultipartFile
file
)
{
if
(
Objects
.
isNull
(
file
)
||
file
.
isEmpty
())
{
return
Result
.
failed
(
"请上传视频"
);
}
return
itemService
.
uploadVedio
(
file
);
}
}
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