教育训练处考试制证系统后端
zhangf
2024-09-11 1a316551c8e46b793904090cfa84781bf77fef2a
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudyRecordManagerServiceImpl.java
@@ -1,23 +1,39 @@
package com.gkhy.exam.institutionalaccess.service.serviceImpl;
import com.alibaba.fastjson2.JSONObject;
import com.alibaba.fastjson2.TypeReference;
import com.gkhy.exam.institutionalaccess.entity.*;
import com.ruoyi.system.domain.enums.AccessAddressType;
import com.gkhy.exam.institutionalaccess.model.query.ThStudyDetailQuery;
import com.gkhy.exam.institutionalaccess.model.resp.ThPlatformStudentRespDTO;
import com.gkhy.exam.institutionalaccess.model.vo.ThStudyAuthVO;
import com.gkhy.exam.institutionalaccess.model.vo.ThStudyDetailVO;
import com.gkhy.exam.institutionalaccess.model.vo.ThStudyTrackVO;
import com.gkhy.exam.institutionalaccess.service.*;
import com.gkhy.exam.institutionalaccess.utils.ConvertTimeUtils;
import com.ruoyi.common.utils.HttpClientUtil;
import com.gkhy.exam.noncoalmine.model.vo.ReturnVO;
import com.ruoyi.common.constant.ResultConstants;
import com.ruoyi.common.exception.BusinessException;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.signature.AESUtils;
import com.ruoyi.system.domain.ThAccessAddress;
import com.ruoyi.system.service.ThAccessAddressService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
@Service("ThStudyRecordManagerService")
public class ThStudyRecordManagerServiceImpl implements ThStudyRecordManagerService {
    private Logger logger = LoggerFactory.getLogger(ThStudyRecordManagerServiceImpl.class);
    @Autowired
    private ThStudyDetailService thStudyDetailService;
    @Autowired
@@ -32,6 +48,8 @@
    private ThBatchService thBatchService;
    @Autowired
    private ThStudentService studentService;;
    @Autowired
    private ThAccessAddressService thAccessAddressService;
    @Override
    public List<ThStudyDetailVO> listByPage(ThStudyDetailQuery query) {
@@ -100,5 +118,54 @@
        return thStudyDetailVOS;
    }
    @Override
    public ThPlatformStudentRespDTO getStudyRecordByIdcard(ThStudyDetailQuery query) {
        if(StringUtils.isEmpty(query.getIdcard())){
            throw new BusinessException(this.getClass(), ResultConstants.PARAM_ERROR_NULL,"学生身份证不可为空");
        }
        if(query.getInstitutionId() == null){
            throw new BusinessException(this.getClass(), ResultConstants.PARAM_ERROR_NULL,"学生所属机构不可为空");
        }
        //获取该机构访问路径
        ThAccessAddress accessAddress = thAccessAddressService.getByInstitutionIdAndType(query.getInstitutionId(), AccessAddressType.STUDY_RECORD.getType());
        Map<String,String> params = new HashMap<>();
        params.put("idcard",query.getIdcard());
        String json = HttpClientUtil.doGet(accessAddress.getUrl(), params);
        ReturnVO<String> returnVo = JSONObject.parseObject(json, new TypeReference<ReturnVO<String>>() {});
        if(returnVo.getCode() == null || returnVo.getCode() != 200){
            throw new ServiceException("获取三方数据数据异常");
        }
        ThPlatformStudentRespDTO thPlatformStudentRespDTO = null;
        if(!StringUtils.isEmpty(returnVo.getData())){
            String decrypt = "";
            try {
                decrypt = AESUtils.decrypt(returnVo.getData());
            }catch (Exception e){
                throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR,"解密异常");
            }
            if(!StringUtils.isEmpty(decrypt)){
                try {
                    thPlatformStudentRespDTO = JSONObject.parseObject(decrypt, new TypeReference<ThPlatformStudentRespDTO>() {});
                }catch (Exception e){
                    logger.error("学习实时记录反序列化失败!");
                    throw new BusinessException(this.getClass(), ResultConstants.SERIALIZE_ERROR);
                }
            }
        }
        return thPlatformStudentRespDTO;
    }
    public static void main(String[] args) {
        Map<String,String> params = new HashMap<>();
        params.put("idcard","652201198009174020");
        String s = HttpClientUtil.doGet("https://app.lgb360.com/egress/xj/getStuDetail", params);
        System.out.println(s);
    }
}