ProjectJudgeServiceImpl.java 9.3 KB
package com.subsidy.service.impl;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.common.constant.SmsCode;
import com.subsidy.common.exception.HttpException;
import com.subsidy.dto.administer.LoginDTO;
import com.subsidy.dto.judge.ProjectJudgePageDTO;
import com.subsidy.dto.projectJudge.ImportJudge;
import com.subsidy.mapper.ProjectJudgeMapper;
import com.subsidy.mapper.SmsVerifyCodeMapper;
import com.subsidy.model.ProjectJudgeDO;
import com.subsidy.model.ProjectReviewDO;
import com.subsidy.model.SmsVerifyCodeDO;
import com.subsidy.service.ProjectJudgeService;
import com.subsidy.service.ProjectReviewService;
import com.subsidy.util.EncryptString;
import com.subsidy.util.JwtUtil;
import com.subsidy.util.excel.ExcelUtil;
import com.subsidy.vo.college.ExcelFieldVO;
import com.subsidy.vo.judge.JudgeInfoVO;
import com.subsidy.vo.judge.ProjectJudgePageVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 项目评审员 服务实现类
 * </p>
 *
 * @author DengMin
 * @since 2021-05-28
 */
@Service
public class ProjectJudgeServiceImpl extends ServiceImpl<ProjectJudgeMapper, ProjectJudgeDO> implements ProjectJudgeService {

    @Autowired
    private ProjectReviewService projectReviewService;

    @Autowired
    private SmsVerifyCodeMapper smsVerifyCodeMapper;

    @Override
    public IPage<ProjectJudgePageVO> getProjectJudgePage(ProjectJudgePageDTO projectJudgePageDTO) {
        IPage<ProjectJudgePageVO> iPage = this.baseMapper.getProjectJudgePage(new Page(projectJudgePageDTO.getPageNo(), projectJudgePageDTO.getPageSize()), projectJudgePageDTO.getUsername(), projectJudgePageDTO.getStatus());
        for (ProjectJudgePageVO record : iPage.getRecords()) {

            Integer integer = this.baseMapper.projectCount(record.getId());
            record.setAssignedQuantity(integer);

            Integer notReviewNum = projectReviewService.selectNotReviewCount(record.getId());
            record.setNotReviewedNum(notReviewNum);
        }
        return iPage;
    }

    @Override
    public void createProjectJudge(ProjectJudgeDO projectJudgeDO) {
//        ProjectJudgeDO projectJudge = this.baseMapper.selectOne(new QueryWrapper<ProjectJudgeDO>()
//                .lambda()
//                .eq(ProjectJudgeDO::getTelephone, projectJudgeDO.getTelephone()));
//        if (projectJudge != null) {
//            throw new HttpException(10020);
//        }

        ProjectJudgeDO projectJudge = this.baseMapper.selectOne(new QueryWrapper<ProjectJudgeDO>()
                .lambda()
                .eq(ProjectJudgeDO::getAccountName, projectJudgeDO.getAccountName()));
        if (projectJudge != null) {
            throw new HttpException(10002);
        }

        this.baseMapper.insert(projectJudgeDO);
    }

    @Override
    public void updateProjectJudge(ProjectJudgeDO projectJudgeDO) {
        ProjectJudgeDO projectJudge = this.baseMapper.selectById(projectJudgeDO.getId());
        if (projectJudge != null) {
            if (projectJudge.getAccountName().equals(projectJudgeDO.getAccountName())) {
                this.baseMapper.updateById(projectJudgeDO);
            } else {
                ProjectJudgeDO p = this.baseMapper.selectOne(new QueryWrapper<ProjectJudgeDO>()
                        .lambda()
                        .eq(ProjectJudgeDO::getAccountName, projectJudgeDO.getAccountName()));
                if (p != null) {
                    throw new HttpException(10020);
                } else {
                    this.baseMapper.updateById(projectJudgeDO);
                }
            }
        }
    }

    @Override
    public JudgeInfoVO login(LoginDTO loginDTO) {
        JudgeInfoVO judgeInfoVO = new JudgeInfoVO();

//        smsVerifyCodeMapper.delete(new QueryWrapper<SmsVerifyCodeDO>()
//                .lambda()
//                .eq(SmsVerifyCodeDO::getTelephone,loginDTO.getTelephone()));

        ProjectJudgeDO projectJudgeDO = this.baseMapper.selectOne(new QueryWrapper<ProjectJudgeDO>()
                .lambda()
                .eq(ProjectJudgeDO::getTelephone, loginDTO.getTelephone()));

        if (null != projectJudgeDO){

            if (null != projectJudgeDO.getPasswordFree() && projectJudgeDO.getPasswordFree() != 1){
                SmsVerifyCodeDO smsCodeDO = smsVerifyCodeMapper.getOneByTelePhone(loginDTO.getTelephone(), SmsCode.login, SmsCode.review);
                if (smsCodeDO == null) {
                    throw new HttpException(10025);
                }

                if (!smsCodeDO.getVerifyCode().equals(loginDTO.getCode())) {
                    throw new HttpException(10021);
                }

                if (projectJudgeDO == null) {
                    throw new HttpException(10024);
                }

                if (projectJudgeDO.getStatus() == 0) {
                    throw new HttpException(10024);
                }
            }
        }

        String token = JwtUtil.generateToken(projectJudgeDO.getId(), SmsCode.review);
//        judgeInfoVO.setTelephone(projectJudgeDO.getTelephone());
        judgeInfoVO.setPosition(projectJudgeDO.getPosition());
        judgeInfoVO.setUnit(projectJudgeDO.getUnit());
        judgeInfoVO.setUsername(projectJudgeDO.getUsername());
        judgeInfoVO.setToken(token);
        judgeInfoVO.setId(projectJudgeDO.getId());
        return judgeInfoVO;
    }

