Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
pms-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
pms-ci-test
Commits
54dd9c08
提交
54dd9c08
authored
6月 08, 2023
作者:
xiaowang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
加入用户token及 服务数据
上级
b3e8c575
隐藏空白字符变更
内嵌
并排
正在显示
28 个修改的文件
包含
2010 行增加
和
952 行删除
+2010
-952
pom.xml
pom.xml
+203
-103
DataFilterYml.java
src/main/java/com/mmc/pms/auth/DataFilterYml.java
+26
-0
MvcConfiguration.java
src/main/java/com/mmc/pms/auth/MvcConfiguration.java
+23
-0
NotCheckUriConfig.java
src/main/java/com/mmc/pms/auth/NotCheckUriConfig.java
+23
-0
TokenCheckHandleInterceptor.java
...in/java/com/mmc/pms/auth/TokenCheckHandleInterceptor.java
+99
-0
LoginSuccessDTO.java
src/main/java/com/mmc/pms/auth/dto/LoginSuccessDTO.java
+30
-0
BackstageTaskServiceController.java
...om/mmc/pms/controller/BackstageTaskServiceController.java
+63
-0
BaseController.java
src/main/java/com/mmc/pms/controller/BaseController.java
+58
-0
PartUploadController.java
...ain/java/com/mmc/pms/controller/PartUploadController.java
+189
-188
UploadController.java
src/main/java/com/mmc/pms/controller/UploadController.java
+483
-483
BackstageTaskServiceDao.java
src/main/java/com/mmc/pms/dao/BackstageTaskServiceDao.java
+25
-0
ProductDao.java
src/main/java/com/mmc/pms/dao/ProductDao.java
+2
-0
BaseEntity.java
src/main/java/com/mmc/pms/entity/BaseEntity.java
+13
-13
ProductSkuDO.java
src/main/java/com/mmc/pms/entity/ProductSkuDO.java
+1
-0
RepoCashDO.java
src/main/java/com/mmc/pms/entity/RepoCashDO.java
+49
-49
ServiceDO.java
src/main/java/com/mmc/pms/entity/ServiceDO.java
+93
-0
JsonUtil.java
src/main/java/com/mmc/pms/json/JsonUtil.java
+95
-95
ServiceQO.java
src/main/java/com/mmc/pms/model/qo/ServiceQO.java
+52
-0
ServiceVO.java
src/main/java/com/mmc/pms/model/work/vo/ServiceVO.java
+60
-0
BackstageTaskService.java
src/main/java/com/mmc/pms/service/BackstageTaskService.java
+23
-0
BackstageTaskServiceImpl.java
...va/com/mmc/pms/service/Impl/BackstageTaskServiceImpl.java
+56
-0
ProductServiceImpl.java
...ain/java/com/mmc/pms/service/Impl/ProductServiceImpl.java
+3
-3
BizException.java
src/main/java/com/mmc/pms/util/BizException.java
+90
-0
PathUtil.java
src/main/java/com/mmc/pms/util/PathUtil.java
+16
-0
application-local.yml
src/main/resources/application-local.yml
+14
-9
ProductDao.xml
src/main/resources/mapper/ProductDao.xml
+24
-9
BackstageTaskServiceDao.xml
src/main/resources/mapper/work/BackstageTaskServiceDao.xml
+189
-0
not-check.yml
src/main/resources/not-check.yml
+8
-0
没有找到文件。
pom.xml
浏览文件 @
54dd9c08
...
@@ -5,185 +5,285 @@
...
@@ -5,185 +5,285 @@
<parent>
<parent>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-parent
</artifactId>
<artifactId>
spring-boot-starter-parent
</artifactId>
<version>
2.
7.6
</version>
<version>
2.
2.6.RELEASE
</version>
<relativePath/>
<!-- lookup parent from repository -->
<relativePath/>
</parent>
</parent>
<groupId>
com.mmc
</groupId>
<groupId>
com.mmc
</groupId>
<artifactId>
pms
</artifactId>
<artifactId>
pms
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
<version>
0.0.1-SNAPSHOT
</version>
<name>
pms
</name>
<name>
pms
</name>
<description>
pms
</description>
<description>
pms
</description>
<properties>
<properties>
<java.version>
1.8
</java.version>
<spring-cloud.version>
Hoxton.SR6
</spring-cloud.version>
<spring-cloud.version>
2021.0.3
</spring-cloud.version>
<springfox.version>
2.9.2
</springfox.version>
<spring-cloud-alibaba-seata.version>
2.2.1.RELEASE
</spring-cloud-alibaba-seata.version>
<seata.version>
1.1.0
</seata.version>
</properties>
</properties>
<dependencies>
<dependencies>
<dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<groupId>
org.projectlombok
</groupId>
<artifactId>
druid
</artifactId>
<artifactId>
lombok
</artifactId>
<version>
1.1.22
</version>
<version>
1.18.20
</version>
</dependency>
<scope>
provided
</scope>
<dependency>
<groupId>
javax.xml.bind
</groupId>
<artifactId>
jaxb-api
</artifactId>
<version>
2.3.0
</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-redis
</artifactId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
mysql
</groupId>
<groupId>
com.alibaba
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<artifactId>
fastjson
</artifactId>
<
!--<scope>runtime</scope>--
>
<
version>
1.2.83
</version
>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
com.github.xiaoymin
</groupId>
<groupId>
com.github.xiaoymin
</groupId>
<artifactId>
knife4j-spring-
ui
</artifactId>
<artifactId>
knife4j-spring-
boot-starter
</artifactId>
<version>
3.0.2
</version>
<version>
3.0.2
</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
com.github.xiaoymin
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
<artifactId>
knife4j-spring-ui
</artifactId>
<version>
3.0.2
</version>
</dependency>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba.fastjson2/fastjson2 -->
<dependency>
<dependency>
<groupId>
com.
baomidou
</groupId>
<groupId>
com.
alibaba.fastjson2
</groupId>
<artifactId>
mybatis-plus-boot-starter
</artifactId>
<artifactId>
fastjson2
</artifactId>
<version>
3.4.3.4
</version>
<version>
2.0.29
</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.apache.commons
</groupId>
<artifactId>
spring-boot-starter-validation
</artifactId>
<artifactId>
commons-collections4
</artifactId>
<version>
3.0.0
</version>
<version>
4.4
</version>
<!--<scope>compile</scope>-->
</dependency>
</dependency>
<!--logback 日志 -->
<dependency>
<dependency>
<groupId>
org.projectlombo
k
</groupId>
<groupId>
net.logstash.logbac
k
</groupId>
<artifactId>
lo
mbok
</artifactId>
<artifactId>
lo
gstash-logback-encoder
</artifactId>
<
optional>
true
</optional
>
<
version>
5.3
</version
>
</dependency>
</dependency>
<!-- 引入 Web 功能 -->
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<artifactId>
spring-boot-starter-web
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<version>
2.0.32
</version>
</dependency>
<dependency>
<groupId>
com.aliyun.oss
</groupId>
<artifactId>
aliyun-sdk-oss
</artifactId>
<version>
3.10.2
</version>
</dependency>
<!--<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>5.8.12</version>
</dependency>-->
<dependency>
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-lang3
</artifactId>
<version>
3.12.0
</version>
</dependency>
</dependency>
<!-- 健康监控 -->
<dependency>
<dependency>
<groupId>
io.jsonwebtoken
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
jjwt
</artifactId>
<artifactId>
spring-boot-starter-actuator
</artifactId>
<version>
0.6.0
</version>
</dependency>
</dependency>
<!-- 引入 Feign, 可以以声明的方式调用微服务 -->
<dependency>
<dependency>
<groupId>
com.auth0
</groupId>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
java-jwt
</artifactId>
<artifactId>
spring-cloud-starter-openfeign
</artifactId>
<version>
3.1.0
</version>
</dependency>
</dependency>
<!-- 使用okhttp-feign-连接池技术 -->
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
io.github.openfeign
</groupId>
<artifactId>
spring-boot-starter-ao
p
</artifactId>
<artifactId>
feign-okhtt
p
</artifactId>
</dependency>
</dependency>
<!--
swagger
-->
<!--
引入服务容错 Hystrix 的依赖
-->
<dependency>
<dependency>
<groupId>
com.github.xiaoymin
</groupId>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
knife4j-spring-boot-starter
</artifactId>
<artifactId>
spring-cloud-starter-netflix-hystrix
</artifactId>
<version>
3.0.2
</version>
<exclusions>
<exclusion>
<groupId>
com.google.guava
</groupId>
<artifactId>
guava
</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependency>
<!-- <dependency>
<!-- mybatis驱动&Druid数据源-start -->
<groupId>com.taobao.arthas</groupId>
<artifactId>arthas-spring-boot-starter</artifactId>
<version>3.6.3</version>
</dependency>-->
<dependency>
<dependency>
<groupId>
com.deepoove
</groupId>
<groupId>
com.alibaba
</groupId>
<artifactId>
poi-tl
</artifactId>
<artifactId>
druid-spring-boot-starter
</artifactId>
<version>
1.12.0
</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
cn.hutool
</groupId>
<groupId>
org.mybatis.spring.boot
</groupId>
<artifactId>
hutool-core
</artifactId>
<artifactId>
mybatis-spring-boot-starter
</artifactId>
<version>
5.8.16
</version>
</dependency>
</dependency>
<!-- minio 相关依赖 -->
<dependency>
<dependency>
<groupId>
io.minio
</groupId>
<groupId>
mysql
</groupId>
<artifactId>
minio
</artifactId>
<artifactId>
mysql-connector-java
</artifactId>
<version>
3.0.10
</version>
</dependency>
</dependency>
<!--amqp的起步依赖-->
<!-- mybatis驱动&Druid数据源-end -->
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-amqp
</artifactId>
<artifactId>
spring-boot-devtools
</artifactId>
<optional>
true
</optional>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
org.
jetbrains.kotlin
</groupId>
<groupId>
org.
springframework.boot
</groupId>
<artifactId>
kotlin-stdlib
</artifactId>
<artifactId>
spring-boot-devtools
</artifactId>
<
version>
1.6.0
</version
>
<
optional>
true
</optional
>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
com.squareup.okhttp3
</groupId>
<groupId>
org.redisson
</groupId>
<artifactId>
okhttp
</artifactId>
<artifactId>
redisson-spring-boot-starter
</artifactId>
<version>
3.14.9
</version>
<version>
3.13.1
</version>
<scope>
compile
</scope>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<groupId>
com.baomidou
</groupId>
<artifactId>
spring-cloud-starter-openfeign
</artifactId>
<artifactId>
mybatis-plus-boot-starter
</artifactId>
<version>
2.2.9.RELEASE
</version>
<version>
3.4.3.4
</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<groupId>
com.aliyun.oss
</groupId>
<artifactId>
spring-cloud-starter-netflix-hystrix
</artifactId>
<artifactId>
aliyun-sdk-oss
</artifactId>
<version>
2.2.9.RELEASE
</version>
<version>
3.10.2
</version>
</dependency>
</dependency>
</dependencies>
</dependencies>
<dependencyManagement>
<dependencyManagement>
<dependencies>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies -->
<dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-dependencies
</artifactId>
<artifactId>
spring-cloud-dependencies
</artifactId>
<version>
2021.0.6
</version>
<version>
${spring-cloud.version}
</version>
<type>
pom
</type>
<type>
pom
</type>
<scope>
import
</scope>
<scope>
import
</scope>
</dependency>
</dependency>
<dependency>
<groupId>
com.alibaba.cloud
</groupId>
<artifactId>
spring-cloud-starter-alibaba-seata
</artifactId>
<version>
${spring-cloud-alibaba-seata.version}
</version>
</dependency>
<dependency>
<groupId>
io.seata
</groupId>
<artifactId>
seata-spring-boot-starter
</artifactId>
<version>
${seata.version}
</version>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid-spring-boot-starter
</artifactId>
<version>
1.1.10
</version>
</dependency>
<dependency>
<groupId>
org.mybatis.spring.boot
</groupId>
<artifactId>
mybatis-spring-boot-starter
</artifactId>
<version>
2.1.2
</version>
</dependency>
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<version>
8.0.28
</version>
</dependency>
<dependency>
<groupId>
cn.afterturn
</groupId>
<artifactId>
easypoi-base
</artifactId>
<version>
4.1.0
</version>
</dependency>
<dependency>
<groupId>
cn.afterturn
</groupId>
<artifactId>
easypoi-web
</artifactId>
<version>
4.1.0
</version>
</dependency>
<dependency>
<groupId>
cn.afterturn
</groupId>
<artifactId>
easypoi-annotation
</artifactId>
<version>
4.1.0
</version>
</dependency>
<dependency>
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-collections4
</artifactId>
<version>
4.4
</version>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
easyexcel
</artifactId>
<version>
3.1.3
</version>
</dependency>
<dependency>
<groupId>
com.aliyun.oss
</groupId>
<artifactId>
aliyun-sdk-oss
</artifactId>
<version>
3.10.2
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>
commons-fileupload
</groupId>
<artifactId>
commons-fileupload
</artifactId>
<version>
1.5
</version>
</dependency>
<dependency>
<groupId>
org.redisson
</groupId>
<artifactId>
redisson-spring-boot-starter
</artifactId>
<version>
3.13.1
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
<groupId>
com.google.guava
</groupId>
<artifactId>
guava
</artifactId>
<version>
31.1-jre
</version>
</dependency>
<dependency>
<groupId>
org.apache.poi
</groupId>
<artifactId>
poi
</artifactId>
<version>
4.1.1
</version>
<scope>
compile
</scope>
</dependency>
</dependencies>
</dependencies>
</dependencyManagement>
</dependencyManagement>
<!-- 配置远程仓库 -->
<repositories>
<repository>
<id>
spring-milestones
</id>
<name>
Spring Milestones
</name>
<url>
https://repo.spring.io/milestone
</url>
<snapshots>
<enabled>
false
</enabled>
</snapshots>
</repository>
</repositories>
<build>
<build>
<plugins>
<plugins>
<plugin>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugin>
</plugins>
</plugins>
<resources>
<!--需要动态添加的资源 -->
<resource>
<directory>
src/main/resources
</directory>
<filtering>
true
</filtering>
<includes>
<!--读取打包命令中指定的环境 -->
<include>
**/*.yml
</include>
<include>
**/*.xml
</include>
<include>
**/*.properties
</include>
</includes>
</resource>
</resources>
</build>
</build>
</project>
</project>
src/main/java/com/mmc/pms/auth/DataFilterYml.java
0 → 100644
浏览文件 @
54dd9c08
package
com
.
mmc
.
pms
.
auth
;
import
org.springframework.beans.factory.config.YamlPropertiesFactoryBean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.support.PropertySourcesPlaceholderConfigurer
;
import
org.springframework.core.io.ClassPathResource
;
import
java.util.Objects
;
/**
* Author: geDuo
* Date: 2022/6/2 17:26
*/
@Configuration
public
class
DataFilterYml
{
@Bean
public
static
PropertySourcesPlaceholderConfigurer
loadYml
()
{
PropertySourcesPlaceholderConfigurer
configurer
=
new
PropertySourcesPlaceholderConfigurer
();
YamlPropertiesFactoryBean
yaml
=
new
YamlPropertiesFactoryBean
();
yaml
.
setResources
(
new
ClassPathResource
(
"not-check.yml"
));
configurer
.
setProperties
(
Objects
.
requireNonNull
(
yaml
.
getObject
()));
return
configurer
;
}
}
src/main/java/com/mmc/pms/auth/MvcConfiguration.java
0 → 100644
浏览文件 @
54dd9c08
package
com
.
mmc
.
pms
.
auth
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.servlet.config.annotation.InterceptorRegistry
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
/**
* @author: zj
* @Date: 2023/5/28 10:52
*/
@Configuration
public
class
MvcConfiguration
implements
WebMvcConfigurer
{
@Autowired
private
TokenCheckHandleInterceptor
tokenCheckHandleInterceptor
;
@Override
public
void
addInterceptors
(
InterceptorRegistry
registry
)
{
registry
.
addInterceptor
(
tokenCheckHandleInterceptor
);
WebMvcConfigurer
.
super
.
addInterceptors
(
registry
);
}
}
src/main/java/com/mmc/pms/auth/NotCheckUriConfig.java
0 → 100644
浏览文件 @
54dd9c08
package
com
.
mmc
.
pms
.
auth
;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.PropertySource
;
import
java.util.List
;
/**
* @author: zj
* @Date: 2023/5/28 13:54
*/
@Data
@Configuration
@ConfigurationProperties
(
prefix
=
"data-filter"
,
ignoreUnknownFields
=
false
)
@PropertySource
(
"classpath:not-check.yml"
)
public
class
NotCheckUriConfig
{
// 不需要验证token的请求地址
private
List
<
String
>
notAuthPath
;
// 不需要验证token的请求地址;// 不需要验证token的请求地址
private
List
<
String
>
uploadPath
;
}
src/main/java/com/mmc/pms/auth/TokenCheckHandleInterceptor.java
0 → 100644
浏览文件 @
54dd9c08
package
com
.
mmc
.
pms
.
auth
;
import
com.baomidou.mybatisplus.core.toolkit.StringUtils
;
import
com.mmc.pms.common.ResultBody
;
import
com.mmc.pms.common.ResultEnum
;
import
com.mmc.pms.util.PathUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.servlet.HandlerInterceptor
;
import
org.springframework.web.servlet.ModelAndView
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.PrintWriter
;
/**
* @author: zj
* @Date: 2023/5/28 10:46
*/
@Slf4j
@Component
public
class
TokenCheckHandleInterceptor
implements
HandlerInterceptor
{
@Autowired
private
StringRedisTemplate
stringRedisTemplate
;
@Autowired
private
NotCheckUriConfig
notCheckUriConfig
;
@Override
public
boolean
preHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
)
throws
Exception
{
String
requestURI
=
request
.
getRequestURI
();
// //根据uri确认是否要拦截
if
(!
shouldFilter
(
requestURI
))
{
return
true
;
}
String
token
=
request
.
getHeader
(
"token"
);
if
(
StringUtils
.
isBlank
(
token
))
{
exceptionProcess
(
response
);
return
false
;
}
String
tokenJson
=
stringRedisTemplate
.
opsForValue
().
get
(
token
);
if
(
StringUtils
.
isBlank
(
tokenJson
))
{
exceptionProcess
(
response
);
return
false
;
}
//
// String serverName = request.getServerName();
// String remoteHost = request.getRemoteHost();
// log.info("hostName: {}", hostName);
// log.info("serverName: {}", serverName);
// log.info("remoteHost: {}", remoteHost);
// log.info("forwardedFor: {}", forwardedFor);
// log.info("forwardedHost: {}", forwardedHost);
// if (hostName.equals("iuav.mmcuav.cn") || hostName.equals("test.iuav.mmcuav.cn") || hostName.equals("www.iuav.shop") || hostName.equals("test.iuav.shop")){
// String token = request.getHeader("token");
// if (StringUtils.isBlank(token)){
// exceptionProcess(response);
// return false;
// }
// String tokenJson = stringRedisTemplate.opsForValue().get(token);
// if (StringUtils.isBlank(tokenJson)){
// exceptionProcess(response);
// return false;
// }
// return true;
// }
//测试-打印请求信息
return
true
;
}
@Override
public
void
postHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
,
ModelAndView
modelAndView
)
throws
Exception
{
}
@Override
public
void
afterCompletion
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
,
Exception
ex
)
throws
Exception
{
}
public
void
exceptionProcess
(
HttpServletResponse
response
)
throws
Exception
{
response
.
setContentType
(
"application/json;charset=utf-8"
);
PrintWriter
writer
=
response
.
getWriter
();
writer
.
write
(
ResultBody
.
error
(
ResultEnum
.
LOGIN_ACCOUNT_STATUS_ERROR
).
toString
());
writer
.
close
();
}
private
boolean
shouldFilter
(
String
path
)
{
// 路径与配置的相匹配,则执行过滤
for
(
String
pathPattern
:
notCheckUriConfig
.
getNotAuthPath
())
{
if
(
PathUtil
.
isPathMatch
(
pathPattern
,
path
))
{
// 如果匹配
return
false
;
}
}
return
true
;
}
}
src/main/java/com/mmc/pms/auth/dto/LoginSuccessDTO.java
0 → 100644
浏览文件 @
54dd9c08
package
com
.
mmc
.
pms
.
auth
.
dto
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* @author 作者 geDuo
* @version 创建时间:2021年8月31日 下午8:06:14
* @explain 类说明
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
LoginSuccessDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
1200834589953161925L
;
private
String
token
;
private
Integer
userAccountId
;
private
String
accountNo
;
private
Integer
portType
;
private
String
uid
;
private
String
phoneNum
;
private
String
userName
;
private
String
nickName
;
// private RoleInfoDTO roleInfo;
}
src/main/java/com/mmc/pms/controller/BackstageTaskServiceController.java
0 → 100644
浏览文件 @
54dd9c08
package
com
.
mmc
.
pms
.
controller
;
import
com.mmc.pms.common.ResultBody
;
import
com.mmc.pms.model.group.Create
;
import
com.mmc.pms.model.group.Update
;
import
com.mmc.pms.model.qo.ServiceQO
;
import
com.mmc.pms.model.work.vo.ServiceVO
;
import
com.mmc.pms.service.BackstageTaskService
;
import
io.swagger.annotations.*
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletRequest
;
/**
* @Author LW
* @date 2023/6/6 10:41
* 概要:
*/
@Api
(
tags
=
{
"后台-服务管理-模块"
})
@RestController
@RequestMapping
(
"/backstage/work"
)
public
class
BackstageTaskServiceController
extends
BaseController
{
@Resource
private
BackstageTaskService
backstageTaskService
;
@ApiOperation
(
value
=
"新增作业服务"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"addWorkService"
)
public
ResultBody
addWorkService
(
@Validated
(
Create
.
class
)
@RequestBody
ServiceVO
param
,
HttpServletRequest
request
)
{
return
backstageTaskService
.
addWorkService
(
param
,
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
());
}
@ApiOperation
(
value
=
"修改作业服务"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"updateWorkService"
)
public
ResultBody
updateWorkService
(
@Validated
(
Update
.
class
)
@RequestBody
ServiceVO
param
)
{
return
backstageTaskService
.
updateById
(
param
);
}
@ApiOperation
(
value
=
"删除作业服务"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"deleteWorkService"
)
public
ResultBody
deleteWorkService
(
@ApiParam
(
"作业服务id"
)
@RequestParam
(
value
=
"id"
)
Integer
id
)
{
return
backstageTaskService
.
deleteById
(
id
);
}
@ApiOperation
(
value
=
"查询作业服务"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"queryWorkService"
)
public
ResultBody
queryWorkService
(
@ApiParam
(
"作业服务id"
)
@RequestParam
(
value
=
"id"
)
Integer
id
)
{
return
backstageTaskService
.
queryById
(
id
);
}
@ApiOperation
(
value
=
"查询工作服务列表"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"queryWorkServiceList"
)
public
ResultBody
queryWorkServiceList
(
@Validated
(
Create
.
class
)
@RequestBody
ServiceQO
param
,
HttpServletRequest
request
)
{
return
backstageTaskService
.
queryWorkServiceList
(
param
,
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
());
}
}
src/main/java/com/mmc/pms/controller/BaseController.java
0 → 100644
浏览文件 @
54dd9c08
package
com
.
mmc
.
pms
.
controller
;
import
com.alibaba.fastjson.JSONObject
;
import
com.mmc.pms.auth.dto.LoginSuccessDTO
;
import
com.mmc.pms.common.ResultEnum
;
import
com.mmc.pms.util.BizException
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
javax.servlet.http.HttpServletRequest
;
/**
* @author: zj
* @Date: 2023/5/25 18:11
*/
public
abstract
class
BaseController
{
@Autowired
private
StringRedisTemplate
stringRedisTemplate
;
/**
* 解析token,获取用户信息
* @param request
* @return
*/
// public BaseAccountDTO getUserLoginInfo(HttpServletRequest request) {
// String token = request.getHeader("token");
// try {
// Claims claims = JwtUtil.parseJwt(token);
// String userId = claims.get(JwtConstant.USER_ACCOUNT_ID).toString();
//// String roleId = claims.get("").toString();
// String tokenType = claims.get(JwtConstant.TOKEN_TYPE).toString();
// return BaseAccountDTO.builder().id(Integer.parseInt(userId)).tokenPort(tokenType).build();
// }catch (Exception e){
// throw new BizException("Invalid token");
// }
// }
/**
* 使用token从redis获取用户信息
*
* @param request
* @return
*/
public
LoginSuccessDTO
getUserLoginInfoFromRedis
(
HttpServletRequest
request
)
{
String
token
=
request
.
getHeader
(
"token"
);
if
(
StringUtils
.
isBlank
(
token
))
{
throw
new
BizException
(
ResultEnum
.
LOGIN_ACCOUNT_STATUS_ERROR
);
}
String
json
=
stringRedisTemplate
.
opsForValue
().
get
(
token
);
if
(
StringUtils
.
isBlank
(
json
))
{
throw
new
BizException
(
ResultEnum
.
LOGIN_ACCOUNT_STATUS_ERROR
);
}
LoginSuccessDTO
loginSuccessDTO
=
JSONObject
.
parseObject
(
json
,
LoginSuccessDTO
.
class
);
return
loginSuccessDTO
;
}
}
src/main/java/com/mmc/pms/controller/PartUploadController.java
浏览文件 @
54dd9c08
...
@@ -32,196 +32,197 @@ import java.util.List;
...
@@ -32,196 +32,197 @@ import java.util.List;
@RequestMapping
(
"/partupload"
)
@RequestMapping
(
"/partupload"
)
public
class
PartUploadController
{
public
class
PartUploadController
{
@Autowired
private
StringRedisTemplate
stringRedisTemplate
;
@Autowired
private
StringRedisTemplate
stringRedisTemplate
;
@ApiOperation
(
value
=
"初始化分片上传"
)
@GetMapping
(
"/initPartUpload"
)
@ApiOperation
(
value
=
"初始化分片上传"
)
public
ResultBody
initPartUpload
(
@RequestParam
String
fileName
,
HttpServletRequest
httpRequest
)
{
@GetMapping
(
"/initPartUpload"
)
// 创建OSSClient实例。
public
ResultBody
initPartUpload
(
@RequestParam
String
fileName
,
HttpServletRequest
httpRequest
)
{
OSS
ossClient
=
// 创建OSSClient实例。
new
OSSClientBuilder
()
OSS
ossClient
=
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
);
new
OSSClientBuilder
()
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
);
StringBuffer
objectName
=
new
StringBuffer
();
objectName
.
append
(
OssConstant
.
BUCKET
);
StringBuffer
objectName
=
new
StringBuffer
();
objectName
.
append
(
"/"
);
objectName
.
append
(
OssConstant
.
BUCKET
);
objectName
.
append
(
fileName
);
objectName
.
append
(
"/"
);
objectName
.
append
(
"-"
);
objectName
.
append
(
fileName
);
objectName
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
objectName
.
append
(
"-"
);
objectName
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
// 创建InitiateMultipartUploadRequest对象。
InitiateMultipartUploadRequest
request
=
// 创建InitiateMultipartUploadRequest对象。
new
InitiateMultipartUploadRequest
(
OssConstant
.
BUCKET
,
objectName
.
toString
());
InitiateMultipartUploadRequest
request
=
new
InitiateMultipartUploadRequest
(
OssConstant
.
BUCKET
,
objectName
.
toString
());
// 如果需要在初始化分片时设置文件存储类型,请参考以下示例代码。
// ObjectMetadata metadata = new ObjectMetadata();
// 如果需要在初始化分片时设置文件存储类型,请参考以下示例代码。
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS,
// ObjectMetadata metadata = new ObjectMetadata();
// StorageClass.Standard.toString());
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS,
// request.setObjectMetadata(metadata);
// StorageClass.Standard.toString());
// request.setObjectMetadata(metadata);
// 初始化分片。
InitiateMultipartUploadResult
upresult
=
ossClient
.
initiateMultipartUpload
(
request
);
// 初始化分片。
// 返回uploadId,它是分片上传事件的唯一标识。您可以根据该uploadId发起相关的操作,例如取消分片上传、查询分片上传等。
InitiateMultipartUploadResult
upresult
=
ossClient
.
initiateMultipartUpload
(
request
);
String
uploadId
=
upresult
.
getUploadId
();
// 返回uploadId,它是分片上传事件的唯一标识。您可以根据该uploadId发起相关的操作,例如取消分片上传、查询分片上传等。
String
uploadId
=
upresult
.
getUploadId
();
// 记录缓存信息
PartUploadInfo
pinfo
=
new
PartUploadInfo
();
// 记录缓存信息
pinfo
.
setBucketName
(
OssConstant
.
BUCKET
);
PartUploadInfo
pinfo
=
new
PartUploadInfo
();
pinfo
.
setObjectName
(
objectName
.
toString
());
pinfo
.
setBucketName
(
OssConstant
.
BUCKET
);
pinfo
.
setUploadId
(
uploadId
);
pinfo
.
setObjectName
(
objectName
.
toString
());
stringRedisTemplate
pinfo
.
setUploadId
(
uploadId
);
.
opsForValue
()
stringRedisTemplate
.
set
(
RedisConstant
.
createPartUploadKey
(
uploadId
),
JsonUtil
.
parseObjToJson
(
pinfo
));
.
opsForValue
()
return
ResultBody
.
success
(
uploadId
);
.
set
(
RedisConstant
.
createPartUploadKey
(
uploadId
),
JsonUtil
.
parseObjToJson
(
pinfo
));
}
return
ResultBody
.
success
(
uploadId
);
@ApiOperation
(
value
=
"进行片段上传"
)
@PostMapping
(
"/partUpload"
)
public
ResultBody
partUpload
(
@RequestParam
(
"partFile"
)
MultipartFile
partFile
,
@RequestParam
(
"uploadId"
)
String
uploadId
)
throws
IOException
{
PartUploadInfo
pinfo
=
JsonUtil
.
parseJsonToObj
(
stringRedisTemplate
.
opsForValue
().
get
(
RedisConstant
.
createPartUploadKey
(
uploadId
)),
PartUploadInfo
.
class
);
// 创建OSSClient实例。
OSS
ossClient
=
new
OSSClientBuilder
()
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
);
// partETags是PartETag的集合。PartETag由分片的ETag和分片号组成。
List
<
PartETag
>
partETags
=
new
ArrayList
<
PartETag
>();
// 每个分片的大小,用于计算文件有多少个分片。单位为字节。
final
long
partSize
=
1
*
1024
*
1024L
;
// 1 MB。
// 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
final
File
sampleFile
=
new
File
(
"D:\\localpath\\examplefile.txt"
);
long
fileLength
=
sampleFile
.
length
();
int
partCount
=
(
int
)
(
fileLength
/
partSize
);
if
(
fileLength
%
partSize
!=
0
)
{
partCount
++;
}
// 遍历分片上传。
for
(
int
i
=
0
;
i
<
partCount
;
i
++)
{
long
startPos
=
i
*
partSize
;
long
curPartSize
=
(
i
+
1
==
partCount
)
?
(
fileLength
-
startPos
)
:
partSize
;
InputStream
instream
=
new
FileInputStream
(
sampleFile
);
// 跳过已经上传的分片。
instream
.
skip
(
startPos
);
UploadPartRequest
uploadPartRequest
=
new
UploadPartRequest
();
uploadPartRequest
.
setBucketName
(
pinfo
.
getBucketName
());
uploadPartRequest
.
setKey
(
pinfo
.
getObjectName
());
uploadPartRequest
.
setUploadId
(
uploadId
);
uploadPartRequest
.
setInputStream
(
instream
);
// 设置分片大小。除了最后一个分片没有大小限制,其他的分片最小为100 KB。
uploadPartRequest
.
setPartSize
(
curPartSize
);
// 设置分片号。每一个上传的分片都有一个分片号,取值范围是1~10000,如果超出此范围,OSS将返回InvalidArgument错误码。
uploadPartRequest
.
setPartNumber
(
i
+
1
);
// 每个分片不需要按顺序上传,甚至可以在不同客户端上传,OSS会按照分片号排序组成完整的文件。
UploadPartResult
uploadPartResult
=
ossClient
.
uploadPart
(
uploadPartRequest
);
// 每次上传分片之后,OSS的返回结果包含PartETag。PartETag将被保存在partETags中。
partETags
.
add
(
uploadPartResult
.
getPartETag
());
}
}
// 创建CompleteMultipartUploadRequest对象。
@ApiOperation
(
value
=
"进行片段上传"
)
// 在执行完成分片上传操作时,需要提供所有有效的partETags。OSS收到提交的partETags后,会逐一验证每个分片的有效性。当所有的数据分片验证通过后,OSS将把这些分片组合成一个完整的文件。
@PostMapping
(
"/partUpload"
)
CompleteMultipartUploadRequest
completeMultipartUploadRequest
=
public
ResultBody
partUpload
(
new
CompleteMultipartUploadRequest
(
@RequestParam
(
"partFile"
)
MultipartFile
partFile
,
@RequestParam
(
"uploadId"
)
String
uploadId
)
pinfo
.
getBucketName
(),
pinfo
.
getObjectName
(),
uploadId
,
partETags
);
throws
IOException
{
PartUploadInfo
pinfo
=
// 如果需要在完成文件上传的同时设置文件访问权限,请参考以下示例代码。
JsonUtil
.
parseJsonToObj
(
// completeMultipartUploadRequest.setObjectACL(CannedAccessControlList.PublicRead);
stringRedisTemplate
.
opsForValue
().
get
(
RedisConstant
.
createPartUploadKey
(
uploadId
)),
PartUploadInfo
.
class
);
// 完成上传。
// 创建OSSClient实例。
CompleteMultipartUploadResult
completeMultipartUploadResult
=
OSS
ossClient
=
ossClient
.
completeMultipartUpload
(
completeMultipartUploadRequest
);
new
OSSClientBuilder
()
System
.
out
.
println
(
completeMultipartUploadResult
.
getETag
());
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
);
// 关闭OSSClient。
// partETags是PartETag的集合。PartETag由分片的ETag和分片号组成。
ossClient
.
shutdown
();
List
<
PartETag
>
partETags
=
new
ArrayList
<
PartETag
>();
return
ResultBody
.
success
();
// 每个分片的大小,用于计算文件有多少个分片。单位为字节。
}
final
long
partSize
=
1
*
1024
*
1024L
;
// 1 MB。
@ApiOperation
(
value
=
"上传到阿里云oss"
)
// 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
@PostMapping
(
"/oss"
)
final
File
sampleFile
=
new
File
(
"D:\\localpath\\examplefile.txt"
);
public
ResultBody
oss
(
long
fileLength
=
sampleFile
.
length
();
@RequestPart
(
"uploadFile"
)
MultipartFile
uploadFile
,
HttpServletRequest
httpRequest
)
int
partCount
=
(
int
)
(
fileLength
/
partSize
);
throws
Exception
{
if
(
fileLength
%
partSize
!=
0
)
{
// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
partCount
++;
String
endpoint
=
"yourEndpoint"
;
}
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
// 遍历分片上传。
String
accessKeyId
=
"yourAccessKeyId"
;
for
(
int
i
=
0
;
i
<
partCount
;
i
++)
{
String
accessKeySecret
=
"yourAccessKeySecret"
;
long
startPos
=
i
*
partSize
;
long
curPartSize
=
(
i
+
1
==
partCount
)
?
(
fileLength
-
startPos
)
:
partSize
;
// 填写Bucket名称,例如examplebucket。
InputStream
instream
=
new
FileInputStream
(
sampleFile
);
String
bucketName
=
"examplebucket"
;
// 跳过已经上传的分片。
// 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
instream
.
skip
(
startPos
);
String
objectName
=
"exampledir/exampleobject.txt"
;
UploadPartRequest
uploadPartRequest
=
new
UploadPartRequest
();
uploadPartRequest
.
setBucketName
(
pinfo
.
getBucketName
());
// 创建OSSClient实例。
uploadPartRequest
.
setKey
(
pinfo
.
getObjectName
());
OSS
ossClient
=
new
OSSClientBuilder
().
build
(
endpoint
,
accessKeyId
,
accessKeySecret
);
uploadPartRequest
.
setUploadId
(
uploadId
);
uploadPartRequest
.
setInputStream
(
instream
);
// 创建InitiateMultipartUploadRequest对象。
// 设置分片大小。除了最后一个分片没有大小限制,其他的分片最小为100 KB。
InitiateMultipartUploadRequest
request
=
uploadPartRequest
.
setPartSize
(
curPartSize
);
new
InitiateMultipartUploadRequest
(
bucketName
,
objectName
);
// 设置分片号。每一个上传的分片都有一个分片号,取值范围是1~10000,如果超出此范围,OSS将返回InvalidArgument错误码。
uploadPartRequest
.
setPartNumber
(
i
+
1
);
// 如果需要在初始化分片时设置文件存储类型,请参考以下示例代码。
// 每个分片不需要按顺序上传,甚至可以在不同客户端上传,OSS会按照分片号排序组成完整的文件。
// ObjectMetadata metadata = new ObjectMetadata();
UploadPartResult
uploadPartResult
=
ossClient
.
uploadPart
(
uploadPartRequest
);
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS,
// 每次上传分片之后,OSS的返回结果包含PartETag。PartETag将被保存在partETags中。
// StorageClass.Standard.toString());
partETags
.
add
(
uploadPartResult
.
getPartETag
());
// request.setObjectMetadata(metadata);
}
// 初始化分片。
// 创建CompleteMultipartUploadRequest对象。
InitiateMultipartUploadResult
upresult
=
ossClient
.
initiateMultipartUpload
(
request
);
// 在执行完成分片上传操作时,需要提供所有有效的partETags。OSS收到提交的partETags后,会逐一验证每个分片的有效性。当所有的数据分片验证通过后,OSS将把这些分片组合成一个完整的文件。
// 返回uploadId,它是分片上传事件的唯一标识。您可以根据该uploadId发起相关的操作,例如取消分片上传、查询分片上传等。
CompleteMultipartUploadRequest
completeMultipartUploadRequest
=
String
uploadId
=
upresult
.
getUploadId
();
new
CompleteMultipartUploadRequest
(
pinfo
.
getBucketName
(),
pinfo
.
getObjectName
(),
uploadId
,
partETags
);
// partETags是PartETag的集合。PartETag由分片的ETag和分片号组成。
List
<
PartETag
>
partETags
=
new
ArrayList
<
PartETag
>();
// 如果需要在完成文件上传的同时设置文件访问权限,请参考以下示例代码。
// 每个分片的大小,用于计算文件有多少个分片。单位为字节。
// completeMultipartUploadRequest.setObjectACL(CannedAccessControlList.PublicRead);
final
long
partSize
=
1
*
1024
*
1024L
;
// 1 MB。
// 完成上传。
// 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
CompleteMultipartUploadResult
completeMultipartUploadResult
=
final
File
sampleFile
=
new
File
(
"D:\\localpath\\examplefile.txt"
);
ossClient
.
completeMultipartUpload
(
completeMultipartUploadRequest
);
long
fileLength
=
sampleFile
.
length
();
System
.
out
.
println
(
completeMultipartUploadResult
.
getETag
());
int
partCount
=
(
int
)
(
fileLength
/
partSize
);
// 关闭OSSClient。
if
(
fileLength
%
partSize
!=
0
)
{
ossClient
.
shutdown
();
partCount
++;
return
ResultBody
.
success
();
}
// 遍历分片上传。
for
(
int
i
=
0
;
i
<
partCount
;
i
++)
{
long
startPos
=
i
*
partSize
;
long
curPartSize
=
(
i
+
1
==
partCount
)
?
(
fileLength
-
startPos
)
:
partSize
;
InputStream
instream
=
new
FileInputStream
(
sampleFile
);
// 跳过已经上传的分片。
instream
.
skip
(
startPos
);
UploadPartRequest
uploadPartRequest
=
new
UploadPartRequest
();
uploadPartRequest
.
setBucketName
(
bucketName
);
uploadPartRequest
.
setKey
(
objectName
);
uploadPartRequest
.
setUploadId
(
uploadId
);
uploadPartRequest
.
setInputStream
(
instream
);
// 设置分片大小。除了最后一个分片没有大小限制,其他的分片最小为100 KB。
uploadPartRequest
.
setPartSize
(
curPartSize
);
// 设置分片号。每一个上传的分片都有一个分片号,取值范围是1~10000,如果超出此范围,OSS将返回InvalidArgument错误码。
uploadPartRequest
.
setPartNumber
(
i
+
1
);
// 每个分片不需要按顺序上传,甚至可以在不同客户端上传,OSS会按照分片号排序组成完整的文件。
UploadPartResult
uploadPartResult
=
ossClient
.
uploadPart
(
uploadPartRequest
);
// 每次上传分片之后,OSS的返回结果包含PartETag。PartETag将被保存在partETags中。
partETags
.
add
(
uploadPartResult
.
getPartETag
());
}
}
// 创建CompleteMultipartUploadRequest对象。
@ApiOperation
(
value
=
"上传到阿里云oss"
)
// 在执行完成分片上传操作时,需要提供所有有效的partETags。OSS收到提交的partETags后,会逐一验证每个分片的有效性。当所有的数据分片验证通过后,OSS将把这些分片组合成一个完整的文件。
@PostMapping
(
"/oss"
)
CompleteMultipartUploadRequest
completeMultipartUploadRequest
=
public
ResultBody
oss
(
new
CompleteMultipartUploadRequest
(
bucketName
,
objectName
,
uploadId
,
partETags
);
@RequestPart
(
"uploadFile"
)
MultipartFile
uploadFile
,
HttpServletRequest
httpRequest
)
throws
Exception
{
// 如果需要在完成文件上传的同时设置文件访问权限,请参考以下示例代码。
// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
// completeMultipartUploadRequest.setObjectACL(CannedAccessControlList.PublicRead);
String
endpoint
=
"yourEndpoint"
;
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
// 完成上传。
String
accessKeyId
=
"yourAccessKeyId"
;
CompleteMultipartUploadResult
completeMultipartUploadResult
=
String
accessKeySecret
=
"yourAccessKeySecret"
;
ossClient
.
completeMultipartUpload
(
completeMultipartUploadRequest
);
System
.
out
.
println
(
completeMultipartUploadResult
.
getETag
());
// 填写Bucket名称,例如examplebucket。
// 关闭OSSClient。
String
bucketName
=
"examplebucket"
;
ossClient
.
shutdown
();
// 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
return
ResultBody
.
success
();
String
objectName
=
"exampledir/exampleobject.txt"
;
}
// 创建OSSClient实例。
OSS
ossClient
=
new
OSSClientBuilder
().
build
(
endpoint
,
accessKeyId
,
accessKeySecret
);
// 创建InitiateMultipartUploadRequest对象。
InitiateMultipartUploadRequest
request
=
new
InitiateMultipartUploadRequest
(
bucketName
,
objectName
);
// 如果需要在初始化分片时设置文件存储类型,请参考以下示例代码。
// ObjectMetadata metadata = new ObjectMetadata();
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS,
// StorageClass.Standard.toString());
// request.setObjectMetadata(metadata);
// 初始化分片。
InitiateMultipartUploadResult
upresult
=
ossClient
.
initiateMultipartUpload
(
request
);
// 返回uploadId,它是分片上传事件的唯一标识。您可以根据该uploadId发起相关的操作,例如取消分片上传、查询分片上传等。
String
uploadId
=
upresult
.
getUploadId
();
// partETags是PartETag的集合。PartETag由分片的ETag和分片号组成。
List
<
PartETag
>
partETags
=
new
ArrayList
<
PartETag
>();
// 每个分片的大小,用于计算文件有多少个分片。单位为字节。
final
long
partSize
=
1
*
1024
*
1024L
;
// 1 MB。
// 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
final
File
sampleFile
=
new
File
(
"D:\\localpath\\examplefile.txt"
);
long
fileLength
=
sampleFile
.
length
();
int
partCount
=
(
int
)
(
fileLength
/
partSize
);
if
(
fileLength
%
partSize
!=
0
)
{
partCount
++;
}
// 遍历分片上传。
for
(
int
i
=
0
;
i
<
partCount
;
i
++)
{
long
startPos
=
i
*
partSize
;
long
curPartSize
=
(
i
+
1
==
partCount
)
?
(
fileLength
-
startPos
)
:
partSize
;
InputStream
instream
=
new
FileInputStream
(
sampleFile
);
// 跳过已经上传的分片。
instream
.
skip
(
startPos
);
UploadPartRequest
uploadPartRequest
=
new
UploadPartRequest
();
uploadPartRequest
.
setBucketName
(
bucketName
);
uploadPartRequest
.
setKey
(
objectName
);
uploadPartRequest
.
setUploadId
(
uploadId
);
uploadPartRequest
.
setInputStream
(
instream
);
// 设置分片大小。除了最后一个分片没有大小限制,其他的分片最小为100 KB。
uploadPartRequest
.
setPartSize
(
curPartSize
);
// 设置分片号。每一个上传的分片都有一个分片号,取值范围是1~10000,如果超出此范围,OSS将返回InvalidArgument错误码。
uploadPartRequest
.
setPartNumber
(
i
+
1
);
// 每个分片不需要按顺序上传,甚至可以在不同客户端上传,OSS会按照分片号排序组成完整的文件。
UploadPartResult
uploadPartResult
=
ossClient
.
uploadPart
(
uploadPartRequest
);
// 每次上传分片之后,OSS的返回结果包含PartETag。PartETag将被保存在partETags中。
partETags
.
add
(
uploadPartResult
.
getPartETag
());
}
// 创建CompleteMultipartUploadRequest对象。
// 在执行完成分片上传操作时,需要提供所有有效的partETags。OSS收到提交的partETags后,会逐一验证每个分片的有效性。当所有的数据分片验证通过后,OSS将把这些分片组合成一个完整的文件。
CompleteMultipartUploadRequest
completeMultipartUploadRequest
=
new
CompleteMultipartUploadRequest
(
bucketName
,
objectName
,
uploadId
,
partETags
);
// 如果需要在完成文件上传的同时设置文件访问权限,请参考以下示例代码。
// completeMultipartUploadRequest.setObjectACL(CannedAccessControlList.PublicRead);
// 完成上传。
CompleteMultipartUploadResult
completeMultipartUploadResult
=
ossClient
.
completeMultipartUpload
(
completeMultipartUploadRequest
);
System
.
out
.
println
(
completeMultipartUploadResult
.
getETag
());
// 关闭OSSClient。
ossClient
.
shutdown
();
return
ResultBody
.
success
();
}
}
}
src/main/java/com/mmc/pms/controller/UploadController.java
浏览文件 @
54dd9c08
package
com
.
mmc
.
pms
.
controller
;
package
com
.
mmc
.
pms
.
controller
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson
2
.JSONObject
;
import
com.aliyun.oss.ClientBuilderConfiguration
;
import
com.aliyun.oss.ClientBuilderConfiguration
;
import
com.aliyun.oss.OSS
;
import
com.aliyun.oss.OSS
;
import
com.aliyun.oss.OSSClientBuilder
;
import
com.aliyun.oss.OSSClientBuilder
;
...
@@ -30,527 +30,527 @@ import java.util.*;
...
@@ -30,527 +30,527 @@ import java.util.*;
@RestController
@RestController
@RequestMapping
(
"/upload"
)
@RequestMapping
(
"/upload"
)
public
class
UploadController
{
public
class
UploadController
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy/MM/dd/"
);
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy/MM/dd/"
);
@ApiOperation
(
value
=
"V1.0.1-上传一个图片或者文件到阿里云oss"
)
@ApiOperation
(
value
=
"V1.0.1-上传一个图片或者文件到阿里云oss"
)
@ApiImplicitParams
({
@ApiImplicitParams
({
@ApiImplicitParam
(
@ApiImplicitParam
(
paramType
=
"header"
,
paramType
=
"header"
,
name
=
"mmc-identity"
,
name
=
"mmc-identity"
,
dataTypeClass
=
java
.
lang
.
String
.
class
,
dataTypeClass
=
java
.
lang
.
String
.
class
,
dataType
=
"String"
,
dataType
=
"String"
,
required
=
false
,
required
=
false
,
value
=
"token"
),
value
=
"token"
),
@ApiImplicitParam
(
@ApiImplicitParam
(
name
=
"uploadFile"
,
name
=
"uploadFile"
,
dataType
=
"MultipartFile"
,
dataType
=
"MultipartFile"
,
dataTypeClass
=
org
.
springframework
.
web
.
multipart
.
MultipartFile
.
class
,
dataTypeClass
=
org
.
springframework
.
web
.
multipart
.
MultipartFile
.
class
,
required
=
true
,
required
=
true
,
value
=
"文件/图片/后缀无限制"
),
value
=
"文件/图片/后缀无限制"
),
})
})
@PostMapping
(
"/oss"
)
@PostMapping
(
"/oss"
)
public
ResultBody
oss
(
public
ResultBody
oss
(
@RequestParam
(
"uploadFile"
)
MultipartFile
uploadFile
,
HttpServletRequest
request
)
{
@RequestParam
(
"uploadFile"
)
MultipartFile
uploadFile
,
HttpServletRequest
request
)
{
OSS
ossClient
=
OSS
ossClient
=
new
OSSClientBuilder
()
new
OSSClientBuilder
()
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
);
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
);
InputStream
inputStream
=
null
;
try
{
inputStream
=
uploadFile
.
getInputStream
();
}
catch
(
IOException
e
)
{
return
ResultBody
.
error
(
e
.
getMessage
());
}
String
oldName
=
uploadFile
.
getOriginalFilename
();
String
newName
=
"file/"
+
UUID
.
randomUUID
().
toString
()
+
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
),
oldName
.
length
());
ossClient
.
putObject
(
OssConstant
.
BUCKET
,
newName
,
inputStream
);
ossClient
.
shutdown
();
String
filePath
=
"https://"
+
OssConstant
.
BUCKET
+
'.'
+
OssConstant
.
ENDPOINT
+
"/"
+
newName
;
JSONObject
jsObj
=
new
JSONObject
();
jsObj
.
put
(
"filePath"
,
filePath
);
return
ResultBody
.
success
(
jsObj
);
}
@ApiOperation
(
value
=
"V1.0.1-上传多个文件到阿里云oss"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
paramType
=
"header"
,
name
=
"mmc-identity"
,
dataTypeClass
=
java
.
lang
.
String
.
class
,
dataType
=
"String"
,
required
=
false
,
value
=
"token"
),
@ApiImplicitParam
(
name
=
"uploadFile"
,
dataType
=
"MultipartFile"
,
dataTypeClass
=
org
.
springframework
.
web
.
multipart
.
MultipartFile
.
class
,
required
=
true
,
value
=
"文件/图片"
),
})
@PostMapping
(
"/osses"
)
public
ResultBody
osses
(
@RequestParam
(
"uploadFile"
)
MultipartFile
[]
uploadFile
,
HttpServletRequest
request
)
throws
IOException
{
OSS
ossClient
=
new
OSSClientBuilder
()
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
);
List
list
=
new
LinkedList
();
if
(
uploadFile
!=
null
&&
uploadFile
.
length
>
0
)
{
System
.
out
.
println
(
"osses文件数量"
+
uploadFile
.
length
);
for
(
int
i
=
0
;
i
<
uploadFile
.
length
;
i
++)
{
MultipartFile
file
=
uploadFile
[
i
];
InputStream
inputStream
=
null
;
InputStream
inputStream
=
null
;
try
{
try
{
inputStream
=
f
ile
.
getInputStream
();
inputStream
=
uploadF
ile
.
getInputStream
();
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
return
ResultBody
.
error
(
e
.
getMessage
());
return
ResultBody
.
error
(
e
.
getMessage
());
}
}
String
oldName
=
file
.
getOriginalFilename
();
String
oldName
=
uploadFile
.
getOriginalFilename
();
String
newName
=
String
newName
=
"file/"
"file/"
+
UUID
.
randomUUID
().
toString
()
+
UUID
.
randomUUID
().
toString
()
+
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
),
oldName
.
length
());
+
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
),
oldName
.
length
());
ossClient
.
putObject
(
OssConstant
.
BUCKET
,
newName
,
inputStream
);
ossClient
.
putObject
(
OssConstant
.
BUCKET
,
newName
,
inputStream
);
// ossClient.shutdown();
ossClient
.
shutdown
();
// String filePath = "https://" + OssConstant.BUCKET + '.' +
String
filePath
=
"https://"
+
OssConstant
.
BUCKET
+
'.'
+
OssConstant
.
ENDPOINT
+
"/"
+
newName
;
// OssConstant.ENDPOINT + "/" +
JSONObject
jsObj
=
new
JSONObject
();
// newName;
jsObj
.
put
(
"filePath"
,
filePath
);
list
.
add
(
"https://"
+
OssConstant
.
BUCKET
+
'.'
+
OssConstant
.
ENDPOINT
+
"/"
+
newName
);
return
ResultBody
.
success
(
jsObj
);
}
}
}
ossClient
.
shutdown
();
// 关流
return
ResultBody
.
success
(
list
);
}
@ApiOperation
(
value
=
"V1.0.1-上传多个视频文件到阿里云oss"
)
@ApiOperation
(
value
=
"V1.0.1-上传多个文件到阿里云oss"
)
@ApiImplicitParams
({
@ApiImplicitParams
({
@ApiImplicitParam
(
@ApiImplicitParam
(
paramType
=
"header"
,
paramType
=
"header"
,
name
=
"mmc-identity"
,
name
=
"mmc-identity"
,
dataTypeClass
=
java
.
lang
.
String
.
class
,
dataTypeClass
=
java
.
lang
.
String
.
class
,
dataType
=
"String"
,
dataType
=
"String"
,
required
=
false
,
required
=
false
,
value
=
"token"
),
value
=
"token"
),
@ApiImplicitParam
(
@ApiImplicitParam
(
name
=
"uploadFile"
,
name
=
"uploadFile"
,
dataType
=
"MultipartFile"
,
dataType
=
"MultipartFile"
,
dataTypeClass
=
org
.
springframework
.
web
.
multipart
.
MultipartFile
.
class
,
dataTypeClass
=
org
.
springframework
.
web
.
multipart
.
MultipartFile
.
class
,
required
=
true
,
required
=
true
,
value
=
"视频不能超过1MB/mkv/avi/mov/mp4"
),
value
=
"文件/图片"
),
})
})
@PostMapping
(
"/videoOss"
)
@PostMapping
(
"/osses"
)
public
ResultBody
videoOss
(
public
ResultBody
osses
(
@RequestParam
(
"uploadFile"
)
MultipartFile
[]
uploadFile
,
HttpServletRequest
request
)
@RequestParam
(
"uploadFile"
)
MultipartFile
[]
uploadFile
,
HttpServletRequest
request
)
throws
IOException
{
throws
IOException
{
ClientBuilderConfiguration
clientBuilderConfiguration
=
new
ClientBuilderConfiguration
();
OSS
ossClient
=
clientBuilderConfiguration
.
setRequestTimeoutEnabled
(
true
);
new
OSSClientBuilder
()
clientBuilderConfiguration
.
setConnectionRequestTimeout
(
600000
*
20
);
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
);
clientBuilderConfiguration
.
setConnectionTimeout
(
600000
*
20
);
List
list
=
new
LinkedList
();
if
(
uploadFile
!=
null
&&
uploadFile
.
length
>
0
)
{
System
.
out
.
println
(
"osses文件数量"
+
uploadFile
.
length
);
for
(
int
i
=
0
;
i
<
uploadFile
.
length
;
i
++)
{
MultipartFile
file
=
uploadFile
[
i
];
InputStream
inputStream
=
null
;
try
{
inputStream
=
file
.
getInputStream
();
}
catch
(
IOException
e
)
{
OSS
ossClient
=
return
ResultBody
.
error
(
e
.
getMessage
());
new
OSSClientBuilder
()
}
.
build
(
String
oldName
=
file
.
getOriginalFilename
();
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
String
newName
=
OssConstant
.
ACCESSKEYSECRET
,
"file/"
clientBuilderConfiguration
);
+
UUID
.
randomUUID
().
toString
()
List
list
=
new
LinkedList
();
+
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
),
oldName
.
length
());
if
(
uploadFile
!=
null
&&
uploadFile
.
length
>
0
)
{
ossClient
.
putObject
(
OssConstant
.
BUCKET
,
newName
,
inputStream
);
System
.
out
.
println
(
"osses文件数量"
+
uploadFile
.
length
);
// ossClient.shutdown();
for
(
int
i
=
0
;
i
<
uploadFile
.
length
;
i
++)
{
// String filePath = "https://" + OssConstant.BUCKET + '.' +
MultipartFile
file
=
uploadFile
[
i
];
// OssConstant.ENDPOINT + "/" +
InputStream
inputStream
=
null
;
// newName;
try
{
list
.
add
(
"https://"
+
OssConstant
.
BUCKET
+
'.'
+
OssConstant
.
ENDPOINT
+
"/"
+
newName
);
inputStream
=
file
.
getInputStream
();
}
}
catch
(
IOException
e
)
{
return
ResultBody
.
error
(
e
.
getMessage
());
}
try
(
final
BufferedInputStream
bis
=
new
BufferedInputStream
(
inputStream
))
{
// 校验
int
typeNum
=
FileLoadUtil
.
checkFileType
(
FileLoadUtil
.
getType
(
bis
));
if
(
typeNum
!=
3
)
{
return
ResultBody
.
error
(
ResultEnum
.
UPLOAD_VIDEO_ERROR
);
}
String
oldName
=
file
.
getOriginalFilename
();
String
newName
=
"file/"
+
UUID
.
randomUUID
().
toString
()
+
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
),
oldName
.
length
());
ossClient
.
putObject
(
OssConstant
.
BUCKET
,
newName
,
bis
);
System
.
out
.
println
(
"视频名称:"
+
newName
);
list
.
add
(
"https://"
+
OssConstant
.
BUCKET
+
'.'
+
OssConstant
.
ENDPOINT
+
"/"
+
newName
);
}
}
}
ossClient
.
shutdown
();
// 关流
return
ResultBody
.
success
(
list
);
}
}
ossClient
.
shutdown
();
// 关流
return
ResultBody
.
success
(
list
);
}
@ApiOperation
(
value
=
"V1.0.1-上传一
个视频文件到阿里云oss"
)
@ApiOperation
(
value
=
"V1.0.1-上传多
个视频文件到阿里云oss"
)
@ApiImplicitParams
({
@ApiImplicitParams
({
@ApiImplicitParam
(
@ApiImplicitParam
(
paramType
=
"header"
,
paramType
=
"header"
,
name
=
"mmc-identity"
,
name
=
"mmc-identity"
,
dataTypeClass
=
java
.
lang
.
String
.
class
,
dataTypeClass
=
java
.
lang
.
String
.
class
,
dataType
=
"String"
,
dataType
=
"String"
,
required
=
false
,
required
=
false
,
value
=
"token"
),
value
=
"token"
),
@ApiImplicitParam
(
@ApiImplicitParam
(
name
=
"uploadFile"
,
name
=
"uploadFile"
,
dataType
=
"MultipartFile"
,
dataType
=
"MultipartFile"
,
dataTypeClass
=
org
.
springframework
.
web
.
multipart
.
MultipartFile
.
class
,
dataTypeClass
=
org
.
springframework
.
web
.
multipart
.
MultipartFile
.
class
,
required
=
true
,
required
=
true
,
value
=
"视频不能超过1MB/mkv/avi/mov/mp4"
),
value
=
"视频不能超过1MB/mkv/avi/mov/mp4"
),
})
})
@PostMapping
(
"/videoOsse
s"
)
@PostMapping
(
"/videoOs
s"
)
public
ResultBody
videoOsse
s
(
public
ResultBody
videoOs
s
(
@RequestParam
(
"uploadFile"
)
MultipartFile
[]
uploadFile
,
HttpServletRequest
request
)
@RequestParam
(
"uploadFile"
)
MultipartFile
[]
uploadFile
,
HttpServletRequest
request
)
throws
IOException
{
throws
IOException
{
ClientBuilderConfiguration
clientBuilderConfiguration
=
new
ClientBuilderConfiguration
();
ClientBuilderConfiguration
clientBuilderConfiguration
=
new
ClientBuilderConfiguration
();
clientBuilderConfiguration
.
setRequestTimeoutEnabled
(
true
);
clientBuilderConfiguration
.
setRequestTimeoutEnabled
(
true
);
clientBuilderConfiguration
.
setConnectionRequestTimeout
(
600000
*
20
);
clientBuilderConfiguration
.
setConnectionRequestTimeout
(
600000
*
20
);
clientBuilderConfiguration
.
setConnectionTimeout
(
600000
*
20
);
clientBuilderConfiguration
.
setConnectionTimeout
(
600000
*
20
);
OSS
ossClient
=
OSS
ossClient
=
new
OSSClientBuilder
()
new
OSSClientBuilder
()
.
build
(
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
,
OssConstant
.
ACCESSKEYSECRET
,
clientBuilderConfiguration
);
clientBuilderConfiguration
);
Map
map
=
new
HashMap
();
List
list
=
new
LinkedList
();
if
(
uploadFile
!=
null
&&
uploadFile
.
length
>
0
)
{
if
(
uploadFile
!=
null
&&
uploadFile
.
length
>
0
)
{
System
.
out
.
println
(
"osses文件数量"
+
uploadFile
.
length
);
System
.
out
.
println
(
"osses文件数量"
+
uploadFile
.
length
);
for
(
int
i
=
0
;
i
<
uploadFile
.
length
;
i
++)
{
for
(
int
i
=
0
;
i
<
uploadFile
.
length
;
i
++)
{
MultipartFile
file
=
uploadFile
[
i
];
MultipartFile
file
=
uploadFile
[
i
];
InputStream
inputStream
=
null
;
InputStream
inputStream
=
null
;
try
{
try
{
inputStream
=
file
.
getInputStream
();
inputStream
=
file
.
getInputStream
();
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
return
ResultBody
.
error
(
e
.
getMessage
());
return
ResultBody
.
error
(
e
.
getMessage
());
}
try
(
final
BufferedInputStream
bis
=
new
BufferedInputStream
(
inputStream
))
{
// 校验
int
typeNum
=
FileLoadUtil
.
checkFileType
(
FileLoadUtil
.
getType
(
bis
));
if
(
typeNum
!=
3
)
{
return
ResultBody
.
error
(
ResultEnum
.
UPLOAD_VIDEO_ERROR
);
}
String
oldName
=
file
.
getOriginalFilename
();
String
newName
=
"file/"
+
UUID
.
randomUUID
().
toString
()
+
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
),
oldName
.
length
());
ossClient
.
putObject
(
OssConstant
.
BUCKET
,
newName
,
bis
);
System
.
out
.
println
(
"视频名称:"
+
newName
);
list
.
add
(
"https://"
+
OssConstant
.
BUCKET
+
'.'
+
OssConstant
.
ENDPOINT
+
"/"
+
newName
);
}
}
}
}
try
(
final
BufferedInputStream
bis
=
new
BufferedInputStream
(
inputStream
))
{
ossClient
.
shutdown
();
// 关流
// 校验
return
ResultBody
.
success
(
list
);
int
typeNum
=
FileLoadUtil
.
checkFileType
(
FileLoadUtil
.
getType
(
bis
));
if
(
typeNum
!=
3
)
{
return
ResultBody
.
error
(
ResultEnum
.
UPLOAD_VIDEO_ERROR
);
}
String
oldName
=
file
.
getOriginalFilename
();
String
newName
=
"file/"
+
UUID
.
randomUUID
().
toString
()
+
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
),
oldName
.
length
());
ossClient
.
putObject
(
OssConstant
.
BUCKET
,
newName
,
bis
);
System
.
out
.
println
(
"视频名称:"
+
newName
);
map
.
put
(
"filePath"
,
"https://"
+
OssConstant
.
BUCKET
+
'.'
+
OssConstant
.
ENDPOINT
+
"/"
+
newName
);
map
.
put
(
"fileName"
,
oldName
);
map
.
put
(
"fileSize"
,
file
.
getSize
());
map
.
put
(
"fileType"
,
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
)).
replace
(
"."
,
""
));
}
}
}
}
ossClient
.
shutdown
();
// 关流
return
ResultBody
.
success
(
map
);
}
@ApiOperation
(
value
=
"V1.0.1-上传多张图片文件到阿里云oss"
)
@ApiOperation
(
value
=
"V1.0.1-上传一个视频文件到阿里云oss"
)
@ApiImplicitParams
({
@ApiImplicitParams
({
@ApiImplicitParam
(
@ApiImplicitParam
(
paramType
=
"header"
,
paramType
=
"header"
,
name
=
"mmc-identity"
,
name
=
"mmc-identity"
,
dataTypeClass
=
java
.
lang
.
String
.
class
,
dataTypeClass
=
java
.
lang
.
String
.
class
,
dataType
=
"String"
,
dataType
=
"String"
,
required
=
false
,
required
=
false
,
value
=
"token"
),
value
=
"token"
),
@ApiImplicitParam
(
@ApiImplicitParam
(
name
=
"uploadFile"
,
name
=
"uploadFile"
,
dataType
=
"MultipartFile"
,
dataType
=
"MultipartFile"
,
dataTypeClass
=
org
.
springframework
.
web
.
multipart
.
MultipartFile
.
class
,
dataTypeClass
=
org
.
springframework
.
web
.
multipart
.
MultipartFile
.
class
,
required
=
true
,
required
=
true
,
value
=
"图片"
),
value
=
"视频不能超过1MB/mkv/avi/mov/mp4"
),
})
})
@PostMapping
(
"/imgOss"
)
@PostMapping
(
"/videoOsses"
)
public
ResultBody
imgOss
(
public
ResultBody
videoOsses
(
@RequestParam
(
"uploadFile"
)
MultipartFile
[]
uploadFile
,
HttpServletRequest
request
)
@RequestParam
(
"uploadFile"
)
MultipartFile
[]
uploadFile
,
HttpServletRequest
request
)
throws
IOException
{
throws
IOException
{
OSS
ossClient
=
ClientBuilderConfiguration
clientBuilderConfiguration
=
new
ClientBuilderConfiguration
();
new
OSSClientBuilder
()
clientBuilderConfiguration
.
setRequestTimeoutEnabled
(
true
);
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
);
clientBuilderConfiguration
.
setConnectionRequestTimeout
(
600000
*
20
);
List
list
=
new
LinkedList
();
clientBuilderConfiguration
.
setConnectionTimeout
(
600000
*
20
);
if
(
uploadFile
!=
null
&&
uploadFile
.
length
>
0
)
{
System
.
out
.
println
(
"osses文件数量"
+
uploadFile
.
length
);
for
(
int
i
=
0
;
i
<
uploadFile
.
length
;
i
++)
{
MultipartFile
file
=
uploadFile
[
i
];
InputStream
inputStream
=
null
;
try
{
inputStream
=
file
.
getInputStream
();
}
catch
(
IOException
e
)
{
return
ResultBody
.
error
(
e
.
getMessage
());
OSS
ossClient
=
new
OSSClientBuilder
()
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
,
clientBuilderConfiguration
);
Map
map
=
new
HashMap
();
if
(
uploadFile
!=
null
&&
uploadFile
.
length
>
0
)
{
System
.
out
.
println
(
"osses文件数量"
+
uploadFile
.
length
);
for
(
int
i
=
0
;
i
<
uploadFile
.
length
;
i
++)
{
MultipartFile
file
=
uploadFile
[
i
];
InputStream
inputStream
=
null
;
try
{
inputStream
=
file
.
getInputStream
();
}
catch
(
IOException
e
)
{
return
ResultBody
.
error
(
e
.
getMessage
());
}
try
(
final
BufferedInputStream
bis
=
new
BufferedInputStream
(
inputStream
))
{
// 校验
int
typeNum
=
FileLoadUtil
.
checkFileType
(
FileLoadUtil
.
getType
(
bis
));
if
(
typeNum
!=
3
)
{
return
ResultBody
.
error
(
ResultEnum
.
UPLOAD_VIDEO_ERROR
);
}
String
oldName
=
file
.
getOriginalFilename
();
String
newName
=
"file/"
+
UUID
.
randomUUID
().
toString
()
+
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
),
oldName
.
length
());
ossClient
.
putObject
(
OssConstant
.
BUCKET
,
newName
,
bis
);
System
.
out
.
println
(
"视频名称:"
+
newName
);
map
.
put
(
"filePath"
,
"https://"
+
OssConstant
.
BUCKET
+
'.'
+
OssConstant
.
ENDPOINT
+
"/"
+
newName
);
map
.
put
(
"fileName"
,
oldName
);
map
.
put
(
"fileSize"
,
file
.
getSize
());
map
.
put
(
"fileType"
,
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
)).
replace
(
"."
,
""
));
}
}
}
}
try
(
final
BufferedInputStream
bis
=
new
BufferedInputStream
(
inputStream
))
{
ossClient
.
shutdown
();
// 关流
// 校验
return
ResultBody
.
success
(
map
);
int
typeNum
=
FileLoadUtil
.
checkFileType
(
FileLoadUtil
.
getType
(
bis
));
if
(
typeNum
!=
1
)
{
return
ResultBody
.
error
(
ResultEnum
.
UPLOAD_IMG_ERROR
);
}
String
oldName
=
file
.
getOriginalFilename
();
String
newName
=
"file/"
+
UUID
.
randomUUID
().
toString
()
+
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
),
oldName
.
length
());
ossClient
.
putObject
(
OssConstant
.
BUCKET
,
newName
,
bis
);
System
.
out
.
println
(
"图片名称:"
+
newName
);
list
.
add
(
"https://"
+
OssConstant
.
BUCKET
+
'.'
+
OssConstant
.
ENDPOINT
+
"/"
+
newName
);
}
}
}
}
ossClient
.
shutdown
();
// 关流
return
ResultBody
.
success
(
list
);
}
@ApiOperation
(
value
=
"V1.0.1-上传一张图片文件到阿里云oss
"
)
@ApiOperation
(
value
=
"V1.0.1-上传多张图片文件到阿里云oss
"
)
@ApiImplicitParams
({
@ApiImplicitParams
({
@ApiImplicitParam
(
@ApiImplicitParam
(
paramType
=
"header"
,
paramType
=
"header"
,
name
=
"mmc-identity"
,
name
=
"mmc-identity"
,
dataTypeClass
=
java
.
lang
.
String
.
class
,
dataTypeClass
=
java
.
lang
.
String
.
class
,
dataType
=
"String"
,
dataType
=
"String"
,
required
=
false
,
required
=
false
,
value
=
"token"
),
value
=
"token"
),
@ApiImplicitParam
(
@ApiImplicitParam
(
name
=
"uploadFile"
,
name
=
"uploadFile"
,
dataType
=
"MultipartFile"
,
dataType
=
"MultipartFile"
,
dataTypeClass
=
org
.
springframework
.
web
.
multipart
.
MultipartFile
.
class
,
dataTypeClass
=
org
.
springframework
.
web
.
multipart
.
MultipartFile
.
class
,
required
=
true
,
required
=
true
,
value
=
"文件
"
),
value
=
"图片
"
),
})
})
@PostMapping
(
"/singleI
mgOss"
)
@PostMapping
(
"/i
mgOss"
)
public
ResultBody
singleI
mgOss
(
public
ResultBody
i
mgOss
(
@RequestParam
(
"uploadFile"
)
MultipartFile
uploadFile
,
HttpServletRequest
request
)
@RequestParam
(
"uploadFile"
)
MultipartFile
[]
uploadFile
,
HttpServletRequest
request
)
throws
IOException
{
throws
IOException
{
OSS
ossClient
=
OSS
ossClient
=
new
OSSClientBuilder
()
new
OSSClientBuilder
()
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
);
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
);
List
list
=
new
LinkedList
();
List
list
=
new
LinkedList
();
if
(
uploadFile
!=
null
)
{
if
(
uploadFile
!=
null
&&
uploadFile
.
length
>
0
)
{
if
(
uploadFile
.
getSize
()
/
1024
>
3096
)
{
System
.
out
.
println
(
"osses文件数量"
+
uploadFile
.
length
);
return
ResultBody
.
error
(
"请上传小于3M的图片"
);
for
(
int
i
=
0
;
i
<
uploadFile
.
length
;
i
++)
{
}
MultipartFile
file
=
uploadFile
[
i
];
InputStream
inputStream
=
null
;
InputStream
inputStream
=
null
;
try
{
try
{
inputStream
=
uploadF
ile
.
getInputStream
();
inputStream
=
f
ile
.
getInputStream
();
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
return
ResultBody
.
error
(
e
.
getMessage
());
return
ResultBody
.
error
(
e
.
getMessage
());
}
}
try
(
final
BufferedInputStream
bis
=
new
BufferedInputStream
(
inputStream
))
{
try
(
final
BufferedInputStream
bis
=
new
BufferedInputStream
(
inputStream
))
{
// 校验
// 校验
int
typeNum
=
FileLoadUtil
.
checkFileType
(
FileLoadUtil
.
getType
(
bis
));
int
typeNum
=
FileLoadUtil
.
checkFileType
(
FileLoadUtil
.
getType
(
bis
));
if
(
typeNum
!=
1
)
{
if
(
typeNum
!=
1
)
{
return
ResultBody
.
error
(
ResultEnum
.
UPLOAD_IMG_ERROR
);
return
ResultBody
.
error
(
ResultEnum
.
UPLOAD_IMG_ERROR
);
}
String
oldName
=
file
.
getOriginalFilename
();
String
newName
=
"file/"
+
UUID
.
randomUUID
().
toString
()
+
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
),
oldName
.
length
());
ossClient
.
putObject
(
OssConstant
.
BUCKET
,
newName
,
bis
);
System
.
out
.
println
(
"图片名称:"
+
newName
);
list
.
add
(
"https://"
+
OssConstant
.
BUCKET
+
'.'
+
OssConstant
.
ENDPOINT
+
"/"
+
newName
);
}
}
}
}
String
oldName
=
uploadFile
.
getOriginalFilename
();
ossClient
.
shutdown
();
// 关流
String
newName
=
return
ResultBody
.
success
(
list
);
"file/"
+
UUID
.
randomUUID
().
toString
()
+
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
),
oldName
.
length
());
ossClient
.
putObject
(
OssConstant
.
BUCKET
,
newName
,
bis
);
System
.
out
.
println
(
"图片名称:"
+
newName
);
list
.
add
(
"https://"
+
OssConstant
.
BUCKET
+
'.'
+
OssConstant
.
ENDPOINT
+
"/"
+
newName
);
}
}
}
ossClient
.
shutdown
();
// 关流
return
ResultBody
.
success
(
list
);
}
@ApiOperation
(
value
=
"V1.0.1-上传一张图片文件到阿里云oss "
)
@ApiOperation
(
value
=
"V1.0.1-上传一张图片文件到阿里云oss "
)
@ApiImplicitParams
({
@ApiImplicitParams
({
@ApiImplicitParam
(
@ApiImplicitParam
(
paramType
=
"header"
,
paramType
=
"header"
,
name
=
"mmc-identity"
,
name
=
"mmc-identity"
,
dataTypeClass
=
java
.
lang
.
String
.
class
,
dataTypeClass
=
java
.
lang
.
String
.
class
,
dataType
=
"String"
,
dataType
=
"String"
,
required
=
false
,
required
=
false
,
value
=
"token"
),
value
=
"token"
),
@ApiImplicitParam
(
@ApiImplicitParam
(
name
=
"uploadFile"
,
name
=
"uploadFile"
,
dataType
=
"MultipartFile"
,
dataType
=
"MultipartFile"
,
dataTypeClass
=
org
.
springframework
.
web
.
multipart
.
MultipartFile
.
class
,
dataTypeClass
=
org
.
springframework
.
web
.
multipart
.
MultipartFile
.
class
,
required
=
true
,
required
=
true
,
value
=
"图片/返回图片名称及图片大小
"
),
value
=
"文件
"
),
})
})
@PostMapping
(
"/imgOsse
s"
)
@PostMapping
(
"/singleImgOs
s"
)
public
ResultBody
imgOsse
s
(
public
ResultBody
singleImgOs
s
(
@RequestParam
(
"uploadFile"
)
MultipartFile
[]
uploadFile
,
HttpServletRequest
request
)
@RequestParam
(
"uploadFile"
)
MultipartFile
uploadFile
,
HttpServletRequest
request
)
throws
IOException
{
throws
IOException
{
OSS
ossClient
=
OSS
ossClient
=
new
OSSClientBuilder
()
new
OSSClientBuilder
()
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
);
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
);
Map
map
=
new
HashMap
();
List
list
=
new
LinkedList
();
if
(
uploadFile
!=
null
&&
uploadFile
.
length
>
0
)
{
if
(
uploadFile
!=
null
)
{
System
.
out
.
println
(
"osses文件数量"
+
uploadFile
.
length
);
if
(
uploadFile
.
getSize
()
/
1024
>
3096
)
{
for
(
int
i
=
0
;
i
<
uploadFile
.
length
;
i
++)
{
return
ResultBody
.
error
(
"请上传小于3M的图片"
);
MultipartFile
file
=
uploadFile
[
i
];
}
InputStream
inputStream
=
null
;
InputStream
inputStream
=
null
;
try
{
try
{
inputStream
=
f
ile
.
getInputStream
();
inputStream
=
uploadF
ile
.
getInputStream
();
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
return
ResultBody
.
error
(
e
.
getMessage
());
return
ResultBody
.
error
(
e
.
getMessage
());
}
try
(
final
BufferedInputStream
bis
=
new
BufferedInputStream
(
inputStream
))
{
// 校验
int
typeNum
=
FileLoadUtil
.
checkFileType
(
FileLoadUtil
.
getType
(
bis
));
if
(
typeNum
!=
1
)
{
return
ResultBody
.
error
(
ResultEnum
.
UPLOAD_IMG_ERROR
);
}
String
oldName
=
uploadFile
.
getOriginalFilename
();
String
newName
=
"file/"
+
UUID
.
randomUUID
().
toString
()
+
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
),
oldName
.
length
());
ossClient
.
putObject
(
OssConstant
.
BUCKET
,
newName
,
bis
);
System
.
out
.
println
(
"图片名称:"
+
newName
);
list
.
add
(
"https://"
+
OssConstant
.
BUCKET
+
'.'
+
OssConstant
.
ENDPOINT
+
"/"
+
newName
);
}
}
}
try
(
final
BufferedInputStream
bis
=
new
BufferedInputStream
(
inputStream
))
{
ossClient
.
shutdown
();
// 关流
// 校验
return
ResultBody
.
success
(
list
);
int
typeNum
=
FileLoadUtil
.
checkFileType
(
FileLoadUtil
.
getType
(
bis
));
}
if
(
typeNum
!=
1
)
{
return
ResultBody
.
error
(
ResultEnum
.
UPLOAD_IMG_ERROR
);
@ApiOperation
(
value
=
"V1.0.1-上传一张图片文件到阿里云oss "
)
}
@ApiImplicitParams
({
String
oldName
=
file
.
getOriginalFilename
();
@ApiImplicitParam
(
String
newName
=
paramType
=
"header"
,
"file/"
name
=
"mmc-identity"
,
+
UUID
.
randomUUID
().
toString
()
dataTypeClass
=
java
.
lang
.
String
.
class
,
+
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
),
oldName
.
length
());
dataType
=
"String"
,
ossClient
.
putObject
(
OssConstant
.
BUCKET
,
newName
,
bis
);
required
=
false
,
System
.
out
.
println
(
"图片名称:"
+
newName
);
value
=
"token"
),
map
.
put
(
@ApiImplicitParam
(
"filePath"
,
name
=
"uploadFile"
,
"https://"
+
OssConstant
.
BUCKET
+
'.'
+
OssConstant
.
ENDPOINT
+
"/"
+
newName
);
dataType
=
"MultipartFile"
,
map
.
put
(
"fileName"
,
oldName
);
dataTypeClass
=
org
.
springframework
.
web
.
multipart
.
MultipartFile
.
class
,
map
.
put
(
"fileSize"
,
file
.
getSize
());
required
=
true
,
map
.
put
(
"fileType"
,
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
)).
replace
(
"."
,
""
));
value
=
"图片/返回图片名称及图片大小"
),
})
@PostMapping
(
"/imgOsses"
)
public
ResultBody
imgOsses
(
@RequestParam
(
"uploadFile"
)
MultipartFile
[]
uploadFile
,
HttpServletRequest
request
)
throws
IOException
{
OSS
ossClient
=
new
OSSClientBuilder
()
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
);
Map
map
=
new
HashMap
();
if
(
uploadFile
!=
null
&&
uploadFile
.
length
>
0
)
{
System
.
out
.
println
(
"osses文件数量"
+
uploadFile
.
length
);
for
(
int
i
=
0
;
i
<
uploadFile
.
length
;
i
++)
{
MultipartFile
file
=
uploadFile
[
i
];
InputStream
inputStream
=
null
;
try
{
inputStream
=
file
.
getInputStream
();
}
catch
(
IOException
e
)
{
return
ResultBody
.
error
(
e
.
getMessage
());
}
try
(
final
BufferedInputStream
bis
=
new
BufferedInputStream
(
inputStream
))
{
// 校验
int
typeNum
=
FileLoadUtil
.
checkFileType
(
FileLoadUtil
.
getType
(
bis
));
if
(
typeNum
!=
1
)
{
return
ResultBody
.
error
(
ResultEnum
.
UPLOAD_IMG_ERROR
);
}
String
oldName
=
file
.
getOriginalFilename
();
String
newName
=
"file/"
+
UUID
.
randomUUID
().
toString
()
+
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
),
oldName
.
length
());
ossClient
.
putObject
(
OssConstant
.
BUCKET
,
newName
,
bis
);
System
.
out
.
println
(
"图片名称:"
+
newName
);
map
.
put
(
"filePath"
,
"https://"
+
OssConstant
.
BUCKET
+
'.'
+
OssConstant
.
ENDPOINT
+
"/"
+
newName
);
map
.
put
(
"fileName"
,
oldName
);
map
.
put
(
"fileSize"
,
file
.
getSize
());
map
.
put
(
"fileType"
,
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
)).
replace
(
"."
,
""
));
}
}
}
}
}
ossClient
.
shutdown
();
// 关流
return
ResultBody
.
success
(
map
);
}
}
ossClient
.
shutdown
();
// 关流
return
ResultBody
.
success
(
map
);
}
private
byte
[]
readByte
(
final
InputStream
is
)
throws
IOException
{
private
byte
[]
readByte
(
final
InputStream
is
)
throws
IOException
{
try
(
BufferedInputStream
bis
=
new
BufferedInputStream
(
is
);
try
(
BufferedInputStream
bis
=
new
BufferedInputStream
(
is
);
ByteArrayOutputStream
bas
=
new
ByteArrayOutputStream
(
4096
);
ByteArrayOutputStream
bas
=
new
ByteArrayOutputStream
(
4096
);
BufferedOutputStream
bos
=
new
BufferedOutputStream
(
bas
))
{
BufferedOutputStream
bos
=
new
BufferedOutputStream
(
bas
))
{
byte
[]
bytes
=
new
byte
[
4096
];
byte
[]
bytes
=
new
byte
[
4096
];
int
size
;
int
size
;
while
((
size
=
bis
.
read
(
bytes
))
!=
-
1
)
{
while
((
size
=
bis
.
read
(
bytes
))
!=
-
1
)
{
bos
.
write
(
bytes
,
0
,
size
);
bos
.
write
(
bytes
,
0
,
size
);
}
}
return
bas
.
toByteArray
();
return
bas
.
toByteArray
();
}
}
}
}
@ApiOperation
(
value
=
"V1.0.1-上传文档文件到阿里云oss"
)
@ApiOperation
(
value
=
"V1.0.1-上传文档文件到阿里云oss"
)
@ApiImplicitParams
({
@ApiImplicitParams
({
@ApiImplicitParam
(
@ApiImplicitParam
(
paramType
=
"header"
,
paramType
=
"header"
,
name
=
"mmc-identity"
,
name
=
"mmc-identity"
,
dataTypeClass
=
java
.
lang
.
String
.
class
,
dataTypeClass
=
java
.
lang
.
String
.
class
,
dataType
=
"String"
,
dataType
=
"String"
,
required
=
true
,
required
=
true
,
value
=
"token"
),
value
=
"token"
),
@ApiImplicitParam
(
@ApiImplicitParam
(
name
=
"uploadFile"
,
name
=
"uploadFile"
,
dataType
=
"MultipartFile"
,
dataType
=
"MultipartFile"
,
dataTypeClass
=
org
.
springframework
.
web
.
multipart
.
MultipartFile
.
class
,
dataTypeClass
=
org
.
springframework
.
web
.
multipart
.
MultipartFile
.
class
,
required
=
true
,
required
=
true
,
value
=
"文件 doc,ppt,pdf,xls结尾"
),
value
=
"文件 doc,ppt,pdf,xls结尾"
),
})
})
@PostMapping
(
"/docOss"
)
@PostMapping
(
"/docOss"
)
public
ResultBody
docOss
(
public
ResultBody
docOss
(
@RequestParam
(
"uploadFile"
)
MultipartFile
[]
uploadFile
,
HttpServletRequest
request
)
@RequestParam
(
"uploadFile"
)
MultipartFile
[]
uploadFile
,
HttpServletRequest
request
)
throws
IOException
{
throws
IOException
{
OSS
ossClient
=
OSS
ossClient
=
new
OSSClientBuilder
()
new
OSSClientBuilder
()
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
);
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
);
Map
map
=
new
HashMap
();
Map
map
=
new
HashMap
();
if
(
uploadFile
!=
null
&&
uploadFile
.
length
>
0
)
{
if
(
uploadFile
!=
null
&&
uploadFile
.
length
>
0
)
{
System
.
out
.
println
(
"osses文件数量"
+
uploadFile
.
length
);
System
.
out
.
println
(
"osses文件数量"
+
uploadFile
.
length
);
for
(
int
i
=
0
;
i
<
uploadFile
.
length
;
i
++)
{
for
(
int
i
=
0
;
i
<
uploadFile
.
length
;
i
++)
{
MultipartFile
file
=
uploadFile
[
i
];
MultipartFile
file
=
uploadFile
[
i
];
InputStream
inputStream
=
null
;
InputStream
inputStream
=
null
;
try
{
try
{
inputStream
=
file
.
getInputStream
();
inputStream
=
file
.
getInputStream
();
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
return
ResultBody
.
error
(
e
.
getMessage
());
return
ResultBody
.
error
(
e
.
getMessage
());
}
}
try
(
final
BufferedInputStream
bis
=
new
BufferedInputStream
(
inputStream
))
{
try
(
final
BufferedInputStream
bis
=
new
BufferedInputStream
(
inputStream
))
{
// 校验
// 校验
int
typeNum
=
FileLoadUtil
.
checkFileType
(
FileLoadUtil
.
getType
(
bis
));
int
typeNum
=
FileLoadUtil
.
checkFileType
(
FileLoadUtil
.
getType
(
bis
));
if
(
typeNum
!=
2
)
{
if
(
typeNum
!=
2
)
{
return
ResultBody
.
error
(
ResultEnum
.
UPLOAD_DOC_ERROR
);
return
ResultBody
.
error
(
ResultEnum
.
UPLOAD_DOC_ERROR
);
}
}
String
oldName
=
file
.
getOriginalFilename
();
String
oldName
=
file
.
getOriginalFilename
();
String
newName
=
String
newName
=
"file/"
"file/"
+
UUID
.
randomUUID
().
toString
()
+
UUID
.
randomUUID
().
toString
()
+
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
),
oldName
.
length
());
+
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
),
oldName
.
length
());
ossClient
.
putObject
(
OssConstant
.
BUCKET
,
newName
,
bis
);
ossClient
.
putObject
(
OssConstant
.
BUCKET
,
newName
,
bis
);
System
.
out
.
println
(
"文档名称:"
+
newName
);
System
.
out
.
println
(
"文档名称:"
+
newName
);
map
.
put
(
map
.
put
(
"filePath"
,
"filePath"
,
"https://"
+
OssConstant
.
BUCKET
+
'.'
+
OssConstant
.
ENDPOINT
+
"/"
+
newName
);
"https://"
+
OssConstant
.
BUCKET
+
'.'
+
OssConstant
.
ENDPOINT
+
"/"
+
newName
);
map
.
put
(
"fileName"
,
oldName
);
map
.
put
(
"fileName"
,
oldName
);
map
.
put
(
"fileSize"
,
file
.
getSize
());
map
.
put
(
"fileSize"
,
file
.
getSize
());
map
.
put
(
"fileType"
,
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
)).
replace
(
"."
,
""
));
map
.
put
(
"fileType"
,
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
)).
replace
(
"."
,
""
));
}
}
}
}
}
ossClient
.
shutdown
();
// 关流
return
ResultBody
.
success
(
map
);
}
}
ossClient
.
shutdown
();
// 关流
return
ResultBody
.
success
(
map
);
}
/**
/**
* 上传文件
* 上传文件
*
*
* @param uploadFile
* @param uploadFile
* @return
* @return
*/
*/
@ApiIgnore
@ApiIgnore
@RequestMapping
(
value
=
"/local"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"/local"
,
method
=
RequestMethod
.
POST
)
public
ResultBody
local
(
public
ResultBody
local
(
@RequestParam
(
value
=
"uploadFile"
,
required
=
false
)
MultipartFile
[]
uploadFile
,
@RequestParam
(
value
=
"uploadFile"
,
required
=
false
)
MultipartFile
[]
uploadFile
,
@RequestParam
(
value
=
"directory"
,
required
=
false
,
defaultValue
=
"upload"
)
@RequestParam
(
value
=
"directory"
,
required
=
false
,
defaultValue
=
"upload"
)
String
directory
,
String
directory
,
HttpServletRequest
request
)
HttpServletRequest
request
)
throws
IOException
{
throws
IOException
{
return
FileLoadUtil
.
bathCreateFile
(
directory
,
uploadFile
);
return
FileLoadUtil
.
bathCreateFile
(
directory
,
uploadFile
);
}
}
/**
/**
* 下载文件
* 下载文件
*
*
* @param path
* @param path
* @param response
* @param response
* @throws IOException
* @throws IOException
*/
*/
@ApiIgnore
@ApiIgnore
@RequestMapping
(
value
=
"/download/{path}"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
value
=
"/download/{path}"
,
method
=
RequestMethod
.
GET
)
public
void
getDownloadFile
(
@PathVariable
(
"path"
)
String
path
,
HttpServletResponse
response
)
public
void
getDownloadFile
(
@PathVariable
(
"path"
)
String
path
,
HttpServletResponse
response
)
throws
IOException
{
throws
IOException
{
response
.
setContentType
(
"application/x-001"
);
response
.
setContentType
(
"application/x-001"
);
path
=
FileLoadUtil
.
explainLoadPath
(
path
);
path
=
FileLoadUtil
.
explainLoadPath
(
path
);
ServletOutputStream
out
=
response
.
getOutputStream
();
ServletOutputStream
out
=
response
.
getOutputStream
();
FileInputStream
in
=
new
FileInputStream
(
new
File
(
path
));
FileInputStream
in
=
new
FileInputStream
(
new
File
(
path
));
byte
buffer
[]
=
new
byte
[
1024
];
byte
buffer
[]
=
new
byte
[
1024
];
int
length
=
0
;
int
length
=
0
;
while
((
length
=
in
.
read
(
buffer
))
!=
-
1
)
{
while
((
length
=
in
.
read
(
buffer
))
!=
-
1
)
{
out
.
write
(
buffer
,
0
,
length
);
out
.
write
(
buffer
,
0
,
length
);
}
in
.
close
();
out
.
close
();
}
}
in
.
close
();
out
.
close
();
}
@ApiIgnore
@ApiIgnore
@RequestMapping
(
value
=
"/heart"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
value
=
"/heart"
,
method
=
RequestMethod
.
GET
)
public
ResultBody
heart
()
{
public
ResultBody
heart
()
{
return
ResultBody
.
success
(
"heart"
);
return
ResultBody
.
success
(
"heart"
);
}
}
}
}
src/main/java/com/mmc/pms/dao/BackstageTaskServiceDao.java
0 → 100644
浏览文件 @
54dd9c08
package
com
.
mmc
.
pms
.
dao
;
import
com.mmc.pms.entity.ServiceDO
;
import
com.mmc.pms.model.qo.ServiceQO
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
/**
* @Author LW
* @date 2023/6/6 10:48
* 概要:
*/
@Mapper
public
interface
BackstageTaskServiceDao
{
int
insert
(
ServiceDO
serviceDO
);
int
update
(
ServiceDO
serviceDO
);
int
deleteById
(
Integer
id
);
ServiceDO
queryById
(
Integer
id
);
List
<
ServiceDO
>
queryAllByLimit
(
ServiceQO
param
);
}
src/main/java/com/mmc/pms/dao/ProductDao.java
浏览文件 @
54dd9c08
...
@@ -110,6 +110,8 @@ public interface ProductDao {
...
@@ -110,6 +110,8 @@ public interface ProductDao {
Set
<
Integer
>
listProductSpecIds
(
@Param
(
"mallProdSkuSpecIds"
)
Set
<
Integer
>
mallProdSkuSpecIds
);
Set
<
Integer
>
listProductSpecIds
(
@Param
(
"mallProdSkuSpecIds"
)
Set
<
Integer
>
mallProdSkuSpecIds
);
List
<
OrderGoodsProdDTO
>
listProdGoodsSkuInfo
(
MallOrderGoodsInfoQO
mallOrderGoodsInfoQO
);
List
<
OrderGoodsProdDTO
>
listProdGoodsSkuInfo
(
MallOrderGoodsInfoQO
mallOrderGoodsInfoQO
);
List
<
MallProdSkuInfoSpecDO
>
listMallProductSpec
(
Integer
id
);
}
}
...
...
src/main/java/com/mmc/pms/entity/BaseEntity.java
浏览文件 @
54dd9c08
...
@@ -16,21 +16,21 @@ import java.time.LocalDateTime;
...
@@ -16,21 +16,21 @@ import java.time.LocalDateTime;
*/
*/
@Data
@Data
public
class
BaseEntity
implements
Serializable
{
public
class
BaseEntity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Integer
id
;
private
Integer
id
;
@ApiModelProperty
(
"添加时间"
)
@ApiModelProperty
(
"添加时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
LocalDateTime
addtime
;
private
LocalDateTime
addtime
;
@ApiModelProperty
(
"最近一次编辑时间"
)
@ApiModelProperty
(
"最近一次编辑时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
LocalDateTime
updatetime
;
private
LocalDateTime
updatetime
;
@ApiModelProperty
(
"1删除"
)
@ApiModelProperty
(
"1删除"
)
@JsonProperty
(
access
=
JsonProperty
.
Access
.
WRITE_ONLY
)
@JsonProperty
(
access
=
JsonProperty
.
Access
.
WRITE_ONLY
)
@TableLogic
@TableLogic
private
Integer
deleted
;
private
Integer
deleted
;
}
}
src/main/java/com/mmc/pms/entity/ProductSkuDO.java
浏览文件 @
54dd9c08
...
@@ -59,6 +59,7 @@ public class ProductSkuDO implements Serializable {
...
@@ -59,6 +59,7 @@ public class ProductSkuDO implements Serializable {
.
productBrand
(
this
.
brandName
)
.
productBrand
(
this
.
brandName
)
.
createTime
(
this
.
createTime
)
.
createTime
(
this
.
createTime
)
.
categoriesId
(
categoriesId
)
.
categoriesId
(
categoriesId
)
.
productBrandId
(
brandInfoId
)
.
directoryId
(
directoryId
)
.
directoryId
(
directoryId
)
.
categoryName
(
this
.
categoryName
)
.
categoryName
(
this
.
categoryName
)
.
directoryName
(
directoryName
)
.
directoryName
(
directoryName
)
...
...
src/main/java/com/mmc/pms/entity/RepoCashDO.java
浏览文件 @
54dd9c08
package
com
.
mmc
.
pms
.
entity
;
package
com
.
mmc
.
pms
.
entity
;
import
com.baomidou.mybatisplus.core.toolkit.StringUtils
;
import
com.mmc.pms.model.other.dto.RepoCashDTO
;
import
com.mmc.pms.model.other.dto.RepoCashDTO
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
import
org.apache.commons.lang.StringUtils
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
...
@@ -20,53 +20,53 @@ import java.util.Date;
...
@@ -20,53 +20,53 @@ import java.util.Date;
@AllArgsConstructor
@AllArgsConstructor
@NoArgsConstructor
@NoArgsConstructor
public
class
RepoCashDO
implements
Serializable
{
public
class
RepoCashDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
7930603317037474755L
;
private
static
final
long
serialVersionUID
=
-
7930603317037474755L
;
private
Integer
id
;
private
Integer
id
;
private
Integer
repoAccountId
;
private
Integer
repoAccountId
;
private
String
uid
;
private
String
uid
;
private
String
accountName
;
private
String
accountName
;
private
Integer
orderInfoId
;
private
Integer
orderInfoId
;
private
String
orderNo
;
private
String
orderNo
;
private
Integer
skuInfoId
;
private
Integer
skuInfoId
;
private
String
skuTitle
;
private
String
skuTitle
;
private
Integer
wareInfoId
;
private
Integer
wareInfoId
;
private
String
wareNo
;
private
String
wareNo
;
private
String
wareTitle
;
private
String
wareTitle
;
private
String
payNo
;
private
String
payNo
;
private
Integer
payMethod
;
private
Integer
payMethod
;
private
BigDecimal
amtPaid
;
private
BigDecimal
amtPaid
;
private
BigDecimal
cashAmt
;
private
BigDecimal
cashAmt
;
private
Date
payTime
;
private
Date
payTime
;
private
String
refundNo
;
private
String
refundNo
;
private
String
voucher
;
private
String
voucher
;
private
String
remark
;
private
String
remark
;
private
Integer
createUser
;
private
Integer
createUser
;
private
Date
createTime
;
private
Date
createTime
;
private
Integer
updateUser
;
private
Integer
updateUser
;
private
Date
updateTime
;
private
Date
updateTime
;
public
RepoCashDTO
buildRepoCashDTO
()
{
public
RepoCashDTO
buildRepoCashDTO
()
{
return
RepoCashDTO
.
builder
()
return
RepoCashDTO
.
builder
()
.
id
(
this
.
id
)
.
id
(
this
.
id
)
.
repoAccountId
(
this
.
repoAccountId
)
.
repoAccountId
(
this
.
repoAccountId
)
.
uid
(
this
.
uid
)
.
uid
(
this
.
uid
)
.
accountName
(
this
.
accountName
)
.
accountName
(
this
.
accountName
)
.
orderInfoId
(
this
.
orderInfoId
)
.
orderInfoId
(
this
.
orderInfoId
)
.
orderNo
(
this
.
orderNo
)
.
orderNo
(
this
.
orderNo
)
.
skuInfoId
(
this
.
skuInfoId
)
.
skuInfoId
(
this
.
skuInfoId
)
.
skuTitle
(
this
.
skuTitle
)
.
skuTitle
(
this
.
skuTitle
)
.
wareInfoId
(
this
.
wareInfoId
)
.
wareInfoId
(
this
.
wareInfoId
)
.
wareNo
(
this
.
wareNo
)
.
wareNo
(
this
.
wareNo
)
.
wareTitle
(
this
.
wareTitle
)
.
wareTitle
(
this
.
wareTitle
)
.
payNo
(
this
.
payNo
)
.
payNo
(
this
.
payNo
)
.
payMethod
(
this
.
payMethod
)
.
payMethod
(
this
.
payMethod
)
.
amtPaid
(
this
.
amtPaid
)
.
amtPaid
(
this
.
amtPaid
)
.
refundNo
(
this
.
refundNo
)
.
refundNo
(
this
.
refundNo
)
.
createUser
(
this
.
createUser
)
.
createUser
(
this
.
createUser
)
.
voucher
(
StringUtils
.
isBlank
(
this
.
voucher
)
?
null
:
Arrays
.
asList
(
this
.
voucher
.
split
(
","
)))
.
voucher
(
StringUtils
.
isBlank
(
this
.
voucher
)
?
null
:
Arrays
.
asList
(
this
.
voucher
.
split
(
","
)))
.
cashAmt
(
this
.
cashAmt
)
.
cashAmt
(
this
.
cashAmt
)
.
payTime
(
this
.
payTime
)
.
payTime
(
this
.
payTime
)
.
remark
(
this
.
remark
)
.
remark
(
this
.
remark
)
.
build
();
.
build
();
}
}
}
}
src/main/java/com/mmc/pms/entity/ServiceDO.java
0 → 100644
浏览文件 @
54dd9c08
package
com
.
mmc
.
pms
.
entity
;
import
com.mmc.pms.model.work.vo.ServiceVO
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @Author LW
* @date 2023/6/8 10:33
* 概要:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
ServiceDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
Integer
id
;
@ApiModelProperty
(
value
=
"服务名称"
)
private
String
serviceName
;
@ApiModelProperty
(
value
=
"应用"
)
private
Integer
applicationId
;
@ApiModelProperty
(
value
=
"行业"
)
private
Integer
industryId
;
@ApiModelProperty
(
value
=
"展示状态"
)
private
Integer
displayState
;
@ApiModelProperty
(
value
=
"封面图"
)
private
String
coverPlan
;
@ApiModelProperty
(
value
=
"分享卡片"
)
private
String
shareCard
;
@ApiModelProperty
(
value
=
"视频"
)
private
String
video
;
@ApiModelProperty
(
value
=
"服务介绍"
)
private
String
serviceIntroduction
;
@ApiModelProperty
(
value
=
"创建人id"
)
private
Integer
accountId
;
@ApiModelProperty
(
value
=
"创建时间"
)
private
Date
createTime
;
@ApiModelProperty
(
value
=
"修改时间"
)
private
Date
updateTime
;
@ApiModelProperty
(
value
=
"逻辑删除字段"
)
private
Integer
isDeleted
;
public
ServiceDO
(
ServiceVO
param
,
Integer
accountId
)
{
this
.
id
=
param
.
getId
();
this
.
serviceName
=
param
.
getServiceName
();
this
.
applicationId
=
param
.
getApplicationId
();
this
.
industryId
=
param
.
getIndustryId
();
this
.
displayState
=
param
.
getDisplayState
();
this
.
coverPlan
=
param
.
getCoverPlan
();
this
.
shareCard
=
param
.
getShareCard
();
this
.
video
=
param
.
getVideo
();
this
.
serviceIntroduction
=
param
.
getServiceIntroduction
();
this
.
accountId
=
accountId
;
}
public
ServiceDO
(
ServiceVO
param
)
{
this
.
id
=
param
.
getId
();
this
.
serviceName
=
param
.
getServiceName
();
this
.
applicationId
=
param
.
getApplicationId
();
this
.
industryId
=
param
.
getIndustryId
();
this
.
displayState
=
param
.
getDisplayState
();
this
.
coverPlan
=
param
.
getCoverPlan
();
this
.
shareCard
=
param
.
getShareCard
();
this
.
video
=
param
.
getVideo
();
this
.
serviceIntroduction
=
param
.
getServiceIntroduction
();
}
public
ServiceDO
(
Integer
id
,
Integer
accountId
)
{
this
.
id
=
id
;
this
.
accountId
=
accountId
;
}
}
src/main/java/com/mmc/pms/json/JsonUtil.java
浏览文件 @
54dd9c08
...
@@ -13,107 +13,107 @@ import java.util.List;
...
@@ -13,107 +13,107 @@ import java.util.List;
*/
*/
public
class
JsonUtil
{
public
class
JsonUtil
{
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
String
array
=
"[1,24,23]"
;
String
array
=
"[1,24,23]"
;
List
<
Integer
>
list
=
JSONArray
.
parseArray
(
array
,
Integer
.
class
);
List
<
Integer
>
list
=
JSONArray
.
parseArray
(
array
,
Integer
.
class
);
System
.
out
.
println
(
list
.
get
(
2
));
System
.
out
.
println
(
list
.
get
(
2
));
}
}
/**
/**
* 把Java对象转换成json字符串
* 把Java对象转换成json字符串
*
*
* @param object 待转化为JSON字符串的Java对象
* @param object 待转化为JSON字符串的Java对象
* @return json 串 or null
* @return json 串 or null
*/
*/
public
static
String
parseObjToJson
(
Object
object
)
{
public
static
String
parseObjToJson
(
Object
object
)
{
String
string
=
null
;
String
string
=
null
;
try
{
try
{
string
=
JSONObject
.
toJSONString
(
object
);
string
=
JSONObject
.
toJSONString
(
object
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
// LOGGER.error(e.getMessage());
// LOGGER.error(e.getMessage());
}
return
string
;
}
}
return
string
;
}
/**
/**
* 将Json字符串信息转换成对应的Java对象
* 将Json字符串信息转换成对应的Java对象
*
*
* @param json json字符串对象
* @param json json字符串对象
* @param c 对应的类型
* @param c 对应的类型
*/
*/
public
static
<
T
>
T
parseJsonToObj
(
String
json
,
Class
<
T
>
c
)
{
public
static
<
T
>
T
parseJsonToObj
(
String
json
,
Class
<
T
>
c
)
{
try
{
try
{
JSONObject
jsonObject
=
JSON
.
parseObject
(
json
);
JSONObject
jsonObject
=
JSON
.
parseObject
(
json
);
return
JSON
.
toJavaObject
(
jsonObject
,
c
);
return
JSON
.
toJavaObject
(
jsonObject
,
c
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
// LOGGER.error(e.getMessage());
// LOGGER.error(e.getMessage());
}
return
null
;
}
}
return
null
;
}
/**
/**
* 读取json文件
* 读取json文件
*
*
* @param fileName
* @param fileName
* @return
* @return
*/
*/
public
static
String
readJsonFile
(
String
fileName
)
{
public
static
String
readJsonFile
(
String
fileName
)
{
String
jsonStr
=
""
;
String
jsonStr
=
""
;
try
{
try
{
File
jsonFile
=
new
File
(
fileName
);
File
jsonFile
=
new
File
(
fileName
);
FileReader
fileReader
=
new
FileReader
(
jsonFile
);
FileReader
fileReader
=
new
FileReader
(
jsonFile
);
Reader
reader
=
new
InputStreamReader
(
new
FileInputStream
(
jsonFile
),
"utf-8"
);
Reader
reader
=
new
InputStreamReader
(
new
FileInputStream
(
jsonFile
),
"utf-8"
);
int
ch
=
0
;
int
ch
=
0
;
StringBuffer
sb
=
new
StringBuffer
();
StringBuffer
sb
=
new
StringBuffer
();
while
((
ch
=
reader
.
read
())
!=
-
1
)
{
while
((
ch
=
reader
.
read
())
!=
-
1
)
{
sb
.
append
((
char
)
ch
);
sb
.
append
((
char
)
ch
);
}
}
fileReader
.
close
();
fileReader
.
close
();
reader
.
close
();
reader
.
close
();
jsonStr
=
sb
.
toString
();
jsonStr
=
sb
.
toString
();
return
jsonStr
;
return
jsonStr
;
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
return
null
;
return
null
;
}
}
}
}
/**
/**
* 将JSON数据格式化并保存到文件中
* 将JSON数据格式化并保存到文件中
*
*
* @param jsonData 需要输出的json数
* @param jsonData 需要输出的json数
* @param filePath 输出的文件地址
* @param filePath 输出的文件地址
* @return
* @return
*/
*/
public
static
boolean
createJsonFile
(
Object
jsonData
,
String
filePath
)
{
public
static
boolean
createJsonFile
(
Object
jsonData
,
String
filePath
)
{
String
content
=
String
content
=
JSON
.
toJSONString
(
JSON
.
toJSONString
(
jsonData
,
jsonData
,
SerializerFeature
.
PrettyFormat
,
SerializerFeature
.
PrettyFormat
,
SerializerFeature
.
WriteMapNullValue
,
SerializerFeature
.
WriteMapNullValue
,
SerializerFeature
.
WriteDateUseDateFormat
);
SerializerFeature
.
WriteDateUseDateFormat
);
// 标记文件生成是否成功
// 标记文件生成是否成功
boolean
flag
=
true
;
boolean
flag
=
true
;
// 生成json格式文件
// 生成json格式文件
try
{
try
{
// 保证创建一个新文件
// 保证创建一个新文件
File
file
=
new
File
(
filePath
);
File
file
=
new
File
(
filePath
);
if
(!
file
.
getParentFile
().
exists
())
{
// 如果父目录不存在,创建父目录
if
(!
file
.
getParentFile
().
exists
())
{
// 如果父目录不存在,创建父目录
file
.
getParentFile
().
mkdirs
();
file
.
getParentFile
().
mkdirs
();
}
}
if
(
file
.
exists
())
{
// 如果已存在,删除旧文件
if
(
file
.
exists
())
{
// 如果已存在,删除旧文件
file
.
delete
();
file
.
delete
();
}
}
file
.
createNewFile
();
file
.
createNewFile
();
// 将格式化后的字符串写入文件
// 将格式化后的字符串写入文件
Writer
write
=
new
OutputStreamWriter
(
new
FileOutputStream
(
file
),
"UTF-8"
);
Writer
write
=
new
OutputStreamWriter
(
new
FileOutputStream
(
file
),
"UTF-8"
);
write
.
write
(
content
);
write
.
write
(
content
);
write
.
flush
();
write
.
flush
();
write
.
close
();
write
.
close
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
flag
=
false
;
flag
=
false
;
e
.
printStackTrace
();
e
.
printStackTrace
();
}
return
flag
;
}
}
return
flag
;
}
}
}
src/main/java/com/mmc/pms/model/qo/ServiceQO.java
0 → 100644
浏览文件 @
54dd9c08
package
com
.
mmc
.
pms
.
model
.
qo
;
import
com.mmc.pms.common.Page
;
import
com.mmc.pms.model.group.Freeze
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.hibernate.validator.constraints.Length
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* @Author LW
* @date 2023/6/8 10:33
* 概要:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
ServiceQO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
Integer
id
;
@ApiModelProperty
(
value
=
"服务名称"
,
example
=
"服务名称"
)
@Length
(
message
=
"最大不超过30字"
,
max
=
30
)
private
String
serviceName
;
@ApiModelProperty
(
value
=
"应用"
,
example
=
"1"
)
private
Integer
applicationId
;
@ApiModelProperty
(
value
=
"行业"
,
example
=
"2"
)
private
Integer
industryId
;
@ApiModelProperty
(
value
=
"页码"
,
required
=
true
)
@NotNull
(
message
=
"页码不能为空"
,
groups
=
{
Page
.
class
,
Freeze
.
class
})
@Min
(
value
=
1
,
groups
=
Page
.
class
)
private
Integer
pageNo
;
@ApiModelProperty
(
value
=
"每页显示数"
,
required
=
true
)
@NotNull
(
message
=
"每页显示数不能为空"
,
groups
=
{
Page
.
class
,
Freeze
.
class
})
@Min
(
value
=
1
,
groups
=
Page
.
class
)
private
Integer
pageSize
;
}
src/main/java/com/mmc/pms/model/work/vo/ServiceVO.java
0 → 100644
浏览文件 @
54dd9c08
package
com
.
mmc
.
pms
.
model
.
work
.
vo
;
import
com.mmc.pms.model.group.Create
;
import
com.mmc.pms.model.group.Update
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.hibernate.validator.constraints.Length
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* @Author LW
* @date 2023/6/8 10:33
* 概要:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
ServiceVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@NotNull
(
message
=
"修改服务id不能为空"
,
groups
=
{
Update
.
class
})
private
Integer
id
;
@ApiModelProperty
(
value
=
"服务名称"
,
example
=
"服务名称"
)
@NotBlank
(
message
=
"服务名称不能为空"
,
groups
=
{
Create
.
class
,
Update
.
class
})
@Length
(
message
=
"最大不超过30字"
,
max
=
30
)
private
String
serviceName
;
@ApiModelProperty
(
value
=
"应用"
,
example
=
"1"
)
private
Integer
applicationId
;
@ApiModelProperty
(
value
=
"行业"
,
example
=
"2"
)
@NotNull
(
message
=
"行业id不能为空"
,
groups
=
{
Create
.
class
,
Update
.
class
})
private
Integer
industryId
;
@ApiModelProperty
(
value
=
"展示状态,0为上架,1下架"
,
example
=
"0"
)
@NotNull
(
message
=
"展示状态不能为空"
,
groups
=
{
Create
.
class
,
Update
.
class
})
private
Integer
displayState
;
@ApiModelProperty
(
value
=
"封面图"
)
@NotBlank
(
message
=
"封面图不能为空"
,
groups
=
{
Create
.
class
,
Update
.
class
})
private
String
coverPlan
;
@ApiModelProperty
(
value
=
"分享卡片"
)
private
String
shareCard
;
@ApiModelProperty
(
value
=
"视频"
)
private
String
video
;
@ApiModelProperty
(
value
=
"服务介绍"
)
private
String
serviceIntroduction
;
}
src/main/java/com/mmc/pms/service/BackstageTaskService.java
0 → 100644
浏览文件 @
54dd9c08
package
com
.
mmc
.
pms
.
service
;
import
com.mmc.pms.common.ResultBody
;
import
com.mmc.pms.model.qo.ServiceQO
;
import
com.mmc.pms.model.work.vo.ServiceVO
;
/**
* @Author LW
* @date 2023/6/6 10:46
* 概要:
*/
public
interface
BackstageTaskService
{
ResultBody
addWorkService
(
ServiceVO
param
,
Integer
userAccountId
);
ResultBody
updateById
(
ServiceVO
param
);
ResultBody
deleteById
(
Integer
id
);
ResultBody
queryById
(
Integer
id
);
ResultBody
queryWorkServiceList
(
ServiceQO
param
,
Integer
userAccountId
);
}
src/main/java/com/mmc/pms/service/Impl/BackstageTaskServiceImpl.java
0 → 100644
浏览文件 @
54dd9c08
package
com
.
mmc
.
pms
.
service
.
Impl
;
import
com.mmc.pms.common.ResultBody
;
import
com.mmc.pms.dao.BackstageTaskServiceDao
;
import
com.mmc.pms.entity.ServiceDO
;
import
com.mmc.pms.model.qo.ServiceQO
;
import
com.mmc.pms.model.work.vo.ServiceVO
;
import
com.mmc.pms.service.BackstageTaskService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* @Author LW
* @date 2023/6/8 9:59
* 概要:
*/
@Service
public
class
BackstageTaskServiceImpl
implements
BackstageTaskService
{
@Autowired
private
BackstageTaskServiceDao
backstageTaskServiceDao
;
@Override
public
ResultBody
addWorkService
(
ServiceVO
param
,
Integer
userAccountId
)
{
ServiceDO
serviceDO
=
new
ServiceDO
(
param
,
userAccountId
);
backstageTaskServiceDao
.
insert
(
serviceDO
);
return
ResultBody
.
success
();
}
@Override
public
ResultBody
updateById
(
ServiceVO
param
)
{
ServiceDO
serviceDO
=
new
ServiceDO
(
param
);
backstageTaskServiceDao
.
update
(
serviceDO
);
return
ResultBody
.
success
();
}
@Override
public
ResultBody
deleteById
(
Integer
id
)
{
backstageTaskServiceDao
.
deleteById
(
id
);
return
ResultBody
.
success
();
}
@Override
public
ResultBody
queryById
(
Integer
id
)
{
ServiceDO
serviceDO
=
backstageTaskServiceDao
.
queryById
(
id
);
return
ResultBody
.
success
(
serviceDO
);
}
@Override
public
ResultBody
queryWorkServiceList
(
ServiceQO
param
,
Integer
userAccountId
)
{
List
<
ServiceDO
>
services
=
backstageTaskServiceDao
.
queryAllByLimit
(
param
);
return
null
;
}
}
src/main/java/com/mmc/pms/service/Impl/ProductServiceImpl.java
浏览文件 @
54dd9c08
...
@@ -11,11 +11,11 @@ import com.mmc.pms.model.sale.dto.*;
...
@@ -11,11 +11,11 @@ import com.mmc.pms.model.sale.dto.*;
import
com.mmc.pms.model.sale.vo.ProductSpecCPQVO
;
import
com.mmc.pms.model.sale.vo.ProductSpecCPQVO
;
import
com.mmc.pms.page.PageResult
;
import
com.mmc.pms.page.PageResult
;
import
com.mmc.pms.service.ProductSkuService
;
import
com.mmc.pms.service.ProductSkuService
;
import
org.jetbrains.annotations.NotNull
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
import
javax.validation.constraints.NotNull
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -226,7 +226,7 @@ public class ProductServiceImpl implements ProductSkuService {
...
@@ -226,7 +226,7 @@ public class ProductServiceImpl implements ProductSkuService {
public
ResultBody
removeProductSpec
(
Integer
id
)
{
public
ResultBody
removeProductSpec
(
Integer
id
)
{
// 根据规格id查询绑定的商品或者行业的sku
// 根据规格id查询绑定的商品或者行业的sku
RemoveSkuDTO
removeSkuDTO
=
new
RemoveSkuDTO
();
RemoveSkuDTO
removeSkuDTO
=
new
RemoveSkuDTO
();
List
<
MallProd
InfoDO
>
mallProdSkuInfoSpecList
=
productDao
.
listMallProdInfo
(
id
.
toString
()
);
List
<
MallProd
SkuInfoSpecDO
>
mallProdSkuInfoSpecList
=
productDao
.
listMallProductSpec
(
id
);
// 拿到清单的id
// 拿到清单的id
List
<
InventorySpecDO
>
inventorySpecList
=
productDao
.
listInventorySpec
(
id
);
List
<
InventorySpecDO
>
inventorySpecList
=
productDao
.
listInventorySpec
(
id
);
if
(
mallProdSkuInfoSpecList
.
size
()
!=
0
||
inventorySpecList
.
size
()
!=
0
)
{
if
(
mallProdSkuInfoSpecList
.
size
()
!=
0
||
inventorySpecList
.
size
()
!=
0
)
{
...
@@ -237,7 +237,7 @@ public class ProductServiceImpl implements ProductSkuService {
...
@@ -237,7 +237,7 @@ public class ProductServiceImpl implements ProductSkuService {
// 获取行业规格id
// 获取行业规格id
Set
<
Integer
>
industrySpecIds
=
industryProductInventoryList
.
stream
().
map
(
IndustryProductInventoryDO:
:
getIndustrySpecId
).
collect
(
Collectors
.
toSet
());
Set
<
Integer
>
industrySpecIds
=
industryProductInventoryList
.
stream
().
map
(
IndustryProductInventoryDO:
:
getIndustrySpecId
).
collect
(
Collectors
.
toSet
());
// 分别获取规格对应的sku信息
// 分别获取规格对应的sku信息
List
<
IndustrySpecDO
>
industrySpecList
=
product
Dao
.
listIndustrySpec
(
industrySpecIds
);
List
<
IndustrySpecDO
>
industrySpecList
=
industrySpec
Dao
.
listIndustrySpec
(
industrySpecIds
);
List
<
SkuAndSpecDTO
>
industrySkuNameList
=
new
ArrayList
<>();
List
<
SkuAndSpecDTO
>
industrySkuNameList
=
new
ArrayList
<>();
industrySpecList
.
stream
().
peek
(
d
->
{
industrySpecList
.
stream
().
peek
(
d
->
{
SkuAndSpecDTO
skuAndSpecDTO
=
new
SkuAndSpecDTO
();
SkuAndSpecDTO
skuAndSpecDTO
=
new
SkuAndSpecDTO
();
...
...
src/main/java/com/mmc/pms/util/BizException.java
0 → 100644
浏览文件 @
54dd9c08
package
com
.
mmc
.
pms
.
util
;
import
com.mmc.pms.common.BaseErrorInfoInterface
;
import
com.mmc.pms.common.ResultEnum
;
/**
* @author 作者 geDuo
* @version 创建时间:2021年8月13日 上午9:25:43
* @explain 类说明
*/
public
class
BizException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 错误码
*/
protected
String
errorCode
;
/**
* 错误信息
*/
protected
String
errorMsg
;
public
BizException
()
{
super
();
}
public
BizException
(
BaseErrorInfoInterface
errorInfoInterface
)
{
super
(
errorInfoInterface
.
getResultCode
());
this
.
errorCode
=
errorInfoInterface
.
getResultCode
();
this
.
errorMsg
=
errorInfoInterface
.
getResultMsg
();
}
public
BizException
(
BaseErrorInfoInterface
errorInfoInterface
,
Throwable
cause
)
{
super
(
errorInfoInterface
.
getResultCode
(),
cause
);
this
.
errorCode
=
errorInfoInterface
.
getResultCode
();
this
.
errorMsg
=
errorInfoInterface
.
getResultMsg
();
}
public
BizException
(
ResultEnum
enums
)
{
super
(
enums
.
getResultCode
());
this
.
errorCode
=
enums
.
getResultCode
();
this
.
errorMsg
=
enums
.
getResultMsg
();
}
public
BizException
(
String
errorMsg
)
{
super
(
errorMsg
);
this
.
errorCode
=
"-1"
;
this
.
errorMsg
=
errorMsg
;
}
public
BizException
(
String
errorCode
,
String
errorMsg
)
{
super
(
errorCode
);
this
.
errorCode
=
errorCode
;
this
.
errorMsg
=
errorMsg
;
}
public
BizException
(
String
errorCode
,
String
errorMsg
,
Throwable
cause
)
{
super
(
errorCode
,
cause
);
this
.
errorCode
=
errorCode
;
this
.
errorMsg
=
errorMsg
;
}
public
String
getErrorCode
()
{
return
errorCode
;
}
public
void
setErrorCode
(
String
errorCode
)
{
this
.
errorCode
=
errorCode
;
}
public
String
getErrorMsg
()
{
return
errorMsg
;
}
public
void
setErrorMsg
(
String
errorMsg
)
{
this
.
errorMsg
=
errorMsg
;
}
@Override
public
String
getMessage
()
{
return
errorMsg
;
}
@Override
public
Throwable
fillInStackTrace
()
{
return
this
;
}
}
src/main/java/com/mmc/pms/util/PathUtil.java
0 → 100644
浏览文件 @
54dd9c08
package
com
.
mmc
.
pms
.
util
;
import
org.springframework.util.AntPathMatcher
;
/**
* @author 作者 geDuo
* @version 创建时间:2021年8月31日 下午3:29:28
* @explain 解析地址类
*/
public
class
PathUtil
{
private
static
AntPathMatcher
matcher
=
new
AntPathMatcher
();
public
static
boolean
isPathMatch
(
String
pattern
,
String
path
)
{
return
matcher
.
match
(
pattern
,
path
);
}
}
src/main/resources/application-local.yml
浏览文件 @
54dd9c08
...
@@ -6,17 +6,22 @@ spring:
...
@@ -6,17 +6,22 @@ spring:
username
:
tmj
username
:
tmj
password
:
MMC@2022&MYSQL
password
:
MMC@2022&MYSQL
redis
:
redis
:
database
:
3
database
:
1
host
:
r-wz9ke310fs684hacn1.redis.rds.aliyuncs.com
host
:
r-wz9ke310fs684hacn1pd.redis.rds.aliyuncs.com
port
:
6379
password
:
MMC@2022&REDIS
password
:
MMC@2022&REDIS
jedis
:
port
:
6379
#连接池
lettuce
:
shutdown-timeout
:
1000
# 关闭超时时间-ms
pool
:
pool
:
max-active
:
2
#最大连接个数
servlet
:
max-active
:
30
multipart
:
#等待时间-ms
max-file-size
:
200MB
max-wait
:
1000ms
max-request-size
:
200MB
#最大空闲
max-idle
:
8
#初始化最小
min-idle
:
1
#mybatis-plus
#mybatis-plus
mybatis-plus
:
mybatis-plus
:
global-config
:
global-config
:
...
...
src/main/resources/mapper/ProductDao.xml
浏览文件 @
54dd9c08
...
@@ -40,8 +40,8 @@
...
@@ -40,8 +40,8 @@
set product_name = #{productName},
set product_name = #{productName},
categories_id = #{categoriesId},
categories_id = #{categoriesId},
model = #{model},
model = #{model},
brand_info_id = #{brandInfoId}
,
brand_info_id = #{brandInfoId}
where id = #{id}
where id = #{id}
</update>
</update>
<update
id=
"updateProductSpec"
>
<update
id=
"updateProductSpec"
>
update product_spec
update product_spec
...
@@ -279,7 +279,10 @@
...
@@ -279,7 +279,10 @@
and is_deleted = 0
and is_deleted = 0
</select>
</select>
<select
id=
"countSpecByProdSkuId"
resultType=
"java.lang.Integer"
>
<select
id=
"countSpecByProdSkuId"
resultType=
"java.lang.Integer"
>
select count(*)
from product_spec
where product_id = #{id}
and is_deleted = 0
</select>
</select>
<select
id=
"listMallProdInfo"
resultType=
"com.mmc.pms.entity.MallProdInfoDO"
>
<select
id=
"listMallProdInfo"
resultType=
"com.mmc.pms.entity.MallProdInfoDO"
>
SELECT mp.id,
SELECT mp.id,
...
@@ -314,7 +317,7 @@
...
@@ -314,7 +317,7 @@
mp.goods_info_id goodsInfoId,
mp.goods_info_id goodsInfoId,
mp.mall_prod_info_id mallProdSkuInfoId,
mp.mall_prod_info_id mallProdSkuInfoId,
gi.goods_name goodsName
gi.goods_name goodsName
FROM mall_prod_
sku_
info_spec mp
FROM mall_prod_info_spec mp
INNER JOIN goods_info gi ON gi.id = mp.goods_info_id
INNER JOIN goods_info gi ON gi.id = mp.goods_info_id
WHERE mp.product_spec_id = #{id}
WHERE mp.product_spec_id = #{id}
AND mp.is_deleted = 0
AND mp.is_deleted = 0
...
@@ -334,8 +337,8 @@
...
@@ -334,8 +337,8 @@
ps.is_deleted as spec_deleted
ps.is_deleted as spec_deleted
FROM
FROM
goods_info gi
goods_info gi
INNER JOIN mall_prod_
sku_
info mpsi ON gi.id = mpsi.goods_info_id
INNER JOIN mall_prod_info mpsi ON gi.id = mpsi.goods_info_id
INNER JOIN mall_prod_
sku_
info_spec mpsip ON mpsi.id = mpsip.mall_prod_sku_info_id
INNER JOIN mall_prod_info_spec mpsip ON mpsi.id = mpsip.mall_prod_sku_info_id
INNER JOIN product_spec ps ON ps.id = mpsip.product_spec_id
INNER JOIN product_spec ps ON ps.id = mpsip.product_spec_id
<where>
<where>
mpsip.id in (
mpsip.id in (
...
@@ -386,7 +389,7 @@
...
@@ -386,7 +389,7 @@
</select>
</select>
<select
id=
"getProductSpecByIds"
resultType=
"com.mmc.pms.entity.MallProdSkuInfoSpecDO"
>
<select
id=
"getProductSpecByIds"
resultType=
"com.mmc.pms.entity.MallProdSkuInfoSpecDO"
>
select id, goods_info_id goodsInfoId, mall_prod_info_id mallProdSkuInfoId, product_spec_id productSpecId
select id, goods_info_id goodsInfoId, mall_prod_info_id mallProdSkuInfoId, product_spec_id productSpecId
from mall_prod_
sku_
info_spec
from mall_prod_info_spec
where id in
where id in
<foreach
collection=
"list"
separator=
","
item=
"d"
open=
"("
close=
")"
index=
"index"
>
<foreach
collection=
"list"
separator=
","
item=
"d"
open=
"("
close=
")"
index=
"index"
>
#{d}
#{d}
...
@@ -413,7 +416,7 @@
...
@@ -413,7 +416,7 @@
<collection
property=
"orderGoodsProdDetailDTOS"
ofType=
"com.mmc.pms.model.order.dto.OrderGoodsProdDetailDTO"
>
<collection
property=
"orderGoodsProdDetailDTOS"
ofType=
"com.mmc.pms.model.order.dto.OrderGoodsProdDetailDTO"
>
<result
property=
"mallProdSkuInfoId"
column=
"mall_prod_sku_info_id"
/>
<result
property=
"mallProdSkuInfoId"
column=
"mall_prod_sku_info_id"
/>
<result
property=
"unitName"
column=
"unit_name"
/>
<result
property=
"unitName"
column=
"unit_name"
/>
<result
property=
"mallProdSkuInfoSpecId"
column=
"mall_prod_
sku_
info_spec_id"
/>
<result
property=
"mallProdSkuInfoSpecId"
column=
"mall_prod_info_spec_id"
/>
<result
property=
"productSpecId"
column=
"product_spec_id"
/>
<result
property=
"productSpecId"
column=
"product_spec_id"
/>
<result
property=
"specName"
column=
"spec_name"
/>
<result
property=
"specName"
column=
"spec_name"
/>
<result
property=
"prodSkuSpecImage"
column=
"prod_sku_spec_image"
/>
<result
property=
"prodSkuSpecImage"
column=
"prod_sku_spec_image"
/>
...
@@ -430,7 +433,8 @@
...
@@ -430,7 +433,8 @@
</collection>
</collection>
</resultMap>
</resultMap>
<select
id=
"listProdGoodsSkuInfo"
resultMap=
"listProdGoodsSkuInfoResultMap"
parameterType=
"com.mmc.pms.model.qo.MallOrderGoodsInfoQO"
>
<select
id=
"listProdGoodsSkuInfo"
resultMap=
"listProdGoodsSkuInfoResultMap"
parameterType=
"com.mmc.pms.model.qo.MallOrderGoodsInfoQO"
>
SELECT
SELECT
gi.id as goods_info_id,gi.goods_name,gi.goods_no,gi.directory_id,
gi.id as goods_info_id,gi.goods_name,gi.goods_no,gi.directory_id,
gimg.img_url as mainImg,
gimg.img_url as mainImg,
...
@@ -464,4 +468,15 @@
...
@@ -464,4 +468,15 @@
)
)
</where>
</where>
</select>
</select>
<select
id=
"listMallProductSpec"
resultType=
"com.mmc.pms.entity.MallProdSkuInfoSpecDO"
>
SELECT mp.id,
mp.goods_info_id goodsInfoId,
mp.mall_prod_info_id mallProdSkuInfoId,
gi.goods_name goodsName
FROM mall_prod_info_spec mp
INNER JOIN goods_info gi ON gi.id = mp.goods_info_id
WHERE mp.product_spec_id = #{id}
AND mp.is_deleted = 0
AND gi.is_deleted = 0
</select>
</mapper>
</mapper>
src/main/resources/mapper/work/BackstageTaskServiceDao.xml
0 → 100644
浏览文件 @
54dd9c08
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.mmc.pms.dao.BackstageTaskServiceDao"
>
<resultMap
type=
"com.mmc.pms.entity.ServiceDO"
id=
"ServiceMap"
>
<result
property=
"id"
column=
"id"
jdbcType=
"INTEGER"
/>
<result
property=
"serviceName"
column=
"service_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"applicationId"
column=
"application_id"
jdbcType=
"INTEGER"
/>
<result
property=
"industryId"
column=
"industry_id"
jdbcType=
"INTEGER"
/>
<result
property=
"displayState"
column=
"display_state"
jdbcType=
"INTEGER"
/>
<result
property=
"coverPlan"
column=
"cover_plan"
jdbcType=
"VARCHAR"
/>
<result
property=
"shareCard"
column=
"share_card"
jdbcType=
"VARCHAR"
/>
<result
property=
"video"
column=
"video"
jdbcType=
"VARCHAR"
/>
<result
property=
"serviceIntroduction"
column=
"service_introduction"
jdbcType=
"VARCHAR"
/>
<result
property=
"createTime"
column=
"create_time"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"updateTime"
column=
"update_time"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"isDeleted"
column=
"is_deleted"
jdbcType=
"INTEGER"
/>
<result
property=
"accountId"
column=
"account_id"
jdbcType=
"INTEGER"
/>
</resultMap>
<!--查询所有-->
<select
id=
"queryAll"
resultMap=
"ServiceMap"
>
select id,
service_name,
application_id,
industry_id,
display_state,
cover_plan,
share_card,
video,
service_introduction,
create_time,
update_time,
is_deleted,
account_id
from service
</select>
<!--查询单个-->
<select
id=
"queryById"
resultMap=
"ServiceMap"
>
select id,
service_name,
application_id,
industry_id,
display_state,
cover_plan,
share_card,
video,
service_introduction,
create_time,
update_time,
account_id
from service
where id = #{id}
and is_deleted = 0
</select>
<!--查询指定行数据-->
<select
id=
"queryAllByLimit"
resultMap=
"ServiceMap"
parameterType=
"com.mmc.pms.model.qo.ServiceQO"
>
select
id, service_name, application_id, industry_id, display_state, cover_plan, share_card, video,
service_introduction, create_time, update_time, account_id
from service
<where>
<if
test=
"serviceName != null and serviceName != ''"
>
and service_name = #{serviceName}
</if>
<if
test=
"applicationId != null"
>
and application_id = #{applicationId}
</if>
<if
test=
"industryId != null"
>
and industry_id = #{industryId}
</if>
<if
test=
"accountId != null"
>
and account_id = #{accountId}
</if>
and is_deleted = 0
and display_state = 0
</where>
order by create_time desc
limit #{pageNo}, #{pageSize}
</select>
<!--统计总行数-->
<select
id=
"count"
resultType=
"java.lang.Long"
>
select count(1)
from service
<where>
<if
test=
"id != null"
>
and id = #{id}
</if>
<if
test=
"serviceName != null and serviceName != ''"
>
and service_name = #{serviceName}
</if>
<if
test=
"applicationId != null"
>
and application_id = #{applicationId}
</if>
<if
test=
"industryId != null"
>
and industry_id = #{industryId}
</if>
<if
test=
"displayState != null"
>
and display_state = #{displayState}
</if>
<if
test=
"coverPlan != null and coverPlan != ''"
>
and cover_plan = #{coverPlan}
</if>
<if
test=
"shareCard != null and shareCard != ''"
>
and share_card = #{shareCard}
</if>
<if
test=
"video != null and video != ''"
>
and video = #{video}
</if>
<if
test=
"serviceIntroduction != null and serviceIntroduction != ''"
>
and service_introduction = #{serviceIntroduction}
</if>
<if
test=
"createTime != null"
>
and create_time = #{createTime}
</if>
<if
test=
"updateTime != null"
>
and update_time = #{updateTime}
</if>
<if
test=
"isDeleted != null"
>
and is_deleted = #{isDeleted}
</if>
<if
test=
"accountId != null"
>
and account_id = #{accountId}
</if>
</where>
</select>
<!--新增所有列-->
<insert
id=
"insert"
keyProperty=
"id"
useGeneratedKeys=
"true"
parameterType=
"com.mmc.pms.entity.ServiceDO"
>
insert into service(service_name, application_id, industry_id, display_state, cover_plan, share_card, video,
service_introduction, account_id)
values (#{serviceName}, #{applicationId}, #{industryId}, #{displayState}, #{coverPlan}, #{shareCard},
#{video}, #{serviceIntroduction}, #{accountId})
</insert>
<!--通过主键修改数据-->
<update
id=
"update"
parameterType=
"com.mmc.pms.entity.ServiceDO"
>
update service
<set>
<if
test=
"serviceName != null and serviceName != ''"
>
service_name = #{serviceName},
</if>
<if
test=
"applicationId != null"
>
application_id = #{applicationId},
</if>
<if
test=
"industryId != null"
>
industry_id = #{industryId},
</if>
<if
test=
"displayState != null"
>
display_state = #{displayState},
</if>
<if
test=
"coverPlan != null and coverPlan != ''"
>
cover_plan = #{coverPlan},
</if>
<if
test=
"shareCard != null and shareCard != ''"
>
share_card = #{shareCard},
</if>
<if
test=
"video != null and video != ''"
>
video = #{video},
</if>
<if
test=
"serviceIntroduction != null and serviceIntroduction != ''"
>
service_introduction = #{serviceIntroduction},
</if>
<if
test=
"createTime != null"
>
create_time = #{createTime},
</if>
<if
test=
"updateTime != null"
>
update_time = #{updateTime},
</if>
<if
test=
"accountId != null"
>
account_id = #{accountId},
</if>
</set>
where = #{id}
</update>
<!--通过主键删除-->
<update
id=
"deleteById"
parameterType=
"java.lang.Integer"
>
update service
set is_deleted = 1
where = #{id}
</update>
</mapper>
\ No newline at end of file
src/main/resources/not-check.yml
0 → 100644
浏览文件 @
54dd9c08
data-filter
:
uploadPath
:
#不需要解析的body参数的地址
-
/xxx/x
not-auth-path
:
-
/pms/v2/**
-
/pms/doc.html
-
/pms/swagger-resources/**
-
/pms/webjars/**
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论