Browse Source

基础配置

master
张彭杰 1 year ago
parent
commit
886c982dd5
11 changed files with 188 additions and 12 deletions
  1. 42
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/withdrawaudit/constant/WithdrawAuditStatus.java
  2. 11
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/entity/WithdrawAudit.java
  3. 9
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/WithdrawAuditUserCommandController.java
  4. 9
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/request/UserApplyWalletAccountWithdrawDto.java
  5. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/walletaccount/WalletAccountApplicationService.java
  6. 32
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/withdrawaudit/WithdrawAuditApplicationService.java
  7. 20
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/WithdrawAuditAggregate.java
  8. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/repository/WithdrawAuditRepository.java
  9. 25
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/withdrawaudit/ApplyWithdrawAuditDomainService.java
  10. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/WithdrawAuditDao.java
  11. 31
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/WithdrawAuditRepositoryImpl.java

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

@ -0,0 +1,42 @@
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 WithdrawAuditStatus {
TO_BE_REVIEWED(1,"待审核"),
PASS_VERIFICATION(2,"审核通过"),
AUDIT_FAILURE(3,"审核失败");
@EnumValue
@JsonValue
private final Integer value;
private final String desc;
WithdrawAuditStatus(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
@JsonCreator
public static WithdrawAuditStatus get(Integer v) {
for (WithdrawAuditStatus e : WithdrawAuditStatus.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

@ -2,19 +2,28 @@ package com.qniao.dam.domain.aggregate.withdrawaudit.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.dam.domian.aggregate.withdrawaudit.constant.WithdrawAuditStatus;
import com.qniao.domain.Entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("da_withdraw_audit")
public class WithdrawAudit extends Entity<WithdrawAudit> {
@ApiModelProperty("用户唯一标识")
private Long userId;
private Long walletAccountUserId;
@ApiModelProperty("钱包账号标识")
private Long walletAccountId;
@ApiModelProperty("提现金额")
private BigDecimal withdrawAmount;
@ApiModelProperty("提现状态")
private WithdrawAuditStatus status;
}

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

@ -1,7 +1,8 @@
package com.qniao.dam.api.command.withdrawaudit.user;
import com.qniao.dam.api.command.withdrawaudit.user.request.UserApplyWalletAccountWithdrawDto;
import com.qniao.dam.application.service.walletaccount.WalletAccountApplicationService;
import com.qniao.dam.application.service.withdrawaudit.WithdrawAuditApplicationService;
import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
@ -15,13 +16,15 @@ import javax.validation.Valid;
public class WithdrawAuditUserCommandController {
@Resource
private WalletAccountApplicationService walletAccountApplicationService;
private WithdrawAuditApplicationService withdrawAuditApplicationService;
@ApiOperation("用户发起提现申请")
@PostMapping("apply/wallet-account/withdraw")
public void userApplyWalletAccountWithdraw(@RequestBody @Valid UserApplyWalletAccountWithdrawDto dto,
@RequestParam("userId") Long userId) {
//return walletAccountApplicationService.applyWithdraw(dto);
WithdrawAudit withdrawAudit = dto.trans2Domain();
withdrawAudit.setWalletAccountUserId(userId);
withdrawAuditApplicationService.applyWithdraw(withdrawAudit);
}
}

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

@ -1,5 +1,8 @@
package com.qniao.dam.api.command.withdrawaudit.user.request;
import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit;
import com.qniao.domain.Trans2DomainAssembler;
import com.qniao.framework.utils.TypeConvertUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -8,11 +11,15 @@ import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Data
public class UserApplyWalletAccountWithdrawDto {
public class UserApplyWalletAccountWithdrawDto implements Trans2DomainAssembler<WithdrawAudit> {
@ApiModelProperty("提现金额")
@NotNull(message = "提现金额不能为空")
@DecimalMin(value = "0.01", message = "提现金额不等低于0.01")
private BigDecimal withdrawAmount;
@Override
public WithdrawAudit trans2Domain() {
return TypeConvertUtils.convert(this, WithdrawAudit.class);
}
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/walletaccount/WalletAccountApplicationService.java

@ -1,7 +0,0 @@
package com.qniao.dam.application.service.walletaccount;
import org.springframework.stereotype.Service;
@Service
public class WalletAccountApplicationService {
}

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

@ -0,0 +1,32 @@
package com.qniao.dam.application.service.withdrawaudit;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit;
import com.qniao.dam.domain.service.withdrawaudit.ApplyWithdrawAuditDomainService;
import com.qniao.dam.query.walletaccount.WalletAccountQueryService;
import com.qniao.framework.exception.BizException;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Objects;
@Service
public class WithdrawAuditApplicationService {
@Resource
private WalletAccountQueryService walletAccountQueryService;
@Resource
private ApplyWithdrawAuditDomainService applyWithdrawAuditDomainService;
public void applyWithdraw(WithdrawAudit withdrawAudit) {
synchronized (withdrawAudit.getWalletAccountUserId().toString().intern()) {
WalletAccount walletAccount = walletAccountQueryService.queryByUserId(withdrawAudit.getWalletAccountUserId());
if (Objects.isNull(walletAccount) || withdrawAudit.getWithdrawAmount().compareTo(walletAccount.getAvailableBalance()) > 0) {
throw new BizException("超出可提现金额");
}
withdrawAudit.setWalletAccountId(walletAccount.getId());
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().subtract(withdrawAudit.getWithdrawAmount()));
walletAccount.setFrozenBalance(walletAccount.getFrozenBalance().add(withdrawAudit.getWithdrawAmount()));
applyWithdrawAuditDomainService.handle(withdrawAudit,walletAccount);
}
}
}

20
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/WithdrawAuditAggregate.java

@ -0,0 +1,20 @@
package com.qniao.dam.domain.aggregate.withdrawaudit;
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 org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class WithdrawAuditAggregate {
@Resource
private WithdrawAuditRepository withdrawAuditRepository;
public void apply(WithdrawAudit withdrawAudit) {
withdrawAudit.setStatus(WithdrawAuditStatus.TO_BE_REVIEWED);
withdrawAuditRepository.save(withdrawAudit);
}
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/repository/WithdrawAuditRepository.java

@ -0,0 +1,7 @@
package com.qniao.dam.domain.aggregate.withdrawaudit.repository;
import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit;
import com.qniao.domain.Repository;
public interface WithdrawAuditRepository extends Repository<WithdrawAudit,Long> {
}

25
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/withdrawaudit/ApplyWithdrawAuditDomainService.java

@ -0,0 +1,25 @@
package com.qniao.dam.domain.service.withdrawaudit;
import com.qniao.dam.domain.aggregate.walletaccount.WalletAccountAggregate;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import com.qniao.dam.domain.aggregate.withdrawaudit.WithdrawAuditAggregate;
import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
@Service
public class ApplyWithdrawAuditDomainService {
@Resource
private WithdrawAuditAggregate withdrawAuditAggregate;
@Resource
private WalletAccountAggregate walletAccountAggregate;
@Transactional(rollbackFor = Exception.class)
public void handle(WithdrawAudit withdrawAudit, WalletAccount walletAccount) {
withdrawAuditAggregate.apply(withdrawAudit);
walletAccountAggregate.save(walletAccount);
}
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/WithdrawAuditDao.java

@ -0,0 +1,7 @@
package com.qniao.dam.infrastructure.persistent.dao.domain;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit;
public interface WithdrawAuditDao extends BaseMapper<WithdrawAudit> {
}

31
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/WithdrawAuditRepositoryImpl.java

@ -0,0 +1,31 @@
package com.qniao.dam.infrastructure.persistent.repository.impl;
import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit;
import com.qniao.dam.domain.aggregate.withdrawaudit.repository.WithdrawAuditRepository;
import com.qniao.dam.infrastructure.persistent.dao.domain.WithdrawAuditDao;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Objects;
@Service
public class WithdrawAuditRepositoryImpl implements WithdrawAuditRepository {
@Resource
private WithdrawAuditDao withdrawAuditDao;
@Override
public WithdrawAudit load(Long id) {
return withdrawAuditDao.selectById(id);
}
@Override
public Long save(WithdrawAudit entity) {
if (Objects.isNull(entity.getId()) || Objects.isNull(withdrawAuditDao.selectById(entity.getId()))) {
withdrawAuditDao.insert(entity);
} else {
withdrawAuditDao.updateById(entity);
}
return entity.getId();
}
}
Loading…
Cancel
Save