cloudroam
2024-10-25 46fb72d69411232913605fe3c012e054db68be8a
add:提现管理
已修改7个文件
103 ■■■■ 文件已修改
src/main/java/com/mzl/flower/constant/Constants.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/response/wallet/WalletWithdrawRecordVO.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/entity/wallet/WalletBillRecordDO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/entity/wallet/WalletWithdrawRecordDO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/impl/wallet/WalletBillRecordServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/v2/wallet/WalletWithdrawRecordController.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
        }
    }
}
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;
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;
}
src/main/java/com/mzl/flower/entity/wallet/WalletWithdrawRecordDO.java
@@ -40,6 +40,12 @@
    private BigDecimal onceWithdrawAmount;
    /**
     * 提现类型
     */
    @ApiModelProperty(value = "提现类型")
    private String withdrawType;
    /**
     * 提现状态
     */
    @ApiModelProperty(value = "提现状态(提现中、提现成功、提现失败)")
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);
                }
            }
        }
    }
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();
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) {