package com.xcong.excoin.modules.member.service.impl; 
 | 
  
 | 
import com.baomidou.mybatisplus.core.metadata.IPage; 
 | 
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; 
 | 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
 | 
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
 | 
import com.xcong.excoin.common.entity.FebsResponse; 
 | 
import com.xcong.excoin.common.entity.QueryRequest; 
 | 
import com.xcong.excoin.modules.member.dto.MemberDetailConfirmDto; 
 | 
import com.xcong.excoin.modules.member.entity.AgentFriendRelationEntity; 
 | 
import com.xcong.excoin.modules.member.entity.MemberAccountMoneyChangeEntity; 
 | 
import com.xcong.excoin.modules.member.entity.MemberCoinAddressEntity; 
 | 
import com.xcong.excoin.modules.member.entity.MemberCoinChargeEntity; 
 | 
import com.xcong.excoin.modules.member.entity.MemberCoinWithdrawEntity; 
 | 
import com.xcong.excoin.modules.member.entity.MemberEntity; 
 | 
import com.xcong.excoin.modules.member.entity.MemberQuickBuySaleEntity; 
 | 
import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity; 
 | 
import com.xcong.excoin.modules.member.mapper.AgentFriendRelationMapper; 
 | 
import com.xcong.excoin.modules.member.mapper.MemberAccountMoneyChangeMapper; 
 | 
import com.xcong.excoin.modules.member.mapper.MemberAuthenticationMapper; 
 | 
import com.xcong.excoin.modules.member.mapper.MemberCoinAddressMapper; 
 | 
import com.xcong.excoin.modules.member.mapper.MemberCoinChargeMapper; 
 | 
import com.xcong.excoin.modules.member.mapper.MemberCoinWithdrawMapper; 
 | 
import com.xcong.excoin.modules.member.mapper.MemberMapper; 
 | 
import com.xcong.excoin.modules.member.mapper.MemberQuickBuySaleMapper; 
 | 
import com.xcong.excoin.modules.member.mapper.MemberWalletCoinMapper; 
 | 
import com.xcong.excoin.modules.member.service.IMemberService; 
 | 
import com.xcong.excoin.modules.member.vo.MemberAuthenticationVo; 
 | 
import com.xcong.excoin.modules.member.vo.MemberCoinChargeVo; 
 | 
import com.xcong.excoin.modules.member.vo.MemberCoinWithdrawVo; 
 | 
import com.xcong.excoin.modules.member.vo.MemberDataInfoVo; 
 | 
import com.xcong.excoin.modules.member.vo.MemberQuickBuySaleVo; 
 | 
import com.xcong.excoin.modules.member.vo.MemberQuickSaleVo; 
 | 
  
 | 
import lombok.RequiredArgsConstructor; 
 | 
import java.math.BigDecimal; 
 | 
import java.util.ArrayList; 
 | 
import java.util.Date; 
 | 
import java.util.HashMap; 
 | 
import java.util.HashSet; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
import java.util.Set; 
 | 
  
 | 
import javax.validation.Valid; 
 | 
import javax.validation.constraints.NotNull; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
  
 | 
/** 
 | 
 * @author wzy 
 | 
 * @date 2020-06-10 
 | 
 **/ 
 | 
@Service 
 | 
@RequiredArgsConstructor 
 | 
