From 5013f71d0b9a886de77f936606de061ce1eb2aee Mon Sep 17 00:00:00 2001
From: gao <gaoleox@163>
Date: Wed, 27 May 2020 11:53:28 +0800
Subject: [PATCH] 平台收款方式接口

---
 src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java |  142 ++++++++++++++++++++++++++++++-----------------
 1 files changed, 90 insertions(+), 52 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java b/src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java
index 567c560..5842411 100644
--- a/src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java
@@ -8,9 +8,11 @@
 
 import org.springframework.stereotype.Service;
 
-import com.alibaba.druid.util.StringUtils;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xcong.excoin.common.LoginUserUtils;
+import com.xcong.excoin.common.enumerates.CoinTypeEnum;
 import com.xcong.excoin.common.response.Result;
 import com.xcong.excoin.modules.home.dao.MemberPaymentMethodDao;
 import com.xcong.excoin.modules.home.dao.MemberQuickBuySaleDao;
@@ -25,12 +27,10 @@
 import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao;
 import com.xcong.excoin.modules.member.entity.MemberEntity;
 import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity;
-
-import cn.hutool.crypto.SecureUtil;
-import lombok.extern.slf4j.Slf4j;
+import com.xcong.excoin.modules.platform.dao.PlatformPaymentMethodDao;
+import com.xcong.excoin.modules.platform.entity.PlatformPaymentMethodEntity;
 
 @Service
-@Slf4j
 public class MemberQuickBuySaleServiceImpl extends ServiceImpl<MemberQuickBuySaleDao, MemberQuickBuySaleEntity> implements MemberQuickBuySaleService{
 	
 	@Resource
@@ -41,45 +41,21 @@
 	MemberWalletCoinDao memberWalletCoinDao;
 	@Resource
 	MemberPaymentMethodDao memberPaymentMethodDao;
+	@Resource 
+	PlatformPaymentMethodDao platformPaymentMethodDao;
 
 	@Override
-	public Result recharge(MemberQuickBuySaleDto memberQuickBuySaleDto) {
-		
-		log.info("入参----->{}", memberQuickBuySaleDto);
-		//获取用户ID
-		Long memberId = LoginUserUtils.getAppLoginUser().getId();
-		MemberEntity member = memberDao.selectById(memberId);
-		log.info("查询到的会员----->{}", member);
-		// 验证是否实名认证
-		if (MemberEntity.CERTIFY_STATUS_Y.equals(member.getCertifyStatus())) {
-			return Result.fail("请先实名认证");
-		}
-		String tradePasswordWeb = memberQuickBuySaleDto.getTradePassword();
-		
-		// 验证支付密码
-		String tradePassword = member.getTradePassword();
-		
-		log.info("入参交易密码{},用户设置的交易密码{}", tradePasswordWeb,tradePassword);
-		if (StringUtils.isEmpty(tradePassword)) {
-			return Result.fail("请先配置交易密码");
-		}
-		if (StringUtils.isEmpty(tradePasswordWeb)) {
-			return Result.fail("请输入交易密码");
-		}
-		// System.out.println("交易密码:"+MD5.GetMD5Code(tradePasswordWeb)+" tradePassword =
-		// "+tradePassword);
-		// 验证交易密码
-		if (!tradePassword.equals(SecureUtil.md5(tradePasswordWeb))) {
-			return Result.fail("请输入正确的交易密码");
-		}
+	public Result recharge(MemberEntity member,MemberQuickBuySaleDto memberQuickBuySaleDto) {
 		// 生成订单号
 		Long timestamp = System.currentTimeMillis();
 		int random = (int) (Math.random() * 10);
 		String chargeNo = String.valueOf(timestamp).substring(2) + random;
 		// 插入订单表
 		MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity();
-		memberQuickBuySaleEntity.setOrderStatus(memberQuickBuySaleEntity.CHARGE_STATUS_CREATE);
-		memberQuickBuySaleEntity.setMemberId(memberId);
+		memberQuickBuySaleEntity.setOrderStatus(1);
+		memberQuickBuySaleEntity.setMemberId(member.getId());
+		memberQuickBuySaleEntity.setAmountUsdt(memberQuickBuySaleDto.getAmountUsdt());
+		memberQuickBuySaleEntity.setAmountCny(memberQuickBuySaleDto.getAmountCny());
 		memberQuickBuySaleEntity.setCreateTime(new Date());
 		memberQuickBuySaleEntity.setOrderNo(chargeNo);
 		memberQuickBuySaleEntity.setOrderType("B");
@@ -87,10 +63,27 @@
 		int ran = (int) (Math.random() * 10000000);
 		memberQuickBuySaleEntity.setPaymentCode(ran + "");
 		
+		// 收款信息
+		QueryWrapper<PlatformPaymentMethodEntity> queryWrapper = new QueryWrapper<>();
+		queryWrapper.eq("status", "1");
+		List<PlatformPaymentMethodEntity> paymentMethodList = platformPaymentMethodDao.selectList(queryWrapper);
+		// 随机一个
+		if (CollectionUtils.isEmpty(paymentMethodList)) {
+			return Result.fail("收款方式为空");
+		}
+//		int total = paymentMethodList.size();
+//		int index = (int) (Math.random() * total);
+//		PlatformPaymentMethodEntity paymemtMethod = paymentMethodList.get(index);
+//		memberQuickBuySaleEntity.setPaymentName(paymemtMethod.getName());
+//		memberQuickBuySaleEntity.setPaymentAccount(paymemtMethod.getAccount());
 		memberQuickBuySaleDao.insert(memberQuickBuySaleEntity);
+		MemberQuickBuySaleVo memberQuickBuySaleVo = MemberQuickBuySaleEntityMapper.INSTANCE.entityToVo(memberQuickBuySaleEntity);
+		// 返回前台付款方式
+//		memberQuickBuySaleVo.setPlatforPaymentMethodList(paymentMethodList);
+//		memberQuickBuySaleEntity.setReceiveMethod(payMethodList.get(index));
 		// 返回前台付款方式
 //				memberChargeUsdt.setReceiveMethod(payMethodList.get(index));
-		return Result.ok("购买成功,请及时付款");
+		return Result.ok(memberQuickBuySaleVo);
 	}
 
 	@Override
@@ -98,7 +91,7 @@
 		// 用户提交支付确认 将状态改为付款中
 		MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity();
 		memberQuickBuySaleEntity.setId(memberQuickBuySaleCommitDto.getId());
-		memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_PAID);
+		memberQuickBuySaleEntity.setOrderStatus(2);
 		memberQuickBuySaleEntity.setPaymentAccount(memberQuickBuySaleCommitDto.getPaymentAccount());
 		memberQuickBuySaleEntity.setPaymentName(memberQuickBuySaleCommitDto.getPaymentName());
 
@@ -120,22 +113,73 @@
 		return Result.ok(memberQuickBuySaleVo);
 	}
 
