【7.0.3】整理mongodb模块代码

pull/10/head
fengshuonan 2021-04-13 21:57:41 +08:00
parent e2f1b04ce3
commit d34881696a
12 changed files with 49 additions and 51 deletions

View File

@ -26,6 +26,7 @@ package cn.stylefeng.roses.kernel.mongodb.api;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.util.Optional; import java.util.Optional;
/** /**
@ -34,7 +35,7 @@ import java.util.Optional;
* @author huziyang * @author huziyang
* @date 2021/03/30 11:06 * @date 2021/03/30 11:06
*/ */
public interface MongoFileApi<T,ID> { public interface MongoFileApi<T, ID> {
/** /**
* *
@ -46,7 +47,6 @@ public interface MongoFileApi<T,ID> {
*/ */
T saveFile(MultipartFile file); T saveFile(MultipartFile file);
/** /**
* id * id
* *
@ -66,7 +66,6 @@ public interface MongoFileApi<T,ID> {
*/ */
Optional<T> getFileById(ID id); Optional<T> getFileById(ID id);
/** /**
* *
* *
@ -77,5 +76,4 @@ public interface MongoFileApi<T,ID> {
*/ */
PageResult<T> getFilesByPage(T fileDocument); PageResult<T> getFilesByPage(T fileDocument);
} }

View File