    @Override
    public JudgeInfoVO passwordLogin(ProjectJudgeDO projectJudgeDO1) {
        JudgeInfoVO judgeInfoVO = new JudgeInfoVO();

//        smsVerifyCodeMapper.delete(new QueryWrapper<SmsVerifyCodeDO>()
//                .lambda()
//                .eq(SmsVerifyCodeDO::getTelephone,loginDTO.getTelephone()));

        ProjectJudgeDO projectJudgeDO = this.baseMapper.selectOne(new QueryWrapper<ProjectJudgeDO>()
                .lambda()
                .eq(ProjectJudgeDO::getAccountName, projectJudgeDO1.getAccountName()));

        if (null != projectJudgeDO){

            if (projectJudgeDO.getStatus() == 0) {
                throw new HttpException(10026);
            }

            //加密后跟前端的做对比
            if (!EncryptString.encrypt(projectJudgeDO.getPassword()+"2O9S8Z").equals(projectJudgeDO1.getPassword())) {
                throw new HttpException(10027);
            }

//            if (!projectJudgeDO1.getPassword() .equals(projectJudgeDO.getPassword())){
//                throw new HttpException(10027);
//            }
        }else {
            throw new HttpException(10028);
        }

        String token = JwtUtil.generateToken(projectJudgeDO.getId(), SmsCode.review);
        judgeInfoVO.setAccountName(projectJudgeDO.getAccountName());
        judgeInfoVO.setPosition(projectJudgeDO.getPosition());
        judgeInfoVO.setUnit(projectJudgeDO.getUnit());
        judgeInfoVO.setUsername(projectJudgeDO.getUsername());
        judgeInfoVO.setToken(token);
        judgeInfoVO.setId(projectJudgeDO.getId());
        return judgeInfoVO;
    }

    @Override
    public IPage<ProjectJudgePageVO> projectJudgesAssigned(ProjectJudgePageDTO projectJudgePageDTO) {
        IPage<ProjectJudgePageVO> iPage = this.baseMapper.projectJudgesAssigned(new Page(projectJudgePageDTO.getPageNo(), projectJudgePageDTO.getPageSize()),
                projectJudgePageDTO.getMatchId(), projectJudgePageDTO.getProjectGroup(), projectJudgePageDTO.getProjectSchedule());
        if (iPage.getRecords() != null && iPage.getRecords().size() > 0) {
            for (ProjectJudgePageVO record : iPage.getRecords()) {
                Integer count = projectReviewService.selectCount(record.getId(), projectJudgePageDTO.getMatchId());
                record.setAssignedQuantity(count);
                Integer notReviewNum = projectReviewService.selectNotReviewCount(record.getId());
                record.setNotReviewedNum(notReviewNum);
            }
        }
        return iPage;
    }

    @Override
    public void importJudge(MultipartFile file) {
        List<ImportJudge> list = ExcelUtil.readExcel(ImportJudge.class, file);
        if (list != null) {
            for (ImportJudge importJudge : list) {
                ProjectJudgeDO projectJudgeDO = new ProjectJudgeDO();
                BeanUtils.copyProperties(importJudge, projectJudgeDO);
                this.baseMapper.insert(projectJudgeDO);
            }
        }
    }

    @Override
    public void downloadTemplate() {
        List<ExcelFieldVO> list = ExcelUtil.getField(ImportJudge.class);
        ExcelUtil.writeExcel(list, new ArrayList<>());
    }

    @Override
    public void exportProjectJudge() {
        List<ExcelFieldVO> field = ExcelUtil.getField(ImportJudge.class);
        List<ProjectJudgeDO> list = this.baseMapper.selectList(new QueryWrapper<>());
        List<Map> data = new ArrayList<>();
        if (list != null && list.size() > 0) {
            for (ProjectJudgeDO projectJudgeDO : list) {
                data.add(JSON.parseObject(JSON.toJSONString(projectJudgeDO), Map.class));
            }
        }
        ExcelUtil.writeExcel(field, data);
    }
}