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.service.business.third.model.PageData; import com.doumee.service.business.third.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Utils; import com.doumee.dao.business.dao.MemberMapper; import com.doumee.dao.business.ProblemLogMapper; import com.doumee.dao.business.dao.CompanyMapper; import com.doumee.dao.business.join.ProblemLogJoinMapper; 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.business.vo.ProblemLogVo; 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 com.github.yulichang.wrapper.MPJLambdaWrapper; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.util.ArrayList; 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; @Autowired private ProblemLogJoinMapper problemLogJoinMapper; @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 problemLogIPage = dataInfo(pageWrap); return PageData.from(problemLogIPage); } private IPage dataInfo(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); queryWrapper.leftJoin(Member.class,Member::getId,ProblemLog::getUserId); queryWrapper.selectAll(ProblemLog.class) .selectAs(Member::getType,ProblemLog::getType) .like(StringUtils.isNotBlank(pageWrap.getModel().getName()), ProblemLog::getName, pageWrap.getModel().getName()) .like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()), ProblemLog::getCompanyName, pageWrap.getModel().getCompanyName()) .eq(Objects.nonNull(pageWrap.getModel().getType()), Member::getType, pageWrap.getModel().getType()) .isNotNull(ProblemLog::getUserId); queryWrapper.orderByDesc(ProblemLog::getCreateDate); IPage problemLogIPage = problemLogJoinMapper.selectJoinPage(page, ProblemLog.class, queryWrapper); return problemLogIPage; } @Override public List findPageExcel(PageWrap pageWrap) { IPage problemLogIPage = dataInfo(pageWrap); List voList = new ArrayList<>(); if(null != problemLogIPage && problemLogIPage.getRecords().size() > 0) { for (ProblemLog obj:problemLogIPage.getRecords()) { ProblemLogVo vo = new ProblemLogVo(); vo.setName(obj.getName()); vo.setScore(Objects.isNull(obj.getScore())?new BigDecimal("100"):obj.getScore()); vo.setPhone(obj.getPhone()); vo.setCompanyName(obj.getCompanyName()); if(null != obj.getType()) { if(Constants.ZERO == obj.getType()){ vo.setTypeName(Constants.Status.LW_FK.getDes()); }else if(Constants.ONE == obj.getType()) { vo.setTypeName(Constants.Status.PT_FK.getDes()); }else { vo.setTypeName(Constants.Status.NB_FK.getDes()); } }else { vo.setTypeName(""); } vo.setCreateDate(obj.getCreateDate()); voList.add(vo); } } return voList; } @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); problemLog.setOpenid(finishAnswerDTO.getOpenId()); problemLog.setScore(finishAnswerDTO.getScore()); if( StringUtils.isNotBlank(finishAnswerDTO.getUserId())){ Member member = memberMapper.selectById(finishAnswerDTO.getUserId()); if(member!=null){ /* throw new BusinessException(ResponseStatus.DATA_EMPTY.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()); problemLog.setCompanyName(member.getVisitCompanyName()); } /*if(!member.getType().equals(Constants.memberType.driver)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非访客人员类型,答题失败"); }*/ /* 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(); } }