feat(customer):新增管理端审核服务人员/机构的功能

This commit is contained in:
JIAN 2024-08-31 14:40:46 +08:00
parent 8c387f3649
commit 1b68988c9a
5 changed files with 168 additions and 6 deletions

View File

@ -1,13 +1,13 @@
package com.jzo2o.customer.controller.operation;
import com.jzo2o.common.expcetions.ForbiddenOperationException;
import com.jzo2o.common.model.PageResult;
import com.jzo2o.customer.enums.CertificationStatusEnum;
import com.jzo2o.customer.model.dto.request.AgencyCertificationAuditPageQueryReqDTO;
import com.jzo2o.customer.model.dto.response.AgencyCertificationAuditResDTO;
import com.jzo2o.customer.service.ICertificationAuditService;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@ -21,8 +21,29 @@ public class AgencyCertificationAuditController {
@Resource
private ICertificationAuditService certificationAuditService;
/**
* 分页查询机构认证的记录
*/
@GetMapping("/page")
public PageResult<AgencyCertificationAuditResDTO> page(AgencyCertificationAuditPageQueryReqDTO agencyCertificationAuditPageQueryReqDTO) {
return certificationAuditService.getAgencyCertificationInfo(agencyCertificationAuditPageQueryReqDTO);
}
/**
* 审核机构认证信息
* @param id 认证记录id
* @param certificationStatus 认证状态
* @param rejectReason 拒绝原因
*/
@PutMapping("/audit/{id}")
public void audit(@PathVariable Long id,
@RequestParam Integer certificationStatus,
@RequestParam(required = false) String rejectReason) {
if (certificationStatus != CertificationStatusEnum.SUCCESS.getStatus()
&& certificationStatus != CertificationStatusEnum.FAIL.getStatus()) {
throw new ForbiddenOperationException("更新的认证状态有误无法认证");
} else {
certificationAuditService.audit(id, certificationStatus, rejectReason);
}
}
}

View File

@ -1,13 +1,13 @@
package com.jzo2o.customer.controller.operation;
import com.jzo2o.common.expcetions.ForbiddenOperationException;
import com.jzo2o.common.model.PageResult;
import com.jzo2o.customer.enums.CertificationStatusEnum;
import com.jzo2o.customer.model.dto.request.WorkerCertificationAuditPageQueryReqDTO;
import com.jzo2o.customer.model.dto.response.WorkerCertificationAuditResDTO;
import com.jzo2o.customer.service.ICertificationAuditService;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@ -21,8 +21,29 @@ public class WorkerCertificationAuditController {
@Resource
private ICertificationAuditService certificationAuditService;
/**
* 分页查询服务人员认证的记录
*/
@GetMapping("/page")
public PageResult<WorkerCertificationAuditResDTO> page(WorkerCertificationAuditPageQueryReqDTO workerCertificationAuditPageQueryReqDTO) {
return certificationAuditService.getWorkerCertificationInfo(workerCertificationAuditPageQueryReqDTO);
}
/**
* 审核服务人员认证信息
* @param id 认证记录id
* @param certificationStatus 认证状态
* @param rejectReason 拒绝原因
*/
@PutMapping("/audit/{id}")
public void audit(@PathVariable Long id,
@RequestParam Integer certificationStatus,
@RequestParam(required = false) String rejectReason) {
if (certificationStatus != CertificationStatusEnum.SUCCESS.getStatus()
&& certificationStatus != CertificationStatusEnum.FAIL.getStatus()) {
throw new ForbiddenOperationException("更新的认证状态有误无法认证");
} else {
certificationAuditService.audit(id, certificationStatus, rejectReason);
}
}
}

View File

@ -0,0 +1,25 @@
package com.jzo2o.customer.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 审核状态枚举类
* @author JIAN
*/
@Getter
@AllArgsConstructor
public enum AuditStatusEnum {
UNAUDITED(0, "未审核"),
AUDITED(1, "已审核");
/**
* 状态值
*/
private final int status;
/**
* 描述
*/
private final String description;
}

View File

@ -44,4 +44,9 @@ public interface ICertificationAuditService extends IService<CertificationAudit>
* 获取机构端认证消息
*/
PageResult<AgencyCertificationAuditResDTO> getAgencyCertificationInfo(AgencyCertificationAuditPageQueryReqDTO pageQueryReqDTO);
/**
* 审核认证是否通过
*/
void audit(Long id, Integer certificationStatus, String rejectReason);
}

