cloudroam
2024-11-08 52081904dc467b81db0b28ff7cfed5979f14d1d2
add:钱包功能调整1108-2
已修改5个文件
76 ■■■■ 文件已修改
src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletBillRecordDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletWithdrawDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/impl/wallet/WalletBillRecordServiceImpl.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/v2/wallet/WalletWithdrawRecordController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletBillRecordDTO.java
@@ -11,7 +11,7 @@
public class QueryWalletBillRecordDTO {
    @ApiModelProperty(value = "供应商Id")
    private Long supplierId;
    private String supplierId;
    @ApiModelProperty(value = "供应商名称")
    private String supplierName;
src/main/java/com/mzl/flower/dto/request/wallet/QueryWalletWithdrawDTO.java
@@ -11,7 +11,7 @@
public class QueryWalletWithdrawDTO {
    @ApiModelProperty(value = "供应商Id")
    private Long supplierId;
    private String supplierId;
    @ApiModelProperty(value = "供应商名称")
    private String supplierName;
src/main/java/com/mzl/flower/service/impl/wallet/WalletBillRecordServiceImpl.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mzl.flower.config.exception.ValidationException;
import com.mzl.flower.config.security.SecurityUtils;
import com.mzl.flower.constant.Constants;
import com.mzl.flower.constant.LockConstants;
@@ -102,40 +103,25 @@
                walletBillRecordDO.setRemark("微信商户转账成功");
                walletBillRecordMapper.updateById(walletBillRecordDO);
                //更新钱包
//                WalletDO walletDO = walletService.getOrCreateBySupplierId(walletBillRecordDO.getWalletId());
//                RLock lock = redissonClient.getLock(String.format(LockConstants.WALLET_ID_KEY, walletDO.getId()));
//                try {
//                    if (lock.tryLock(10, 30, TimeUnit.SECONDS)) {
//                        try {
//                            if (!ObjectUtils.isEmpty(walletDO)) {
//                                WalletBillRecordDO walletBillRecordDO2 = new WalletBillRecordDO();
//                                walletBillRecordDO2.setId(UUIDGenerator.getUUID());
//                                walletBillRecordDO2.setSupplierId(walletDO.getSupplierId());
//                                walletBillRecordDO2.setWalletId(walletDO.getId());
//                                walletBillRecordDO2.setType(Constants.BILL_CHANGE_TYPE.withdraw.name());
//                                // 发起提现
//                                walletBillRecordDO2.setWithdrawType(Constants.BILL_WITHDRAW_TYPE.success.name());
//                                walletBillRecordDO2.setMethod(Constants.BILL_CHANGE_METHOD.reduce.name());
//                                walletBillRecordDO2.setOriginalAmount(walletDO.getWithdrawableAmount());
//                                walletBillRecordDO2.setChangeAmount(BigDecimal.ZERO);
//                                walletBillRecordDO2.setBalance(walletDO.getWithdrawableAmount());
//                                walletBillRecordDO2.create(SecurityUtils.getUserId());
//                                walletBillRecordDO.setId(UUIDGenerator.getUUID());
//                                // 保存账单明细
//                                walletBillRecordService.save(walletBillRecordDO);
//                                //提现中金额:减少提现中金额
//                                walletDO.setWithdrawingAmount(walletDO.getWithdrawingAmount().subtract(walletBillRecordDO.getChangeAmount()));
//                                //已提现金额:增加已提现金额
//                                walletDO.setWithdrawnAmount(walletDO.getWithdrawnAmount().add(walletBillRecordDO.getChangeAmount()));
//                                walletMapper.updateById(walletDO);
//                            }
//                        } finally {
//                            lock.unlock();
//                        }
//                    }
//                } catch (InterruptedException e) {
//                    throw new RuntimeException(e);
//                }
                WalletDO walletDO = walletService.getOrCreateBySupplierId(walletBillRecordDO.getSupplierId());
                RLock lock = redissonClient.getLock(String.format(LockConstants.WALLET_ID_KEY, walletDO.getId()));
                try {
                    if (lock.tryLock(10, 30, TimeUnit.SECONDS)) {
                        try {
                            if (!ObjectUtils.isEmpty(walletDO)) {
                                //提现中金额:减少提现中金额
                                walletDO.setWithdrawingAmount(walletDO.getWithdrawingAmount().subtract(walletBillRecordDO.getChangeAmount()));
                                //已提现金额:增加已提现金额
                                walletDO.setWithdrawnAmount(walletDO.getWithdrawnAmount().add(walletBillRecordDO.getChangeAmount()));
                                walletMapper.updateById(walletDO);
                            }
                        } finally {
                            lock.unlock();
                        }
                    }
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                //回写提现状态
                if (!StringUtils.isEmpty(walletBillRecordDO.getWithdrawRecordId())) {
                    WalletWithdrawRecordDO withdrawRecordDO = walletWithdrawRecordMapper.selectById(walletBillRecordDO.getWithdrawRecordId());
@@ -147,7 +133,7 @@
                walletBillRecordDO.setTransferState(Constants.SETTLEMENT_STATUS.FAILED.name());
                walletBillRecordDO.update("sys");
                walletBillRecordMapper.updateById(walletBillRecordDO);
                WalletDO walletDO = walletService.getOrCreateBySupplierId(walletBillRecordDO.getWalletId());
                WalletDO walletDO = walletService.getOrCreateBySupplierId(walletBillRecordDO.getSupplierId());
                RLock lock = redissonClient.getLock(String.format(LockConstants.WALLET_ID_KEY, walletDO.getId()));
                try {
                    if (lock.tryLock(10, 30, TimeUnit.SECONDS)) {
@@ -197,6 +183,13 @@
    @Override
    public Page<WalletBillRecordVO> queryPage(QueryWalletBillRecordDTO queryWalletBillRecordDTO, Page page) {
        try {
            if (!StringUtils.isEmpty(queryWalletBillRecordDTO.getSupplierId())) {
                Long supplierId = Long.parseLong(queryWalletBillRecordDTO.getSupplierId());
            }
        } catch (Exception e) {
            throw new ValidationException("供应商ID格式不正确");
        }
        List<WalletBillRecordVO> list = walletBillRecordMapper.queryPage(queryWalletBillRecordDTO, page);
        page.setRecords(list);
        return page;
src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java
@@ -181,6 +181,13 @@
    @Override
    public Page<WalletWithdrawRecordVO> queryPage(QueryWalletWithdrawDTO queryWalletDTO, Page page) {
        try {
            if (!StringUtils.isEmpty(queryWalletDTO.getSupplierId())) {
                Long supplierId = Long.parseLong(queryWalletDTO.getSupplierId());
            }
        } catch (Exception e) {
            throw new ValidationException("供应商ID格式不正确");
        }
        List<WalletWithdrawRecordVO> list = walletWithdrawRecordMapper.queryPage(queryWalletDTO, page);
        page.setRecords(list);
        return page;
src/main/java/com/mzl/flower/web/v2/wallet/WalletWithdrawRecordController.java
@@ -98,7 +98,7 @@
    public ResponseEntity<ReturnDataDTO<Page<WalletWithdrawRecordDO>>> page(Page page, QueryWalletWithdrawDTO dto
    ) {
        // 根据当前用户获取供应商
        dto.setSupplierId(supplierService.getCurrentSupplier().getId());
        dto.setSupplierId(String.valueOf(supplierService.getCurrentSupplier().getId()));
        return returnData(R.SUCCESS.getCode(), walletWithdrawRecordService.queryPage(dto, page));
    }