From fae05b7ffe899ab996f7a9c31b4c96df7964a0de Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Tue, 07 Jul 2020 21:20:55 +0800
Subject: [PATCH] add dingtalk

---
 src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java |  296 +++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 175 insertions(+), 121 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..fd6273b 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
@@ -6,152 +6,206 @@
 
 import javax.annotation.Resource;
 
+import com.xcong.excoin.utils.ThreadPoolUtils;
+import com.xcong.excoin.utils.dingtalk.DingTalkType;
 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;
 import com.xcong.excoin.modules.home.dto.MemberQuickBuySaleCommitDto;
 import com.xcong.excoin.modules.home.dto.MemberQuickBuySaleDto;
-import com.xcong.excoin.modules.home.entity.MemberPaymentMethodEntity;
 import com.xcong.excoin.modules.home.entity.MemberQuickBuySaleEntity;
 import com.xcong.excoin.modules.home.mapper.MemberQuickBuySaleEntityMapper;
 import com.xcong.excoin.modules.home.service.MemberQuickBuySaleService;
+import com.xcong.excoin.modules.home.vo.MemberQuickBuySaleDetailVo;
 import com.xcong.excoin.modules.home.vo.MemberQuickBuySaleVo;
 import com.xcong.excoin.modules.member.dao.MemberDao;
+import com.xcong.excoin.modules.member.dao.MemberPaymentMethodDao;
 import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao;
 import com.xcong.excoin.modules.member.entity.MemberEntity;
+import com.xcong.excoin.modules.member.entity.MemberPaymentMethodEntity;
 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
-	MemberDao memberDao;
-	@Resource
-	MemberQuickBuySaleDao memberQuickBuySaleDao;
-	@Resource
-	MemberWalletCoinDao memberWalletCoinDao;
-	@Resource
-	MemberPaymentMethodDao memberPaymentMethodDao;
+public class MemberQuickBuySaleServiceImpl extends ServiceImpl<MemberQuickBuySaleDao, MemberQuickBuySaleEntity> implements MemberQuickBuySaleService {
 
-	@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("请输入正确的交易密码");
-		}
-		// 生成订单号
-		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.setCreateTime(new Date());
-		memberQuickBuySaleEntity.setOrderNo(chargeNo);
-		memberQuickBuySaleEntity.setOrderType("B");
-		// 支付码 ID+四位随机数
-		int ran = (int) (Math.random() * 10000000);
-		memberQuickBuySaleEntity.setPaymentCode(ran + "");
-		
-		memberQuickBuySaleDao.insert(memberQuickBuySaleEntity);
-		// 返回前台付款方式
-//				memberChargeUsdt.setReceiveMethod(payMethodList.get(index));
-		return Result.ok("购买成功,请及时付款");
-	}
+    @Resource
+    MemberDao memberDao;
+    @Resource
+    MemberQuickBuySaleDao memberQuickBuySaleDao;
+    @Resource
+    MemberWalletCoinDao memberWalletCoinDao;
+    @Resource
+    MemberPaymentMethodDao memberPaymentMethodDao;
+    @Resource
+    PlatformPaymentMethodDao platformPaymentMethodDao;
 
-	@Override
-	public Result commitPay(MemberQuickBuySaleCommitDto memberQuickBuySaleCommitDto) {
-		// 用户提交支付确认 将状态改为付款中
-		MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity();
-		memberQuickBuySaleEntity.setId(memberQuickBuySaleCommitDto.getId());
-		memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_PAID);
-		memberQuickBuySaleEntity.setPaymentAccount(memberQuickBuySaleCommitDto.getPaymentAccount());
-		memberQuickBuySaleEntity.setPaymentName(memberQuickBuySaleCommitDto.getPaymentName());
+    @Override
+    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(1);
+        memberQuickBuySaleEntity.setMemberId(member.getId());
+        memberQuickBuySaleEntity.setAmountUsdt(memberQuickBuySaleDto.getAmountUsdt());
+        memberQuickBuySaleEntity.setAmountCny(memberQuickBuySaleDto.getAmountCny());
+        memberQuickBuySaleEntity.setUnitPrice(memberQuickBuySaleDto.getUnitPrice());
+        memberQuickBuySaleEntity.setCreateTime(new Date());
+        memberQuickBuySaleEntity.setOrderNo(chargeNo);
+        memberQuickBuySaleEntity.setOrderType("B");
+        // 支付码 ID+四位随机数
+        int ran = (int) (Math.random() * 10000000);
+        memberQuickBuySaleEntity.setPaymentCode(ran + "");
 
-		memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity);
+        memberQuickBuySaleDao.insert(memberQuickBuySaleEntity);
+        MemberQuickBuySaleVo memberQuickBuySaleVo = new MemberQuickBuySaleVo();
+        memberQuickBuySaleVo.setId(memberQuickBuySaleEntity.getId());
+        // 返回前台付款方式
+        return Result.ok("提交成功", memberQuickBuySaleVo);
+    }
 