View File

@ -2,13 +2,17 @@ package com.jzo2o.customer.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension.toolkit.ChainWrappers;
import com.jzo2o.common.constants.UserType;
import com.jzo2o.common.expcetions.ForbiddenOperationException;
import com.jzo2o.common.model.CurrentUserInfo;
import com.jzo2o.common.model.PageResult;
import com.jzo2o.common.utils.CollUtils;
import com.jzo2o.common.utils.ObjectUtils;
import com.jzo2o.customer.enums.AuditStatusEnum;
import com.jzo2o.customer.enums.CertificationStatusEnum;
import com.jzo2o.customer.mapper.AgencyCertificationMapper;
import com.jzo2o.customer.mapper.CertificationAuditMapper;
@ -32,6 +36,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
/**
@ -184,4 +189,89 @@ public class CertificationAuditServiceImpl extends ServiceImpl<CertificationAudi
target.setLegalPersonIdCardNo(origin.getIdCardNo());
});
}
@Override
@Transactional
public void audit(Long id, Integer certificationStatus, String rejectReason) {
CertificationAudit certificationAudit = baseMapper.selectById(id);
if (ObjectUtils.isEmpty(certificationAudit)) {
throw new ForbiddenOperationException("认证记录不存在无法操作");
}
CurrentUserInfo currentUserInfo = UserContext.currentUser();
if (ObjectUtils.isEmpty(currentUserInfo) || ObjectUtils.isEmpty(currentUserInfo.getId())) {
throw new ForbiddenOperationException("无法获取当前用户信息");
}
// 准备公共更新部分
LocalDateTime now = LocalDateTime.now();
certificationAudit.setCertificationStatus(certificationStatus);
LambdaUpdateChainWrapper<CertificationAudit> updateChainWrapper = lambdaUpdate()
.eq(CertificationAudit::getId, id)
.set(CertificationAudit::getAuditStatus, AuditStatusEnum.AUDITED.getStatus())
.set(CertificationAudit::getAuditTime, now)
.set(CertificationAudit::getAuditorId, currentUserInfo.getId())
.set(CertificationAudit::getAuditorName, currentUserInfo.getName())
.set(CertificationAudit::getCertificationStatus, certificationStatus);
Long serveProviderId = certificationAudit.getServeProviderId();
if (certificationStatus == CertificationStatusEnum.FAIL.getStatus()) {
// 认证失败
updateChainWrapper
.set(CertificationAudit::getRejectReason, rejectReason)
.update();
if (certificationAudit.getServeProviderType() == UserType.WORKER) {
// 服务人员认证失败
workerCertificationMapper.updateById(WorkerCertification.builder()
.id(serveProviderId)
.certificationStatus(certificationStatus)
.certificationTime(now).build());
} else {
// 机构认证失败
agencyCertificationMapper.updateById(AgencyCertification.builder()
.id(serveProviderId)
.certificationStatus(certificationStatus)
.certificationTime(now).build());
}
} else {
// 认证成功
updateChainWrapper
.update();
String name;
if (certificationAudit.getServeProviderType() == UserType.WORKER) {
// 服务人员认证成功
workerCertificationMapper.updateById(WorkerCertification.builder()
.id(serveProviderId)
.name(certificationAudit.getName())
.idCardNo(certificationAudit.getIdCardNo())
.frontImg(certificationAudit.getFrontImg())
.backImg(certificationAudit.getBackImg())
.certificationMaterial(certificationAudit.getCertificationMaterial())
.certificationStatus(certificationStatus)
.certificationTime(now).build());
name = certificationAudit.getName();
} else {
// 机构认证成功
agencyCertificationMapper.updateById(AgencyCertification.builder()
.id(serveProviderId)
.name(certificationAudit.getInstitutionName())
.idNumber(certificationAudit.getIdNumber())
.legalPersonName(certificationAudit.getName())
.legalPersonIdCardNo(certificationAudit.getIdCardNo())
.businessLicense(certificationAudit.getBusinessLicense())
.certificationStatus(certificationStatus)
.certificationTime(now).build());
name = certificationAudit.getInstitutionName();
}
// 更新总表中的姓名/机构名称
ChainWrappers.lambdaUpdateChain(serveProviderMapper)
.eq(ServeProvider::getId, serveProviderId)
.set(ServeProvider::getName, name)
.update();
}
}
}