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);
}
}
}
}
}