Browse Source

悬赏招亲

master
张彭杰 1 year ago
parent
commit
c2b2202e9a
6 changed files with 88 additions and 3 deletions
  1. 38
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/withdrawaudit/constant/WithdrawTypeEnum.java
  2. 11
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/entity/WithdrawAudit.java
  3. 8
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/WithdrawAuditUserCommandController.java
  4. 11
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/request/UserApplyWalletAccountWithdrawDto.java
  5. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java
  6. 21
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/withdrawaudit/WithdrawAuditApplicationService.java

38
dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/withdrawaudit/constant/WithdrawTypeEnum.java

@ -0,0 +1,38 @@
package com.qniao.dam.domian.aggregate.withdrawaudit.constant;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;
@Getter
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum WithdrawTypeEnum {
OFFLINE(1, "线下"),
WECHAT(2, "微信");
@EnumValue
@JsonValue
private final Integer value;
private final String desc;
WithdrawTypeEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
@JsonCreator
public static WithdrawTypeEnum get(Integer v) {
for (WithdrawTypeEnum e : WithdrawTypeEnum.values()) {
if (e.getValue().equals(v)) {
return e;
}
}
return null;
}
}

11
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/entity/WithdrawAudit.java

@ -1,14 +1,18 @@
package com.qniao.dam.domain.aggregate.withdrawaudit.entity; package com.qniao.dam.domain.aggregate.withdrawaudit.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
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.constant.WithdrawTypeEnum;
import com.qniao.domain.Entity; import com.qniao.domain.Entity;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Map;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ -24,6 +28,13 @@ public class WithdrawAudit extends Entity<WithdrawAudit> {
@ApiModelProperty("提现金额") @ApiModelProperty("提现金额")
private BigDecimal withdrawAmount; private BigDecimal withdrawAmount;
@ApiModelProperty("提现类型")
private WithdrawTypeEnum withdrawType;
@ApiModelProperty("提现状态") @ApiModelProperty("提现状态")
private WithdrawAuditStatus status; private WithdrawAuditStatus status;
@ApiModelProperty("第三方账号的信息")
@TableField(typeHandler = JacksonTypeHandler.class)
private Map<String, String> extDetailsInfo;
} }

8
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/WithdrawAuditUserCommandController.java

