package com.yau.digitalrmb.institutionidentity.application; import com.yau.digitalrmb.institutionidentity.domain.InstitutionIdentifierApplication; import com.yau.digitalrmb.institutionidentity.domain.InstitutionIdentifierRepository; import com.yau.digitalrmb.shared.api.ErrorCode; import com.yau.digitalrmb.shared.exception.BusinessException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; @Service public class IssuedInstitutionIdentifierQueryService { @Resource private InstitutionIdentifierRepository repository; @Transactional(readOnly = true) public IssuedInstitutionIdentifierResult requireIssued(long applicationId, InstitutionKeySubject subject) { InstitutionIdentifierApplication application = repository.findByIdAndSubject(applicationId, subject.getUserId(), subject.getSchoolId(), subject.getClassId()).orElseThrow(() -> new BusinessException(ErrorCode.RESOURCE_NOT_FOUND, "当前实训主体下的机构标识申请不存在")); if (application.getStatus() != InstitutionIdentifierApplication.Status.FEEDBACKED) { throw new BusinessException(ErrorCode.VALIDATION_ERROR, "机构标识尚未反馈到商业银行端,不能发起货币生成请求,当前状态:" + application.getStatus().name()); } return new IssuedInstitutionIdentifierResult(applicationId, application.getInstitutionIdentifier(), application.getDigest()); } }