package com.xiaopeng.account.service.impl; import cn.hutool.core.util.DesensitizedUtil; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.account.mapper.SysRoleMapper; import com.xiaopeng.account.mapper.XpOperationsRoleMapper; import com.xiaopeng.account.mapper.XpQualificationAuditMapper; import com.xiaopeng.account.model.dto.QualificationReviewDTO; import com.xiaopeng.account.model.query.XpQualificationAuditQuery; import com.xiaopeng.account.service.ISysGroupService; import com.xiaopeng.account.service.IXpQualificationAuditService; import com.xiaopeng.api.model.account.SysRole; import com.xiaopeng.api.model.account.XpOperationsRole; import com.xiaopeng.api.model.account.XpQualificationAudit; import com.xiaopeng.api.vo.account.LoginUser; import com.xiaopeng.api.vo.account.XpQualificationAuditVO; import com.xiaopeng.common.core.utils.SensitiveDataCryptoUtil; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.common.security.service.TokenService; import com.xiaopeng.evi.oss.service.AliOssService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.io.UnsupportedEncodingException; import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** *

* 运维人员资质证书审核记录 服务实现类 *

* * @author mitao * @since 2026-02-03 */ @Service public class XpQualificationAuditServiceImpl extends ServiceImpl implements IXpQualificationAuditService { @Autowired private XpOperationsRoleMapper xpOperationsRoleMapper; @Autowired private SysRoleMapper sysRoleMapper; @Autowired private AliOssService aliOssService; @Autowired private ISysGroupService sysGroupService; @Resource private TokenService tokenService; @Override public PageInfo pageList(XpQualificationAuditQuery query) throws UnsupportedEncodingException { query.setPhoneNumberQueryValues(SensitiveDataCryptoUtil.queryValues(query.getPhoneNumber())); LoginUser loginUser = tokenService.getLoginUser(); query.setPhoneNumberQueryValues(SensitiveDataCryptoUtil.queryValues(query.getPhoneNumber())); PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List list = this.baseMapper.pageList(pageInfo, query); if (CollectionUtils.isEmpty(list)) { return pageInfo; } // 查询角色名称 List operationsUserIds = list.stream().map(XpQualificationAuditVO::getOperationsUserId).collect(Collectors.toList()); // 查询用户信息 List xpOperationsRoles = xpOperationsRoleMapper.selectList(Wrappers.lambdaQuery(XpOperationsRole.class) .in(XpOperationsRole::getOperationsUserId, operationsUserIds)); if (!CollectionUtils.isEmpty(xpOperationsRoles)) { List roleIds = xpOperationsRoles.stream().map(XpOperationsRole::getRoleId).collect(Collectors.toList()); // 查询列表关联的所有角色 List sysRoles = sysRoleMapper.selectList(Wrappers.lambdaQuery(SysRole.class) .in(SysRole::getId, roleIds)); if (!CollectionUtils.isEmpty(sysRoles)) { // 角色匹配账号id Map> map = new HashMap<>(); for (XpOperationsRole xpOperationsRole : xpOperationsRoles) { List sysRoleList = sysRoles.stream().filter(sysRole -> sysRole.getId().equals(xpOperationsRole.getRoleId())).collect(Collectors.toList()); map.put(xpOperationsRole.getOperationsUserId(), sysRoleList); } // 角色名称匹配 for (XpQualificationAuditVO xpQualificationAuditVO : list) { List roleList = map.get(xpQualificationAuditVO.getOperationsUserId()); xpQualificationAuditVO.setRoleNames(roleList.stream().map(SysRole::getRoleName).collect(Collectors.toList())); } } } for (XpQualificationAuditVO xpQualificationAuditVO : list) { xpQualificationAuditVO.setPhoneNumber(SensitiveDataCryptoUtil.decryptIfPossible(xpQualificationAuditVO.getPhoneNumber())); xpQualificationAuditVO.setPhoneNumber(SensitiveDataCryptoUtil.decryptIfPossible(xpQualificationAuditVO.getPhoneNumber())); if (!loginUser.getPhoneDesensitizationExempt()) { xpQualificationAuditVO.setPhoneNumber(DesensitizedUtil.mobilePhone(xpQualificationAuditVO.getPhoneNumber())); } // String certificateOfNoCriminalRecord = xpQualificationAuditVO.getCertificateOfNoCriminalRecord(); // if (certificateOfNoCriminalRecord != null) { // JSONObject jsonObject = JSONObject.parseObject(certificateOfNoCriminalRecord); // // 1 // String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); // jsonObject.put("url", downloadUrl); // xpQualificationAuditVO.setCertificateOfNoCriminalRecord(jsonObject.toJSONString()); // } // // String driverLicense = xpQualificationAuditVO.getDriverLicense(); // if (driverLicense != null) { // JSONObject jsonObject = JSONObject.parseObject(driverLicense); // //1 // String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); // jsonObject.put("url", downloadUrl); // xpQualificationAuditVO.setDriverLicense(jsonObject.toJSONString()); // } // // // String trainingGraduationCertificate = xpQualificationAuditVO.getTrainingGraduationCertificate(); // if (trainingGraduationCertificate != null) { // JSONObject jsonObject = JSONObject.parseObject(trainingGraduationCertificate); // //1 // String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); // jsonObject.put("url", downloadUrl); // xpQualificationAuditVO.setTrainingGraduationCertificate(jsonObject.toJSONString()); // } // // String idCardFront = xpQualificationAuditVO.getIdCardFront(); // if (idCardFront != null) { // JSONObject jsonObject = JSONObject.parseObject(idCardFront); // //1 // String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); // jsonObject.put("url", downloadUrl); // xpQualificationAuditVO.setIdCardFront(jsonObject.toJSONString()); // } // // String idCardBack = xpQualificationAuditVO.getIdCardBack(); // if (idCardBack != null) { // JSONObject jsonObject = JSONObject.parseObject(idCardBack); // //1 // String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); // jsonObject.put("url", downloadUrl); // xpQualificationAuditVO.setIdCardBack(jsonObject.toJSONString()); // } } pageInfo.setRecords(list); return pageInfo; } @Override public void audit(QualificationReviewDTO dto, Long userid) { List qualificationAudits = this.listByIds(dto.getIds()); for (XpQualificationAudit qualificationAudit : qualificationAudits) { qualificationAudit.setAuditUserId(userid); qualificationAudit.setAuditTime(LocalDateTime.now()); qualificationAudit.setAuditStatus(dto.getAuditStatus()); qualificationAudit.setAuditRemark(dto.getAuditRemarks()); } this.updateBatchById(qualificationAudits); } @Override public XpQualificationAuditVO getQualificationAuditInfo(Long id) { XpQualificationAuditVO qualificationAuditInfo = this.baseMapper.getQualificationAuditInfo(id); String certificateOfNoCriminalRecord = qualificationAuditInfo.getCertificateOfNoCriminalRecord(); if (certificateOfNoCriminalRecord != null) { JSONObject jsonObject = JSONObject.parseObject(certificateOfNoCriminalRecord); // 1 String downloadUrl = null; try { downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } jsonObject.put("url", downloadUrl); qualificationAuditInfo.setCertificateOfNoCriminalRecord(jsonObject.toJSONString()); } String driverLicense = qualificationAuditInfo.getDriverLicense(); if (driverLicense != null) { JSONObject jsonObject = JSONObject.parseObject(driverLicense); //1 String downloadUrl = null; try { downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } jsonObject.put("url", downloadUrl); qualificationAuditInfo.setDriverLicense(jsonObject.toJSONString()); } String trainingGraduationCertificate = qualificationAuditInfo.getTrainingGraduationCertificate(); if (trainingGraduationCertificate != null) { JSONObject jsonObject = JSONObject.parseObject(trainingGraduationCertificate); //1 String downloadUrl = null; try { downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } jsonObject.put("url", downloadUrl); qualificationAuditInfo.setTrainingGraduationCertificate(jsonObject.toJSONString()); } String idCardFront = qualificationAuditInfo.getIdCardFront(); if (idCardFront != null) { JSONObject jsonObject = JSONObject.parseObject(idCardFront); //1 String downloadUrl = null; try { downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } jsonObject.put("url", downloadUrl); qualificationAuditInfo.setIdCardFront(jsonObject.toJSONString()); } String idCardBack = qualificationAuditInfo.getIdCardBack(); if (idCardBack != null) { JSONObject jsonObject = JSONObject.parseObject(idCardBack); //1 String downloadUrl = null; try { downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } jsonObject.put("url", downloadUrl); qualificationAuditInfo.setIdCardBack(jsonObject.toJSONString()); } return qualificationAuditInfo; } }