guohongjin
2024-05-15 5b7639f0bd9e056738ec15100ed0532e965c6cd5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*
 * Copyright [2020-2030] [https://www.stylefeng.cn]
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
 *
 * 1.请不要删除和修改根目录下的LICENSE文件。
 * 2.请不要删除和修改Guns源码头部的版权声明。
 * 3.请保留源码和相关描述文件的项目出处,作者声明等。
 * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
 * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
 * 6.若您的项目无法满足以上几点,可申请商业授权
 */
package cn.stylefeng.roses.kernel.file.api.pojo.request;
 
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
 
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
 
/**
 * 文件信息表
 * 注意:
 * 1、如果文件上传不关心版本号只关心文件本身,则业务关联fileCode,文件升级code不变
 * 2、如果业务场景类似合同这类,文件升级不影响已签发的文件,则业务关联fileId,每次版本升级都会生成新的fileId
 *
 * @author majianguo
 * @date 2020/12/27 12:35
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class SysFileInfoRequest extends BaseRequest {
 
    /**
     * 文件ID
     */
    @NotNull(message = "fileId不能为空", groups = {versionBack.class, detail.class})
    @ChineseDescription("文件id")
    private Long fileId;
 
    /**
     * 文件编码
     * <p>
     * 解决一个文件多个版本问题,多次上传文件编码不变
     * <p>
     * 版本号升级的依据,code相同id不同视为同一个文件的不同版本
     */
    @NotNull(message = "fileCode不能为空", groups = {edit.class, delete.class,})
    @ChineseDescription("文件编码")
    private Long fileCode;
 
    /**
     * 是否为机密文件,Y-是机密,N-不是机密
     * <p>
     * 机密文件为需要鉴权的文件,非机密文件则不需要任何权限(不登录也可以访问)
     */
    @NotBlank(message = "是否是机密文件不能为空", groups = {add.class, edit.class})
    @ChineseDescription("是否为机密文件,Y-是机密,N-不是机密")
    private String secretFlag;
 
    /**
     * 文件名称(上传时候的文件全名,例如:开发文档.txt)
     */
    @ChineseDescription("文件名称(上传时候的文件全名,例如:开发文档.txt)")
    private String fileOriginName;
 
    /**
     * 其他文件形式传参
     */
    @ChineseDescription("其他文件形式参数")
    private String token;
 
    /**
     * 文件存储位置:1-阿里云,2-腾讯云,3-minio,4-本地
     */
    @ChineseDescription("文件存储位置:1-阿里云,2-腾讯云,3-minio,4-本地")
    private Integer fileLocation;
 
    /**
     * 文件仓库(文件夹)
     */
    @NotBlank(message = "fileBucket不能为空", groups = {previewByObjectName.class})
    @ChineseDescription("文件仓库(文件夹)")
    private String fileBucket;
 
    /**
     * 文件后缀
     */
    @ChineseDescription("文件后缀")
    private String fileSuffix;
 
    /**
     * 文件大小kb
     */
    @ChineseDescription("文件大小")
    private Long fileSizeKb;
 
    /**
     * 存储到bucket中的名称,主键id+.后缀
     */
    @NotBlank(message = "fileObjectName不能为空", groups = {previewByObjectName.class})
    @ChineseDescription("存储到bucket中的名称,主键id+.后缀")
    private String fileObjectName;
 
    /**
     * 存储路径
     */
    @ChineseDescription("存储路径")
    private String filePath;
 
    /**
     * 版本回退
     */
    public @interface versionBack {
    }
 
    /**
     * 通过object名称预览文件
     */
    public @interface previewByObjectName {
    }
 
}