71 lines
2.1 KiB
Java
71 lines
2.1 KiB
Java
package com.quinn.service.impl;
|
|
|
|
import com.quinn.pojo.Source;
|
|
import com.quinn.mapper.SourceMapper;
|
|
import com.quinn.service.SourceService;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.quinn.utils.OSSClientUtil;
|
|
import com.quinn.utils.RedisUtils;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.servlet.ServletOutputStream;
|
|
import java.io.BufferedInputStream;
|
|
import java.io.BufferedOutputStream;
|
|
import java.io.IOException;
|
|
|
|
/**
|
|
* <p>
|
|
* 服务实现类
|
|
* </p>
|
|
*
|
|
* @author limqsh
|
|
* @since 2022-05-03
|
|
*/
|
|
@Service
|
|
public class SourceServiceImpl extends ServiceImpl<SourceMapper, Source> implements SourceService {
|
|
|
|
@Resource
|
|
OSSClientUtil ossClientUtil;
|
|
@Resource
|
|
RedisUtils redisUtils;
|
|
|
|
@Override
|
|
public void downloadSource(ServletOutputStream outputStream, Source source) throws IOException {
|
|
String sourceLink = source.getSourceLink();
|
|
addDownLoadRecord(source);
|
|
// 读取文件内容。
|
|
BufferedInputStream in = new BufferedInputStream(ossClientUtil.downloadFile(sourceLink));
|
|
BufferedOutputStream out = new BufferedOutputStream(outputStream);
|
|
byte[] buffer = new byte[1024];
|
|
int lenght = 0;
|
|
while ((lenght = in.read(buffer)) != -1) {
|
|
out.write(buffer, 0, lenght);
|
|
}
|
|
if (out != null) {
|
|
out.flush();
|
|
out.close();
|
|
}
|
|
if (in != null) {
|
|
in.close();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 更新页码
|
|
* @param source
|
|
*/
|
|
private void addDownLoadRecord(Source source) {
|
|
// Integer downLoadTime = (Integer) redisUtils.get(QuinnConstant.SOURCE_KEY + source.getId());
|
|
// int downTimes = 0;
|
|
// if (StringUtils.isEmpty(downLoadTime)){
|
|
// downTimes = source.getDownRecord() + 1;
|
|
// }else {
|
|
// downTimes = downLoadTime + 1;
|
|
// }
|
|
// redisUtils.set(QuinnConstant.SOURCE_KEY + source.getId(),downTimes);
|
|
source.setDownRecord(source.getDownRecord() + 1);
|
|
updateById(source);
|
|
}
|
|
}
|