package com.qxgmat.service.inline; import com.github.pagehelper.Page; import com.nuliji.tools.AbstractService; import com.nuliji.tools.exception.ParameterException; import com.nuliji.tools.exception.SystemException; import com.nuliji.tools.mybatis.Example; import com.qxgmat.data.constants.enums.TextbookSubject; import com.qxgmat.data.constants.enums.TopicQuality; import com.qxgmat.data.constants.enums.status.DirectionStatus; import com.qxgmat.data.dao.TextbookTopicMapper; import com.qxgmat.data.dao.entity.TextbookTopic; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; @Service public class TextbookTopicService extends AbstractService { private static final Logger logger = LoggerFactory.getLogger(TextbookTopicService.class); @Resource private TextbookTopicMapper textbookTopicMapper; public Page listAdmin(int page, int pageSize, String textbookSubject, Number libraryId, String keyword, TopicQuality quality, String order, DirectionStatus direction){ Example example = new Example(TextbookTopic.class); if (textbookSubject!=null){ example.and( example.createCriteria() .andEqualTo("textbookSubject", textbookSubject) ); } if (libraryId!=null){ example.and( example.createCriteria() .andEqualTo("libraryId", libraryId) ); } if (keyword!=null){ example.and( example.createCriteria() .andLike("keyword", "%"+keyword+"%") ); } if (quality!=null){ example.and( example.createCriteria() .andEqualTo("quality", quality.key) ); } if(order == null || order.isEmpty()) order = "id"; switch(direction){ case ASC: example.orderBy(order).asc(); break; case DESC: default: example.orderBy(order).desc(); } return select(textbookTopicMapper, example, page, pageSize); } /** * 获取换库表中的最后一题 * @param libraryId * @return */ public TextbookTopic lastByLibrary(Integer libraryId, String questionSubject){ Example example = new Example(TextbookTopic.class); example.and( example.createCriteria() .andEqualTo("libraryId", libraryId) .andEqualTo("textbookSubject", questionSubject) ); example.orderBy("no").desc(); return one(textbookTopicMapper, example); } public Page list(int page, int size, Integer libraryId, TextbookSubject subject, String keyword, String quality, Boolean isOld, String order, DirectionStatus direction){ Example example = new Example(TextbookTopic.class); example.and( example.createCriteria() .andEqualTo("libraryId", libraryId) .andEqualTo("textbookSubject", subject.key) ); if (keyword != null){ example.and( example.createCriteria() .andEqualTo("keyword", keyword) ); } if (quality != null){ example.and( example.createCriteria() .andEqualTo("quality", quality) ); } if (isOld != null){ example.and( example.createCriteria() .andEqualTo("isOld", isOld ? 1 : 0) ); } if(order==null||order.isEmpty()) order = "id"; if (direction != null){ switch(direction){ case ASC: example.orderBy(order).asc(); break; case DESC: default: example.orderBy(order).desc(); } } else { example.orderBy(order).desc(); } return select(textbookTopicMapper, example, page, size); } public TextbookTopic getByNo(Integer libraryId, String subject, Integer no){ Example example = new Example(TextbookTopic.class); example.and( example.createCriteria() .andEqualTo("libraryId", libraryId) .andEqualTo("textbookSubject", subject) .andEqualTo("no", no) ); return one(textbookTopicMapper, example); } public TextbookTopic add(TextbookTopic ad){ int result = insert(textbookTopicMapper, ad); ad = one(textbookTopicMapper, ad.getId()); if(ad == null){ throw new SystemException("记录添加失败"); } return ad; } public TextbookTopic edit(TextbookTopic ad){ TextbookTopic in = one(textbookTopicMapper, ad.getId()); if(in == null){ throw new ParameterException("记录不存在"); } int result = update(textbookTopicMapper, ad); return ad; } public boolean delete(Number id){ TextbookTopic in = one(textbookTopicMapper, id); if(in == null){ throw new ParameterException("记录不存在"); } int result = delete(textbookTopicMapper, id); return result > 0; } public TextbookTopic get(Number id){ TextbookTopic in = one(textbookTopicMapper, id); if(in == null){ throw new ParameterException("记录不存在"); } return in; } public Page select(int page, int pageSize){ return select(textbookTopicMapper, page, pageSize); } public Page select(Integer[] ids){ return page(()->select(textbookTopicMapper, ids), 1, ids.length); } public List select(Collection ids){ return select(textbookTopicMapper, ids); } }