package com.doumee.service.business.impl; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; 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.business.CompanyMapper; import com.doumee.dao.business.MemberMapper; import com.doumee.dao.business.ProblemLogMapper; import com.doumee.dao.business.model.Company; import com.doumee.dao.business.model.Member; import com.doumee.dao.business.model.ProblemLog; import com.doumee.dao.web.reqeust.FinishAnswerDTO; import com.doumee.service.business.ProblemLogService; 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.checkerframework.checker.units.qual.A; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; import java.util.List; import java.util.Objects; /** * 访客答题记录表Service实现 * @author 江蹄蹄 * @date 2023/11/30 15:33 */ @Service public class ProblemLogServiceImpl implements ProblemLogService { @Autowired private ProblemLogMapper problemLogMapper; @Autowired private MemberMapper memberMapper; @Autowired private CompanyMapper companyMapper; @Override public Integer create(ProblemLog problemLog) { problemLogMapper.insert(problemLog); return problemLog.getId(); } @Override public void deleteById(Integer id) { problemLogMapper.deleteById(id); } @Override public void delete(ProblemLog problemLog) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(problemLog); problemLogMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } problemLogMapper.deleteBatchIds(ids); } @Override public void updateById(ProblemLog problemLog) { problemLogMapper.updateById(problemLog); } @Override public void updateByIdInBatch(List problemLogs) { if (CollectionUtils.isEmpty(problemLogs)) { return; } for (ProblemLog problemLog: problemLogs) { this.updateById(problemLog); } } @Override public ProblemLog findById(Integer id) { return problemLogMapper.selectById(id); } @Override public ProblemLog findOne(ProblemLog problemLog) { QueryWrapper wrapper = new QueryWrapper<>(problemLog); return problemLogMapper.selectOne(wrapper); } @Override public List findList(ProblemLog problemLog) { QueryWrapper wrapper = new QueryWrapper<>(problemLog); return problemLogMapper.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(ProblemLog::getId, pageWrap.getModel().getId()); } if (pageWrap.getModel().getCreator() != null) { queryWrapper.lambda().eq(ProblemLog::getCreator, pageWrap.getModel().getCreator()); } if (pageWrap.getModel().getCreateDate() != null) { queryWrapper.lambda().ge(ProblemLog::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); queryWrapper.lambda().le(ProblemLog::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); } if (pageWrap.getModel().getEditor() != null) { queryWrapper.lambda().eq(ProblemLog::getEditor, pageWrap.getModel().getEditor()); } if (pageWrap.getModel().getEditDate() != null) { queryWrapper.lambda().ge(ProblemLog::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); queryWrapper.lambda().le(ProblemLog::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); } if (pageWrap.getModel().getIsdeleted() != null) { queryWrapper.lambda().eq(ProblemLog::getIsdeleted, pageWrap.getModel().getIsdeleted()); } if (pageWrap.getModel().getRemark() != null) { queryWrapper.lambda().eq(ProblemLog::getRemark, pageWrap.getModel().getRemark()); } if (pageWrap.getModel().getUserId() != null) { queryWrapper.lambda().eq(ProblemLog::getUserId, pageWrap.getModel().getUserId()); } if (pageWrap.getModel().getStatus() != null) { queryWrapper.lambda().eq(ProblemLog::getStatus, pageWrap.getModel().getStatus()); } if (pageWrap.getModel().getLogId() != null) { queryWrapper.lambda().eq(ProblemLog::getLogId, pageWrap.getModel().getLogId()); } if (pageWrap.getModel().getScore() != null) { queryWrapper.lambda().eq(ProblemLog::getScore, pageWrap.getModel().getScore()); } if (pageWrap.getModel().getContent() != null) { queryWrapper.lambda().eq(ProblemLog::getContent, pageWrap.getModel().getContent()); } if (pageWrap.getModel().getName() != null) { queryWrapper.lambda().eq(ProblemLog::getName, pageWrap.getModel().getName()); } if (pageWrap.getModel().getPhone() != null) { queryWrapper.lambda().eq(ProblemLog::getPhone, pageWrap.getModel().getPhone()); } if (pageWrap.getModel().getCompanyId() != null) { queryWrapper.lambda().eq(ProblemLog::getCompanyId, pageWrap.getModel().getCompanyId()); } if (pageWrap.getModel().getCompanyName() != null) { queryWrapper.lambda().eq(ProblemLog::getCompanyName, pageWrap.getModel().getCompanyName()); } if (pageWrap.getModel().getOpenid() != null) { queryWrapper.lambda().eq(ProblemLog::getOpenid, pageWrap.getModel().getOpenid()); } queryWrapper.select("problem_log.*,(select type from member where member.openid = problem_log.openid) as type"); queryWrapper.orderByAsc("problem_log.createDate"); return PageData.from(problemLogMapper.selectPage(page, queryWrapper)); } @Override public long count(ProblemLog problemLog) { QueryWrapper wrapper = new QueryWrapper<>(problemLog); return problemLogMapper.selectCount(wrapper); } /** * 保存答题记录 * @param finishAnswerDTO * @return */ @Override public Integer finishAnswer(FinishAnswerDTO finishAnswerDTO){ ProblemLog problemLog = new ProblemLog(); BeanUtils.copyProperties(finishAnswerDTO,problemLog); problemLog.setCreateDate(new Date()); problemLog.setIsdeleted(Constants.ZERO); problemLog.setStatus(Constants.ZERO); if(finishAnswerDTO.getUseType().equals(Constants.ZERO)&&StringUtils.isNotBlank(finishAnswerDTO.getUserId())){ Member member = memberMapper.selectById(finishAnswerDTO.getUserId()); if(Objects.isNull(member)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到劳务人员"); } if(!member.getType().equals(Constants.memberType.lw_visitor)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非劳务人员类型,答题失败"); } if(!member.getStatus().equals(Constants.ZERO)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,账号已经" + (member.getStatus().equals(Constants.ONE)?"禁用":"拉黑/删除") ); } problemLog.setName(member.getName()); problemLog.setPhone(member.getPhone()); problemLog.setCompanyId(member.getCompanyId()); Company company = companyMapper.selectById(member.getCompanyId()); if(Objects.isNull(company)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到劳务人员公司"); } problemLog.setCompanyName(company.getName()); } this.problemLogMapper.insert(problemLog); return problemLog.getId(); } }