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;
|
|
/**
|
* <p>
|
* 运维人员资质证书审核记录 服务实现类
|
* </p>
|
*
|
* @author mitao
|
* @since 2026-02-03
|
*/
|
@Service
|
public class XpQualificationAuditServiceImpl extends ServiceImpl<XpQualificationAuditMapper, XpQualificationAudit> 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<XpQualificationAuditVO> pageList(XpQualificationAuditQuery query) throws UnsupportedEncodingException {
|
LoginUser loginUser = tokenService.getLoginUser();
|
query.setPhoneNumberQueryValues(SensitiveDataCryptoUtil.queryValues(query.getPhoneNumber()));
|
PageInfo<XpQualificationAuditVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
|
List<XpQualificationAuditVO> list = this.baseMapper.pageList(pageInfo, query);
|
if (CollectionUtils.isEmpty(list)) {
|
return pageInfo;
|
}
|
|
// 查询角色名称
|
List<Long> operationsUserIds = list.stream().map(XpQualificationAuditVO::getOperationsUserId).collect(Collectors.toList());
|
|
// 查询用户信息
|
List<XpOperationsRole> xpOperationsRoles = xpOperationsRoleMapper.selectList(Wrappers.lambdaQuery(XpOperationsRole.class)
|
.in(XpOperationsRole::getOperationsUserId, operationsUserIds));
|
|
if (!CollectionUtils.isEmpty(xpOperationsRoles)) {
|
List<Long> roleIds = xpOperationsRoles.stream().map(XpOperationsRole::getRoleId).collect(Collectors.toList());
|
// 查询列表关联的所有角色
|
List<SysRole> sysRoles = sysRoleMapper.selectList(Wrappers.lambdaQuery(SysRole.class)
|
.in(SysRole::getId, roleIds));
|
if (!CollectionUtils.isEmpty(sysRoles)) {
|
|
// 角色匹配账号id
|
Map<Long, List<SysRole>> map = new HashMap<>();
|
for (XpOperationsRole xpOperationsRole : xpOperationsRoles) {
|
List<SysRole> sysRoleList = sysRoles.stream().filter(sysRole -> sysRole.getId().equals(xpOperationsRole.getRoleId())).collect(Collectors.toList());
|
map.put(xpOperationsRole.getOperationsUserId(), sysRoleList);
|
}
|
|
// 角色名称匹配
|
for (XpQualificationAuditVO xpQualificationAuditVO : list) {
|
List<SysRole> 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()));
|
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<XpQualificationAudit> 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);
|
}
|
}
|