Files
senmesh-zc/src/main/java/com/senmesh/sfile/service/impl/ShareUserFileServiceImpl.java
2026-01-06 16:37:39 +08:00

76 lines
2.5 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.senmesh.sfile.service.impl;
import com.senmesh.common.exception.util.Assert;
import com.senmesh.common.util.RandomUtils;
import com.senmesh.common.util.UserContextHolder;
import com.senmesh.sfile.constant.FileStatusEnum;
import com.senmesh.sfile.constant.RootTypeEnum;
import com.senmesh.sfile.dto.ExpandUserFileCreateDTO;
import com.senmesh.sfile.dto.ShareUserFileCreateDTO;
import com.senmesh.sfile.dto.UserFileDTO;
import com.senmesh.sfile.dto.UserFileQueryDTO;
import com.senmesh.sfile.service.ShareUserFileService;
import com.senmesh.sfile.service.UserFileService;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Calendar;
import java.util.Date;
/**
* 分享用户文件ServiceImpl
*/
@Service
public class ShareUserFileServiceImpl implements ShareUserFileService {
@Autowired
private UserFileService userFileService;
@Override
@Transactional
public Long create(ShareUserFileCreateDTO createDTO) {
Long userFileId = createDTO.getUserFileId();
Long userId = UserContextHolder.getExistLoginUserId();
Integer validDays = createDTO.getValidDays();
// 根据有效天数计算过期时间
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.DAY_OF_MONTH, validDays);
Date endTime = calendar.getTime();
// 生成随机6位数字访问码
String accessCode = RandomUtils.nextSixVerificationCode();
// 调用UserFileService的重载create方法,根据普通文件创建分享文件
ExpandUserFileCreateDTO expandCreateDTO = ExpandUserFileCreateDTO.builder()
.userFileId(userFileId)
.userId(userId)
.rootType(RootTypeEnum.SHARE.getType())
.fileStatus(FileStatusEnum.NORMAL.getStatus())
.accessCode(accessCode)
.endTime(endTime)
.build();
return userFileService.create(expandCreateDTO).getFolder().getId();
}
@Override
public List<UserFileDTO> list(Long id, String accessCode) {
UserFileDTO userFileDTO = userFileService.findOne(UserFileQueryDTO.builder()
.id(id)
.rootType(RootTypeEnum.SHARE.getType())
.build());
Assert.isTrue(userFileDTO.getAccessCode().equals(accessCode), "访问码不正确");
return userFileService.list(UserFileQueryDTO.builder()
.rootType(RootTypeEnum.SHARE.getType())
.pathLike(userFileDTO.getPath())
.build());
}
}