• Mongodb创建api


    package com.chinaunicom.base.server.document.entity;
    
    import lombok.AllArgsConstructor;
    import lombok.Builder;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    import lombok.experimental.Accessors;
    import org.bson.types.ObjectId;
    import org.springframework.data.mongodb.core.index.Indexed;
    import org.springframework.data.mongodb.core.mapping.MongoId;
    
    import java.io.Serializable;
    import java.util.Date;
    
    @NoArgsConstructor
    @AllArgsConstructor
    @Accessors(chain = true)
    @Builder
    @Data
    @org.springframework.data.mongodb.core.mapping.Document("knowledge_base_document")
    public class Document implements Serializable {
    
        @MongoId
        private ObjectId objectId;
    
        @Indexed
        private String documentId;//业务id
    
        @Indexed
        private String kbaseId;//所属的知识库id
    
        private String data;
    
        private String author;
    
        @Indexed
        private String userId;
    
        @Indexed
        private String title;//文章标题
    
        private Date createTime;
    
        private Date updateTime;
    
        private String tags;
    
        /**
         * 点赞数量
         */
        private Integer likeCount;
    
        /**
         * 阅读数量
         */
        private Integer readCount;
    
        /**
         * 版本号,修改的时候用户回滚使用
         */
        private int versionNo;
    
    }
    @Repository
    public class DocumentRepoImpl implements IDocumentRepo {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(DocumentRepoImpl.class);
    
        @Autowired
        private MongoTemplate mongoTemplate;
    
        @Autowired
        private MongoPageHelper mongoPageHelper;
    
        @Override
        public String addDocument(Document addDocumentRequest) {
            String documentId = BussinessKeyGenerator.getBussinessKey();
            addDocumentRequest.setDocumentId(documentId);
            mongoTemplate.insert(addDocumentRequest);
            return documentId;
        }
    
        @Override
        public void modifyDocument(Document document) {
            Query query = new Query();
            query.addCriteria(Criteria.where(DocumentConstants.DOCUMENT_ID).is(document.getDocumentId()));
            Update update = new Update();
    
            // 文档数据不为空修改文档数据
            if (null != document.getData()) {
                update.set(DocumentConstants.DATA, document.getData());
            }
    
            // 标题不为空修改标题
            if (null != document.getTitle()) {
                update.set(DocumentConstants.ES_FIELD_TITLE, document.getTitle());
            }
    
            // 修改前的版本号
            update.set(DocumentConstants.VERSION_NO, document.getVersionNo());
    
            mongoTemplate.findAndModify(query, update, Document.class);
        }
    
        @Override
        public List<Document> queryDocumentByDocumentIds(List<String> documentIds) {
            Query query = new Query();
            query.addCriteria(Criteria.where(DocumentConstants.DOCUMENT_ID).in(documentIds));
            return mongoTemplate.find(query, Document.class);
        }
    
        @Override
        public void deleteDocumentByDocumentId(String documentId) {
            Query query = Query.query(Criteria.where(DocumentConstants.DOCUMENT_ID).is(documentId));
            // findAndRemove只会删除第一条
            mongoTemplate.findAndRemove(query, Document.class);
        }
    
        @Override
        public Document queryDocumentByDocumentId(String documentId) {
            Query query = new Query();
            query.addCriteria(Criteria.where(DocumentConstants.DOCUMENT_ID).is(documentId));
            return mongoTemplate.findOne(query, Document.class);
        }
    
        @Override
        public PageableResult<Document> queryDocumentByUserId(String userId, Integer currentPage, Integer pageSize) {
            Query query = new Query();
            query.addCriteria(Criteria.where(DocumentConstants.USER_ID).is(userId));
            Field findFields = query.fields();
            // 指定查询字段
            List<String> fields = new ArrayList<>();
            fields.add(DocumentConstants.DOCUMENT_ID);
            fields.add(DocumentConstants.TITLE);
            fields.add(DocumentConstants.CREATE_TIME);
            fields.add(DocumentConstants.UPDATE_TIME);
            fields.add(DocumentConstants.KBASE_ID);
            fields.forEach(findFields::include);
            // 根据更新时间降序排序
            query.with(Sort.by(Sort.Order.desc(DocumentConstants.UPDATE_TIME)));
            return mongoPageHelper.pageQuery(query, Document.class, pageSize, currentPage);
        }
    
        @Override
        public PageableResult<Document> queryDocumentByLibId(String libId, Integer currentPage, Integer pageSize) {
            Query query = new Query();
            query.addCriteria(Criteria.where(DocumentConstants.KBASE_ID).is(libId));
            Field findFields = query.fields();
            // 指定查询字段
            List<String> fields = new ArrayList<>();
            fields.add(DocumentConstants.DOCUMENT_ID);
            fields.add(DocumentConstants.TITLE);
            fields.add(DocumentConstants.CREATE_TIME);
            fields.add(DocumentConstants.UPDATE_TIME);
            fields.add(DocumentConstants.KBASE_ID);
            fields.add(DocumentConstants.AUTHOR);
            fields.forEach(findFields::include);
            // 根据更新时间降序排序
            query.with(Sort.by(Sort.Order.desc(DocumentConstants.UPDATE_TIME)));
            return mongoPageHelper.pageQuery(query, Document.class, pageSize, currentPage);
        }
    
        @Override
        public List<Document> queryLibXDocuments(String libId, int queryCount, List<String> orderList) {
            Query query = new Query();
            query.addCriteria(Criteria.where(DocumentConstants.KBASE_ID).is(libId));
            Field findFields = query.fields();
            // 指定查询字段
            List<String> fields = new ArrayList<>();
            fields.add(DocumentConstants.DOCUMENT_ID);
            fields.add(DocumentConstants.TITLE);
            fields.add(DocumentConstants.CREATE_TIME);
            fields.add(DocumentConstants.UPDATE_TIME);
            fields.add(DocumentConstants.KBASE_ID);
            fields.add(DocumentConstants.AUTHOR);
            fields.add(DocumentConstants.LIKE_COUNT);
            fields.add(DocumentConstants.READ_COUNT);
            fields.forEach(findFields::include);
            // 添加排序方式
            if (!CollectionUtils.isEmpty(orderList)) {
                for (String orderCol : orderList) {
                    query.with(Sort.by(Sort.Order.desc(orderCol)));
                }
            }
    
            // 如果查询数量不为-1则查询指定数量
            if (-1 != queryCount) {
                query.limit(queryCount);
            }
            return mongoTemplate.find(query, Document.class);
        }
    
        @Override
        public void updateDocLikeAndReadCount(int likeCount, int readCount, String docId) {
            Query query = new Query();
            query.addCriteria(Criteria.where(DocumentConstants.DOCUMENT_ID).is(docId));
            Update update = new Update();
    
            update.set(DocumentConstants.LIKE_COUNT, likeCount);
            update.set(DocumentConstants.READ_COUNT, readCount);
    
            mongoTemplate.findAndModify(query, update, Document.class);
        }
    }
  • 相关阅读:
    javascript 获取<td>标签内的值。
    关于网页中鼠标动作 onfocus onblur focus()
    web大前端面试——JavaScript
    vue吸顶
    vue单页面应用刷新网页后vuex的state数据丢失的解决方案
    vue 无缝滚动插件vue-seamless-scroll的安装与使用
    杂记
    webpack打包vue项目后,配置可以修改的配置文件
    不知道的CSS
    图片惰性加载(滚动到可视区时 图片才加载)
  • 原文地址:https://www.cnblogs.com/juniorMa/p/16224742.html
Copyright © 2020-2023  润新知