package cc.mrbird.febs.dapp.service.impl;
|
|
import cc.mrbird.febs.common.entity.FebsResponse;
|
import cc.mrbird.febs.common.entity.QueryRequest;
|
import cc.mrbird.febs.common.exception.FebsException;
|
import cc.mrbird.febs.dapp.entity.*;
|
import cc.mrbird.febs.dapp.mapper.*;
|
import cc.mrbird.febs.dapp.service.AdminOperationService;
|
import cc.mrbird.febs.dapp.service.DappWalletService;
|
import cc.mrbird.febs.dapp.vo.AdminMemberCoinWithdrawVo;
|
import cc.mrbird.febs.rabbit.producer.ChainProducer;
|
import cn.hutool.core.util.ObjectUtil;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.math.BigDecimal;
|
|
@Service
|
@RequiredArgsConstructor
|
public class AdminOperationServiceImpl extends ServiceImpl<DappMemberDao, DappMemberEntity> implements AdminOperationService {
|
|
private final MemberCoinWithdrawDao memberCoinWithdrawDao;
|
private final DappWalletCoinDao dappWalletCoinDao;
|
private final DappMemberDao dappMemberDao;
|
private final DappAccountMoneyChangeDao dappAccountMoneyChangeDao;
|
private final DappWalletService dappWalletService;
|
private final DappFundFlowDao dappFundFlowDao;
|
private final ChainProducer chainProducer;
|
|
@Override
|
public IPage<AdminMemberCoinWithdrawVo> findMemberWithdrawCoinAllOneInPage(MemberCoinWithdrawEntity memberCoinWithdrawEntity, QueryRequest request) {
|
Page<MemberCoinWithdrawEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
|
IPage<AdminMemberCoinWithdrawVo> adminMemberCoinWithdrawVoIPage = memberCoinWithdrawDao.findMemberWithdrawCoinInPage(page, memberCoinWithdrawEntity);
|
return adminMemberCoinWithdrawVoIPage;
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public FebsResponse agreeWithdraw(Long id) {
|
MemberCoinWithdrawEntity memberCoinWithdrawEntity = memberCoinWithdrawDao.selectById(id);
|
if(ObjectUtil.isEmpty(memberCoinWithdrawEntity)){
|
throw new FebsException("刷新页面重试");
|
}
|
memberCoinWithdrawEntity.setStatus(MemberCoinWithdrawEntity.STATUS_YES);
|
memberCoinWithdrawDao.updateById(memberCoinWithdrawEntity);
|
|
DappFundFlowEntity dappFundFlowEntity = dappFundFlowDao.selectById(memberCoinWithdrawEntity.getFlowId());
|
dappFundFlowEntity.setStatus(DappFundFlowEntity.WITHDRAW_STATUS_AGREE);
|
dappFundFlowDao.updateById(dappFundFlowEntity);
|
|
chainProducer.sendFeeDistributeMsg(dappFundFlowEntity.getId());
|
return new FebsResponse().success();
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public FebsResponse disagreeWithdraw(Long id) {
|
MemberCoinWithdrawEntity memberCoinWithdrawEntity = memberCoinWithdrawDao.selectById(id);
|
if(ObjectUtil.isEmpty(memberCoinWithdrawEntity)){
|
throw new FebsException("刷新页面重试");
|
}
|
|
DappFundFlowEntity dappFundFlowEntity = dappFundFlowDao.selectById(memberCoinWithdrawEntity.getFlowId());
|
if (dappFundFlowEntity == null) {
|
throw new FebsException("审核失败,联系管理员");
|
}
|
memberCoinWithdrawEntity.setStatus(MemberCoinWithdrawEntity.STATUS_NO);
|
memberCoinWithdrawDao.updateById(memberCoinWithdrawEntity);
|
|
dappFundFlowEntity.setStatus(DappFundFlowEntity.WITHDRAW_STATUS_DISAGREE);
|
dappFundFlowDao.updateById(dappFundFlowEntity);
|
|
dappWalletService.updateWalletCoinWithLock(memberCoinWithdrawEntity.getAmount(), memberCoinWithdrawEntity.getMemberId(), 1);
|
dappWalletService.updateWalletMineWithLock(memberCoinWithdrawEntity.getFeeAmount(), memberCoinWithdrawEntity.getMemberId(), 1);
|
|
DappFundFlowEntity feeFlow = new DappFundFlowEntity(memberCoinWithdrawEntity.getMemberId(), memberCoinWithdrawEntity.getFeeAmount(), 7, 2, null, null);
|
dappFundFlowDao.insert(feeFlow);
|
return new FebsResponse().success();
|
}
|
}
|