1、文件树查询接口优化,增加是否为文件夹、是否公开字段返回;

2、修改文件是否公开接口实现;
3、修改文件访问范围接口实现
This commit is contained in:
liangwen 2025-09-15 16:18:29 +08:00
parent 4694649c67
commit 4ca374ccb4
7 changed files with 104 additions and 25 deletions

View File

@ -526,25 +526,45 @@ public class FileController {
return RestResult.success().data(vo);
}
//@Operation(summary = "修改文件访问权限", description = "修改文件访问权限", tags = {"file"})
@ApiOperation(value = "5.4 修改文件访问权限")
@ApiOperation(value = "5.4 修改文件是否公开")
@ApiOperationSupport(order = 4)
@RequestMapping(value = "/updateaccesspermission", method = RequestMethod.GET)
@RequestMapping(value = "/updateispublic", method = RequestMethod.GET)
@ResponseBody
public RestResult<String> updateAccessPermission(
public RestResult<String> updateIsPublic(
@Parameter(description = "用户文件Id", required = true) String userFileId,
@Parameter(description = "访问权限 0禁止其他用户访问 1登录后可访问 2具备权限可访问", required = true) String accessPermission){
@Parameter(description = "是否公开 0否 1是", required = true) Integer isPublic){
try {
UserFile userFile = new UserFile();
userFile.setUserFileId(userFileId);
userFile.setAccessPermission(accessPermission);
userFile.setIsPublic(isPublic);
userFile.setModifyUserId(SecurityUtils.getUserId());
userFile.setModifyTime(DateUtil.getCurrentTime());
userFileService.updateById(userFile);
} catch (Exception e) {
throw new QiwenException(999999, "修改文件访问权限异常");
throw new QiwenException(999999, "修改文件是否公开异常");
}
return RestResult.success().message("修改文件访问权限成功");
return RestResult.success().message("修改文件是否公开成功");
}
//@Operation(summary = "修改文件访问权限", description = "修改文件访问权限", tags = {"file"})
@ApiOperation(value = "5.5 修改文件访问范围")
@ApiOperationSupport(order = 5)
@RequestMapping(value = "/updateaccessscope", method = RequestMethod.GET)
@ResponseBody
public RestResult<String> updateAccessScope(
@Parameter(description = "用户文件Id", required = true) String userFileId,
@Parameter(description = "访问范围", required = true) String accessScope){
try {
UserFile userFile = new UserFile();
userFile.setUserFileId(userFileId);
userFile.setAccessScope(accessScope);
userFile.setModifyUserId(SecurityUtils.getUserId());
userFile.setModifyTime(DateUtil.getCurrentTime());
userFileService.updateById(userFile);
} catch (Exception e) {
throw new QiwenException(999999, "修改文件访问范围异常");
}
return RestResult.success().message("修改文件访问范围成功");
}
}

View File