public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberEntity> implements IMemberService { 
 | 
     
 | 
    private final MemberMapper memberMapper; 
 | 
     
 | 
    private final MemberQuickBuySaleMapper memberQuickBuySaleMapper; 
 | 
     
 | 
    private final MemberWalletCoinMapper memberWalletCoinMapper; 
 | 
     
 | 
    private final MemberAccountMoneyChangeMapper memberAccountMoneyChangeMapper; 
 | 
     
 | 
    private final MemberCoinChargeMapper memberCoinChargeMapper; 
 | 
     
 | 
    private final MemberCoinWithdrawMapper memberCoinWithdrawMapper; 
 | 
     
 | 
    private final MemberCoinAddressMapper memberCoinAddressMapper; 
 | 
     
 | 
    private final MemberAuthenticationMapper memberAuthenticationMapper; 
 | 
     
 | 
    private final AgentFriendRelationMapper agentFriendRelationMapper; 
 | 
     
 | 
    @Override 
 | 
    public IPage<AgentFriendRelationEntity> findAgentInfoListInPage(AgentFriendRelationEntity agentFriendRelationEntity, 
 | 
            QueryRequest request) { 
 | 
        Page<AgentFriendRelationEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); 
 | 
        IPage<AgentFriendRelationEntity> findmemberQuickBuySaleListInPage = agentFriendRelationMapper.findAgentFriendRelationListInPage(page, agentFriendRelationEntity); 
 | 
        List<AgentFriendRelationEntity> records = findmemberQuickBuySaleListInPage.getRecords(); 
 | 
         
 | 
        if(records != null && records.size() > 0) { 
 | 
            for(AgentFriendRelationEntity agentFriendRelation : records) { 
 | 
                List<String> arrayList = new ArrayList<>();  
 | 
                String inviteId = agentFriendRelation.getInviteId(); 
 | 
                String inviteIdCZ = null; 
 | 
                String inviteIdTX = null; 
 | 
                String inviteIdSY = null; 
 | 
                // 当前邀请码下的所有代理MemberID 
 | 
                List<AgentFriendRelationEntity> lowLevelList = agentFriendRelationMapper.selectAgentFriendRelationByMap(inviteId); 
 | 
                 
 | 
                List<String> memberLevel = memberMapper.selectMemberBylowLevelInviteId(inviteId); 
 | 
                arrayList.addAll(memberLevel); 
 | 
                if(lowLevelList != null && lowLevelList.size() > 0) { 
 | 
                    for(AgentFriendRelationEntity lowLevelMemberId : lowLevelList) { 
 | 
                        Long memberId = lowLevelMemberId.getMemberId(); 
 | 
                        arrayList.add(memberId.toString()); 
 | 
                        List<String> memberlowLevel = memberMapper.selectMemberBylowLevelInviteId(lowLevelMemberId.getInviteId()); 
 | 
                        arrayList.addAll(memberlowLevel); 
 | 
                    } 
 | 
                    Set<String> set = new HashSet<>(); 
 | 
                    List<String> newList = new ArrayList<>(); 
 | 
                    set.addAll(arrayList); 
 | 
                    newList.addAll(set); 
 | 
                    //获取对应的充值提现 
 | 
                    double czNumber = 0; 
 | 
                    double txNumber = 0; 
 | 
                    if(newList != null && newList.size() > 0) { 
 | 
                        agentFriendRelation.setPromotionNumber(newList.size()); 
 | 
                        for(String memberId : newList) { 
 | 
                            //充币 
 | 
                            String selectCBByMemberId = memberCoinChargeMapper.selectCBByMemberId(memberId); 
 | 
                            //充值 
 | 
                            String selectCZByMemberI = memberQuickBuySaleMapper.selectCZByMemberId(memberId); 
 | 
                            //提币 
 | 
                            String selectTBByMemberId = memberCoinWithdrawMapper.selectTBByMemberId(memberId); 
 | 
                            //提现 
 | 
                            String selectTXByMemberId = memberQuickBuySaleMapper.selectTXByMemberId(memberId); 
 | 
                             
 | 
                            czNumber = czNumber + (selectCBByMemberId == null ? 0 : Double.parseDouble(selectCBByMemberId)); 
 | 
                            czNumber = czNumber + (selectCZByMemberI == null ? 0 : Double.parseDouble(selectCZByMemberI)); 
 | 
                            txNumber = txNumber + (selectTBByMemberId == null ? 0 : Double.parseDouble(selectTBByMemberId)); 
 | 
                            txNumber = txNumber + (selectTXByMemberId == null ? 0 : Double.parseDouble(selectTXByMemberId)); 
 | 
                        } 
 | 
                    } 
 | 
                    inviteIdCZ = czNumber+""; 
 | 
                    inviteIdTX = txNumber+""; 
 | 
                    inviteIdSY = (czNumber-txNumber)+""; 
 | 
                } 
 | 
                agentFriendRelation.setTotalRecharge(inviteIdCZ == null ? "0.0" : inviteIdCZ); 
 | 
                agentFriendRelation.setTotalWithdrawal(inviteIdTX == null ? "0.0" : inviteIdTX); 
 | 
                agentFriendRelation.setTotalPerformance(inviteIdSY == null ? "0.0" : inviteIdSY); 
 | 
            } 
 | 
        } 
 | 
        return findmemberQuickBuySaleListInPage; 
 | 
    } 
 | 
     
 | 
  
 | 
    @Override 
 | 
    public IPage<MemberEntity> findMemberListInPage(MemberEntity memberEntity, QueryRequest request) { 
 | 
        Page<MemberEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); 
 | 
        return this.baseMapper.selectMemberListInPage(page, memberEntity); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public IPage<MemberQuickBuySaleVo> findmemberQuickBuySaleListInPage( 
 | 
            MemberQuickBuySaleEntity memberQuickBuySaleEntity, QueryRequest request) { 
 | 
        Page<MemberQuickBuySaleEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); 
 | 
        IPage<MemberQuickBuySaleVo> findmemberQuickBuySaleListInPage = memberQuickBuySaleMapper.findmemberQuickBuySaleListInPage(page, memberQuickBuySaleEntity); 
 | 
        return findmemberQuickBuySaleListInPage; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public FebsResponse memberChargeUsdtConfirm(Long id) { 
 | 
         
 | 
        MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleMapper.selectById(id); 
 | 
         
 | 
        if(!MemberQuickBuySaleEntity.CHARGE_STATUS_PAID.equals(memberQuickBuySaleEntity.getOrderStatus())) { 
 | 
            return new FebsResponse().message("只允许已付款状态操作"); 
 | 
        } 
 | 
         
 | 
        Long memberId = memberQuickBuySaleEntity.getMemberId(); 
 | 
        BigDecimal amountUsdt = memberQuickBuySaleEntity.getAmountUsdt(); 
 | 
        String walletCode = "USDT"; 
 | 
         
 | 
        MemberEntity selectById = this.baseMapper.selectById(memberId); 
 | 
        if(ObjectUtils.isEmpty(selectById)) { 
 | 
            return new FebsResponse().message("用户已不存在"); 
 | 
        } 
 | 
        //获取币币钱包 
 | 
        MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(memberId,walletCode); 
 | 
        BigDecimal availableBalance = memberWalletCoinEntity.getAvailableBalance(); 
 | 
        BigDecimal totalBalance = memberWalletCoinEntity.getTotalBalance(); 
 | 
        memberWalletCoinEntity.setAvailableBalance(availableBalance.add(amountUsdt)); 
 | 
        memberWalletCoinEntity.setTotalBalance(totalBalance.add(amountUsdt)); 
 | 
        // 更新 
 | 
        memberWalletCoinMapper.updateById(memberWalletCoinEntity); 
 | 
        // 更新状态 
 | 
        memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CHECKED); 
 | 
        memberQuickBuySaleMapper.updateById(memberQuickBuySaleEntity); 
 | 
         
 | 
         //添加币币资金划转历史记录 
 | 
        MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity(); 
 | 
        memberAccountMoneyChangeEntity.setContent("OTC转入"); 
 | 
        memberAccountMoneyChangeEntity.setMemberId(memberId); 
 | 
        memberAccountMoneyChangeEntity.setAmount(amountUsdt); 
 | 
        memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_SUCCESS_INTEGER); 
 | 
        memberAccountMoneyChangeEntity.setSymbol("USDT"); 
 | 
        memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN); 
 | 
        memberAccountMoneyChangeEntity.setCreateBy(selectById.getCreateBy()); 
 | 
        memberAccountMoneyChangeEntity.setCreateTime(new Date()); 
 | 
        memberAccountMoneyChangeEntity.setUpdateBy(selectById.getCreateBy()); 
 | 
        memberAccountMoneyChangeEntity.setUpdateTime(new Date()); 
 | 
         
 | 
        memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity); 
 | 
        /** 
 | 
         * todo 
 | 
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 
 | 
        String chargeTime = format.format(memberQuickBuySaleEntity.getChargeTime()); // 将当前时间袼式化为指定的格式 
 | 
        String usdt = memberQuickBuySaleEntity.getAmountUsdt()+"USDT"; 
 | 
        //发送短信提醒 
 | 
        String smsContent = "【Excoin】尊敬的用户您好!您于"+chargeTime+"充值"+usdt+"已成功到账,请您及时查收!订单号为:"+memberChargeUsdt.getOrderCode()+"。"; 
 | 
        SmsUtils.hxSmsSend(member.getPhone(), smsContent); 
 | 
         
 | 
         */ 
 | 
        return new FebsResponse().success(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public FebsResponse memberChargeUsdtCancel(@NotNull(message = "{required}") Long id) { 
 | 
         
 | 
        MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleMapper.selectById(id); 
 | 
         
 | 
        if(MemberQuickBuySaleEntity.CHARGE_STATUS_CHECKED.equals(memberQuickBuySaleEntity.getOrderStatus())  
 | 
                || MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_USER.equals(memberQuickBuySaleEntity.getOrderStatus()) 
 | 
                || MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_SYSTEM.equals(memberQuickBuySaleEntity.getOrderStatus())) { 
 | 
            return new FebsResponse().message("不允许系统撤单操作"); 
 | 
        } 
 | 
         
 | 
        memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_SYSTEM); 
 | 
        memberQuickBuySaleMapper.updateById(memberQuickBuySaleEntity); 
 | 
        return new FebsResponse().success(); 
 | 
         
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public IPage<MemberQuickSaleVo> findmemberQuickSaleListInPage(MemberQuickBuySaleEntity memberQuickBuySaleEntity, 
 | 
            QueryRequest request) { 
 | 
        Page<MemberQuickBuySaleEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); 
 | 
        IPage<MemberQuickSaleVo> findmemberQuickBuySaleListInPage = memberQuickBuySaleMapper.findmemberQuickSaleListInPage(page, memberQuickBuySaleEntity); 
 | 
        return findmemberQuickBuySaleListInPage; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public FebsResponse memberExtractUsdtCancel(@NotNull(message = "{required}") Long id) { 
 | 
        MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleMapper.selectById(id); 
 | 
         
 | 
        if(!MemberQuickBuySaleEntity.CHARGE_STATUS_CREATE.equals(memberQuickBuySaleEntity.getOrderStatus())) { 
 | 
            return new FebsResponse().message("只允许待付款状态操作"); 
 | 
        } 
 | 
         
 | 
        Long memberId = memberQuickBuySaleEntity.getMemberId(); 
 | 
        BigDecimal amountUsdt = memberQuickBuySaleEntity.getAmountUsdt(); 
 | 
        String walletCode = "USDT"; 
 | 
         
 | 
        MemberEntity selectById = this.baseMapper.selectById(memberId); 
 | 
        if(ObjectUtils.isEmpty(selectById)) { 
 | 
            return new FebsResponse().message("用户已不存在"); 
 | 
        } 
 | 
        //获取币币钱包 
 | 
        MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(memberId,walletCode); 
 | 
        BigDecimal frozenBalance = memberWalletCoinEntity.getFrozenBalance(); 
 | 
        BigDecimal availableBalance = memberWalletCoinEntity.getAvailableBalance(); 
 | 
        BigDecimal totalBalance = memberWalletCoinEntity.getTotalBalance(); 
 | 
        memberWalletCoinEntity.setFrozenBalance(frozenBalance.subtract(amountUsdt)); 
 | 
        memberWalletCoinEntity.setAvailableBalance(availableBalance.add(amountUsdt)); 
 | 
        memberWalletCoinEntity.setTotalBalance(totalBalance.add(amountUsdt)); 
 | 
        // 更新 
 | 
        memberWalletCoinMapper.updateById(memberWalletCoinEntity); 
 | 
        // 更新状态 
 | 
        memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_SYSTEM); 
 | 
        memberQuickBuySaleMapper.updateById(memberQuickBuySaleEntity); 
 | 
         
 | 
        /** 
 | 
         * todo 
 | 
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 
 | 
        String chargeTime = format.format(memberQuickBuySaleEntity.getChargeTime()); // 将当前时间袼式化为指定的格式 
 | 
        String usdt = memberQuickBuySaleEntity.getAmountUsdt()+"USDT"; 
 | 
        //发送短信提醒 
 | 
        String smsContent = "【Excoin】尊敬的用户您好!您于"+chargeTime+"充值"+usdt+"已成功到账,请您及时查收!订单号为:"+memberChargeUsdt.getOrderCode()+"。"; 
 | 
        SmsUtils.hxSmsSend(member.getPhone(), smsContent); 
 | 
         
 | 
         */ 
 | 
        return new FebsResponse().success(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public FebsResponse memberExtractUsdtConfirm(@NotNull(message = "{required}") Long id) { 
 | 
         
 | 
        MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleMapper.selectById(id); 
 | 
         
 | 
        if(!MemberQuickBuySaleEntity.CHARGE_STATUS_CREATE.equals(memberQuickBuySaleEntity.getOrderStatus())) { 
 | 
            return new FebsResponse().message("只允许待付款状态操作"); 
 | 
        } 
 | 
         
 | 
        Long memberId = memberQuickBuySaleEntity.getMemberId(); 
 | 
        BigDecimal amountUsdt = memberQuickBuySaleEntity.getAmountUsdt(); 
 | 
        String walletCode = "USDT"; 
 | 
         
 | 
        MemberEntity selectById = this.baseMapper.selectById(memberId); 
 | 
        if(ObjectUtils.isEmpty(selectById)) { 
 | 
            return new FebsResponse().message("用户已不存在"); 
 | 
        } 
 | 
         
 | 
        //获取币币钱包 
 | 
        MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(memberId,walletCode); 
 | 
        BigDecimal frozenBalance = memberWalletCoinEntity.getFrozenBalance(); 
 | 
        memberWalletCoinEntity.setFrozenBalance(frozenBalance.subtract(amountUsdt)); 
 | 
        memberWalletCoinMapper.updateById(memberWalletCoinEntity); 
 | 
         
 | 
        memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_PAID); 
 | 
        memberQuickBuySaleMapper.updateById(memberQuickBuySaleEntity); 
 | 
         
 | 
        //添加币币资金划转历史记录 
 | 
        MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity(); 
 | 
        memberAccountMoneyChangeEntity.setContent("提现"); 
 | 
        memberAccountMoneyChangeEntity.setMemberId(memberId); 
 | 
        memberAccountMoneyChangeEntity.setAmount(amountUsdt); 
 | 
        memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_SUCCESS_INTEGER); 
 | 
        memberAccountMoneyChangeEntity.setSymbol(walletCode); 
 | 
        memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN); 
 | 
        memberAccountMoneyChangeEntity.setCreateBy(selectById.getCreateBy()); 
 | 
        memberAccountMoneyChangeEntity.setCreateTime(new Date()); 
 | 
        memberAccountMoneyChangeEntity.setUpdateBy(selectById.getCreateBy()); 
 | 
        memberAccountMoneyChangeEntity.setUpdateTime(new Date()); 
 | 
        memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity); 
 | 
         
 | 
        /** 
 | 
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 
 | 
        String chargeTime = format.format(memberQuickBuySaleEntity.getUpdateTime()); // 将当前时间袼式化为指定的格式 
 | 
        String usdt = amountUsdt+"USDT"; 
 | 
        //发送短信提醒 
 | 
        String smsContent = "【Excoin】尊敬的用户您好!您于"+chargeTime+"提现"+usdt+"已成功到账,请您及时查收!订单号为:"+memberQuickBuySaleEntity.getOrderCode()+"。"; 
 | 
        SmsUtils.hxSmsSend(selectById.getPhone(), smsContent); 
 | 
         *  
 | 
         */ 
 | 
         
 | 
        return new FebsResponse().success(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public IPage<MemberCoinChargeVo> findMemberApplyCoinListInPage(MemberCoinChargeEntity memberCoinChargeEntity, 
 | 
            QueryRequest request) { 
 | 
        Page<MemberCoinChargeEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); 
 | 
        IPage<MemberCoinChargeVo> findmemberQuickBuySaleListInPage = memberCoinChargeMapper.findMemberApplyCoinListInPage(page, memberCoinChargeEntity); 
 | 
        return findmemberQuickBuySaleListInPage; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public IPage<MemberCoinWithdrawVo> findmemberWithdrawCoinListInPage( 
 | 
            MemberCoinWithdrawEntity memberCoinWithdrawEntity, QueryRequest request) { 
 | 
        Page<MemberCoinWithdrawEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); 
 | 
        IPage<MemberCoinWithdrawVo> findmemberQuickBuySaleListInPage = memberCoinWithdrawMapper.findmemberWithdrawCoinListInPage(page, memberCoinWithdrawEntity); 
 | 
        return findmemberQuickBuySaleListInPage; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public FebsResponse memberWithdrawCoinConfirm(@NotNull(message = "{required}") Long id) { 
 | 
         
 | 
        MemberCoinWithdrawEntity selectById = memberCoinWithdrawMapper.selectById(id); 
 | 
        Long memberId = selectById.getMemberId(); 
 | 
        String symbol = selectById.getSymbol(); 
 | 
        String address = selectById.getAddress(); 
 | 
        int status = selectById.getStatus(); 
 | 
        if(status != 1) { 
 | 
            return new FebsResponse().fail().message("只有等待审核的状态才能确认!"); 
 | 
        } 
 | 
         
 | 
        // 查询币币钱包 
 | 
        MemberWalletCoinEntity walletCoin = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(memberId, symbol); 
 | 
         
 | 
        BigDecimal total = walletCoin.getTotalBalance().subtract(selectById.getAmount()).subtract(selectById.getFeeAmount()); 
 | 
        walletCoin.setTotalBalance(total); 
 | 
        BigDecimal frozen = walletCoin.getFrozenBalance().subtract(selectById.getAmount()); 
 | 
        walletCoin.setFrozenBalance(frozen); 
 | 
         
 | 
        memberWalletCoinMapper.updateById(walletCoin); 
 | 
         
 | 
        if ("Y".equals(selectById.getIsInside())) { 
 | 
            Map<String, Object> columnMap = new HashMap<>(); 
 | 
            columnMap.put("symbol", symbol); 
 | 
            columnMap.put("address", address); 
 | 
            // 如果是内部转账 则需要将币加到内部地址 
 | 
            List<MemberCoinAddressEntity> selectByMap = memberCoinAddressMapper.selectByMap(columnMap); 
 | 
            if(selectByMap == null || selectByMap.isEmpty()) { 
 | 
                return new FebsResponse().fail().message("地址有误,请拒绝!"); 
 | 
            } 
 | 
            Long aimMemberId = selectByMap.get(0).getMemberId(); 
 | 
            MemberWalletCoinEntity aimWalletCoin = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(aimMemberId, symbol); 
 | 
             
 | 
            BigDecimal addTotal = aimWalletCoin.getTotalBalance().add(selectById.getAmount()); 
 | 
            BigDecimal addAvailable = aimWalletCoin.getAvailableBalance().add(selectById.getAmount()); 
 | 
            aimWalletCoin.setTotalBalance(addTotal); 
 | 
            aimWalletCoin.setAvailableBalance(addAvailable); 
 | 
             
 | 
            memberWalletCoinMapper.updateById(aimWalletCoin); 
 | 
             
 | 
            MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity(); 
 | 
            memberAccountMoneyChangeEntity.setContent("收款"); 
 | 
            memberAccountMoneyChangeEntity.setMemberId(aimMemberId); 
 | 
            memberAccountMoneyChangeEntity.setAmount(selectById.getAmount()); 
 | 
            memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_SUCCESS_INTEGER); 
 | 
            memberAccountMoneyChangeEntity.setSymbol(selectById.getSymbol()); 
 | 
            memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN); 
 | 
            memberAccountMoneyChangeEntity.setCreateBy(selectById.getCreateBy()); 
 | 
            memberAccountMoneyChangeEntity.setCreateTime(new Date()); 
 | 
            memberAccountMoneyChangeEntity.setUpdateBy(selectById.getCreateBy()); 
 | 
            memberAccountMoneyChangeEntity.setUpdateTime(new Date()); 
 | 
            memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity); 
 | 
        } 
 | 
         
 | 
        MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity(); 
 | 
        memberAccountMoneyChangeEntity.setContent("提币"); 
 | 
        memberAccountMoneyChangeEntity.setMemberId(memberId); 
 | 
        memberAccountMoneyChangeEntity.setAmount(selectById.getAmount()); 
 | 
        memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_SUCCESS_INTEGER); 
 | 
        memberAccountMoneyChangeEntity.setSymbol(selectById.getSymbol()); 
 | 
        memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN); 
 | 
        memberAccountMoneyChangeEntity.setCreateBy(selectById.getCreateBy()); 
 | 
        memberAccountMoneyChangeEntity.setCreateTime(new Date()); 
 | 
        memberAccountMoneyChangeEntity.setUpdateBy(selectById.getCreateBy()); 
 | 
        memberAccountMoneyChangeEntity.setUpdateTime(new Date()); 
 | 
        memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity); 
 | 
         
 | 
        selectById.setStatus(MemberCoinWithdrawEntity.IS_STATUS_Y); 
 | 
        memberCoinWithdrawMapper.updateById(selectById); 
 | 
        /** 
 | 
        //短信提醒 
 | 
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 
 | 
         String chargeTime = format.format(new Date()); // 将当前时间袼式化为指定的格式 
 | 
         String usdt = selectById.getAmount()+"USDT"; 
 | 
          * 发送短信提醒   todo 
 | 
         String smsContent = "【Excoin】尊敬的用户您好!您于"+chargeTime+"提现"+usdt+"已成功到账,请您及时查收!"; 
 | 
         SmsUtils.hxSmsSend(member.getPhone(), smsContent); 
 | 
          */ 
 | 
         return new FebsResponse().success(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public FebsResponse memberWithdrawCoinCancel(@NotNull(message = "{required}") Long id) { 
 | 
         
 | 
        MemberCoinWithdrawEntity selectById = memberCoinWithdrawMapper.selectById(id); 
 | 
        Long memberId = selectById.getMemberId(); 
 | 
        String symbol = selectById.getSymbol(); 
 | 
        int status = selectById.getStatus(); 
 | 
        if(status != 1) { 
 | 
            return new FebsResponse().fail().message("只有等待审核的状态才能拒绝!"); 
 | 
        } 
 | 
        // 查询币币钱包 
 | 
        MemberWalletCoinEntity walletCoin = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(memberId, symbol); 
 | 
         
 | 
        BigDecimal available = walletCoin.getAvailableBalance().add(selectById.getAmount()).add(selectById.getFeeAmount()); 
 | 
        walletCoin.setAvailableBalance(available); 
 | 
        BigDecimal frozen = walletCoin.getFrozenBalance().subtract(selectById.getAmount()); 
 | 
        walletCoin.setFrozenBalance(frozen); 
 | 
         
 | 
        memberWalletCoinMapper.updateById(walletCoin); 
 | 
         
 | 
        // 提币退款记录 
 | 
        MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity(); 
 | 
        memberAccountMoneyChangeEntity.setContent("提币"); 
 | 
        memberAccountMoneyChangeEntity.setMemberId(memberId); 
 | 
        memberAccountMoneyChangeEntity.setAmount(selectById.getAmount()); 
 | 
        memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_FAIL_INTEGER); 
 | 
        memberAccountMoneyChangeEntity.setSymbol(selectById.getSymbol()); 
 | 
        memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN); 
 | 
        memberAccountMoneyChangeEntity.setCreateBy(selectById.getCreateBy()); 
 | 
        memberAccountMoneyChangeEntity.setCreateTime(new Date()); 
 | 
        memberAccountMoneyChangeEntity.setUpdateBy(selectById.getCreateBy()); 
 | 
        memberAccountMoneyChangeEntity.setUpdateTime(new Date()); 
 | 
        memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity); 
 | 
         
 | 
        selectById.setStatus(MemberCoinWithdrawEntity.IS_STATUS_N); 
 | 
        memberCoinWithdrawMapper.updateById(selectById); 
 | 
        return new FebsResponse().success(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public MemberAuthenticationVo selectMemberAuthenticationById(long id) { 
 | 
        MemberAuthenticationVo memberAuthenticationEntity = memberAuthenticationMapper.findMemberAuthenticationByMemberId(id); 
 | 
        String firstName = memberAuthenticationEntity.getFirstName(); 
 | 
        String secondName = memberAuthenticationEntity.getSecondName(); 
 | 
        memberAuthenticationEntity.setRealName(firstName+"-"+secondName); 
 | 
        return memberAuthenticationEntity; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public FebsResponse memberDetailConfirm(@Valid MemberDetailConfirmDto memberDetailConfirmDto) { 
 | 
        Long id = memberDetailConfirmDto.getId(); 
 | 
        MemberEntity selectById = memberMapper.selectById(id); 
 | 
        Integer certifyStatus = selectById.getCertifyStatus(); 
 | 
        if(!MemberEntity.CERTIFY_STATUS_ING.equals(certifyStatus)) { 
 | 
            return new FebsResponse().fail().message("只有【待审核】状态才能提交!"); 
 | 
        } 
 | 
        MemberAuthenticationVo memberAuthenticationEntity = memberAuthenticationMapper.findMemberAuthenticationByMemberId(id); 
 | 
         
 | 
        if(memberDetailConfirmDto.getIsok() == 1) { 
 | 
            selectById.setCertifyStatus(MemberEntity.CERTIFY_STATUS_Y); 
 | 
        }else { 
 | 
            selectById.setCertifyStatus(MemberEntity.CERTIFY_STATUS_N); 
 | 
        } 
 | 
        selectById.setIdcardNo(memberAuthenticationEntity.getIdcardNo()); 
 | 
        memberMapper.updateById(selectById); 
 | 
        return new FebsResponse().success(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<MemberCoinChargeEntity> selectMemberDataInfoById(long id) { 
 | 
        Map<String, Object> columnMap = new HashMap<>(); 
 | 
        columnMap.put("member_id", id); 
 | 
        List<MemberCoinChargeEntity> selectByMap = memberCoinChargeMapper.selectByMap(columnMap); 
 | 
        return selectByMap; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public IPage<MemberDataInfoVo> findMemberDataInfoDtoListInPage(MemberEntity memberEntity, 
 | 
            QueryRequest request) { 
 | 
        Page<MemberEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); 
 | 
        IPage<MemberDataInfoVo> selectMemberListInPage = memberMapper.selectMemberDataInfoDtoListInPage(page, memberEntity); 
 | 
        //USDT充币总额+USDT提币总额 
 | 
        String totalAmountUsdtB = memberMapper.selectTotalAmountUsdtBForBasicRealData(); 
 | 
        String totalAmountUsdtS = memberMapper.selectTotalAmountUsdtSForBasicRealData(); 
 | 
        //USDT充值总额+USDT提现总额 
 | 
        String totalAmountUsdtCZ = memberMapper.selectTotalAmountUsdtCZForBasicRealData(); 
 | 
        String totalAmountUsdtTX = memberMapper.selectTotalAmountUsdtTXForBasicRealData(); 
 | 
        //佣金 
 | 
        String returnMoneyByMid = memberMapper.selectReturnMoneyForBasicRealData(); 
 | 
        //开仓手续费总额 
 | 
        String closingpriceByMid = memberMapper.selectClosingpriceForBasicRealData(); 
 | 
        //平仓总手续费 
 | 
        String sellClosingpriceByMid = memberMapper.selectSellClosingpriceForBasicRealData(); 
 | 
        //总盈亏 
 | 
        String rewardratioByMid = memberMapper.selectRewardratioForBasicRealData(); 
 | 
        //持仓人数 
 | 
        String notNullNumber = memberMapper.selectSFCCForBasicRealData(); 
 | 
        //币币账户不为空的人数 
 | 
        String walletNumber = memberMapper.selectBBZHForBasicRealData(); 
 | 
        //合约账户不为空的人数 
 | 
        String walletCoinNumber = memberMapper.selectHYZHForBasicRealData(); 
 | 
        //持仓手续费 
 | 
        String doingPrice = memberMapper.selectprepriceForBasicRealData(); 
 | 
         
 | 
        //账户金额 
 | 
        String walletNum = memberMapper.selectBBZCForBasicRealData(); 
 | 
        String walletCoinNum = memberMapper.selectHYZCForBasicRealData(); 
 | 
        String agentNum = memberMapper.selectDLZCForBasicRealData(); 
 | 
         
 | 
        double platformProfitAndLoss = 0 ; 
 | 
        platformProfitAndLoss = platformProfitAndLoss + (totalAmountUsdtB == null ? 0 : Double.parseDouble(totalAmountUsdtB)); 
 | 
        platformProfitAndLoss = platformProfitAndLoss + (totalAmountUsdtCZ == null ? 0 : Double.parseDouble(totalAmountUsdtCZ)); 
 | 
        platformProfitAndLoss = platformProfitAndLoss - (totalAmountUsdtS == null ? 0 : Double.parseDouble(totalAmountUsdtS)); 
 | 
        platformProfitAndLoss = platformProfitAndLoss - (totalAmountUsdtTX == null ? 0 : Double.parseDouble(totalAmountUsdtTX)); 
 | 
        List<MemberDataInfoVo> records = selectMemberListInPage.getRecords(); 
 | 
        for(MemberDataInfoVo memberDataInfoVo : records) { 
 | 
            memberDataInfoVo.setChargeUsdt(totalAmountUsdtCZ == null ? 0 : Double.parseDouble(totalAmountUsdtCZ)); 
 | 
            memberDataInfoVo.setAppealUsdt(totalAmountUsdtTX == null ? 0 : Double.parseDouble(totalAmountUsdtTX)); 
 | 
            memberDataInfoVo.setChargeCoin(totalAmountUsdtB == null ? 0 : Double.parseDouble(totalAmountUsdtB)); 
 | 
            memberDataInfoVo.setAppealCoin(totalAmountUsdtS == null ? 0 : Double.parseDouble(totalAmountUsdtS)); 
 | 
            memberDataInfoVo.setClosingPrice(closingpriceByMid == null ? "0" : closingpriceByMid); 
 | 
            memberDataInfoVo.setSellClosingPrice(sellClosingpriceByMid == null ? "0" : sellClosingpriceByMid); 
 | 
            memberDataInfoVo.setFee(returnMoneyByMid == null ? "0" : returnMoneyByMid); 
 | 
            memberDataInfoVo.setYingkui(rewardratioByMid == null ? "0" : rewardratioByMid); 
 | 
            memberDataInfoVo.setNotNullNumber(notNullNumber == null ? "0" : notNullNumber); 
 | 
            memberDataInfoVo.setWalletNumber(walletNumber == null ? "0" : walletNumber); 
 | 
            memberDataInfoVo.setWalletCoinNumber(walletCoinNumber == null ? "0" : walletCoinNumber); 
 | 
            memberDataInfoVo.setPlatformProfitAndLoss(platformProfitAndLoss == 0 ? "0" : platformProfitAndLoss+""); 
 | 
            memberDataInfoVo.setDoingPrice(doingPrice == null ? "0" : doingPrice); 
 | 
            memberDataInfoVo.setWalletNum(walletNum == null ? "0" : walletNum); 
 | 
            memberDataInfoVo.setWalletCoinNum(walletCoinNum == null ? "0" : walletCoinNum); 
 | 
            memberDataInfoVo.setAgentNum(agentNum == null ? "0" : agentNum); 
 | 
        } 
 | 
        selectMemberListInPage.setTotal(1); 
 | 
        return selectMemberListInPage; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public MemberEntity selectMemberByid(long id) { 
 | 
        MemberEntity selectById = memberMapper.selectById(id); 
 | 
        return selectById; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public FebsResponse memberDataInfoList(@NotNull(message = "{required}") long id) { 
 | 
        Map<String, Object> columnMap = new HashMap<>(); 
 | 
        columnMap.put("member_id", id); 
 | 
        columnMap.put("STATUS", 2); 
 | 
        List<MemberCoinWithdrawEntity> selectByMap = memberCoinWithdrawMapper.selectByMap(columnMap); 
 | 
        return new FebsResponse().data(selectByMap); 
 | 
    } 
 | 
  
 | 
} 
 |