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.join.ProblemLogJoinMapper; 
 | 
import com.doumee.dao.business.join.RetentionJoinMapper; 
 | 
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.model.Retention; 
 | 
import com.doumee.dao.system.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.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<ProblemLog> deleteWrapper = new UpdateWrapper<>(problemLog); 
 | 
        problemLogMapper.delete(deleteWrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteByIdInBatch(List<Integer> ids) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        problemLogMapper.deleteBatchIds(ids); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateById(ProblemLog problemLog) { 
 | 
        problemLogMapper.updateById(problemLog); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateByIdInBatch(List<ProblemLog> 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<ProblemLog> wrapper = new QueryWrapper<>(problemLog); 
 | 
        return problemLogMapper.selectOne(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<ProblemLog> findList(ProblemLog problemLog) { 
 | 
        QueryWrapper<ProblemLog> wrapper = new QueryWrapper<>(problemLog); 
 | 
        return problemLogMapper.selectList(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public PageData<ProblemLog> findPage(PageWrap<ProblemLog> pageWrap) { 
 | 
        IPage<ProblemLog> problemLogIPage = dataInfo(pageWrap); 
 | 
        return PageData.from(problemLogIPage); 
 | 
    } 
 | 
  
 | 
    private IPage<ProblemLog> dataInfo(PageWrap<ProblemLog> pageWrap) { 
 | 
        IPage<ProblemLog> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
        MPJLambdaWrapper<ProblemLog> 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()); 
 | 
        queryWrapper.orderByDesc(ProblemLog::getCreateDate); 
 | 
        IPage<ProblemLog> problemLogIPage = problemLogJoinMapper.selectJoinPage(page, ProblemLog.class, queryWrapper); 
 | 
        return problemLogIPage; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<ProblemLogVo> findPageExcel(PageWrap<ProblemLog> pageWrap) { 
 | 
        IPage<ProblemLog> problemLogIPage = dataInfo(pageWrap); 
 | 
        List<ProblemLogVo> voList = new ArrayList<>(); 
 | 
        if(null != problemLogIPage && problemLogIPage.getRecords().size() > 0) { 
 | 
            for (ProblemLog obj:problemLogIPage.getRecords()) { 
 | 
                ProblemLogVo vo = new ProblemLogVo(); 
 | 
                vo.setName(obj.getName()); 
 | 
                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<ProblemLog> 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()); 
 | 
        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(); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
} 
 |