@ -1,15 +1,19 @@
package com.qniao.dam.api.command.withdrawaudit.user; package com.qniao.dam.api.command.withdrawaudit.user;
import com.qniao.dam.api.command.paymentchannelorder.user.assembler.ThirdPartyFieldAssembler;
import com.qniao.dam.api.command.paymentchannelorder.user.request.ThirdPartyField;
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.application.service.withdrawaudit.WithdrawAuditApplicationService; import com.qniao.dam.application.service.withdrawaudit.WithdrawAuditApplicationService;
import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit; import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit;
import com.qniao.framework.utils.ServletUtils;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.List;
@RestController @RestController
@RequestMapping("user") @RequestMapping("user")
@ -23,9 +27,11 @@ public class WithdrawAuditUserCommandController {
@PostMapping("apply/wallet-account/withdraw") @PostMapping("apply/wallet-account/withdraw")
public void userApplyWalletAccountWithdraw(@RequestBody @Valid UserApplyWalletAccountWithdrawDto dto, public void userApplyWalletAccountWithdraw(@RequestBody @Valid UserApplyWalletAccountWithdrawDto dto,
@RequestParam("userId") Long userId) { @RequestParam("userId") Long userId) {
Long appId = Long.valueOf(ServletUtils.getAppId());
WithdrawAudit withdrawAudit = dto.trans2Domain(); WithdrawAudit withdrawAudit = dto.trans2Domain();
withdrawAudit.setWalletAccountUserId(userId); withdrawAudit.setWalletAccountUserId(userId);
withdrawAuditApplicationService.applyWithdraw(withdrawAudit);
List<ThirdPartyField> fieldList = ThirdPartyFieldAssembler.from(dto.getThirdPartyFields());
withdrawAuditApplicationService.applyWithdraw(withdrawAudit,fieldList,appId);
} }
@ApiOperation("审核提现申请") @ApiOperation("审核提现申请")

11
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/request/UserApplyWalletAccountWithdrawDto.java

@ -1,6 +1,9 @@
package com.qniao.dam.api.command.withdrawaudit.user.request; package com.qniao.dam.api.command.withdrawaudit.user.request;
import com.qniao.dam.api.command.paymentchannelorder.user.request.ThirdPartyFieldDto;
import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit; import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit;
import com.qniao.dam.domian.aggregate.paymentorder.constant.PaymentMethodEnum;
import com.qniao.dam.domian.aggregate.withdrawaudit.constant.WithdrawTypeEnum;
import com.qniao.domain.Trans2DomainAssembler; import com.qniao.domain.Trans2DomainAssembler;
import com.qniao.framework.utils.TypeConvertUtils; import com.qniao.framework.utils.TypeConvertUtils;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
@ -9,6 +12,7 @@ import lombok.Data;
import javax.validation.constraints.DecimalMin; import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
@Data @Data
public class UserApplyWalletAccountWithdrawDto implements Trans2DomainAssembler<WithdrawAudit> { public class UserApplyWalletAccountWithdrawDto implements Trans2DomainAssembler<WithdrawAudit> {
@ -18,6 +22,13 @@ public class UserApplyWalletAccountWithdrawDto implements Trans2DomainAssembler<
@DecimalMin(value = "0.01", message = "提现金额不等低于0.01") @DecimalMin(value = "0.01", message = "提现金额不等低于0.01")
private BigDecimal withdrawAmount; private BigDecimal withdrawAmount;
@ApiModelProperty("提现类型")
@NotNull(message = "提现类型不能为空")
private WithdrawTypeEnum withdrawType;
@ApiModelProperty("第三方字段")
private List<ThirdPartyFieldDto> thirdPartyFields;
@Override @Override
public WithdrawAudit trans2Domain() { public WithdrawAudit trans2Domain() {
return TypeConvertUtils.convert(this, WithdrawAudit.class); return TypeConvertUtils.convert(this, WithdrawAudit.class);

2
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java

@ -140,7 +140,7 @@ public class RewardApplicationService {
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包信息 //钱包信息
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getStoreOrgId(), IdentityTypeEnum.ORGANIZATION);
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION);
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true); WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true);

21
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/withdrawaudit/WithdrawAuditApplicationService.java

@ -1,18 +1,27 @@
package com.qniao.dam.application.service.withdrawaudit; package com.qniao.dam.application.service.withdrawaudit;
import com.qniao.dam.api.command.paymentchannelorder.user.request.ThirdPartyField;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import com.qniao.dam.domain.aggregate.withdrawaudit.WithdrawAuditAggregate; import com.qniao.dam.domain.aggregate.withdrawaudit.WithdrawAuditAggregate;
import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit; import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit;
import com.qniao.dam.domain.service.withdrawaudit.ApplyWithdrawAuditDomainService; import com.qniao.dam.domain.service.withdrawaudit.ApplyWithdrawAuditDomainService;
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.constant.WithdrawTypeEnum;
import com.qniao.dam.infrastructure.persistent.dao.domain.WithdrawAuditDao; import com.qniao.dam.infrastructure.persistent.dao.domain.WithdrawAuditDao;
import com.qniao.dam.query.thirdoauthconfig.ThirdOauthConfigQueryService;
import com.qniao.dam.query.walletaccount.WalletAccountQueryService; import com.qniao.dam.query.walletaccount.WalletAccountQueryService;
import com.qniao.dau.application.UecServerApplicationService;
import com.qniao.dau.application.request.GetWechatSessionDto;
import com.qniao.dau.application.response.WeChatAppletUserSessionVo;
import com.qniao.dau.domain.aggregate.thirdoauthconfig.valueobj.ThirdOauthConfig;
import com.qniao.dau.domian.aggregate.authorization.constant.OAuthPlatformEnum;
import com.qniao.domain.BaseApplicationService; import com.qniao.domain.BaseApplicationService;
import com.qniao.domain.BaseDomainEvent; import com.qniao.domain.BaseDomainEvent;
import com.qniao.framework.exception.BizException; import com.qniao.framework.exception.BizException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
import java.util.Objects; import java.util.Objects;
@Service @Service
@ -25,14 +34,24 @@ public class WithdrawAuditApplicationService extends BaseApplicationService {
private WithdrawAuditAggregate withdrawAuditAggregate; private WithdrawAuditAggregate withdrawAuditAggregate;
@Resource @Resource
private WithdrawAuditDao withdrawAuditDao; private WithdrawAuditDao withdrawAuditDao;
@Resource
private ThirdOauthConfigQueryService thirdOauthConfigQueryService;
@Resource
private UecServerApplicationService uecServerApplicationService;
public void applyWithdraw(WithdrawAudit withdrawAudit) {
public void applyWithdraw(WithdrawAudit withdrawAudit, List<ThirdPartyField> fieldList, Long appId) {
synchronized (withdrawAudit.getWalletAccountUserId().toString().intern()) { synchronized (withdrawAudit.getWalletAccountUserId().toString().intern()) {
WalletAccount walletAccount = walletAccountQueryService.queryByUserId(withdrawAudit.getWalletAccountUserId()); WalletAccount walletAccount = walletAccountQueryService.queryByUserId(withdrawAudit.getWalletAccountUserId());
if (Objects.isNull(walletAccount) || withdrawAudit.getWithdrawAmount().compareTo(walletAccount.getAvailableBalance()) > 0) { if (Objects.isNull(walletAccount) || withdrawAudit.getWithdrawAmount().compareTo(walletAccount.getAvailableBalance()) > 0) {
throw new BizException("超出可提现金额"); throw new BizException("超出可提现金额");
} }
//todo 改成策略模式
if (WithdrawTypeEnum.WECHAT.equals(withdrawAudit.getWithdrawType())) {
String jsCode = ThirdPartyField.findFiledValueByKey(ThirdPartyField.JS_CODE, fieldList);
GetWechatSessionDto sessionDto = new GetWechatSessionDto(jsCode, appId);
WeChatAppletUserSessionVo sessionVo = uecServerApplicationService.getWechatSession(sessionDto);
}
withdrawAudit.setWalletAccountId(walletAccount.getId()); withdrawAudit.setWalletAccountId(walletAccount.getId());
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().subtract(withdrawAudit.getWithdrawAmount())); walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().subtract(withdrawAudit.getWithdrawAmount()));
walletAccount.setFrozenBalance(walletAccount.getFrozenBalance().add(withdrawAudit.getWithdrawAmount())); walletAccount.setFrozenBalance(walletAccount.getFrozenBalance().add(withdrawAudit.getWithdrawAmount()));

Loading…
Cancel
Save