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) {