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.DappAccountMoneyChangeEntity; import cc.mrbird.febs.dapp.entity.DappMemberEntity; import cc.mrbird.febs.dapp.entity.DappWalletCoinEntity; import cc.mrbird.febs.dapp.entity.MemberCoinWithdrawEntity; import cc.mrbird.febs.dapp.mapper.DappAccountMoneyChangeDao; import cc.mrbird.febs.dapp.mapper.DappMemberDao; import cc.mrbird.febs.dapp.mapper.DappWalletCoinDao; import cc.mrbird.febs.dapp.mapper.MemberCoinWithdrawDao; import cc.mrbird.febs.dapp.service.AdminOperationService; import cc.mrbird.febs.dapp.vo.AdminMemberCoinWithdrawVo; 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 implements AdminOperationService { private final MemberCoinWithdrawDao memberCoinWithdrawDao; private final DappWalletCoinDao dappWalletCoinDao; private final DappMemberDao dappMemberDao; private final DappAccountMoneyChangeDao dappAccountMoneyChangeDao; @Override public IPage findMemberWithdrawCoinAllOneInPage(MemberCoinWithdrawEntity memberCoinWithdrawEntity, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage 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); //转出账户,总额减少,冻结减少 BigDecimal amount = memberCoinWithdrawEntity.getAmount().setScale(4,BigDecimal.ROUND_DOWN); Long memberIdOut = memberCoinWithdrawEntity.getMemberId(); DappWalletCoinEntity dappWalletCoinEntityOut = dappWalletCoinDao.selectByMemberId(memberIdOut); dappWalletCoinDao.delTotalAndDelFrozenById(dappWalletCoinEntityOut.getId(),amount); String isInside = memberCoinWithdrawEntity.getIsInside(); String content = ""; Integer type = 0; if(MemberCoinWithdrawEntity.ISINSIDE_NO.equals(isInside)){ content = "提现"; type = 2; }else{ content = "转账"; type = 4; } //转出账户生成一条账户资金变化记录 DappAccountMoneyChangeEntity dappAccountMoneyChangeEntityOut = new DappAccountMoneyChangeEntity(memberIdOut, dappWalletCoinEntityOut.getTotalAmount().setScale(4,BigDecimal.ROUND_DOWN), amount.negate(), dappWalletCoinEntityOut.getTotalAmount().setScale(4,BigDecimal.ROUND_DOWN).subtract(amount), content, type); dappAccountMoneyChangeDao.insert(dappAccountMoneyChangeEntityOut); //转入账户,总额增加,余额增加 //转账 // if(MemberCoinWithdrawEntity.ISINSIDE_YES.equals(isInside)){ // String addressIn = memberCoinWithdrawEntity.getAddress(); // DappMemberEntity dappMemberEntityIn = dappMemberDao.selectMemberInfoByInviteId(addressIn); // if(ObjectUtil.isEmpty(dappMemberEntityIn)){ // throw new FebsException("系统异常,联系开发人员"); // } // DappWalletCoinEntity dappWalletCoinEntityIn = dappWalletCoinDao.selectByMemberId(dappMemberEntityIn.getId()); // Integer countIn = dappWalletCoinDao.addTotalAndaddAvailableById(dappWalletCoinEntityIn.getId(), memberCoinWithdrawEntity.getAmount()); // if(1 != countIn){ // throw new FebsException("系统异常,联系开发人员"); // } // //生成流水记录 // DappAccountMoneyChangeEntity dappAccountMoneyChangeEntityIn = new DappAccountMoneyChangeEntity(dappMemberEntityIn.getId(), // dappWalletCoinEntityIn.getTotalAmount().setScale(4,BigDecimal.ROUND_DOWN), // amount, // dappWalletCoinEntityIn.getTotalAmount().setScale(4,BigDecimal.ROUND_DOWN).add(amount), // "转账", // 4); // dappAccountMoneyChangeDao.insert(dappAccountMoneyChangeEntityIn); // } 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("刷新页面重试"); } memberCoinWithdrawEntity.setStatus(MemberCoinWithdrawEntity.STATUS_NO); memberCoinWithdrawDao.updateById(memberCoinWithdrawEntity); DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberCoinWithdrawEntity.getMemberId()); Integer count = dappWalletCoinDao.addFrozenAndDelAvailableById(dappWalletCoinEntity.getId(),memberCoinWithdrawEntity.getAmount()); if(1 != count){ throw new FebsException("系统异常,联系开发人员"); } return new FebsResponse().success(); } }