diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/entity/WithdrawAudit.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/entity/WithdrawAudit.java index 21dd359..3ffe099 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/entity/WithdrawAudit.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/entity/WithdrawAudit.java @@ -47,6 +47,12 @@ public class WithdrawAudit extends Entity { @ApiModelProperty("提现状态") private WithdrawAuditStatus status; + @ApiModelProperty("汇款状态") + private Boolean remitStatus; + + @ApiModelProperty("汇款凭证") + private String remitUrl; + @ApiModelProperty("第三方账号的信息") @TableField(typeHandler = JacksonTypeHandler.class) private Map extDetailsInfo; diff --git a/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/withdrawaudit/event/WithdrawAuditRemittedEvent.java b/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/withdrawaudit/event/WithdrawAuditRemittedEvent.java new file mode 100644 index 0000000..5c54d7f --- /dev/null +++ b/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/withdrawaudit/event/WithdrawAuditRemittedEvent.java @@ -0,0 +1,17 @@ +package com.qniao.dam.domian.aggregate.withdrawaudit.event; + + +import com.qniao.domain.BaseDomainEvent; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class WithdrawAuditRemittedEvent extends BaseDomainEvent { + + private Long id; + +} + diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/WithdrawAuditUserCommandController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/WithdrawAuditUserCommandController.java index a0fac06..0cc9ea1 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/WithdrawAuditUserCommandController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/WithdrawAuditUserCommandController.java @@ -5,6 +5,7 @@ import com.qniao.dam.api.command.paymentchannelorder.user.request.ThirdPartyFiel import com.qniao.dam.api.command.withdrawaudit.user.request.UserApplyWalletAccountWithdrawDto; import com.qniao.dam.api.command.withdrawaudit.user.request.UserAuditWithdrawAuditDto; import com.qniao.dam.api.command.withdrawaudit.user.request.UserCalculateWithdrawServiceFeeDto; +import com.qniao.dam.api.command.withdrawaudit.user.request.UserRemitWithdrawAuditDto; import com.qniao.dam.api.command.withdrawaudit.user.response.UserCalculateWithdrawServiceFeeVo; import com.qniao.dam.api.query.withdrawaudit.user.response.UserPageWithdrawAuditVo; import com.qniao.dam.application.service.withdrawaudit.WithdrawAuditApplicationService; @@ -55,6 +56,13 @@ public class WithdrawAuditUserCommandController { withdrawAuditApplicationService.audit(dto.trans2Domain()); } + @ApiOperation("提现申请汇款") + @PostMapping("remit/withdraw-audit") + public void userRemitWithdrawAudit(@RequestBody @Valid UserRemitWithdrawAuditDto dto, + @RequestParam("userId") Long userId) { + withdrawAuditApplicationService.remit(dto.trans2Domain()); + } + @PostMapping("calculate/withdraw-service-fee") @ApiOperation("用户计算提现手续费") public UserCalculateWithdrawServiceFeeVo userCalculateWithdrawServiceFee(UserCalculateWithdrawServiceFeeDto dto) { diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/request/UserRemitWithdrawAuditDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/request/UserRemitWithdrawAuditDto.java new file mode 100644 index 0000000..8fcf3f9 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/request/UserRemitWithdrawAuditDto.java @@ -0,0 +1,35 @@ +package com.qniao.dam.api.command.withdrawaudit.user.request; + +import cn.hutool.core.util.StrUtil; +import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit; +import com.qniao.dam.domian.aggregate.withdrawaudit.constant.WithdrawAuditStatus; +import com.qniao.domain.Trans2DomainAssembler; +import com.qniao.framework.exception.BizException; +import com.qniao.framework.utils.TypeConvertUtils; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class UserRemitWithdrawAuditDto implements Trans2DomainAssembler { + + @ApiModelProperty("唯一标识") + @NotNull(message = "唯一标识不能为空") + private Long id; + + @ApiModelProperty("汇款状态") + @NotNull(message = "汇款状态不能为空") + private Boolean remitStatus; + + @ApiModelProperty("汇款凭证") + private String remitUrl; + + @Override + public WithdrawAudit trans2Domain() { + if (remitStatus && StrUtil.isBlank(remitUrl)) { + throw new BizException("汇款凭证不能为空"); + } + return TypeConvertUtils.convert(this, WithdrawAudit.class); + } +} \ No newline at end of file diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/response/UserPageWithdrawAuditVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/response/UserPageWithdrawAuditVo.java index 9718456..a6dedcb 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/response/UserPageWithdrawAuditVo.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/response/UserPageWithdrawAuditVo.java @@ -55,6 +55,9 @@ public class UserPageWithdrawAuditVo { @ApiModelProperty("汇款状态") private Boolean remitStatus; + @ApiModelProperty("汇款凭证") + private String remitUrl; + @ApiModelProperty("申请时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime applyTime; diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/withdrawaudit/WithdrawAuditEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/withdrawaudit/WithdrawAuditEventHandler.java index 4820d2c..782cacd 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/withdrawaudit/WithdrawAuditEventHandler.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/withdrawaudit/WithdrawAuditEventHandler.java @@ -6,6 +6,7 @@ import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit; import com.qniao.dam.domian.aggregate.withdrawaudit.constant.WithdrawAuditStatus; import com.qniao.dam.domian.aggregate.withdrawaudit.event.WithdrawAuditAuditedEvent; +import com.qniao.dam.domian.aggregate.withdrawaudit.event.WithdrawAuditRemittedEvent; import com.qniao.dam.infrastructure.persistent.dao.domain.WithdrawAuditDao; import com.qniao.domain.BaseApplicationService; import lombok.extern.slf4j.Slf4j; @@ -26,9 +27,7 @@ public class WithdrawAuditEventHandler extends BaseApplicationService { private void handle(WithdrawAuditAuditedEvent event) { try { WithdrawAudit withdrawAudit = withdrawAuditDao.selectById(event.getId()); - if (WithdrawAuditStatus.PASS_VERIFICATION.equals(withdrawAudit.getStatus())) { - walletAccountApplicationService.confirmWithdraw(withdrawAudit.getWalletAccountId(), withdrawAudit.getWithdrawAmount()); - } else if (WithdrawAuditStatus.AUDIT_FAILURE.equals(withdrawAudit.getStatus())) { + if (WithdrawAuditStatus.AUDIT_FAILURE.equals(withdrawAudit.getStatus())) { walletAccountApplicationService.failWithdraw(withdrawAudit.getWalletAccountId(), withdrawAudit.getWithdrawAmount()); } } catch (Exception e) { @@ -36,4 +35,15 @@ public class WithdrawAuditEventHandler extends BaseApplicationService { } } + @Subscribe + private void handle(WithdrawAuditRemittedEvent event) { + try { + WithdrawAudit withdrawAudit = withdrawAuditDao.selectById(event.getId()); + if (withdrawAudit.getRemitStatus()) { + walletAccountApplicationService.confirmWithdraw(withdrawAudit.getWalletAccountId(), withdrawAudit.getWithdrawAmount()); + } + } catch (Exception e) { + log.error("提现申请审核事件处理异常", e); + } + } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/withdrawaudit/WithdrawAuditApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/withdrawaudit/WithdrawAuditApplicationService.java index 907552f..65e3394 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/withdrawaudit/WithdrawAuditApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/withdrawaudit/WithdrawAuditApplicationService.java @@ -96,6 +96,24 @@ public class WithdrawAuditApplicationService extends BaseApplicationService { } } + public void remit(WithdrawAudit withdrawAudit) { + WithdrawAudit existWithdrawAudit = withdrawAuditDao.selectById(withdrawAudit.getId()); + if (Objects.nonNull(existWithdrawAudit)) { + //未汇款 + if (!existWithdrawAudit.getRemitStatus()) { + if (withdrawAudit.getRemitStatus() && WithdrawAuditStatus.PASS_VERIFICATION.equals(existWithdrawAudit.getStatus())) { + //同意汇款 + BaseDomainEvent event = withdrawAuditAggregate.remit(withdrawAudit); + this.sendEvent(event); + } else if (!withdrawAudit.getRemitStatus()) { + //驳回 + withdrawAudit.setStatus(WithdrawAuditStatus.TO_BE_REVIEWED); + withdrawAuditAggregate.remit(withdrawAudit); + } + } + } + } + public UserCalculateWithdrawServiceFeeVo calculateServiceFee(BigDecimal withdrawAmount, WithdrawTypeEnum withdrawType) { UserCalculateWithdrawServiceFeeVo serviceFeeVo = new UserCalculateWithdrawServiceFeeVo(); diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/WithdrawAuditAggregate.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/WithdrawAuditAggregate.java index bc21999..b96af62 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/WithdrawAuditAggregate.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/WithdrawAuditAggregate.java @@ -4,6 +4,7 @@ import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit; import com.qniao.dam.domain.aggregate.withdrawaudit.repository.WithdrawAuditRepository; import com.qniao.dam.domian.aggregate.withdrawaudit.constant.WithdrawAuditStatus; import com.qniao.dam.domian.aggregate.withdrawaudit.event.WithdrawAuditAuditedEvent; +import com.qniao.dam.domian.aggregate.withdrawaudit.event.WithdrawAuditRemittedEvent; import com.qniao.domain.BaseDomainEvent; import com.qniao.framework.utils.TypeConvertUtils; import org.springframework.stereotype.Service; @@ -25,4 +26,9 @@ public class WithdrawAuditAggregate { withdrawAuditRepository.save(withdrawAudit); return TypeConvertUtils.convert(withdrawAudit, WithdrawAuditAuditedEvent.class); } + + public BaseDomainEvent remit(WithdrawAudit withdrawAudit) { + withdrawAuditRepository.save(withdrawAudit); + return TypeConvertUtils.convert(withdrawAudit, WithdrawAuditRemittedEvent.class); + } } diff --git a/dating-agency-mall-server/src/main/resources/mapper/withdrawaudit/WithdrawAuditViewMapper.xml b/dating-agency-mall-server/src/main/resources/mapper/withdrawaudit/WithdrawAuditViewMapper.xml index 12198a5..0e15bd9 100644 --- a/dating-agency-mall-server/src/main/resources/mapper/withdrawaudit/WithdrawAuditViewMapper.xml +++ b/dating-agency-mall-server/src/main/resources/mapper/withdrawaudit/WithdrawAuditViewMapper.xml @@ -21,6 +21,7 @@ dwa.arrival_amount, dwa.`status`, dwa.`remit_status`, + dwa.remit_url, dwa.`create_time` as applyTime, dwa.withdraw_type, dwa.ext_details_info