From 9b16b4c4dfa58ebe81431efc42ae6c55635bff88 Mon Sep 17 00:00:00 2001 From: gao <gaoleox@163> Date: Wed, 27 May 2020 17:06:37 +0800 Subject: [PATCH] 下单接口 --- src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java | 155 +++++++++++++++++++++++++++++++++------------------ 1 files changed, 99 insertions(+), 56 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..d28f72d 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 @@ -9,8 +9,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; @@ -20,17 +23,16 @@ 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.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 +43,22 @@ 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.setUnitPrice(memberQuickBuySaleDto.getUnitPrice()); memberQuickBuySaleEntity.setCreateTime(new Date()); memberQuickBuySaleEntity.setOrderNo(chargeNo); memberQuickBuySaleEntity.setOrderType("B"); @@ -88,9 +67,10 @@ memberQuickBuySaleEntity.setPaymentCode(ran + ""); memberQuickBuySaleDao.insert(memberQuickBuySaleEntity); + MemberQuickBuySaleVo memberQuickBuySaleVo = new MemberQuickBuySaleVo(); + memberQuickBuySaleVo.setId(memberQuickBuySaleEntity.getId()); // 返回前台付款方式 -// memberChargeUsdt.setReceiveMethod(payMethodList.get(index)); - return Result.ok("购买成功,请及时付款"); + return Result.ok(memberQuickBuySaleVo); } @Override @@ -98,7 +78,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()); @@ -112,30 +92,99 @@ @Override public Result selectById(Long id) { MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectById(id); - MemberQuickBuySaleVo memberQuickBuySaleVo = MemberQuickBuySaleEntityMapper.INSTANCE.entityToVo(memberQuickBuySaleEntity); + 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; - memberQuickBuySaleVo.setTimeLeft((third-nowTime+startTime)/1000); - return Result.ok(memberQuickBuySaleVo); + memberQuickBuySaleDetailVo.setTimeLeft((third-nowTime+startTime)/1000); + return Result.ok(memberQuickBuySaleDetailVo); + } + + @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); + } + 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); + + // TODO dingtalk + + 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); + MemberEntity member = LoginUserUtils.getAppLoginUser(); + MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectByIdAndMemberId(id,member.getId()); memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_USER); 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 +193,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