Browse Source

银行卡

master
张彭杰 1 year ago
parent
commit
67edefa0f7
9 changed files with 107 additions and 3 deletions
  1. 6
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/entity/WithdrawAudit.java
  2. 17
      dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/withdrawaudit/event/WithdrawAuditRemittedEvent.java
  3. 8
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/WithdrawAuditUserCommandController.java
  4. 35
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/request/UserRemitWithdrawAuditDto.java
  5. 3
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/response/UserPageWithdrawAuditVo.java
  6. 16
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/withdrawaudit/WithdrawAuditEventHandler.java
  7. 18
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/withdrawaudit/WithdrawAuditApplicationService.java
  8. 6
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/WithdrawAuditAggregate.java
  9. 1
      dating-agency-mall-server/src/main/resources/mapper/withdrawaudit/WithdrawAuditViewMapper.xml

6
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<WithdrawAudit> {
@ApiModelProperty("提现状态") @ApiModelProperty("提现状态")
private WithdrawAuditStatus status; private WithdrawAuditStatus status;
@ApiModelProperty("汇款状态")
private Boolean remitStatus;
@ApiModelProperty("汇款凭证")
private String remitUrl;
@ApiModelProperty("第三方账号的信息") @ApiModelProperty("第三方账号的信息")
@TableField(typeHandler = JacksonTypeHandler.class) @TableField(typeHandler = JacksonTypeHandler.class)
private Map<String, String> extDetailsInfo; private Map<String, String> extDetailsInfo;

17
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;
}

8
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.UserApplyWalletAccountWithdrawDto;
import com.qniao.dam.api.command.withdrawaudit.user.request.UserAuditWithdrawAuditDto; 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.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.command.withdrawaudit.user.response.UserCalculateWithdrawServiceFeeVo;
import com.qniao.dam.api.query.withdrawaudit.user.response.UserPageWithdrawAuditVo; import com.qniao.dam.api.query.withdrawaudit.user.response.UserPageWithdrawAuditVo;
import com.qniao.dam.application.service.withdrawaudit.WithdrawAuditApplicationService; import com.qniao.dam.application.service.withdrawaudit.WithdrawAuditApplicationService;
@ -55,6 +56,13 @@ public class WithdrawAuditUserCommandController {
withdrawAuditApplicationService.audit(dto.trans2Domain()); 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") @PostMapping("calculate/withdraw-service-fee")
@ApiOperation("用户计算提现手续费") @ApiOperation("用户计算提现手续费")
public UserCalculateWithdrawServiceFeeVo userCalculateWithdrawServiceFee(UserCalculateWithdrawServiceFeeDto dto) { public UserCalculateWithdrawServiceFeeVo userCalculateWithdrawServiceFee(UserCalculateWithdrawServiceFeeDto dto) {

35
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<WithdrawAudit> {
@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);
}
}

3
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("汇款状态") @ApiModelProperty("汇款状态")
private Boolean remitStatus; private Boolean remitStatus;
@ApiModelProperty("汇款凭证")
private String remitUrl;
@ApiModelProperty("申请时间") @ApiModelProperty("申请时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime applyTime; private LocalDateTime applyTime;

16
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.domain.aggregate.withdrawaudit.entity.WithdrawAudit;
import com.qniao.dam.domian.aggregate.withdrawaudit.constant.WithdrawAuditStatus; 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.WithdrawAuditAuditedEvent;
import com.qniao.dam.domian.aggregate.withdrawaudit.event.WithdrawAuditRemittedEvent;
import com.qniao.dam.infrastructure.persistent.dao.domain.WithdrawAuditDao; import com.qniao.dam.infrastructure.persistent.dao.domain.WithdrawAuditDao;
import com.qniao.domain.BaseApplicationService; import com.qniao.domain.BaseApplicationService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -26,9 +27,7 @@ public class WithdrawAuditEventHandler extends BaseApplicationService {
private void handle(WithdrawAuditAuditedEvent event) { private void handle(WithdrawAuditAuditedEvent event) {
try { try {
WithdrawAudit withdrawAudit = withdrawAuditDao.selectById(event.getId()); 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()); walletAccountApplicationService.failWithdraw(withdrawAudit.getWalletAccountId(), withdrawAudit.getWithdrawAmount());
} }
} catch (Exception e) { } 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);
}
}
} }

18
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, public UserCalculateWithdrawServiceFeeVo calculateServiceFee(BigDecimal withdrawAmount,
WithdrawTypeEnum withdrawType) { WithdrawTypeEnum withdrawType) {
UserCalculateWithdrawServiceFeeVo serviceFeeVo = new UserCalculateWithdrawServiceFeeVo(); UserCalculateWithdrawServiceFeeVo serviceFeeVo = new UserCalculateWithdrawServiceFeeVo();

6
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.domain.aggregate.withdrawaudit.repository.WithdrawAuditRepository;
import com.qniao.dam.domian.aggregate.withdrawaudit.constant.WithdrawAuditStatus; 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.WithdrawAuditAuditedEvent;
import com.qniao.dam.domian.aggregate.withdrawaudit.event.WithdrawAuditRemittedEvent;
import com.qniao.domain.BaseDomainEvent; import com.qniao.domain.BaseDomainEvent;
import com.qniao.framework.utils.TypeConvertUtils; import com.qniao.framework.utils.TypeConvertUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -25,4 +26,9 @@ public class WithdrawAuditAggregate {
withdrawAuditRepository.save(withdrawAudit); withdrawAuditRepository.save(withdrawAudit);
return TypeConvertUtils.convert(withdrawAudit, WithdrawAuditAuditedEvent.class); return TypeConvertUtils.convert(withdrawAudit, WithdrawAuditAuditedEvent.class);
} }
public BaseDomainEvent remit(WithdrawAudit withdrawAudit) {
withdrawAuditRepository.save(withdrawAudit);
return TypeConvertUtils.convert(withdrawAudit, WithdrawAuditRemittedEvent.class);
}
} }

1
dating-agency-mall-server/src/main/resources/mapper/withdrawaudit/WithdrawAuditViewMapper.xml

@ -21,6 +21,7 @@
dwa.arrival_amount, dwa.arrival_amount,
dwa.`status`, dwa.`status`,
dwa.`remit_status`, dwa.`remit_status`,
dwa.remit_url,
dwa.`create_time` as applyTime, dwa.`create_time` as applyTime,
dwa.withdraw_type, dwa.withdraw_type,
dwa.ext_details_info dwa.ext_details_info

Loading…
Cancel
Save