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 a1feb2c..3a18ff9 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 @@ -4,6 +4,7 @@ package com.qniao.dam.domain.aggregate.withdrawaudit.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; import com.qniao.dam.domian.aggregate.withdrawaudit.constant.WithdrawAuditStatus; import com.qniao.dam.domian.aggregate.withdrawaudit.constant.WithdrawTypeEnum; import com.qniao.domain.Entity; @@ -19,11 +20,17 @@ import java.util.Map; @TableName("da_withdraw_audit") public class WithdrawAudit extends Entity { + @ApiModelProperty("钱包账号标识") + private Long walletAccountId; + @ApiModelProperty("用户唯一标识") private Long walletAccountUserId; - @ApiModelProperty("钱包账号标识") - private Long walletAccountId; + @ApiModelProperty("组织唯一标识") + private Long walletAccountOrgId; + + @ApiModelProperty("身份类型(个人、组织)") + private IdentityTypeEnum identityType; @ApiModelProperty("提现金额") private BigDecimal withdrawAmount; 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 39b36f3..cfbcb47 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 @@ -6,6 +6,8 @@ import com.qniao.dam.api.command.withdrawaudit.user.request.UserApplyWalletAccou import com.qniao.dam.api.command.withdrawaudit.user.request.UserAuditWithdrawAuditDto; import com.qniao.dam.application.service.withdrawaudit.WithdrawAuditApplicationService; import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit; +import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; +import com.qniao.dau.infrastructure.constant.RequestHeaderFields; import com.qniao.framework.utils.ServletUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -14,6 +16,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; +import java.util.Objects; @RestController @RequestMapping("user") @@ -26,12 +29,19 @@ public class WithdrawAuditUserCommandController { @ApiOperation("用户发起提现申请") @PostMapping("apply/wallet-account/withdraw") public void userApplyWalletAccountWithdraw(@RequestBody @Valid UserApplyWalletAccountWithdrawDto dto, - @RequestParam("userId") Long userId) { + @RequestParam("userId") Long userId, + @RequestHeader(name = RequestHeaderFields.FIELD_ORGANIZATION_ID, required = false) Long orgId) { Long appId = Long.valueOf(ServletUtils.getAppId()); WithdrawAudit withdrawAudit = dto.trans2Domain(); - withdrawAudit.setWalletAccountUserId(userId); + if (Objects.nonNull(orgId)) { + withdrawAudit.setIdentityType(IdentityTypeEnum.ORGANIZATION); + withdrawAudit.setWalletAccountOrgId(orgId); + } else { + withdrawAudit.setIdentityType(IdentityTypeEnum.INDIVIDUAL); + withdrawAudit.setWalletAccountUserId(userId); + } List fieldList = ThirdPartyFieldAssembler.from(dto.getThirdPartyFields()); - withdrawAuditApplicationService.applyWithdraw(withdrawAudit,fieldList,appId); + withdrawAuditApplicationService.applyWithdraw(withdrawAudit, fieldList, appId); } @ApiOperation("审核提现申请") 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 9f246c7..dc12345 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 @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; import com.qniao.dam.domian.aggregate.withdrawaudit.constant.WithdrawAuditStatus; import com.qniao.dam.domian.aggregate.withdrawaudit.constant.WithdrawTypeEnum; import io.swagger.annotations.ApiModelProperty; @@ -25,6 +26,13 @@ public class UserPageWithdrawAuditVo { @JsonSerialize(using = ToStringSerializer.class) private Long walletAccountUserId; + @ApiModelProperty("组织唯一标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long walletAccountOrgId; + + @ApiModelProperty("身份类型(个人、组织)") + private IdentityTypeEnum identityType; + @ApiModelProperty("钱包用户名称") private String walletAccountUserName; 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 320e3b1..2421606 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 @@ -38,8 +38,9 @@ public class WithdrawAuditApplicationService extends BaseApplicationService { public void applyWithdraw(WithdrawAudit withdrawAudit, List fieldList, Long appId) { - synchronized (withdrawAudit.getWalletAccountUserId().toString().intern()) { - WalletAccount walletAccount = walletAccountQueryService.queryByUserId(withdrawAudit.getWalletAccountUserId()); + Long identityId = Objects.nonNull(withdrawAudit.getWalletAccountOrgId()) ? withdrawAudit.getWalletAccountOrgId() : withdrawAudit.getWalletAccountUserId(); + synchronized (identityId.toString().intern()) { + WalletAccount walletAccount = walletAccountQueryService.queryByType(identityId, withdrawAudit.getIdentityType()); if (Objects.isNull(walletAccount) || withdrawAudit.getWithdrawAmount().compareTo(walletAccount.getAvailableBalance()) > 0) { throw new BizException("超出可提现金额"); }