public class DocumentService extends ServiceImpl<DocumentMapper, Document> { @Resource private DocumentMapper documentMapper; @Resource private CateMapper cateMapper; @Resource private HistoryMapper historyMapper; public List<Document> listDocument(PageInfo<?> pageInfo, Document document) { PageHelper.startPage(pageInfo.getCurrent(), pageInfo.getPageSize()); List<Document> documentList = documentMapper.selectList(Wrappers.<Document>lambdaQuery() .like(StringUtils.isNotBlank(document.getTitle()), Document::getTitle, document.getTitle()) .like(StringUtils.isNotBlank(document.getSummary()), Document::getSummary, document.getSummary()) .eq(document.getCateId() != null, Document::getCateId, document.getCateId()) .eq(document.getDeptId() != null, Document::getDeptId, document.getDeptId()) .eq(document.getActive() != null, Document::getActive, document.getActive()) .eq(document.getRecommend() != null, Document::getRecommend, document.getRecommend()) .eq(document.getCarousel() != null, Document::getCarousel, document.getCarousel()) .orderByDesc(Document::getDateTime) ); if (!documentList.isEmpty()) { List<Long> documentIdList = documentList.stream().map(Document::getCateId).collect(Collectors.toList()); Map<Long, Cate> cateMap = cateMapper.selectBatchIds(documentIdList).stream().collect(Collectors.toMap(Cate::getId, e -> e, (e1, e2) -> e2)); for (Document documentItem : documentList) { documentItem.setCate(cateMap.get(documentItem.getCateId())); } } return documentList; } public Document getDocumentById(Long id, HttpServletRequest request) { Document document = documentMapper.selectById(id); if (document == null) { return null; } document.setHits(document.getHits() + 1); documentMapper.updateById(document); document.setCate(cateMapper.selectById(document.getCateId())); History history = new History(); history.setDocumentId(id); history.setDateTime(LocalDateTime.now()); history.setUserId(Long.valueOf((String) StpUtil.getLoginId())); history.setIp(request.getRemoteAddr()); historyMapper.insert(history); return document; } public List<Document> listRecommend(Long id) { //Todo 推荐 return new ArrayList<>(); } public Boolean copyDocument(Long id) { Document document = documentMapper.selectById(id); if (document == null) { return false; } document.setDateTime(LocalDateTime.now()); document.setId(null); document.setDeptId(StpUtil.getSession().getModel(SaSession.USER, User.class).getBelongDeptId()); document.setHits(0L); document.setActive(false); document.setRecommend(false); int result = documentMapper.insert(document); return result == 1; } }
时间: 2024-04-11 11:32:47 浏览: 108
这是一个Java类的示例代码,名为`DocumentService`,它是一个服务类,提供了一些操作文档的方法。该类使用了Spring框架的一些注解,如`@Resource`和`@Autowired`来进行依赖注入。
在该类中,有一些方法可以执行不同的操作:
- `listDocument`方法用于获取文档列表,根据传入的条件进行筛选和排序。
- `getDocumentById`方法用于根据文档ID获取具体的文档信息,并更新文档的点击次数和记录历史信息。
- `listRecommend`方法用于获取推荐的文档列表(目前该方法返回一个空列表,还未实现具体逻辑)。
- `copyDocument`方法用于复制指定ID的文档,并创建一个新的副本。
需要注意的是,这段代码只是一个示例,并不能直接运行。你可以根据自己的业务需求和数据库结构来修改和完善这些方法。同时,还需要确保相关的Mapper类和实体类已经正确配置和引入。
相关问题
@Service public class CateService extends ServiceImpl<CateMapper, Cate> { @Resource private CateMapper cateMapper; public List<Cate> listCate(Cate cate) { return cateMapper.selectList(Wrappers.<Cate>lambdaQuery() .like(StringUtils.isNotBlank(cate.getName()), Cate::getName, cate.getName()) .eq(cate.getActive() != null, Cate::getActive, cate.getActive()) .orderByAsc(Cate::getSort) ); } }
这段代码是一个CateService类,用于封装与Cate(分类)相关的业务逻辑。具体功能如下:
- `listCate`方法:接收一个Cate对象作为参数,使用`cateMapper.selectList`方法进行查询操作。在查询时使用了`Wrappers.<Cate>lambdaQuery()`创建一个LambdaQueryWrapper对象,用于构建查询条件。通过链式调用`.like`、`.eq`和`.orderByAsc`等方法,根据Cate对象的属性值构建查询条件。其中:
- `.like(StringUtils.isNotBlank(cate.getName()), Cate::getName, cate.getName())`表示如果Cate对象的name属性不为空,则将name属性作为模糊查询条件。
- `.eq(cate.getActive() != null, Cate::getActive, cate.getActive())`表示如果Cate对象的active属性不为空,则将active属性作为精确查询条件。
- `.orderByAsc(Cate::getSort)`表示按照Cate对象的sort属性进行升序排序。
- `@Resource`注解用于注入CateMapper对象,以便在CateService中调用CateMapper的方法。
该类继承了MyBatis Plus的`ServiceImpl`类,并指定了泛型参数为CateMapper和Cate,以便继承基础的CRUD(增删改查)方法。同时,通过自定义的`listCate`方法,实现了根据条件查询分类列表的功能。
@Service public class CateService extends ServiceImpl<CateMapper, Cate> { @Resource private CateMapper cateMapper; public List<Cate> listCate(Cate cate) { return cateMapper.selectList(Wrappers.<Cate>lambdaQuery() .like(StringUtils.isNotBlank(cate.getName()), Cate::getName, cate.getName()) .eq(cate.getActive() != null, Cate::getActive, cate.getActive()) .orderByAsc(Cate::getSort) ); } }
这是一个名为 CateService 的服务类,在 Spring 框架中使用 @Service 注解进行标识。它继承自 ServiceImpl<CateMapper, Cate>,表示它是一个通用的 CRUD 服务类,针对 Cate 实体类的数据库操作。
在该类中,使用 @Resource 注解对 CateMapper 进行注入,以便在方法中使用该对象进行数据库操作。
listCate 方法用于查询符合条件的 Cate 对象列表。它通过 cateMapper 对象调用 selectList 方法,并利用 MyBatis-Plus 提供的 Wrappers 工具类构建查询条件。具体的查询条件包括:
- 使用 lambdaQuery 方法创建查询对象
- 使用 like 方法进行模糊查询,如果 cate.getName() 不为空,则根据 Cate 实体类的 name 字段进行模糊匹配
- 使用 eq 方法进行相等查询,如果 cate.getActive() 不为 null,则根据 Cate 实体类的 active 字段进行相等匹配
- 使用 orderByAsc 方法按照 Cate 实体类的 sort 字段进行升序排序
最后,返回符合条件的 Cate 对象列表。
需要注意的是,CateService 类通过继承 ServiceImpl 类获得了一些通用的数据库操作方法,例如 save、update、remove 等。同时,通过 @Service 注解,Spring 会将该类作为一个服务类进行管理,可以通过依赖注入的方式在其他地方使用该服务类的实例。
阅读全文