package com.xiaopeng.account.service.impl; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xiaopeng.account.mapper.SysRoleMapper; import com.xiaopeng.account.mapper.XpOperationsRoleMapper; import com.xiaopeng.account.mapper.XpOperationsUserMapper; 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.ISysRoleService; import com.xiaopeng.account.service.IXpQualificationAuditService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.api.model.account.SysRole; import com.xiaopeng.api.model.account.XpOperationsRole; import com.xiaopeng.api.model.account.XpOperationsUser; import com.xiaopeng.api.model.account.XpQualificationAudit; 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.evi.oss.service.AliOssService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; 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; @Override public PageInfo pageList(XpQualificationAuditQuery query) throws UnsupportedEncodingException { 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())); 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.setAuditRemarks(dto.getAuditRemarks()); } this.updateBatchById(qualificationAudits); } }