package com.doumee.service.business.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Utils; import com.doumee.dao.admin.request.OptionsObject; import com.doumee.dao.admin.response.ProblemDTO; import com.doumee.dao.business.ProblemsMapper; import com.doumee.dao.business.model.Problems; import com.doumee.dao.web.response.ProblemsVO; import com.doumee.service.business.ProblemsService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * 试题信息表Service实现 * @author 江蹄蹄 * @date 2023/11/30 15:33 */ @Service public class ProblemsServiceImpl implements ProblemsService { @Autowired private ProblemsMapper problemsMapper; @Override public Integer create(Problems problems) { LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(loginUserInfo == null){ loginUserInfo=problems.getLoginUserInfo(); } Problems newProblems = new Problems(); newProblems.setCreator(loginUserInfo.getId()); newProblems.setCreateDate(new Date()); newProblems.setEditor(loginUserInfo.getId()); newProblems.setEditDate(new Date()); newProblems.setIsdeleted(Constants.ZERO); newProblems.setRemark(problems.getRemark()); newProblems.setTitle(problems.getTitle()); if(null != problems.getObjectList() && problems.getObjectList().size() > 0) { newProblems.setOptions(JSON.toJSONString(problems.getObjectList())); } newProblems.setAnswer(problems.getAnswer()); newProblems.setSortnu(problems.getSortnu()); newProblems.setType(problems.getType()); newProblems.setScore(problems.getScore()); newProblems.setUseType(problems.getUseType()); problemsMapper.insert(newProblems); return newProblems.getId(); } @Override public void deleteById(Integer id) { problemsMapper.deleteById(id); } @Override public void delete(Problems problems) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(problems); problemsMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } problemsMapper.deleteBatchIds(ids); } @Override public void updateById(Problems problems) { LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(loginUserInfo == null){ loginUserInfo=problems.getLoginUserInfo(); } Problems update = new Problems(); update.setId(problems.getId()); update.setEditor(loginUserInfo.getId()); update.setEditDate(new Date()); update.setTitle(problems.getTitle()); if(null != problems.getObjectList() && problems.getObjectList().size() > 0) { update.setOptions(JSON.toJSONString(problems.getObjectList())); } update.setAnswer(problems.getAnswer()); update.setSortnu(problems.getSortnu()); update.setScore(problems.getScore()); update.setType(problems.getType()); update.setScore(problems.getScore()); update.setUseType(problems.getUseType()); problemsMapper.updateById(update); } @Override public void updateByIdInBatch(List problemss) { if (CollectionUtils.isEmpty(problemss)) { return; } for (Problems problems: problemss) { this.updateById(problems); } } @Override public Problems findById(Integer id) { Problems problems = problemsMapper.selectById(id); if(null != problems && StringUtils.isNotBlank(problems.getOptions())) { problems.setObjectList(JSON.parseArray(problems.getOptions(), OptionsObject.class)); } return problems; } @Override public Problems findOne(Problems problems) { QueryWrapper wrapper = new QueryWrapper<>(problems); return problemsMapper.selectOne(wrapper); } @Override public List findList(Problems problems) { QueryWrapper wrapper = new QueryWrapper<>(problems); return problemsMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper queryWrapper = new QueryWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); if (pageWrap.getModel().getId() != null) { queryWrapper.lambda().eq(Problems::getId, pageWrap.getModel().getId()); } if (pageWrap.getModel().getCreator() != null) { queryWrapper.lambda().eq(Problems::getCreator, pageWrap.getModel().getCreator()); } if (pageWrap.getModel().getCreateDate() != null) { queryWrapper.lambda().ge(Problems::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); queryWrapper.lambda().le(Problems::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); } if (pageWrap.getModel().getEditor() != null) { queryWrapper.lambda().eq(Problems::getEditor, pageWrap.getModel().getEditor()); } if (pageWrap.getModel().getEditDate() != null) { queryWrapper.lambda().ge(Problems::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); queryWrapper.lambda().le(Problems::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); } if (pageWrap.getModel().getIsdeleted() != null) { queryWrapper.lambda().eq(Problems::getIsdeleted, pageWrap.getModel().getIsdeleted()); } if (pageWrap.getModel().getRemark() != null) { queryWrapper.lambda().eq(Problems::getRemark, pageWrap.getModel().getRemark()); } if (pageWrap.getModel().getTitle() != null) { queryWrapper.lambda().like(Problems::getTitle, pageWrap.getModel().getTitle()); } if (pageWrap.getModel().getOptions() != null) { queryWrapper.lambda().eq(Problems::getOptions, pageWrap.getModel().getOptions()); } if (pageWrap.getModel().getAnswer() != null) { queryWrapper.lambda().eq(Problems::getAnswer, pageWrap.getModel().getAnswer()); } if (pageWrap.getModel().getSortnu() != null) { queryWrapper.lambda().eq(Problems::getSortnu, pageWrap.getModel().getSortnu()); } if (pageWrap.getModel().getType() != null) { queryWrapper.lambda().in(Problems::getType, pageWrap.getModel().getType()); } if (pageWrap.getModel().getScore() != null) { queryWrapper.lambda().eq(Problems::getScore, pageWrap.getModel().getScore()); } if (pageWrap.getModel().getUseType() != null) { queryWrapper.lambda().eq(Problems::getUseType, pageWrap.getModel().getUseType()); } queryWrapper.lambda().orderByAsc(Problems::getSortnu); queryWrapper.select("problems.*, (select REALNAME from system_user where system_user.id = problems.CREATOR) as creatorName"); IPage problemsIPage = problemsMapper.selectPage(page, queryWrapper); if(null != problemsIPage && problemsIPage.getRecords().size() > 0) { List newProblems = new ArrayList<>(); List newDatas = problemsIPage.getRecords(); for (Problems dto:newDatas) { dto.setObjectList(JSON.parseArray(dto.getOptions(), OptionsObject.class)); newProblems.add(dto); } problemsIPage.setRecords(newProblems); } return PageData.from(problemsIPage); } @Override public long count(Problems problems) { QueryWrapper wrapper = new QueryWrapper<>(problems); return problemsMapper.selectCount(wrapper); } @Override public List findListByUseType(Integer useType) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Problems::getIsdeleted, Constants.ZERO) .eq(Problems::getUseType, useType) .orderByAsc(Problems::getSortnu); List problems = problemsMapper.selectList(wrapper); List collect = problems.stream().map(s -> { ProblemDTO dto = new ProblemDTO(); BeanUtils.copyProperties(dto, s); return dto; }).collect(Collectors.toList()); return collect; } /** * 获取题目信息 * @param useType * @return */ @Override public List getProblemsVO(Integer useType){ List problemsList = problemsMapper.selectList(new QueryWrapper().lambda() .and(ms->ms.eq(Problems::getUseType,useType).or().eq(Problems::getUseType,Constants.ZERO)) .eq(Problems::getIsdeleted, Constants.ZERO).orderByAsc(Problems::getSortnu)); List problemsVOList = new ArrayList<>(); for (Problems problems:problemsList) { ProblemsVO problemsVO = new ProblemsVO(); BeanUtils.copyProperties(problems,problemsVO); problemsVOList.add(problemsVO); } return problemsVOList; } }