-		// TODO dingtalk
-		
-		return Result.ok("确认成功");
-	}
+    @Override
+    public Result commitPay(MemberQuickBuySaleCommitDto memberQuickBuySaleCommitDto) {
+        // 用户提交支付确认 将状态改为付款中
+        MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity();
+        memberQuickBuySaleEntity.setId(memberQuickBuySaleCommitDto.getId());
+        memberQuickBuySaleEntity.setOrderStatus(2);
+        memberQuickBuySaleEntity.setPaymentAccount(memberQuickBuySaleCommitDto.getPaymentAccount());
+        memberQuickBuySaleEntity.setPaymentName(memberQuickBuySaleCommitDto.getPaymentName());
 
-	@Override
-	public Result selectById(Long id) {
-		MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectById(id);
-		MemberQuickBuySaleVo memberQuickBuySaleVo = MemberQuickBuySaleEntityMapper.INSTANCE.entityToVo(memberQuickBuySaleEntity);
-		long startTime = memberQuickBuySaleEntity.getCreateTime().getTime();
-		long nowTime = new Date().getTime();
-		long third = 30*60*1000;
-		memberQuickBuySaleVo.setTimeLeft((third-nowTime+startTime)/1000);
-		return Result.ok(memberQuickBuySaleVo);
-	}
+        memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity);
 
-	
+        ThreadPoolUtils.sendDingTalk(1);
+        return Result.ok("确认成功");
+    }
 
-	@Override
-	public Result cancelRecharge(Long id) {
-		// 获取当前登录用户
-		Long memberId = LoginUserUtils.getAppLoginUser().getId();
-		MemberEntity member = memberDao.selectById(memberId);
-		if(memberId==null) {
-			return Result.fail("登录用户已失效");
-		}
-		MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectById(id);
-		memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_USER);
-		memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity);
-		
-		// 判断是否存在足够余额
-		MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(id,"USDT");
-		boolean flag = true;
-		while(flag) {
-			walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().add(memberQuickBuySaleEntity.getAmountUsdt()));
-			walletCoin.setFrozenBalance(walletCoin.getFrozenBalance().subtract(memberQuickBuySaleEntity.getAmountUsdt()));
-			int i = memberWalletCoinDao.updateById(walletCoin);
-			if(i>0) {
-				flag = false;
-			}
-			walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(id,"USDT");
-		}
-		return Result.ok("成功");
-	}
+    @Override
+    public Result selectById(Long id) {
+        MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectById(id);
+        MemberQuickBuySaleDetailVo memberQuickBuySaleDetailVo = MemberQuickBuySaleEntityMapper.INSTANCE.entityToVo(memberQuickBuySaleEntity);
+        // 收款信息
+        QueryWrapper<PlatformPaymentMethodEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("status", "1");
+        List<PlatformPaymentMethodEntity> paymentMethodList = platformPaymentMethodDao.selectList(queryWrapper);
+        // 随机一个
+        if (CollectionUtils.isEmpty(paymentMethodList)) {
+            return Result.fail("收款方式为空");
+        }
+        memberQuickBuySaleDetailVo.setPlatforPaymentMethodList(paymentMethodList);
+        long startTime = memberQuickBuySaleEntity.getCreateTime().getTime();
+        long nowTime = new Date().getTime();
+        long third = 30 * 60 * 1000;
+        memberQuickBuySaleDetailVo.setTimeLeft((third - nowTime + startTime) / 1000);
+        return Result.ok(memberQuickBuySaleDetailVo);
+    }
 
-	@Override
-	public Result sell() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    @Override
+    public Result selectAll(String type) {
+        MemberEntity member = LoginUserUtils.getAppLoginUser();
+        QueryWrapper<MemberQuickBuySaleEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("member_id", member.getId());
+        if (!StringUtils.isEmpty(type)) {
+            queryWrapper.eq("order_type", type);
+        }
+        queryWrapper.orderByDesc("id");
+        List<MemberQuickBuySaleEntity> memberQuickBuySaleEntityList = memberQuickBuySaleDao.selectList(queryWrapper);
+        List<MemberQuickBuySaleDetailVo> memberQuickBuySaleDetailVoList = MemberQuickBuySaleEntityMapper.INSTANCE.entityListToVoList(memberQuickBuySaleEntityList);
+        return Result.ok(memberQuickBuySaleDetailVoList);
+    }
+
+    @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);
+
+        ThreadPoolUtils.sendDingTalk(2);
+        return Result.ok("下单成功");
+    }
+
+    @Override
+    public Result cancelRecharge(Long id) {
+        // 获取当前登录用户
+        MemberEntity member = LoginUserUtils.getAppLoginUser();
+        MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectByIdAndMemberId(member.getId(), id);
+        memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_USER);
+        memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity);
+        return Result.ok("成功");
+    }
+
+    @Override
+    public Result cancelSell(Long id) {
+        // 获取当前登录用户
+        MemberEntity member = LoginUserUtils.getAppLoginUser();
+        MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectByIdAndMemberId(member.getId(), id);
+        if (memberQuickBuySaleEntity != null) {
+            memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_USER);
+            memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity);
+
+            MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(), CoinTypeEnum.USDT.toString());
+            // 冻结资金返回可用
+            int i = memberWalletCoinDao.subFrozenBalance(member.getId(),
+                    walletCoin.getId(), memberQuickBuySaleEntity.getAmountUsdt());
+            if (i < 0) {
+                return Result.fail("撤单失败");
+            }
+            return Result.ok("成功");
+        } else {
+            return Result.fail("订单不存在");
+        }
+
+    }
 }

--
Gitblit v1.9.1