Commit e8956856 authored by huangcb's avatar huangcb

新增文件删除功能接口

parent 6e65d505
package com.esv.freight.file.module.delete.controller;
import com.esv.freight.file.common.exception.EException;
import com.esv.freight.file.common.response.EResponse;
import com.esv.freight.file.common.validator.groups.ValidatorDelete;
import com.esv.freight.file.module.upload.form.FileForm;
import com.esv.freight.file.module.upload.service.FileMetaService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @description: 文件删除Controller
* @project: freight-file-service
* @name: com.esv.freight.file.module.delete.controller.DeleteController
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/04/14 19:37
* @version:1.0
*/
@Slf4j
@RestController
@RequestMapping("/delete")
public class DeleteController {
private FileMetaService fileMetaService;
public DeleteController(FileMetaService fileMetaService) {
this.fileMetaService = fileMetaService;
}
@PostMapping("/single")
public EResponse deleteSingleFile(@RequestBody @Validated(ValidatorDelete.class) FileForm fileForm) throws EException {
fileMetaService.deleteFile(fileForm);
return EResponse.ok();
}
}
package com.esv.freight.file.module.download; package com.esv.freight.file.module.download.controller;
import com.esv.freight.file.module.upload.service.FileMetaService; import com.esv.freight.file.module.upload.service.FileMetaService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -13,7 +13,7 @@ import javax.servlet.http.HttpServletResponse; ...@@ -13,7 +13,7 @@ import javax.servlet.http.HttpServletResponse;
/** /**
* @description: 文件下载Controller * @description: 文件下载Controller
* @project: freight-file-service * @project: freight-file-service
* @name: com.esv.freight.file.module.download.DownloadController * @name: com.esv.freight.file.module.download.controller.DownloadController
* @author: 黄朝斌 * @author: 黄朝斌
* @email: huangchaobin@esvtek.com * @email: huangchaobin@esvtek.com
* @createTime: 2020/04/14 17:06 * @createTime: 2020/04/14 17:06
......
...@@ -3,6 +3,7 @@ package com.esv.freight.file.module.upload.controller; ...@@ -3,6 +3,7 @@ package com.esv.freight.file.module.upload.controller;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.esv.freight.file.common.exception.EException; import com.esv.freight.file.common.exception.EException;
import com.esv.freight.file.common.response.EResponse; import com.esv.freight.file.common.response.EResponse;
import com.esv.freight.file.common.validator.groups.ValidatorInsert;
import com.esv.freight.file.module.upload.form.FileForm; import com.esv.freight.file.module.upload.form.FileForm;
import com.esv.freight.file.module.upload.service.FileMetaService; import com.esv.freight.file.module.upload.service.FileMetaService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -50,7 +51,7 @@ public class UploadController { ...@@ -50,7 +51,7 @@ public class UploadController {
* createTime 2020/04/14 15:09 * createTime 2020/04/14 15:09
**/ **/
@PostMapping("/single") @PostMapping("/single")
public EResponse uploadSingleFile(@RequestBody @Validated FileForm fileForm) throws EException { public EResponse uploadSingleFile(@RequestBody @Validated(ValidatorInsert.class) FileForm fileForm) throws EException {
// 校验文件类型及大小 // 校验文件类型及大小
checkFile(fileForm); checkFile(fileForm);
......
...@@ -13,5 +13,13 @@ import org.apache.ibatis.annotations.Mapper; ...@@ -13,5 +13,13 @@ import org.apache.ibatis.annotations.Mapper;
*/ */
@Mapper @Mapper
public interface FileMetaDao extends BaseMapper<FileMetaEntity> { public interface FileMetaDao extends BaseMapper<FileMetaEntity> {
/**
* description 逻辑删除记录
* param [fileMetaEntity]
* return int
* author Administrator
* createTime 2020/04/14 20:05
**/
int logicDelete(FileMetaEntity fileMetaEntity);
} }
package com.esv.freight.file.module.upload.form; package com.esv.freight.file.module.upload.form;
import com.esv.freight.file.common.validator.groups.ValidatorDelete;
import com.esv.freight.file.common.validator.groups.ValidatorInsert; import com.esv.freight.file.common.validator.groups.ValidatorInsert;
import lombok.Data; import lombok.Data;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;
...@@ -18,14 +19,18 @@ import javax.validation.constraints.NotBlank; ...@@ -18,14 +19,18 @@ import javax.validation.constraints.NotBlank;
@Data @Data
public class FileForm { public class FileForm {
@Length(max = 2, message = "参数文件类型长度不合法", groups = {ValidatorInsert.class}) @Length(max = 2, message = "参数fileType长度不合法", groups = {ValidatorInsert.class})
@NotBlank(message = "参数文件类型不能为空", groups = {ValidatorInsert.class}) @NotBlank(message = "参数fileType不能为空", groups = {ValidatorInsert.class})
private String fileType; private String fileType;
@NotBlank(message = "参数fileData不能为空", groups = {ValidatorInsert.class}) @NotBlank(message = "参数fileData不能为空", groups = {ValidatorInsert.class})
private String fileData; private String fileData;
@Length(max = 50, message = "参数文件类型长度不合法", groups = {ValidatorInsert.class}) @Length(max = 50, message = "参数fileName长度不合法", groups = {ValidatorInsert.class})
@NotBlank(message = "参数fileName不能为空", groups = {ValidatorInsert.class}) @NotBlank(message = "参数fileName不能为空", groups = {ValidatorInsert.class})
private String fileName; private String fileName;
@Length(max = 64, message = "参数id长度不合法", groups = {ValidatorDelete.class})
@NotBlank(message = "参数id不能为空", groups = {ValidatorDelete.class})
private String id;
} }
...@@ -35,5 +35,14 @@ public interface FileMetaService extends IService<FileMetaEntity> { ...@@ -35,5 +35,14 @@ public interface FileMetaService extends IService<FileMetaEntity> {
**/ **/
void directDownload(String id, HttpServletResponse response); void directDownload(String id, HttpServletResponse response);
/**
* description 文件删除
* param [fileForm]
* return void
* author Administrator
* createTime 2020/04/14 19:43
**/
void deleteFile(FileForm fileForm) throws EException;
} }
...@@ -2,6 +2,7 @@ package com.esv.freight.file.module.upload.service.impl; ...@@ -2,6 +2,7 @@ package com.esv.freight.file.module.upload.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.esv.freight.file.common.constants.DbDeletedEnum;
import com.esv.freight.file.common.exception.EException; import com.esv.freight.file.common.exception.EException;
import com.esv.freight.file.common.util.AESSecretUtils; import com.esv.freight.file.common.util.AESSecretUtils;
import com.esv.freight.file.module.upload.dao.FileMetaDao; import com.esv.freight.file.module.upload.dao.FileMetaDao;
...@@ -36,6 +37,7 @@ import java.io.IOException; ...@@ -36,6 +37,7 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.Base64; import java.util.Base64;
import java.util.Date;
@Service("fileMetaService") @Service("fileMetaService")
...@@ -187,6 +189,42 @@ public class FileMetaServiceImpl extends ServiceImpl<FileMetaDao, FileMetaEntity ...@@ -187,6 +189,42 @@ public class FileMetaServiceImpl extends ServiceImpl<FileMetaDao, FileMetaEntity
} }
} }
@Override
public void deleteFile(FileForm fileForm) throws EException {
// 校验文件是否存在
String fileId = fileForm.getId();
FileMetaEntity queryEntity = new FileMetaEntity();
queryEntity.setFileId(fileId);
QueryWrapper<FileMetaEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.setEntity(queryEntity);
FileMetaEntity fileMetaEntity = this.getOne(queryWrapper);
if (null == fileMetaEntity) {
throw new EException(1001, "文件不存在");
}
// 逻辑删除MySQL记录
FileMetaEntity updateEntity = new FileMetaEntity();
updateEntity.setDeleted(DbDeletedEnum.YES.getCode());
updateEntity.setDeleteTime(new Date());
updateEntity.setFileId(fileId);
// FileMetaEntity updateWrapperEntity = new FileMetaEntity();
// updateWrapperEntity.setDeleted(DbDeletedEnum.NO.getCode());
// QueryWrapper<FileMetaEntity> updateWrapper = new QueryWrapper<>(updateWrapperEntity);
// int flag = this.baseMapper.update(updateEntity, updateWrapper);
int flag = this.baseMapper.logicDelete(updateEntity);
if (0 == flag) {
throw new EException("文件删除失败");
} else {
// 不论MongoDB是否删除,都认为删除请求成功
try {
deleteMongoFile(fileId);
} catch (Exception e) {
log.error("删除文件数据时发生错误,文件id={}", fileId);
log.error(e.getMessage(), e);
}
}
}
/** /**
* description 删除MongoDB文件 * description 删除MongoDB文件
* param [id] * param [id]
......
...@@ -17,5 +17,12 @@ ...@@ -17,5 +17,12 @@
<result property="deleteTime" column="delete_time"/> <result property="deleteTime" column="delete_time"/>
</resultMap> </resultMap>
<update id="logicDelete" parameterType="com.esv.freight.file.module.upload.entity.FileMetaEntity">
update base_file_meta
set deleted = #{deleted},
delete_time = #{deleteTime}
where file_id = #{fileId}
and deleted = false
</update>
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment