package com.qxgmat.service.inline; 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.constants.enums.status.DirectionStatus; import com.qxgmat.data.constants.enums.status.PreviewStatus; import com.qxgmat.data.dao.PreviewAssignMapper; import com.qxgmat.data.dao.PreviewPaperMapper; import com.qxgmat.data.dao.entity.PreviewAssign; import com.qxgmat.data.dao.entity.PreviewPaper; import com.qxgmat.data.relation.PreviewAssignRelationMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.List; @Service public class PreviewAssignService extends AbstractService { private static final Logger logger = LoggerFactory.getLogger(PreviewAssignService.class); @Resource private PreviewAssignMapper previewAssignMapper; @Resource private PreviewAssignRelationMapper previewAssignRelationMapper; public Page listAdmin(int page, int size, Integer paperId, String order, DirectionStatus direction){ Example example = new Example(PreviewAssign.class); if(paperId != null){ example.and( example.createCriteria() .andEqualTo("paperId", paperId) ); } 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(previewAssignMapper, example, page, size); } public PreviewAssign getByCourseNo(Integer courseId, Integer no){ Example example = new Example(PreviewAssign.class); example.and( example.createCriteria() .andEqualTo("courseId", courseId) .andEqualTo("courseNo", no) ); return one(previewAssignMapper, example); } public PreviewAssign addCourseNo(Integer paperId, Integer courseId, Integer no){ PreviewAssign assign = getByCourseNo(courseId, no); if (assign != null){ throw new ParameterException("该课时已创建"); } return add(PreviewAssign.builder() .courseId(courseId) .courseNo(no) .paperId(paperId) .build()); } public boolean removeCourseNo(Integer courseId, Integer no){ Example example = new Example(PreviewAssign.class); example.and( example.createCriteria() .andEqualTo("courseId", courseId) .andEqualTo("courseNo", no) ); return delete(previewAssignMapper, example) > 0; } /** * 用于查询视频课程所有作业 * @param courseId * @return */ public List listByCourse(int page, int size, Integer courseId, Integer userId, Integer times){ Page p = page(()->previewAssignRelationMapper.listByCourse(courseId, userId, times), page, size); Collection ids = Transform.getIds(p, PreviewAssign.class, "id"); // 获取详细数据 List list = select(ids); Transform.replace(p, list, PreviewAssign.class, "id"); return p; } /** * 用于查询视频课程指定课时作业 * @param courseId * @return */ public List listByCourseNos(Integer courseId, Collection ids){ if(ids == null || ids.size() == 0) return new ArrayList<>(); Example example = new Example(PreviewAssign.class); example.and( example.createCriteria() .andEqualTo("courseId", courseId) .andIn("courseNo", ids) ); return select(previewAssignMapper, example); } /** * 用户查询1v1相对的预约作业 * @param appointmentIds * @return */ public List listWithAppointment(Collection appointmentIds){ if(appointmentIds == null || appointmentIds.size() == 0) return new ArrayList<>(); Example example = new Example(PreviewAssign.class); example.and( example.createCriteria() .andIn("courseAppointment", appointmentIds) ); return select(previewAssignMapper, example); } /** * 用户查询1v1相对的预约作业 * @param appointmentIds * @return */ public List listByAppointment(int page, int size, Integer courseId, Collection appointmentIds, Integer userId, String endTime, Integer times){ if(appointmentIds==null || appointmentIds.size() == 0) return new ArrayList<>(); Page p = page(()->previewAssignRelationMapper.listByAppointment(courseId, appointmentIds, userId, endTime, times), page, size); Collection ids = Transform.getIds(p, PreviewAssign.class, "id"); // 获取详细数据 List list = select(ids); Transform.replace(p, list, PreviewAssign.class, "id"); return p; } public boolean removeCourseAppointment(Integer courseId, Integer id){ Example example = new Example(PreviewAssign.class); example.and( example.createCriteria() .andEqualTo("courseId", courseId) .andEqualTo("courseAppointment", id) ); return delete(previewAssignMapper, example) > 0; } /** * 用户查询小班课时间段内的预习作业 * @param timeId * @return */ public List listByTime(int page, int size, Integer courseId, Integer timeId, Integer userId, String endTime, Integer times){ Page p = page(()->previewAssignRelationMapper.listByTime(courseId, timeId, userId, endTime, times), page, size); Collection ids = Transform.getIds(p, PreviewAssign.class, "id"); // 获取详细数据 List list = select(ids); Transform.replace(p, list, PreviewAssign.class, "id"); return p; } public boolean removeCourseTime(Integer courseId, Integer timeId){ Example example = new Example(PreviewAssign.class); example.and( example.createCriteria() .andEqualTo("courseId", courseId) .andEqualTo("courseTime", timeId) ); return delete(previewAssignMapper, example) > 0; } /** * 查询1v1即将过期的作业 * @param startTime * @param endTime * @return */ public List listAppointmentExpire(String startTime, String endTime){ Example example = new Example(PreviewAssign.class); example.and( example.createCriteria() .andGreaterThan("courseAppointment", 0) .andGreaterThanOrEqualTo("endTime", startTime) .andLessThan("endTime", endTime) ); return select(previewAssignMapper, example); } public PreviewAssign add(PreviewAssign assign){ int result = insert(previewAssignMapper, assign); assign = one(previewAssignMapper, assign.getId()); if(assign == null){ throw new SystemException("预习作业添加失败"); } return assign; } public PreviewAssign edit(PreviewAssign assign){ PreviewAssign in = one(previewAssignMapper, assign.getId()); if(in == null){ throw new ParameterException("预习作业不存在"); } int result = update(previewAssignMapper, assign); return assign; } public boolean delete(Number id){ PreviewAssign in = one(previewAssignMapper, id); if(in == null){ throw new ParameterException("预习作业不存在"); } int result = delete(previewAssignMapper, id); return result > 0; } public PreviewAssign get(Number id){ PreviewAssign in = one(previewAssignMapper, id); if(in == null){ throw new ParameterException("预习作业不存在"); } return in; } public Page select(int page, int pageSize){ return select(previewAssignMapper, page, pageSize); } public Page select(Integer[] ids){ return page(()->select(previewAssignMapper, ids), 1, ids.length); } public List select(Collection ids){ return select(previewAssignMapper, ids); } }