From 46fb72d69411232913605fe3c012e054db68be8a Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期五, 25 十月 2024 17:36:33 +0800
Subject: [PATCH] add:提现管理
---
src/main/java/com/mzl/flower/dto/response/wallet/WalletWithdrawRecordVO.java | 18 ++++++++
src/main/java/com/mzl/flower/constant/Constants.java | 14 +++++++
src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java | 26 ++++--------
src/main/java/com/mzl/flower/entity/wallet/WalletWithdrawRecordDO.java | 6 +++
src/main/java/com/mzl/flower/service/impl/wallet/WalletBillRecordServiceImpl.java | 18 +++++++++
src/main/java/com/mzl/flower/web/v2/wallet/WalletWithdrawRecordController.java | 18 ++++++--
src/main/java/com/mzl/flower/entity/wallet/WalletBillRecordDO.java | 3 +
7 files changed, 80 insertions(+), 23 deletions(-)
diff --git a/src/main/java/com/mzl/flower/constant/Constants.java b/src/main/java/com/mzl/flower/constant/Constants.java
index 62c9958..3419ef4 100644
--- a/src/main/java/com/mzl/flower/constant/Constants.java
+++ b/src/main/java/com/mzl/flower/constant/Constants.java
@@ -645,4 +645,18 @@
}
}
+ public enum WALLET_WITHDRAW_TYPE {
+ BALANCE("余额提现");
+
+ WALLET_WITHDRAW_TYPE(String desc) {
+ this.desc = desc;
+ }
+
+ private String desc;
+
+ public String getDesc() {
+ return desc;
+ }
+ }
+
}
diff --git a/src/main/java/com/mzl/flower/dto/response/wallet/WalletWithdrawRecordVO.java b/src/main/java/com/mzl/flower/dto/response/wallet/WalletWithdrawRecordVO.java
index f5114db..7d19754 100644
--- a/src/main/java/com/mzl/flower/dto/response/wallet/WalletWithdrawRecordVO.java
+++ b/src/main/java/com/mzl/flower/dto/response/wallet/WalletWithdrawRecordVO.java
@@ -1,6 +1,7 @@
package com.mzl.flower.dto.response.wallet;
import com.mzl.flower.base.AbstractTransDTO;
+import com.mzl.flower.base.annotation.DictTrans;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -23,11 +24,23 @@
@ApiModelProperty(value = "提现金额")
private BigDecimal onceWithdrawAmount;
+ @ApiModelProperty(value = "提现类型")
+ @DictTrans(target = "withdrawTypeStr", codeType = "WALLET_WITHDRAW_TYPE")
+ private String withdrawType;
+
+ private String withdrawTypeStr;
+
@ApiModelProperty(value = "提现状态(提现中、提现成功、提现失败)")
- private Integer withdrawState;
+ @DictTrans(target = "withdrawStateStr", codeType = "WALLET_WITHDRAW_STATE")
+ private String withdrawState;
+
+ private String withdrawStateStr;
@ApiModelProperty(value = "提现方式(微信)")
+ @DictTrans(target = "methodStr", codeType = "WALLET_WITHDRAW_METHOD")
private String method;
+
+ private String methodStr;
@ApiModelProperty(value = "审核人")
private String approveBy;
@@ -36,8 +49,11 @@
private LocalDateTime approveTime;
@ApiModelProperty(value = "审核状态(待审核、已通过、已拒绝)")
+ @DictTrans(target = "approveStateStr", codeType = "WALLET_APPROVE_STATE")
private String approveState;
+ private String approveStateStr;
+
@ApiModelProperty(value = "不通过原因")
private String rejectReason;
diff --git a/src/main/java/com/mzl/flower/entity/wallet/WalletBillRecordDO.java b/src/main/java/com/mzl/flower/entity/wallet/WalletBillRecordDO.java
index 5a732f0..b0f3d29 100644
--- a/src/main/java/com/mzl/flower/entity/wallet/WalletBillRecordDO.java
+++ b/src/main/java/com/mzl/flower/entity/wallet/WalletBillRecordDO.java
@@ -58,4 +58,7 @@
@ApiModelProperty(value = "openId")
private String openId;
+ @ApiModelProperty(value = "提现记录表ID")
+ private Long withdrawRecordId;
+
}
diff --git a/src/main/java/com/mzl/flower/entity/wallet/WalletWithdrawRecordDO.java b/src/main/java/com/mzl/flower/entity/wallet/WalletWithdrawRecordDO.java
index 8da704f..663c459 100644
--- a/src/main/java/com/mzl/flower/entity/wallet/WalletWithdrawRecordDO.java
+++ b/src/main/java/com/mzl/flower/entity/wallet/WalletWithdrawRecordDO.java
@@ -40,6 +40,12 @@
private BigDecimal onceWithdrawAmount;
/**
+ * 提现类型
+ */
+ @ApiModelProperty(value = "提现类型")
+ private String withdrawType;
+
+ /**
* 提现状态
*/
@ApiModelProperty(value = "提现状态(提现中、提现成功、提现失败)")
diff --git a/src/main/java/com/mzl/flower/service/impl/wallet/WalletBillRecordServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/wallet/WalletBillRecordServiceImpl.java
index d22cb11..7d1aa37 100644
--- a/src/main/java/com/mzl/flower/service/impl/wallet/WalletBillRecordServiceImpl.java
+++ b/src/main/java/com/mzl/flower/service/impl/wallet/WalletBillRecordServiceImpl.java
@@ -7,15 +7,18 @@
import com.mzl.flower.entity.payment.TransferDetail;
import com.mzl.flower.entity.wallet.WalletBillRecordDO;
import com.mzl.flower.entity.wallet.WalletDO;
+import com.mzl.flower.entity.wallet.WalletWithdrawRecordDO;
import com.mzl.flower.mapper.payment.TransferDetailMapper;
import com.mzl.flower.mapper.payment.TransferMapper;
import com.mzl.flower.mapper.wallet.WalletBillRecordMapper;
import com.mzl.flower.mapper.wallet.WalletMapper;
+import com.mzl.flower.mapper.wallet.WalletWithdrawRecordMapper;
import com.mzl.flower.service.wallet.WalletBillRecordService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mzl.flower.service.wallet.WalletService;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
+import org.springframework.util.StringUtils;
import javax.annotation.Resource;
@@ -44,6 +47,9 @@
@Resource
private WalletMapper walletMapper;
+
+ @Resource
+ private WalletWithdrawRecordMapper walletWithdrawRecordMapper;
@Override
public void create(CreateWalletBillRecordDTO dto) {
@@ -77,6 +83,12 @@
walletDO.setWithdrawnAmount(walletDO.getWithdrawnAmount().add(walletBillRecordDO.getChangeAmount()));
walletMapper.updateById(walletDO);
}
+ //回写提现状态
+ if (StringUtils.isEmpty(walletBillRecordDO.getWithdrawRecordId())) {
+ WalletWithdrawRecordDO withdrawRecordDO = walletWithdrawRecordMapper.selectById(walletBillRecordDO.getWithdrawRecordId());
+ withdrawRecordDO.setWithdrawState(Constants.WALLET_WITHDRAW_STATE.SUCCESS.name());
+ walletWithdrawRecordMapper.updateById(withdrawRecordDO);
+ }
} else if ("FAIL".equals(dStatus)) {
walletBillRecordDO.setTransferState(Constants.SETTLEMENT_STATUS.FAILED.name());
@@ -90,6 +102,12 @@
walletDO.setWithdrawableAmount(walletDO.getWithdrawableAmount().add(walletBillRecordDO.getChangeAmount()));
walletMapper.updateById(walletDO);
}
+ //回写提现状态
+ if (StringUtils.isEmpty(walletBillRecordDO.getWithdrawRecordId())) {
+ WalletWithdrawRecordDO withdrawRecordDO = walletWithdrawRecordMapper.selectById(walletBillRecordDO.getWithdrawRecordId());
+ withdrawRecordDO.setWithdrawState(Constants.WALLET_WITHDRAW_STATE.FAILURE.name());
+ walletWithdrawRecordMapper.updateById(withdrawRecordDO);
+ }
}
}
}
diff --git a/src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java
index b377744..e6dd65d 100644
--- a/src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java
+++ b/src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java
@@ -121,25 +121,11 @@
withdrawRecordDO.setSupplierId(supplierDTO.getId());
withdrawRecordDO.setWithdrawState(Constants.WALLET_WITHDRAW_STATE.WAITING.name());
withdrawRecordDO.setMethod(Constants.WALLET_WITHDRAW_METHOD.WEIXIN.name());
+ withdrawRecordDO.setWithdrawType(Constants.WALLET_WITHDRAW_TYPE.BALANCE.name());
withdrawRecordDO.create(SecurityUtils.getUserId());
// 保存余额提现记录
save(withdrawRecordDO);
- /*
- // 2.新增一条账单明细
- WalletBillRecordDO walletBillRecordDO=new WalletBillRecordDO();
- walletBillRecordDO.setSupplierId(supplierDTO.getId());
- walletBillRecordDO.setWalletId(walletDO.getId());
- // 提现
- walletBillRecordDO.setType(Constants.BILL_CHANGE_TYPE.withdraw.name());
- walletBillRecordDO.setMethod(Constants.BILL_CHANGE_METHOD.add.name());
- walletBillRecordDO.setOriginalAmount(walletDO.getWithdrawableAmount());
- walletBillRecordDO.setChangeAmount(dto.getAmount());
- walletBillRecordDO.setBalance(walletDO.getWithdrawableAmount().subtract(dto.getAmount()));
-
- // 保存账单明细
- walletBillRecordService.save(walletBillRecordDO);
-*/
// 3. 钱包更新
// 钱包可提现的钱等于当前钱包可提现的钱-提现的钱
@@ -192,6 +178,10 @@
withdrawRecordDO.setApproveState(walletWithdrawRecordDTO.getApproveState());
withdrawRecordDO.setApproveBy(SecurityUtils.getUserId());
withdrawRecordDO.setApproveTime(LocalDateTime.now());
+ if(Constants.WALLET_APPROVE_STATE.REJECT.name().equals(walletWithdrawRecordDTO.getApproveState())){
+ //如果拒绝直接提现失败
+ withdrawRecordDO.setWithdrawState(Constants.WALLET_WITHDRAW_STATE.FAILURE.name());
+ }
walletWithdrawRecordMapper.updateById(withdrawRecordDO);
//审批通过之后写转账信息
@@ -202,7 +192,7 @@
UserWechat wechat = wechatMapper.selectOne(new QueryWrapper<UserWechat>().eq("user_id", s.getUserId()));
if (wechat == null) {
- String msg = name + "未绑定账号无法结算";
+ String msg = name + "未绑定账号无法提现";
log.error(msg);
throw new ValidationException(msg);
}
@@ -222,7 +212,9 @@
walletBillRecordDO.setSupplierId(s.getId());
walletBillRecordDO.setType(Constants.BILL_CHANGE_TYPE.withdraw.name());
walletBillRecordDO.setMethod(Constants.BILL_CHANGE_METHOD.reduce.name());
- walletBillRecordDO.setTransferId(transferReqDTO.getAppId());
+ walletBillRecordDO.setTransferId(transferReqDTO.getId());
+ walletBillRecordDO.setWithdrawRecordId(withdrawRecordDO.getId());
+ walletBillRecordDO.create();
//提现金额
BigDecimal withdrawAmount = withdrawRecordDO.getAmount();
diff --git a/src/main/java/com/mzl/flower/web/v2/wallet/WalletWithdrawRecordController.java b/src/main/java/com/mzl/flower/web/v2/wallet/WalletWithdrawRecordController.java
index d402fe2..c7e5eec 100644
--- a/src/main/java/com/mzl/flower/web/v2/wallet/WalletWithdrawRecordController.java
+++ b/src/main/java/com/mzl/flower/web/v2/wallet/WalletWithdrawRecordController.java
@@ -5,6 +5,7 @@
import com.mzl.flower.base.BaseController;
import com.mzl.flower.base.R;
import com.mzl.flower.base.ReturnDataDTO;
+import com.mzl.flower.constant.Constants;
import com.mzl.flower.dto.request.wallet.QueryWalletWithdrawDTO;
import com.mzl.flower.dto.request.wallet.WalletWithdrawRecordDTO;
import com.mzl.flower.dto.response.wallet.WalletWithdrawRecordVO;
@@ -26,10 +27,7 @@
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestParam;
import com.mzl.flower.entity.wallet.WalletWithdrawRecordDO;
-import javax.validation.constraints.Min;
-import javax.validation.constraints.Max;
import javax.validation.constraints.Positive;
/**
@@ -56,13 +54,23 @@
return returnData(R.SUCCESS.getCode(), walletWithdrawRecordService.queryPage(dto, page));
}
- @PostMapping(value = "/edit")
- @ApiOperation(value = "修改", httpMethod = "POST")
+ @PostMapping(value = "/pass")
+ @ApiOperation(value = "通过", httpMethod = "POST")
public ResponseEntity update(@RequestBody WalletWithdrawRecordDTO walletWithdrawRecordDTO) {
+ walletWithdrawRecordDTO.setApproveState(Constants.WALLET_APPROVE_STATE.APPROVE.name());
walletWithdrawRecordService.updateWallet(walletWithdrawRecordDTO);
return returnData(R.SUCCESS.getCode(), null);
}
+ @PostMapping(value = "/refuse")
+ @ApiOperation(value = "拒绝", httpMethod = "POST")
+ public ResponseEntity refuse(@RequestBody WalletWithdrawRecordDTO walletWithdrawRecordDTO) {
+ walletWithdrawRecordDTO.setApproveState(Constants.WALLET_APPROVE_STATE.REJECT.name());
+ walletWithdrawRecordService.updateWallet(walletWithdrawRecordDTO);
+ return returnData(R.SUCCESS.getCode(), null);
+ }
+
+
@PostMapping("")
public ResponseEntity<ReturnDataDTO> create(@Validated @RequestBody CreateWalletWithdrawRecordDTO walletWithdrawRecordDTO) {
--
Gitblit v1.9.3