package com.qxgmat.service; import com.github.pagehelper.Page; import com.nuliji.tools.AbstractService; import com.nuliji.tools.PageResult; 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.constants.enums.QuestionType; import com.qxgmat.data.constants.enums.module.QuestionModule; import com.qxgmat.data.constants.enums.status.DirectionStatus; import com.qxgmat.data.dao.UserCollectExperienceMapper; import com.qxgmat.data.dao.UserCollectQuestionMapper; import com.qxgmat.data.dao.entity.UserCollectExperience; import com.qxgmat.data.dao.entity.UserCollectQuestion; import com.qxgmat.data.relation.UserCollectQuestionRelationMapper; import com.qxgmat.data.relation.entity.UserCollectQuestionRelation; import com.qxgmat.service.inline.CourseExperienceService; import com.qxgmat.service.inline.QuestionService; 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.Collection; import java.util.List; @Service public class UserCollectExperienceService extends AbstractService { private static final Logger logger = LoggerFactory.getLogger(UserCollectExperienceService.class); @Resource private UserCollectExperienceMapper userCollectExperienceMapper; @Resource private CourseExperienceService courseExperienceService; /** * 查询用户收藏情况 * @param userId * @param experienceId * @return */ public UserCollectExperience getByUserAndExperience(Integer userId, Integer experienceId){ Example example = new Example(UserCollectExperience.class); example.and( example.createCriteria() .andEqualTo("userId", userId) .andEqualTo("experienceId", experienceId) ); UserCollectExperience in = one(userCollectExperienceMapper, example); return in; } /** * 查询用户收藏情况:批量 * @param userId * @param ids * @return */ public List listByUserAndExperiences(Integer userId, Collection ids){ Example example = new Example(UserCollectExperience.class); example.and( example.createCriteria() .andEqualTo("userId", userId) .andEqualTo("experienceId", ids) ); return select(userCollectExperienceMapper, example); } /** * 收藏题目编号:包含题目id * @param entity * @return */ @Transactional public UserCollectExperience addExperience(UserCollectExperience entity){ Example example = new Example(UserCollectExperience.class); example.and( example.createCriteria() .andEqualTo("userId", entity.getUserId()) .andEqualTo("experienceId", entity.getExpericenceId()) ); UserCollectExperience in = one(userCollectExperienceMapper, example); if (in != null){ return in; } int result = insert(userCollectExperienceMapper, entity); courseExperienceService.accumulation(entity.getExpericenceId(), 0, 1); return entity; } /** * 取消收藏题目编号 * @param userId * @param experienceId * @return */ @Transactional public boolean deleteExperience(Integer userId, Integer experienceId){ Example example = new Example(UserCollectQuestion.class); example.and( example.createCriteria() .andEqualTo("userId", userId) .andEqualTo("experienceId", experienceId) ); UserCollectExperience in = one(userCollectExperienceMapper, example); if (in == null){ return true; } int result = delete(userCollectExperienceMapper, example); courseExperienceService.accumulation(in.getExpericenceId(), 0, -1); return result > 0; } public UserCollectExperience add(UserCollectExperience collect){ int result = insert(userCollectExperienceMapper, collect); collect = one(userCollectExperienceMapper, collect.getId()); if(collect == null){ throw new SystemException("收藏添加失败"); } return collect; } public UserCollectExperience edit(UserCollectExperience collect){ UserCollectExperience in = one(userCollectExperienceMapper, collect.getId()); if(in == null){ throw new ParameterException("收藏不存在"); } int result = update(userCollectExperienceMapper, collect); return collect; } public boolean delete(Number id){ UserCollectExperience in = one(userCollectExperienceMapper, id); if(in == null){ throw new ParameterException("收藏不存在"); } int result = delete(userCollectExperienceMapper, id); return result > 0; } public UserCollectExperience get(Number id){ UserCollectExperience in = one(userCollectExperienceMapper, id); if(in == null){ throw new ParameterException("收藏不存在"); } return in; } public Page select(int page, int pageSize){ return select(userCollectExperienceMapper, page, pageSize); } public Page select(Integer[] ids){ return page(()->select(userCollectExperienceMapper, ids), 1, ids.length); } public List select(Collection ids){ return select(userCollectExperienceMapper, ids); } }