From 707a7b28f6955c0cf9de2d90b6361ddc6a468d59 Mon Sep 17 00:00:00 2001
From: gao <gaoleox@163>
Date: Tue, 16 Jun 2020 16:08:57 +0800
Subject: [PATCH] Merge branch 'master' of https://chonggaoxiao:xcg523511090712@gitee.com/chonggaoxiao/new_excoin_manage.git

---
 src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java |  309 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 308 insertions(+), 1 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 72f4d90..867a793 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
@@ -6,19 +6,37 @@
 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.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.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.MemberQuickBuySaleVo;
+import com.xcong.excoin.modules.member.vo.MemberQuickSaleVo;
 
 import lombok.RequiredArgsConstructor;
 import java.math.BigDecimal;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -31,11 +49,21 @@
 @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;
 	
 
     @Override
@@ -90,6 +118,11 @@
         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
@@ -101,7 +134,7 @@
 		SmsUtils.hxSmsSend(member.getPhone(), smsContent);
 		
          */
-		return new FebsResponse().message("拨币成功");
+		return new FebsResponse().success();
 	}
 
 	@Override
@@ -121,4 +154,278 @@
 		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()).subtract(selectById.getFeeAmount());
+		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()).subtract(selectById.getFeeAmount());
+		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);
+		selectById.setCertifyStatus(MemberEntity.CERTIFY_STATUS_Y);
+		selectById.setIdcardNo(memberAuthenticationEntity.getIdcardNo());
+		
+		memberMapper.updateById(selectById);
+		return new FebsResponse().success();
+	}
+
 }

--
Gitblit v1.9.1