| | |
| | | import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmCategoryDO; |
| | | import cn.iocoder.yudao.module.bpm.service.definition.BpmCategoryService; |
| | | import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessDefinitionService; |
| | | import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import cn.iocoder.yudao.module.system.api.storage.StorageAttachmentApi; |
| | | import cn.iocoder.yudao.module.ums.controller.admin.application.vo.UmsApplicationPageReqVO; |
| | | import cn.iocoder.yudao.module.ums.controller.admin.application.vo.UmsApplicationSaveReqVO; |
| | |
| | | |
| | | @Resource |
| | | private UmsMemberService memberService; |
| | | @Resource private BpmTaskService bpmTaskService; |
| | | |
| | | @Override |
| | | public boolean canConfirmFee(Long id, Long userId) { |
| | | UmsApplicationDO application = validateApplicationExists(id); |
| | | return userId != null && UmsApplicationStatusEnum.APPROVING.getStatus().equals(application.getStatus()) |
| | | && StrUtil.isNotBlank(application.getProcessInstanceId()) |
| | | && bpmTaskService.getTodoTask(userId, null, application.getProcessInstanceId()) != null; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void confirmFee(Long id, Long userId, boolean feePaid) { |
| | | if (!canConfirmFee(id, userId)) throw exception(APPLICATION_FEE_CONFIRM_FORBIDDEN); |
| | | int updated = applicationMapper.update(null, new LambdaUpdateWrapper<UmsApplicationDO>() |
| | | .eq(UmsApplicationDO::getId, id) |
| | | .eq(UmsApplicationDO::getStatus, UmsApplicationStatusEnum.APPROVING.getStatus()) |
| | | .set(UmsApplicationDO::getFeePaid, feePaid)); |
| | | if (updated != 1) throw exception(APPLICATION_SUBMIT_FAIL_STATUS); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void deleteApplication(Long id) { |
| | | UmsApplicationDO application = validateApplicationExists(id); |
| | | if (StrUtil.isNotBlank(application.getWxcpOpenid())) { |
| | | throw exception(APPLICATION_WXCP_DELETE_FORBIDDEN); |
| | | } |
| | | if (!UmsApplicationStatusEnum.DRAFT.getStatus().equals(application.getStatus())) { |
| | | throw exception(APPLICATION_DELETE_FAIL_NOT_DRAFT, application.getNo()); |
| | | } |
| | |
| | | if (!UmsApplicationStatusEnum.DRAFT.getStatus().equals(status) |
| | | && !UmsApplicationStatusEnum.REJECTED.getStatus().equals(status)) { |
| | | throw exception(APPLICATION_SUBMIT_FAIL_STATUS); |
| | | } |
| | | if (application.getFeePaid() == null) { |
| | | throw exception(APPLICATION_FEE_CONFIRM_REQUIRED); |
| | | } |
| | | if (StrUtil.isBlank(application.getMemberGrade()) |
| | | || (StrUtil.isBlank(application.getContactPhone()) && StrUtil.isBlank(application.getWxcpOpenid())) |
| | | || (StrUtil.isNotBlank(application.getContactPhone()) |
| | | && !application.getContactPhone().trim().matches("^1[3-9]\\d{9}$"))) { |
| | | throw exception(APPLICATION_WXCP_INFO_REQUIRED); |
| | | } |
| | | |
| | | String processInstanceId = processInstanceApi.createProcessInstance(getLoginUserId(), |
| | |
| | | |
| | | Integer newStatus = convertBpmResultToStatus(bpmResult); |
| | | if (newStatus != null) { |
| | | if (UmsApplicationStatusEnum.APPROVED.getStatus().equals(newStatus) && application.getFeePaid() == null) { |
| | | throw exception(APPLICATION_FEE_CONFIRM_REQUIRED); |
| | | } |
| | | applicationMapper.updateById(new UmsApplicationDO() |
| | | .setId(id).setStatus(newStatus)); |
| | | if (UmsApplicationStatusEnum.APPROVED.getStatus().equals(newStatus)) { |
| | | memberService.createMemberFromApplication(application); |
| | | } |
| | | } |
| | | } |
| | | |