xiaoyong931011
2020-07-09 f5f828b22c5d9ae19991a5e14a5090df63e41f81
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -1,27 +1,630 @@
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 org.springframework.stereotype.Service;
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);
      }
      Map<String, Object> columnMaps = new HashMap<>();
      columnMaps.put("withdraw_id", selectById.getId());
      List<MemberAccountMoneyChangeEntity> selectByMap2 = memberAccountMoneyChangeMapper.selectByMap(columnMaps);
      MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = selectByMap2.get(0);
      memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_SUCCESS_INTEGER);
      memberAccountMoneyChangeEntity.setAmount(selectById.getAmount().negate());
      memberAccountMoneyChangeMapper.updateById(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);
      // 提币退款记录
      Map<String, Object> columnMaps = new HashMap<>();
      columnMaps.put("withdraw_id", selectById.getId());
      List<MemberAccountMoneyChangeEntity> selectByMap2 = memberAccountMoneyChangeMapper.selectByMap(columnMaps);
      MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = selectByMap2.get(0);
      memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_FAIL_INTEGER);
      memberAccountMoneyChangeEntity.setAmount(selectById.getAmount());
      memberAccountMoneyChangeMapper.updateById(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);
   }
   @Override
   public FebsResponse addCoinConfirm(@Valid MemberEntity memberEntity) {
      Long memberId = memberEntity.getId();
      String walletCode = "USDT";
      BigDecimal amountUsdt = memberEntity.getCoinNumber();
      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);
       //添加币币资金划转历史记录
      MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity();
        memberAccountMoneyChangeEntity.setContent("充值");
        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();
   }
}