123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- package com.qxgmat.service;
- import com.github.pagehelper.Page;
- import com.nuliji.tools.AbstractService;
- import com.nuliji.tools.Transform;
- import com.nuliji.tools.exception.ParameterException;
- import com.nuliji.tools.exception.SystemException;
- import com.nuliji.tools.mybatis.Example;
- import com.qxgmat.data.dao.UserCollectQuestionMapper;
- import com.qxgmat.data.dao.entity.UserCollectQuestion;
- import com.qxgmat.data.relation.UserCollectQuestionRelationMapper;
- import com.qxgmat.service.inline.QuestionNoService;
- import com.qxgmat.service.inline.QuestionService;
- import com.qxgmat.service.inline.SentenceQuestionService;
- import com.qxgmat.service.inline.TextbookQuestionService;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import javax.annotation.Resource;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.Date;
- import java.util.List;
- @Service
- public class UserCollectQuestionService extends AbstractService {
- private static final Logger logger = LoggerFactory.getLogger(UserCollectQuestionService.class);
- @Resource
- private QuestionService questionService;
- @Resource
- private QuestionNoService questionNoService;
- @Resource
- private SentenceQuestionService sentenceQuestionService;
- @Resource
- private TextbookQuestionService textbookQuestionService;
- @Resource
- private UserCollectQuestionMapper userCollectQuestionMapper;
- @Resource
- private UserCollectQuestionRelationMapper userCollectQuestionRelationMapper;
- /**
- * 获取用户题目收藏列表
- * @param page
- * @param size
- * @param userId
- * @return
- */
- public Page<UserCollectQuestion> listExercise(int page, int size, Integer userId, String keyword, String[] questionTypes, Integer[] structIds, Date startTime, Date endTime, String order){
- Page<UserCollectQuestion> p = page(()->{
- userCollectQuestionRelationMapper.listExercise(userId, keyword, questionTypes, structIds, startTime, endTime, order);
- }, page, size);
- Collection ids = Transform.getIds(p, UserCollectQuestion.class, "id");
- // 获取详细数据
- List<UserCollectQuestion> list = select(ids);
- Transform.replace(p, list, UserCollectQuestion.class, "id");
- return p;
- }
- /**
- * 获取用户题目收藏列表
- * @param page
- * @param size
- * @param userId
- * @return
- */
- public Page<UserCollectQuestion> listExamination(int page, int size, Integer userId, String keyword, String[] questionTypes, Integer[] structIds, Integer libraryId, String year, Date startTime, Date endTime, String order){
- Page<UserCollectQuestion> p = page(()->{
- userCollectQuestionRelationMapper.listExamination(userId, keyword, questionTypes, structIds, libraryId, year, startTime, endTime, order);
- }, page, size);
- Collection ids = Transform.getIds(p, UserCollectQuestion.class, "id");
- // 获取详细数据
- List<UserCollectQuestion> list = select(ids);
- Transform.replace(p, list, UserCollectQuestion.class, "id");
- return p;
- }
- /**
- * 查询用户收藏情况
- * @param userId
- * @param questionId
- * @return
- */
- public UserCollectQuestion getByUserAndQuestion(Integer userId, Integer questionId){
- Example example = new Example(UserCollectQuestion.class);
- example.and(
- example.createCriteria()
- .andEqualTo("userId", userId)
- .andEqualTo("questionId", questionId)
- );
- UserCollectQuestion in = one(userCollectQuestionMapper, example);
- return in;
- }
- /**
- * 查询用户收藏情况:批量
- * @param userId
- * @param ids
- * @return
- */
- public List<UserCollectQuestion> listByUserAndQuestions(Integer userId, Collection ids){
- if (ids == null || ids.size() == 0) return new ArrayList<>();
- Example example = new Example(UserCollectQuestion.class);
- example.and(
- example.createCriteria()
- .andEqualTo("userId", userId)
- .andIn("questionId", ids)
- );
- return select(userCollectQuestionMapper, example);
- }
- /**
- * 收藏题目编号:包含题目id
- * @param entity
- * @return
- */
- @Transactional
- public UserCollectQuestion addQuestion(UserCollectQuestion entity){
- Example example = new Example(UserCollectQuestion.class);
- example.and(
- example.createCriteria()
- .andEqualTo("userId", entity.getUserId())
- .andEqualTo("questionId", entity.getQuestionId())
- );
- UserCollectQuestion in = one(userCollectQuestionMapper, example);
- if (in != null){
- return in;
- }
- int result = insert(userCollectQuestionMapper, entity);
- questionService.accumulationCollect(entity, 1);
- questionNoService.accumulationCollect(entity, 1);
- return entity;
- }
- /**
- * 取消收藏题目编号
- * @param userId
- * @param questionId
- * @return
- */
- @Transactional
- public boolean deleteQuestion(Integer userId, Integer questionId){
- Example example = new Example(UserCollectQuestion.class);
- example.and(
- example.createCriteria()
- .andEqualTo("userId", userId)
- .andEqualTo("questionId", questionId)
- );
- UserCollectQuestion in = one(userCollectQuestionMapper, example);
- if (in == null){
- return true;
- }
- boolean result = delete(in.getId());
- questionService.accumulationCollect(in, -1);
- questionNoService.accumulationCollect(in, -1);
- return result;
- }
- public UserCollectQuestion add(UserCollectQuestion collect){
- int result = insert(userCollectQuestionMapper, collect);
- collect = one(userCollectQuestionMapper, collect.getId());
- if(collect == null){
- throw new SystemException("收藏添加失败");
- }
- return collect;
- }
- public UserCollectQuestion edit(UserCollectQuestion collect){
- UserCollectQuestion in = one(userCollectQuestionMapper, collect.getId());
- if(in == null){
- throw new ParameterException("收藏不存在");
- }
- int result = update(userCollectQuestionMapper, collect);
- return collect;
- }
- public boolean delete(Number id){
- UserCollectQuestion in = one(userCollectQuestionMapper, id);
- if(in == null){
- throw new ParameterException("收藏不存在");
- }
- int result = delete(userCollectQuestionMapper, id);
- return result > 0;
- }
- public UserCollectQuestion get(Number id){
- UserCollectQuestion in = one(userCollectQuestionMapper, id);
- if(in == null){
- throw new ParameterException("收藏不存在");
- }
- return in;
- }
- public Page<UserCollectQuestion> select(int page, int pageSize){
- return select(userCollectQuestionMapper, page, pageSize);
- }
- public Page<UserCollectQuestion> select(Integer[] ids){
- return page(()->select(userCollectQuestionMapper, ids), 1, ids.length);
- }
- public List<UserCollectQuestion> select(Collection ids){
- return select(userCollectQuestionMapper, ids);
- }
- }
|