AuthorServiceImpl.java 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package com.nosum.deliver.author.service.impl;
  2. import cn.hutool.core.date.DateUtil;
  3. import cn.hutool.core.util.StrUtil;
  4. import com.nosum.common.base.domain.PageInfo;
  5. import com.nosum.deliver.author.domain.po.Author;
  6. import com.nosum.deliver.author.service.AuthorService;
  7. import org.apache.commons.lang3.LocaleUtils;
  8. import org.bson.types.ObjectId;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.data.mongodb.core.MongoTemplate;
  11. import org.springframework.data.mongodb.core.query.Criteria;
  12. import org.springframework.data.mongodb.core.query.Query;
  13. import org.springframework.stereotype.Service;
  14. import java.time.LocalDate;
  15. import java.time.LocalDateTime;
  16. import java.time.LocalTime;
  17. import java.util.Objects;
  18. /**
  19. * 作者信息服务层实现类.
  20. *
  21. * @author Young
  22. */
  23. @Service
  24. public class AuthorServiceImpl implements AuthorService {
  25. @Autowired
  26. private MongoTemplate mongoTemplate;
  27. @Override
  28. public void save(Author author) {
  29. Query query = Query.query(Criteria.where("finderUin").is(author.getFinderUin()));
  30. Author oldAuthor = mongoTemplate.findOne(query, Author.class);
  31. if (Objects.nonNull(oldAuthor)) {
  32. author.setId(oldAuthor.getId());
  33. } else {
  34. author.setId(ObjectId.get());
  35. author.setCreateTime(LocalDateTime.now());
  36. }
  37. mongoTemplate.save(author);
  38. }
  39. @Override
  40. public PageInfo<Author> getPage(PageInfo<Author> pageInfo, Author author) {
  41. Criteria criteria = new Criteria();
  42. if (StrUtil.isNotBlank(author.getFinderUin())) {
  43. criteria.and("finderUin").is(author.getFinderUin());
  44. }
  45. if (StrUtil.isNotBlank(author.getFansCountStr())) {
  46. String[] split = author.getFansCountStr().split("-");
  47. if (split.length > 1) {
  48. criteria.and("fansCount").gte(Long.valueOf(split[0])).lte(Long.valueOf(split[1]));
  49. } else {
  50. criteria.and("fansCount").gte(Long.valueOf(split[0]));
  51. }
  52. }
  53. Query query = Query.query(criteria);
  54. query.skip((pageInfo.getPage() - 1) * pageInfo.getSize());
  55. query.limit((int) pageInfo.getSize());
  56. long total = mongoTemplate.count(query, Author.class);
  57. if (total == 0) {
  58. return pageInfo;
  59. }
  60. return pageInfo.setRecord(mongoTemplate.find(query, Author.class)).setTotal(total);
  61. }
  62. @Override
  63. public void remove(ObjectId id) {
  64. mongoTemplate.remove(Query.query(Criteria.where("id").is(id)), Author.class);
  65. }
  66. @Override
  67. public Long count() {
  68. return mongoTemplate.count(new Query(), Author.class);
  69. }
  70. @Override
  71. public Long countCreatedByToDay() {
  72. LocalDateTime startTime = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
  73. LocalDateTime endTime = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
  74. return mongoTemplate.count(Query.query(Criteria.where("createTime").gte(startTime).lte(endTime)), Author.class);
  75. }
  76. @Override
  77. public Author getById(ObjectId id) {
  78. return mongoTemplate.findById(id, Author.class);
  79. }
  80. }