package com.mzl.flower.service.impl.wallet; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.mzl.flower.constant.Constants; import com.mzl.flower.dto.request.wallet.CreateWalletBillRecordDTO; import com.mzl.flower.entity.payment.Transfer; 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.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.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 javax.annotation.Resource; /** *

* 服务实现类 *

* * @author @TaoJie * @since 2024-10-22 */ @Service public class WalletBillRecordServiceImpl extends ServiceImpl implements WalletBillRecordService { @Resource private TransferMapper transferMapper; @Resource private TransferDetailMapper transferDetailMapper; @Resource private WalletBillRecordMapper walletBillRecordMapper; @Resource private WalletService walletService; @Resource private WalletMapper walletMapper; @Override public void create(CreateWalletBillRecordDTO dto) { } public void updateTransferStatus(String transferId) { Transfer t = transferMapper.selectById(transferId); if ("FINISHED".equals(t.getStatus())) { WalletBillRecordDO walletBillRecordDO = walletBillRecordMapper.selectOne(new QueryWrapper().eq("transfer_id", transferId)); if (walletBillRecordDO == null) { return; } String transferDetailId = walletBillRecordDO.getTransferDetailId(); TransferDetail td = transferDetailMapper.selectById(transferDetailId); if (td == null) { log.warn("未找到对应明细"); return; } String dStatus = td.getStatus(); if ("SUCCESS".equals(dStatus)) { walletBillRecordDO.setTransferState(Constants.SETTLEMENT_STATUS.COMPLETED.name()); walletBillRecordDO.update("sys"); walletBillRecordMapper.updateById(walletBillRecordDO); //更新钱包 WalletDO walletDO = walletService.getBySupplierId(walletBillRecordDO.getWalletId()); if(!ObjectUtils.isEmpty(walletDO)){ //提现中金额:减少提现中金额 walletDO.setWithdrawingAmount(walletDO.getWithdrawingAmount().subtract(walletBillRecordDO.getChangeAmount())); //已提现金额:增加已提现金额 walletDO.setWithdrawnAmount(walletDO.getWithdrawnAmount().add(walletBillRecordDO.getChangeAmount())); walletMapper.updateById(walletDO); } } else if ("FAIL".equals(dStatus)) { walletBillRecordDO.setTransferState(Constants.SETTLEMENT_STATUS.FAILED.name()); walletBillRecordDO.update("sys"); walletBillRecordMapper.updateById(walletBillRecordDO); WalletDO walletDO = walletService.getBySupplierId(walletBillRecordDO.getWalletId()); if(!ObjectUtils.isEmpty(walletDO)){ //提现中金额:减少提现中金额 walletDO.setWithdrawingAmount(walletDO.getWithdrawingAmount().subtract(walletBillRecordDO.getChangeAmount())); //可提现金额:增加可提现金额 walletDO.setWithdrawableAmount(walletDO.getWithdrawableAmount().add(walletBillRecordDO.getChangeAmount())); walletMapper.updateById(walletDO); } } } } }