Files
senmesh-zc/src/main/java/com/senmesh/sfile/service/impl/ShareUserFileServiceImpl.java

56 lines
1.9 KiB
Java
Raw Normal View History

2025-12-31 18:10:10 +08:00
package com.senmesh.sfile.service.impl;
2026-01-05 16:35:46 +08:00
import com.senmesh.common.util.RandomUtils;
2025-12-31 18:10:10 +08:00
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.service.ShareUserFileService;
import com.senmesh.sfile.service.UserFileService;
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();
2026-01-05 16:35:46 +08:00
// 生成随机6位数字访问码
String accessCode = RandomUtils.nextSixVerificationCode();
2025-12-31 18:10:10 +08:00
// 调用UserFileService的重载create方法,根据普通文件创建分享文件
ExpandUserFileCreateDTO expandCreateDTO = ExpandUserFileCreateDTO.builder()
.userFileId(userFileId)
.userId(userId)
.rootType(RootTypeEnum.SHARE.getType())
.fileStatus(FileStatusEnum.NORMAL.getStatus())
2026-01-05 16:35:46 +08:00
.accessCode(accessCode)
2025-12-31 18:10:10 +08:00
.endTime(endTime)
.build();
2026-01-05 16:35:46 +08:00
return userFileService.create(expandCreateDTO).getFolder().getId();
2025-12-31 18:10:10 +08:00
}
}