1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- package com.nosum.deliver.author.service.impl;
- import cn.hutool.core.date.DateUtil;
- import cn.hutool.core.util.StrUtil;
- import com.nosum.common.base.domain.PageInfo;
- import com.nosum.deliver.author.domain.po.Author;
- import com.nosum.deliver.author.service.AuthorService;
- import org.apache.commons.lang3.LocaleUtils;
- import org.bson.types.ObjectId;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.data.mongodb.core.MongoTemplate;
- import org.springframework.data.mongodb.core.query.Criteria;
- import org.springframework.data.mongodb.core.query.Query;
- import org.springframework.stereotype.Service;
- import java.time.LocalDate;
- import java.time.LocalDateTime;
- import java.time.LocalTime;
- import java.util.Objects;
- /**
- * 作者信息服务层实现类.
- *
- * @author Young
- */
- @Service
- public class AuthorServiceImpl implements AuthorService {
- @Autowired
- private MongoTemplate mongoTemplate;
- @Override
- public void save(Author author) {
- Query query = Query.query(Criteria.where("finderUin").is(author.getFinderUin()));
- Author oldAuthor = mongoTemplate.findOne(query, Author.class);
- if (Objects.nonNull(oldAuthor)) {
- author.setId(oldAuthor.getId());
- } else {
- author.setId(ObjectId.get());
- author.setCreateTime(LocalDateTime.now());
- }
- mongoTemplate.save(author);
- }
- @Override
- public PageInfo<Author> getPage(PageInfo<Author> pageInfo, Author author) {
- Criteria criteria = new Criteria();
- if (StrUtil.isNotBlank(author.getFinderUin())) {
- criteria.and("finderUin").is(author.getFinderUin());
- }
- if (StrUtil.isNotBlank(author.getFansCountStr())) {
- String[] split = author.getFansCountStr().split("-");
- if (split.length > 1) {
- criteria.and("fansCount").gte(Long.valueOf(split[0])).lte(Long.valueOf(split[1]));
- } else {
- criteria.and("fansCount").gte(Long.valueOf(split[0]));
- }
- }
- Query query = Query.query(criteria);
- query.skip((pageInfo.getPage() - 1) * pageInfo.getSize());
- query.limit((int) pageInfo.getSize());
- long total = mongoTemplate.count(query, Author.class);
- if (total == 0) {
- return pageInfo;
- }
- return pageInfo.setRecord(mongoTemplate.find(query, Author.class)).setTotal(total);
- }
- @Override
- public void remove(ObjectId id) {
- mongoTemplate.remove(Query.query(Criteria.where("id").is(id)), Author.class);
- }
- @Override
- public Long count() {
- return mongoTemplate.count(new Query(), Author.class);
- }
- @Override
- public Long countCreatedByToDay() {
- LocalDateTime startTime = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
- LocalDateTime endTime = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
- return mongoTemplate.count(Query.query(Criteria.where("createTime").gte(startTime).lte(endTime)), Author.class);
- }
- @Override
- public Author getById(ObjectId id) {
- return mongoTemplate.findById(id, Author.class);
- }
- }
|