From cfe81b28c817fe4543da6de5fa169ca1e69c7afd Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 14 Jul 2020 11:02:49 +0800
Subject: [PATCH] 20200714   代码提交

---
 src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java |  638 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 636 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
index b15ca7e..b0c39a3 100644
--- a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -1,18 +1,51 @@
 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
@@ -22,7 +55,128 @@
 @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();
+		List<AgentFriendRelationEntity> arraylist = new ArrayList<>();
+		if(records != null && records.size() > 0) {
+			for(AgentFriendRelationEntity agentFriendRelation : records) {
+				String inviteId = agentFriendRelation.getInviteId();
+				if("90457646".equals(inviteId)) {
+					//该邀请码下的所有代理
+					Map<String, Object> columnMap = new HashMap<>();
+					columnMap.put("referer_id", "90457646");
+					List<AgentFriendRelationEntity> selectByMap = agentFriendRelationMapper.selectByMap(columnMap);
+					
+					if(selectByMap != null && selectByMap.size() > 0) {
+						int i = 1;
+						for(AgentFriendRelationEntity agentFriendRelationEntityTeam : selectByMap){
+							agentFriendRelationEntityTeam.setTeam(i+"");
+							arraylist.add(agentFriendRelationEntityTeam);
+							String inviteIdTeam = agentFriendRelationEntityTeam.getInviteId();
+							// 当前邀请码下的所有代理MemberID
+							List<AgentFriendRelationEntity> lowLevelList = agentFriendRelationMapper.selectAgentFriendRelationByMap(inviteIdTeam);
+							if(lowLevelList != null && lowLevelList.size() > 0) {
+								for(AgentFriendRelationEntity lowLevelAgentFriendRelationEntity: lowLevelList) {
+									lowLevelAgentFriendRelationEntity.setTeam(i+"");
+									arraylist.add(lowLevelAgentFriendRelationEntity);
+								}
+							}
+							i++;
+						}
+					}
+				}
+				if(arraylist != null && arraylist.size() > 0) {
+					for(AgentFriendRelationEntity teamagentFriendRelationEntity : arraylist) {
+						if(inviteId.equals(teamagentFriendRelationEntity.getInviteId())) {
+							String team = teamagentFriendRelationEntity.getTeam();
+							agentFriendRelation.setTeam(team);
+						}
+					}
+				}
+			}
+		}
+		
+		
+		
+		
+		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) {
@@ -31,9 +185,489 @@
     }
 
 	@Override
-	public IPage<MemberQuickBuySaleEntity> findmemberQuickBuySaleListInPage(
+	public IPage<MemberQuickBuySaleVo> findmemberQuickBuySaleListInPage(
 			MemberQuickBuySaleEntity memberQuickBuySaleEntity, QueryRequest request) {
 		Page<MemberQuickBuySaleEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
-        return memberQuickBuySaleMapper.findmemberQuickBuySaleListInPage(page, memberQuickBuySaleEntity);
+		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());
+		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();
+	}
+
 }

--
Gitblit v1.9.1