-	
+	@Override
+	public Result sell(MemberEntity member,MemberQuickBuySaleDto memberQuickBuySaleDto) {
+		// 判断是否存在足够余额
+		MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(),CoinTypeEnum.USDT.toString());
+		// 判断是否存在足够余额
+		if(walletCoin ==null) {
+			return Result.fail("您当前可用USDT额度不够");
+		}
+		BigDecimal extractUsdt = memberQuickBuySaleDto.getAmountUsdt();
+		if (extractUsdt == null) {
+			return Result.fail("请输入提币量");
+		}
+		// 判断是否足够
+		System.out.println("提币数:"+extractUsdt.doubleValue()+"   可用:"+walletCoin.getAvailableBalance());
+		if (extractUsdt.compareTo(walletCoin.getAvailableBalance())==1) {
+			return Result.fail("您当前可用USDT额度不够");
+		}
+
+
+		// 判断是否存在收款方式
+		List<MemberPaymentMethodEntity> payMentMethodList = memberPaymentMethodDao.selectByMemberId(member.getId());
+		if(CollectionUtils.isEmpty(payMentMethodList)){
+			return Result.fail("请配置收款方式");
+		}
+		// 冻结可用额度
+		int i = memberWalletCoinDao.updateFrozenBalance(member.getId(),
+				walletCoin.getId(), extractUsdt);
+		if (i <= 0) {
+			return Result.fail("可用USDT余额不足");
+		}
+		
+		// 生成订单号
+		Long timestamp = System.currentTimeMillis();
+		int random = (int) (Math.random() * 10);
+		String chargeNo = String.valueOf(timestamp).substring(2) + random;
+		// 插入订单表
+		MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity();
+		memberQuickBuySaleEntity.setOrderStatus(1);
+		memberQuickBuySaleEntity.setMemberId(member.getId());
+		memberQuickBuySaleEntity.setAmountUsdt(memberQuickBuySaleDto.getAmountUsdt());
+		memberQuickBuySaleEntity.setAmountCny(memberQuickBuySaleDto.getAmountCny());
+		memberQuickBuySaleEntity.setOrderNo(chargeNo);
+		memberQuickBuySaleEntity.setOrderType("S");
+		// 支付码 ID+四位随机数
+		int ran = (int) (Math.random() * 10000000);
+		memberQuickBuySaleEntity.setPaymentCode(ran + "");
+		
+		memberQuickBuySaleDao.insert(memberQuickBuySaleEntity);
+
+		// TODO dingtalk
+		
+		return Result.ok("下单成功");
+	}
 
 	@Override
 	public Result cancelRecharge(Long id) {
 		// 获取当前登录用户
-		Long memberId = LoginUserUtils.getAppLoginUser().getId();
-		MemberEntity member = memberDao.selectById(memberId);
-		if(memberId==null) {
+		MemberEntity member = LoginUserUtils.getAppLoginUser();
+		if(member==null) {
 			return Result.fail("登录用户已失效");
 		}
-		MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectById(id);
-		memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_USER);
+		MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectByIdAndMemberId(id,member.getId());
+		memberQuickBuySaleEntity.setOrderStatus(1);
 		memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity);
 		
 		// 判断是否存在足够余额
-		MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(id,"USDT");
+		MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(),CoinTypeEnum.USDT.toString());
 		boolean flag = true;
 		while(flag) {
 			walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().add(memberQuickBuySaleEntity.getAmountUsdt()));
@@ -144,14 +188,8 @@
 			if(i>0) {
 				flag = false;
 			}
-			walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(id,"USDT");
+			walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(),CoinTypeEnum.USDT.toString());
 		}
 		return Result.ok("成功");
-	}
-
-	@Override
-	public Result sell() {
-		// TODO Auto-generated method stub
-		return null;
 	}
 }

--
Gitblit v1.9.1