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