@ -66,8 +66,11 @@ public class UserFile {
@TableField(exist = false)
private Long fileSize;
@Column(columnDefinition="char(1) comment '修改用户id'")
private String accessPermission;
@Column(columnDefinition="int(0) comment '是否公开(0 否 1是)'")
private Integer isPublic;
@Column(columnDefinition="varchar(25) comment '可见范围'")
private String accessScope;
@Column(columnDefinition="bigint(0) comment '下载次数'")
private Long downloadCnt;

View File

@ -32,7 +32,11 @@ public class UserFileDTO {
private Long fileSize;
private String accessPermission;
private Integer isPublic;
private String accessScope;
private Long downloadCnt;
private List<UserFileDTO> children = new ArrayList<UserFileDTO>();
@ -164,12 +168,28 @@ public class UserFileDTO {
this.fileSize = fileSize;
}
public String getAccessPermission() {
return accessPermission;
public Integer getIsPublic() {
return isPublic;
}
public void setAccessPermission(String accessPermission) {
this.accessPermission = accessPermission;
public void setIsPublic(Integer isPublic) {
this.isPublic = isPublic;
}
public String getAccessScope() {
return accessScope;
}
public void setAccessScope(String accessScope) {
this.accessScope = accessScope;
}
public Long getDownloadCnt() {
return downloadCnt;
}
public void setDownloadCnt(Long downloadCnt) {
this.downloadCnt = downloadCnt;
}
public List<UserFileDTO> getChildren() {
@ -179,4 +199,5 @@ public class UserFileDTO {
public void setChildren(List<UserFileDTO> children) {
this.children = children;
}
}

View File

@ -20,5 +20,7 @@ public interface UserFileMapper extends BaseMapper<UserFile> {
List<UserFileDTO> selectFileTreeByUserId(Long userId);
int incrementDownloadCount(@Param("userFileIdList") List<String> userFileIdList);
int incrementDownloadCount(@Param("userFileIds") List<String> userFileIds);
List<UserFile> selectByUserFileIds(@Param("userFileIds")List<String> userFileIds);
}

View File

@ -278,7 +278,7 @@ public class UserFileServiceImpl extends ServiceImpl<UserFileMapper, UserFile> i
rootNode.setChildren(new ArrayList<>());
for (UserFileDTO userFile : userFileList) {
QiwenFile qiwenFile = new QiwenFile(userFile.getFilePath(), userFile.getFileName(), false);
QiwenFile qiwenFile = new QiwenFile(userFile.getFilePath(), userFile.getFileName(), userFile.getIsDir() == 1);
String filePath = qiwenFile.getPath();
Queue<String> queue = new LinkedList<>();
@ -305,8 +305,8 @@ public class UserFileServiceImpl extends ServiceImpl<UserFileMapper, UserFile> i
}
@Override
public int incrementDownloadCount(List<String> userFileIdList) {
return userFileMapper.incrementDownloadCount(userFileIdList);
public int incrementDownloadCount(List<String> userFileIds) {
return userFileMapper.incrementDownloadCount(userFileIds);
}
@ -327,10 +327,12 @@ public class UserFileServiceImpl extends ServiceImpl<UserFileMapper, UserFile> i
if (childNode == null) { // 没有该子节点 -> 插入
childNode = new FileTreeSelect();
childNode.setLabel(nodeNameQueue.poll());
childNode.setLabel(nodeNameQueue.poll() + (userFile.getIsDir() == 0 ? "." + userFile.getExtendName() : ""));
childNode.setIsDir(userFile.getIsDir());
childNode.setIsPublic(userFile.getIsPublic());
childNode.setChildren(new ArrayList<>());
// 所有节点都绑定 userFileId目录/文件都在 UserFile 表里
// 所有节点都绑定 userFileId目录/文件都在 UserFile 表里
childNode.setId(userFile.getUserFileId());
childrenTreeNodes.add(childNode);

View File

@ -20,6 +20,10 @@ public class FileTreeSelect implements Serializable
/** 节点名称 */
private String label;
private Integer isDir;
private Integer isPublic;
/** 子节点 */
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<FileTreeSelect> children;
@ -49,6 +53,22 @@ public class FileTreeSelect implements Serializable
this.label = label;
}
public Integer getIsDir() {
return isDir;
}
public void setIsDir(Integer isDir) {
this.isDir = isDir;
}
public Integer getIsPublic() {
return isPublic;
}
public void setIsPublic(Integer isPublic) {
this.isPublic = isPublic;
}
public List<FileTreeSelect> getChildren()
{
return children;

View File

@ -23,7 +23,8 @@
<result property="uploadTime" column="uploadTime"/>
<result property="fileSize" column="fileSize"/>
<result property="userId" column="userId"/>
<result property="accessPermission" column="accessPermission"/>
<result property="isPublic" column="isPublic"/>
<result property="accessScope" column="accessScope"/>
<result property="downloadCnt" column="downloadCnt"/>
</resultMap>
@ -44,7 +45,8 @@
<result property="uploadTime" column="uploadTime"/>
<result property="fileSize" column="fileSize"/>
<result property="userId" column="userId"/>
<result property="accessPermission" column="accessPermission"/>
<result property="isPublic" column="isPublic"/>
<result property="accessScope" column="accessScope"/>
<result property="downloadCnt" column="downloadCnt"/>
</resultMap>
@ -104,16 +106,25 @@
<select id="selectFileTreeByUserId" resultMap="UserFileDtoMap" parameterType="java.lang.Long">
SELECT userfile.*, file.fileSize as fileSize FROM userfile
LEFT JOIN file ON file.fileId = userfile.fileId
WHERE userfile.userId = #{userId}
WHERE userfile.userId = #{userId} and deleteFlag = 0
</select>
<update id="incrementDownloadCount">
UPDATE userfile
SET downloadCnt = downloadCnt + 1
WHERE userFileId IN
<foreach collection="userFileIdList" item="userFileId" open="(" separator="," close=")">
<foreach collection="userFileIds" item="userFileId" open="(" separator="," close=")">
#{userFileId}
</foreach>
</update>
<select id="selectByUserFileIds" resultMap="UserFileMap">
SELECT userfile.*, file.fileSize as fileSize FROM userfile
LEFT JOIN file ON file.fileId = userfile.fileId
WHERE userfile.userFileId IN
<foreach collection="userFileIds" item="userFileId" open="(" separator="," close=")">
#{userFileId}
</foreach>
</select>
</mapper>