@ -33,7 +33,7 @@ import java.util.Optional;
* @author huziyang * @author huziyang
* @date 2021/03/20 16:24 * @date 2021/03/20 16:24
*/ */
public interface MongodbApi<T,ID> { public interface MongodbApi<T, ID> {
/** /**
* *

View File

@ -32,7 +32,6 @@ package cn.stylefeng.roses.kernel.mongodb.api.constants;
*/ */
public interface MongodbConstants { public interface MongodbConstants {
/** /**
* mongodb * mongodb
*/ */
@ -42,4 +41,5 @@ public interface MongodbConstants {
* *
*/ */
String MONGODB_EXCEPTION_STEP_CODE = "70"; String MONGODB_EXCEPTION_STEP_CODE = "70";
} }

View File

@ -29,7 +29,7 @@ import cn.stylefeng.roses.kernel.rule.exception.AbstractExceptionEnum;
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
/** /**
* * Mongodb
* *
* @author fengshuonan * @author fengshuonan
* @date 2021/13/17 23:59 * @date 2021/13/17 23:59

View File

@ -38,7 +38,6 @@ import org.springframework.stereotype.Controller;
@ApiResource(name = "MongoDB文件管理界面渲染控制器") @ApiResource(name = "MongoDB文件管理界面渲染控制器")
public class ModelViewController { public class ModelViewController {
/** /**
* *
* *

View File

@ -38,6 +38,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import java.net.URLEncoder;
@ -54,7 +55,7 @@ import java.util.Optional;
public class MongoFileController { public class MongoFileController {
@Resource @Resource
private MongoFileApi<MongoFileEntity,String> mongoFileApi; private MongoFileApi<MongoFileEntity, String> mongoFileApi;
/** /**
* *
@ -63,7 +64,7 @@ public class MongoFileController {
* @date 2021/03/31 17:28 * @date 2021/03/31 17:28
*/ */
@PostResource(name = "Mongodb文件新增", path = "/view/mongodb/file/add") @PostResource(name = "Mongodb文件新增", path = "/view/mongodb/file/add")
public ResponseData mongodbFileAdd(@RequestPart("file") MultipartFile file) { public ResponseData mongodbFileAdd(@RequestPart("file") MultipartFile file) {
return new SuccessResponseData(mongoFileApi.saveFile(file)); return new SuccessResponseData(mongoFileApi.saveFile(file));
} }
@ -99,12 +100,12 @@ public class MongoFileController {
@GetResource(name = "Mongodb文件下载", path = "/view/mongodb/file/down") @GetResource(name = "Mongodb文件下载", path = "/view/mongodb/file/down")
public ResponseEntity mongodbFileDown(@RequestParam String id) throws UnsupportedEncodingException { public ResponseEntity mongodbFileDown(@RequestParam String id) throws UnsupportedEncodingException {
Optional<MongoFileEntity> file = mongoFileApi.getFileById(id); Optional<MongoFileEntity> file = mongoFileApi.getFileById(id);
if(file.isPresent()){ if (file.isPresent()) {
return ResponseEntity.ok() return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; fileName=" + URLEncoder.encode(file.get().getName() , "utf-8")) .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; fileName=" + URLEncoder.encode(file.get().getName(), "utf-8"))
.header(HttpHeaders.CONTENT_TYPE, "application/octet-stream") .header(HttpHeaders.CONTENT_TYPE, "application/octet-stream")
.body(file.get().getContent()); .body(file.get().getContent());
}else { } else {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body("not found"); return ResponseEntity.status(HttpStatus.NOT_FOUND).body("not found");
} }
} }

View File

@ -25,10 +25,7 @@
package cn.stylefeng.roses.kernel.mongodb.file.entity; package cn.stylefeng.roses.kernel.mongodb.file.entity;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import lombok.AllArgsConstructor; import lombok.*;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id; import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
@ -40,12 +37,14 @@ import java.util.Date;
* @author huziyang * @author huziyang
* @date 2021/03/26 17:23 * @date 2021/03/26 17:23
*/ */
@EqualsAndHashCode(callSuper = true)
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Builder @Builder
@Document("mongo_file") @Document("mongo_file")
public class MongoFileEntity extends BaseRequest { public class MongoFileEntity extends BaseRequest {
@Id @Id
private String id; private String id;
private String name; private String name;
@ -59,4 +58,5 @@ public class MongoFileEntity extends BaseRequest {
* *
*/ */
private byte[] content; private byte[] content;
} }

View File

@ -27,6 +27,7 @@ package cn.stylefeng.roses.kernel.mongodb.file.service;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.mongodb.file.entity.MongoFileEntity; import cn.stylefeng.roses.kernel.mongodb.file.entity.MongoFileEntity;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.util.Optional; import java.util.Optional;
/** /**
@ -47,7 +48,6 @@ public interface MongoFileService {
*/ */
MongoFileEntity saveFile(MultipartFile file); MongoFileEntity saveFile(MultipartFile file);
/** /**
* id * id
* *
@ -67,7 +67,6 @@ public interface MongoFileService {
*/ */
Optional<MongoFileEntity> getFileById(String id); Optional<MongoFileEntity> getFileById(String id);
/** /**
* *
* *
@ -78,5 +77,4 @@ public interface MongoFileService {
*/ */
PageResult<MongoFileEntity> getFilesByPage(MongoFileEntity fileDocument); PageResult<MongoFileEntity> getFilesByPage(MongoFileEntity fileDocument);
} }

View File

@ -39,7 +39,6 @@ import com.mongodb.client.gridfs.GridFSDownloadStream;
import com.mongodb.client.gridfs.model.GridFSFile; import com.mongodb.client.gridfs.model.GridFSFile;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.bson.types.ObjectId; import org.bson.types.ObjectId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.*; import org.springframework.data.domain.*;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
@ -47,6 +46,8 @@ import org.springframework.data.mongodb.gridfs.GridFsResource;
import org.springframework.data.mongodb.gridfs.GridFsTemplate; import org.springframework.data.mongodb.gridfs.GridFsTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException; import java.io.IOException;
import java.util.Date; import java.util.Date;
import java.util.Optional; import java.util.Optional;
@ -59,14 +60,16 @@ import java.util.Optional;
*/ */
@Slf4j @Slf4j
@Service @Service
public class MongoFileServiceImpl implements MongoFileService, MongoFileApi<MongoFileEntity,String> { public class MongoFileServiceImpl implements MongoFileService, MongoFileApi<MongoFileEntity, String> {
@Autowired
private MongoFileMapper mongoFileMapper;
@Autowired
private GridFsTemplate gridFsTemplate;
@Autowired
private GridFSBucket gridFSBucket;
@Resource
private MongoFileMapper mongoFileMapper;
@Resource
private GridFsTemplate gridFsTemplate;
@Resource
private GridFSBucket gridFSBucket;
@Override @Override
public MongoFileEntity saveFile(MultipartFile file) { public MongoFileEntity saveFile(MultipartFile file) {
@ -77,7 +80,7 @@ public class MongoFileServiceImpl implements MongoFileService, MongoFileApi<Mong
// 填充登录用户的userId // 填充登录用户的userId
LoginUser loginUser = LoginContext.me().getLoginUser(); LoginUser loginUser = LoginContext.me().getLoginUser();
fileDocument.setUploadUserId(loginUser.getUserId()); fileDocument.setUploadUserId(loginUser.getUserId());
}catch (Exception e){ } catch (Exception e) {
// 获取不到用户登录信息,就不填充 // 获取不到用户登录信息,就不填充
} }
fileDocument.setSuffix(file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."))); fileDocument.setSuffix(file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")));
@ -85,7 +88,7 @@ public class MongoFileServiceImpl implements MongoFileService, MongoFileApi<Mong
ObjectId store = gridFsTemplate.store(file.getInputStream(), IdUtil.simpleUUID(), file.getContentType()); ObjectId store = gridFsTemplate.store(file.getInputStream(), IdUtil.simpleUUID(), file.getContentType());
fileDocument.setGridfsId(String.valueOf(store)); fileDocument.setGridfsId(String.valueOf(store));
return mongoFileMapper.save(fileDocument); return mongoFileMapper.save(fileDocument);
}catch (IOException ex){ } catch (IOException ex) {
log.error(ex.getMessage()); log.error(ex.getMessage());
} }
return fileDocument; return fileDocument;
@ -94,7 +97,7 @@ public class MongoFileServiceImpl implements MongoFileService, MongoFileApi<Mong
@Override @Override
public void removeFile(String id) { public void removeFile(String id) {
Optional<MongoFileEntity> fileDocumentOptional = mongoFileMapper.findById(id); Optional<MongoFileEntity> fileDocumentOptional = mongoFileMapper.findById(id);
if(fileDocumentOptional.isPresent()){ if (fileDocumentOptional.isPresent()) {
mongoFileMapper.deleteById(id); mongoFileMapper.deleteById(id);
gridFsTemplate.delete(new Query().addCriteria(Criteria.where("_id").is(fileDocumentOptional.get().getGridfsId()))); gridFsTemplate.delete(new Query().addCriteria(Criteria.where("_id").is(fileDocumentOptional.get().getGridfsId())));
} }
@ -103,20 +106,20 @@ public class MongoFileServiceImpl implements MongoFileService, MongoFileApi<Mong
@Override @Override
public Optional<MongoFileEntity> getFileById(String id) { public Optional<MongoFileEntity> getFileById(String id) {
Optional<MongoFileEntity> fileDocumentOptional = mongoFileMapper.findById(id); Optional<MongoFileEntity> fileDocumentOptional = mongoFileMapper.findById(id);
if(fileDocumentOptional.isPresent()){ if (fileDocumentOptional.isPresent()) {
MongoFileEntity fileDocument = fileDocumentOptional.get(); MongoFileEntity fileDocument = fileDocumentOptional.get();
Query gridQuery = new Query().addCriteria(Criteria.where("_id").is(fileDocument.getGridfsId())); Query gridQuery = new Query().addCriteria(Criteria.where("_id").is(fileDocument.getGridfsId()));
GridFSFile fsFile = gridFsTemplate.findOne(gridQuery); GridFSFile fsFile = gridFsTemplate.findOne(gridQuery);
GridFSDownloadStream in = gridFSBucket.openDownloadStream(fsFile.getObjectId()); GridFSDownloadStream in = gridFSBucket.openDownloadStream(fsFile.getObjectId());
try { try {
if(in.getGridFSFile().getLength() > 0){ if (in.getGridFSFile().getLength() > 0) {
GridFsResource resource = new GridFsResource(fsFile, in); GridFsResource resource = new GridFsResource(fsFile, in);
fileDocument.setContent(IoUtil.readBytes(resource.getInputStream())); fileDocument.setContent(IoUtil.readBytes(resource.getInputStream()));
return Optional.of(fileDocument); return Optional.of(fileDocument);
}else { } else {
return Optional.empty(); return Optional.empty();
} }
}catch (IOException e){ } catch (IOException e) {
log.error(e.getMessage()); log.error(e.getMessage());
} }
} }
@ -128,10 +131,10 @@ public class MongoFileServiceImpl implements MongoFileService, MongoFileApi<Mong
Integer pageIndex = fileDocument.getPageNo(); Integer pageIndex = fileDocument.getPageNo();
Integer pageSize = fileDocument.getPageSize(); Integer pageSize = fileDocument.getPageSize();
Sort sort = Sort.by(Sort.Direction.DESC, "uploadDate"); Sort sort = Sort.by(Sort.Direction.DESC, "uploadDate");
PageRequest pageRequest = PageRequest.of(pageIndex-1, pageSize, sort); PageRequest pageRequest = PageRequest.of(pageIndex - 1, pageSize, sort);
Example<MongoFileEntity> example = Example.of(fileDocument, ExampleMatcher.matching() Example<MongoFileEntity> example = Example.of(fileDocument, ExampleMatcher.matching()
.withIgnoreCase(true) .withIgnoreCase(true)
.withIgnorePaths("_class","pageSize","pageNo","content") .withIgnorePaths("_class", "pageSize", "pageNo", "content")
); );
Page<MongoFileEntity> all = mongoFileMapper.findAll(example, pageRequest); Page<MongoFileEntity> all = mongoFileMapper.findAll(example, pageRequest);
return PageResultFactory.createPageResult(all.getContent(), mongoFileMapper.count(example), pageSize, pageIndex); return PageResultFactory.createPageResult(all.getContent(), mongoFileMapper.count(example), pageSize, pageIndex);

View File

@ -29,6 +29,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id; import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -47,7 +48,6 @@ public class GunsMapEntity {
@Id @Id
private String _id; private String _id;
private Map<String,Object> data = new HashMap<>(); private Map<String, Object> data = new HashMap<>();
} }

View File

@ -29,6 +29,7 @@ import cn.stylefeng.roses.kernel.mongodb.entity.GunsMapEntity;
import cn.stylefeng.roses.kernel.mongodb.mapper.GunsMapRepository; import cn.stylefeng.roses.kernel.mongodb.mapper.GunsMapRepository;
import cn.stylefeng.roses.kernel.mongodb.service.GunsMapService; import cn.stylefeng.roses.kernel.mongodb.service.GunsMapService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@ -40,35 +41,33 @@ import java.util.Optional;
* @date 2021/03/20 16:24 * @date 2021/03/20 16:24
*/ */
@Service @Service
public class GunsMapServiceImpl implements GunsMapService, MongodbApi<GunsMapEntity,String> { public class GunsMapServiceImpl implements GunsMapService, MongodbApi<GunsMapEntity, String> {
@Resource @Resource
private GunsMapRepository gunsMapRepository; private GunsMapRepository gunsMapRepository;
@Override @Override
public GunsMapEntity insert(GunsMapEntity gunsMapEntity){ public GunsMapEntity insert(GunsMapEntity gunsMapEntity) {
return gunsMapRepository.insert(gunsMapEntity); return gunsMapRepository.insert(gunsMapEntity);
} }
@Override @Override
public GunsMapEntity update(GunsMapEntity gunsMapEntity){ public GunsMapEntity update(GunsMapEntity gunsMapEntity) {
return gunsMapRepository.save(gunsMapEntity); return gunsMapRepository.save(gunsMapEntity);
} }
@Override @Override
public void deleteById(String id){ public void deleteById(String id) {
gunsMapRepository.deleteById(id); gunsMapRepository.deleteById(id);
} }
@Override @Override
public Optional<GunsMapEntity> findById(String id){ public Optional<GunsMapEntity> findById(String id) {
return gunsMapRepository.findById(id); return gunsMapRepository.findById(id);
} }
@Override @Override
public List<GunsMapEntity> findAll(){ public List<GunsMapEntity> findAll() {
return gunsMapRepository.findAll(); return gunsMapRepository.findAll();
} }

View File

@ -26,6 +26,8 @@ package cn.stylefeng.roses.kernel.mongodb.starter;
import cn.stylefeng.roses.kernel.mongodb.api.MongoFileApi; import cn.stylefeng.roses.kernel.mongodb.api.MongoFileApi;
import cn.stylefeng.roses.kernel.mongodb.api.MongodbApi; import cn.stylefeng.roses.kernel.mongodb.api.MongodbApi;
import cn.stylefeng.roses.kernel.mongodb.entity.GunsMapEntity;
import cn.stylefeng.roses.kernel.mongodb.file.entity.MongoFileEntity;
import cn.stylefeng.roses.kernel.mongodb.file.service.impl.MongoFileServiceImpl; import cn.stylefeng.roses.kernel.mongodb.file.service.impl.MongoFileServiceImpl;
import cn.stylefeng.roses.kernel.mongodb.service.impl.GunsMapServiceImpl; import cn.stylefeng.roses.kernel.mongodb.service.impl.GunsMapServiceImpl;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
@ -40,7 +42,6 @@ import org.springframework.context.annotation.Configuration;
@Configuration @Configuration
public class GunsMongodbAutoConfiguration { public class GunsMongodbAutoConfiguration {
/** /**
* Mongodb * Mongodb
* *
@ -48,7 +49,7 @@ public class GunsMongodbAutoConfiguration {
* @date 2021/03/20 16:24 * @date 2021/03/20 16:24
*/ */
@Bean @Bean
public MongodbApi mongodbApi() { public MongodbApi<GunsMapEntity, String> mongodbApi() {
return new GunsMapServiceImpl(); return new GunsMapServiceImpl();
} }
@ -59,10 +60,9 @@ public class GunsMongodbAutoConfiguration {
* @date 2021/03/20 16:24 * @date 2021/03/20 16:24
*/ */
@Bean @Bean
public MongoFileApi mongoFileApi() { public MongoFileApi<MongoFileEntity, String> mongoFileApi() {
return new MongoFileServiceImpl(); return new MongoFileServiceImpl();
} }
} }