提交 03fb436b authored 作者: xc's avatar xc

Merge branch 'develop' of 192.168.1.249:LJJ/encrypted-file-system

package com.zjty.efs.ftp.controller;
import com.zjty.efs.ftp.base.response.ServerResponse;
import com.zjty.efs.ftp.entity.DownLoadRequest;
import com.zjty.efs.ftp.service.DownLoadService;
import com.zjty.efs.misc.config.AutoDocument;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@AutoDocument
@RestController
@RequestMapping("/count")
@Api(tags = "文件下载次数",description = "文件下载次数")
public class DownLoadCountController {
@Autowired
private DownLoadService downLoadService;
@PutMapping("/findCount")
@ApiImplicitParams({
@ApiImplicitParam(name = "DownLoadRequest",value = "看下面model",paramType = "query",required = true)
})
public ServerResponse findCount(@RequestBody DownLoadRequest downLoadRequest){
return downLoadService.findCount(downLoadRequest);
}
}
package com.zjty.efs.ftp.controller;
import com.zjty.efs.ftp.entity.DownLoadCount;
import com.zjty.efs.ftp.service.FileDownLoadService;
import com.zjty.efs.misc.config.AutoDocument;
import io.swagger.annotations.Api;
......@@ -7,10 +8,7 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
......@@ -28,9 +26,10 @@ public class FileDownLoadController {
@ApiImplicitParams({
@ApiImplicitParam(name = "fileName",value = "文件名称",paramType = "query",example = "1.zip",required = true),
@ApiImplicitParam(name = "response",value = "响应对象",paramType = "query",required = true),
@ApiImplicitParam(name = "request",value = "请求对象",paramType = "query",required = true)
@ApiImplicitParam(name = "request",value = "请求对象",paramType = "query",required = true),
@ApiImplicitParam(name = "downLoadCount",value = "下载次数对象",paramType = "query",required = true)
})
public void fileDownLoad(@PathVariable("fileName") String fileName, HttpServletResponse response, HttpServletRequest request){
fileDownLoadService.fileDownLoad(fileName,response,request);
public void fileDownLoad(@PathVariable("fileName") String fileName, @RequestBody DownLoadCount downLoadCount, HttpServletResponse response, HttpServletRequest request){
fileDownLoadService.fileDownLoad(fileName,downLoadCount,response,request);
}
}
package com.zjty.efs.ftp.dao;
import com.zjty.efs.ftp.entity.DownLoadCount;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;
public interface DownLoadCountDao extends JpaRepository<DownLoadCount,Integer>, JpaSpecificationExecutor {
@Query("select d from DownLoadCount d where d.userId =:userId and d.fileId in :fileIds")
List<DownLoadCount> findCount(@Param("userId") String userId,@Param("fileIds") List<Integer> fileIds);
}
package com.zjty.efs.ftp.entity;
import com.zjty.efs.misc.config.AutoDocument;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@AutoDocument
@AllArgsConstructor@NoArgsConstructor
@Data
@Entity
@ApiModel(value = "DownLoadCount",description = "文件下载次数")
public class DownLoadCount {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@ApiModelProperty(name = "id",value = "文件下载次数id",notes = "文件下载次数id",example = "1")
private Integer id;
@ApiModelProperty(name = "fileId",value = "文件id",notes = "文件id",example = "1")
private Integer fileId;//文件id
@ApiModelProperty(name = "userId",value = "用户id",notes = "用户id",example = "0f46770d-b602-4a80-bdec-a12978022625")
private String userId;//用户id
@ApiModelProperty(name = "count",value = "下载次数id",notes = "下载次数id",example = "1")
private Integer count;//下载次数
}
package com.zjty.efs.ftp.entity;
import com.zjty.efs.misc.config.AutoDocument;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@AutoDocument
@AllArgsConstructor
@NoArgsConstructor
@Data
@ApiModel(value = "DownLoadRequest",description = "文件下载次数请求")
public class DownLoadRequest {
@ApiModelProperty(name = "userId",value = "用户id",notes = "用户id",example = "0f46770d-b602-4a80-bdec-a12978022625")
private String userId;//用户id
@ApiModelProperty(name = "fileIds",value = "文件id集合",notes = "文件id集合",example = "[1,2]")
private List<Integer> fileIds;//文件id集合
}
package com.zjty.efs.ftp.entity;
import com.zjty.efs.misc.config.AutoDocument;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
......
package com.zjty.efs.ftp.service;
import com.zjty.efs.ftp.base.response.ServerResponse;
import com.zjty.efs.ftp.entity.DownLoadRequest;
public interface DownLoadService {
/**
* 根据用户id和文件id集合查询所有文件
* @param downLoadRequest
* @return
*/
ServerResponse findCount(DownLoadRequest downLoadRequest);
}
package com.zjty.efs.ftp.service;
import com.zjty.efs.ftp.entity.DownLoadCount;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
......@@ -11,6 +13,6 @@ public interface FileDownLoadService {
* @param response
* @param httpServletRequest
*/
void fileDownLoad(String fileName, HttpServletResponse response, HttpServletRequest httpServletRequest);
void fileDownLoad(String fileName, DownLoadCount downLoadCount,HttpServletResponse response, HttpServletRequest httpServletRequest);
}
package com.zjty.efs.ftp.service.impl;
import com.zjty.efs.ftp.base.response.ServerResponse;
import com.zjty.efs.ftp.dao.DownLoadCountDao;
import com.zjty.efs.ftp.entity.DownLoadRequest;
import com.zjty.efs.ftp.service.DownLoadService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class DownLoadServiceImpl implements DownLoadService {
@Autowired
private DownLoadCountDao downLoadCountDao;
@Override
public ServerResponse findCount(DownLoadRequest downLoadRequest) {
return ServerResponse.saveSuccess(downLoadCountDao.findCount(downLoadRequest.getUserId(),downLoadRequest.getFileIds()));
}
}
package com.zjty.efs.ftp.service.impl;
import com.zjty.efs.ftp.dao.DownLoadCountDao;
import com.zjty.efs.ftp.entity.DownLoadCount;
import com.zjty.efs.ftp.service.FileDownLoadService;
import lombok.extern.slf4j.Slf4j;
import org.apache.catalina.connector.ClientAbortException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
......@@ -20,6 +23,9 @@ public class FileDownLoadServiceImpl implements FileDownLoadService {
@Value("${file.address}")
private String fileAddress;
@Autowired
private DownLoadCountDao countDao;
/**
* 下载服务器已存在的文件
*
......@@ -30,7 +36,7 @@ public class FileDownLoadServiceImpl implements FileDownLoadService {
* @param fileName
* 文件名称
*/
public void fileDownLoad(String fileName, HttpServletResponse response, HttpServletRequest httpServletRequest) {
public void fileDownLoad(String fileName, DownLoadCount downLoadCount, HttpServletResponse response, HttpServletRequest httpServletRequest) {
if(fileName != null){
response.setHeader("content-type", "application/octet-stream");
response.setContentType("application/octet-stream");
......@@ -60,6 +66,13 @@ public class FileDownLoadServiceImpl implements FileDownLoadService {
i = bs.read(buffer);
}
os.flush();
//统计下载次数
int count = 1;
if(downLoadCount.getCount() != null){
count = downLoadCount.getCount() + 1;
}
downLoadCount.setCount(count);
countDao.save(downLoadCount);
} catch (FileNotFoundException e) {
log.error(file.getAbsolutePath() + "文件不存在");
e.printStackTrace();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论