From ffb780e019772128b46a565c4c92ef9296a73fe2 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 12 May 2021 17:27:14 +0800
Subject: [PATCH] 20210512 云顶

---
 src/main/java/com/xcong/excoin/modules/yunding/dto/InsureChangeUsdtDto.java         |   23 +++++++
 src/main/java/com/xcong/excoin/modules/yunding/service/YunDingService.java          |    5 +
 src/main/java/com/xcong/excoin/modules/yunding/controller/YunDingController.java    |   26 ++++++--
 src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java   |    6 +
 src/main/java/com/xcong/excoin/modules/yunding/vo/ChangeVo.java                     |    8 +-
 src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java |   86 ++++++++++++++++++++++++++--
 6 files changed, 135 insertions(+), 19 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 aaa5738..12a030b 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
@@ -1098,7 +1098,11 @@
                 addressIn = address;
 			} else {
                 MemberCoinAddressEntity memberCoinAddressEntity = selectByMap2.get(0);
-                addressIn = memberCoinAddressEntity.getAddress();
+                if(StrUtil.isEmpty(memberCoinAddressEntity.getAddress())){
+                    addressIn = selectMemberInfoByAccount.getInviteId();
+                }else{
+                    addressIn = memberCoinAddressEntity.getAddress();
+                }
             }
         	
             MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, memberSubmitCoinApplyInDto.getSymbol());
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/controller/YunDingController.java b/src/main/java/com/xcong/excoin/modules/yunding/controller/YunDingController.java
index f620c0b..f996c80 100644
--- a/src/main/java/com/xcong/excoin/modules/yunding/controller/YunDingController.java
+++ b/src/main/java/com/xcong/excoin/modules/yunding/controller/YunDingController.java
@@ -1,6 +1,7 @@
 package com.xcong.excoin.modules.yunding.controller;
 
 import com.xcong.excoin.common.response.Result;
+import com.xcong.excoin.modules.yunding.dto.InsureChangeUsdtDto;
 import com.xcong.excoin.modules.yunding.dto.PayProductDto;
 import com.xcong.excoin.modules.yunding.dto.YdOrderListDto;
 import com.xcong.excoin.modules.yunding.dto.YdProductListDto;
@@ -114,14 +115,23 @@
     /**
      * 转换成USDT
      */
-//    @ApiOperation(value = "转换成USDT")
-//    @ApiResponses({
-//            @ApiResponse(code = 0, message = "success", response = changeVo.class)
-//    })
-//    @GetMapping(value = "/findOrderAllInfo")
-//    public Result findOrderAllInfo() {
-//        return yunDingService.findOrderAllInfo();
-//    }
+    @ApiOperation(value = "获取转换成USDT信息")
+    @ApiResponses({
+            @ApiResponse(code = 0, message = "success", response = ChangeVo.class)
+    })
+    @GetMapping(value = "/changeUsdt")
+    public Result changeUsdt() {
+        return yunDingService.changeUsdt();
+    }
+
+    /**
+     * 确认转换成USDT
+     */
+    @ApiOperation(value = "确认转换成USDT")
+    @PostMapping(value = "/insureChangeUsdt")
+    public Result insureChangeUsdt(@RequestBody @Validated InsureChangeUsdtDto insureChangeUsdtdto){
+        return yunDingService.insureChangeUsdt(insureChangeUsdtdto);
+    }
 
 
 }
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/dto/InsureChangeUsdtDto.java b/src/main/java/com/xcong/excoin/modules/yunding/dto/InsureChangeUsdtDto.java
new file mode 100644
index 0000000..834f14c
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/yunding/dto/InsureChangeUsdtDto.java
@@ -0,0 +1,23 @@
+package com.xcong.excoin.modules.yunding.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "InsureChangeUsdtDto", description = "确认入参类")
+public class InsureChangeUsdtDto {
+
+    @NotNull
+    @ApiModelProperty(value = "XCH数量", example = "2")
+    private BigDecimal xchNum;
+
+    @NotNull
+    @ApiModelProperty(value = "XCH当前价格", example = "2")
+    private BigDecimal currentPrice;
+
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java b/src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java
index 9123393..13b03c4 100644
--- a/src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java
@@ -1,12 +1,10 @@
 package com.xcong.excoin.modules.yunding.service.Impl;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.crypto.SecureUtil;
-import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -20,6 +18,7 @@
 import com.xcong.excoin.modules.yunding.dao.YdBasicSettingDao;
 import com.xcong.excoin.modules.yunding.dao.YdOrderDao;
 import com.xcong.excoin.modules.yunding.dao.YdProductDao;
+import com.xcong.excoin.modules.yunding.dto.InsureChangeUsdtDto;
 import com.xcong.excoin.modules.yunding.dto.PayProductDto;
 import com.xcong.excoin.modules.yunding.dto.YdOrderListDto;
 import com.xcong.excoin.modules.yunding.dto.YdProductListDto;
@@ -27,10 +26,7 @@
 import com.xcong.excoin.modules.yunding.entity.YdOrderEntity;
 import com.xcong.excoin.modules.yunding.entity.YdProductEntity;
 import com.xcong.excoin.modules.yunding.service.YunDingService;
-import com.xcong.excoin.modules.yunding.vo.OrderAllInfoVo;
-import com.xcong.excoin.modules.yunding.vo.YdBasicSettingVo;
-import com.xcong.excoin.modules.yunding.vo.YdOrderVo;
-import com.xcong.excoin.modules.yunding.vo.YdProductVo;
+import com.xcong.excoin.modules.yunding.vo.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -303,6 +299,84 @@
         return Result.ok(ydOrderVo);
     }
 
+    @Override
+    public Result changeUsdt() {
+        log.info("转换成USDT");
+        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+        Long memberId = memberEntity.getId();
+        ChangeVo changeVo = new ChangeVo();
+        BigDecimal currentPrice = BigDecimal.ZERO;
+        Wrapper<YdBasicSettingEntity> queryWrapper = new QueryWrapper<>();
+        List<YdBasicSettingEntity> ydBasicSettingEntities = ydBasicSettingDao.selectList(queryWrapper);
+        if(CollUtil.isNotEmpty(ydBasicSettingEntities)){
+            YdBasicSettingEntity ydBasicSettingEntity = ydBasicSettingEntities.get(0);
+            if(ObjectUtil.isNotEmpty(ydBasicSettingEntity)){
+                //获取当前价
+                currentPrice = ydBasicSettingEntity.getCurrentPrice();
+                if(ObjectUtil.isNotEmpty(currentPrice)){
+                    changeVo.setCurrentPrice(currentPrice);
+                }
+                BigDecimal changeXch = ydBasicSettingEntity.getChangeXch();
+                if(ObjectUtil.isNotEmpty(changeXch)){
+                    changeVo.setChangeXchRadio(changeXch);
+                }
+            }
+        }
+        //获取可用
+        MemberWalletCoinEntity xch = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, "XCH");
+        if(ObjectUtil.isNotEmpty(xch)){
+            BigDecimal availableBalance = xch.getAvailableBalance();
+            changeVo.setXchAvailableBalance(availableBalance.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO:availableBalance);
+        }
+        return Result.ok(changeVo);
+    }
+
+    @Override
+    @Transactional
+    public Result insureChangeUsdt(InsureChangeUsdtDto insureChangeUsdtdto) {
+        log.info("转换成USDT");
+        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+        Long memberId = memberEntity.getId();
+        /**
+         * 验证入参
+         *
+         *     USDT账户增加
+         *     XCH账户减少
+         */
+        BigDecimal xchNum = insureChangeUsdtdto.getXchNum();
+        if(BigDecimal.ZERO.compareTo(xchNum) >= 0){
+            return Result.fail("请输入正确的数量");
+        }
+        BigDecimal currentPrice = insureChangeUsdtdto.getCurrentPrice();
+        if(BigDecimal.ZERO.compareTo(currentPrice) >= 0){
+            return Result.fail("XCH价格异常,请重试");
+        }
+        MemberWalletCoinEntity xch = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, "XCH");
+        BigDecimal totalBalance = xch.getTotalBalance();
+        BigDecimal subtractTotalBalance = totalBalance.subtract(xchNum);
+        if(BigDecimal.ZERO.compareTo(subtractTotalBalance) >= 0){
+            return Result.fail("XCH数量不足");
+        }
+
+        BigDecimal availableBalance = xch.getAvailableBalance();
+        BigDecimal subtractAvailableBalance = availableBalance.subtract(xchNum);
+        if(BigDecimal.ZERO.compareTo(subtractAvailableBalance) >= 0){
+            return Result.fail("XCH数量不足");
+        }
+        //xch减少
+        xch.setTotalBalance(subtractTotalBalance);
+        xch.setAvailableBalance(subtractAvailableBalance);
+        memberWalletCoinDao.updateById(xch);
+
+        //USDT账户增加
+        BigDecimal multiply = xchNum.multiply(currentPrice);
+        MemberWalletCoinEntity usdt = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, "USDT");
+        usdt.setTotalBalance(usdt.getTotalBalance().add(multiply));
+        usdt.setAvailableBalance(usdt.getAvailableBalance().add(multiply));
+        memberWalletCoinDao.updateById(usdt);
+        return Result.ok("操作成功");
+    }
+
     /**
      * 去加减币币账户余额,减少产品的剩余数目
      * @param memberId
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/service/YunDingService.java b/src/main/java/com/xcong/excoin/modules/yunding/service/YunDingService.java
index a7eae46..f07e11f 100644
--- a/src/main/java/com/xcong/excoin/modules/yunding/service/YunDingService.java
+++ b/src/main/java/com/xcong/excoin/modules/yunding/service/YunDingService.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xcong.excoin.common.response.Result;
+import com.xcong.excoin.modules.yunding.dto.InsureChangeUsdtDto;
 import com.xcong.excoin.modules.yunding.dto.PayProductDto;
 import com.xcong.excoin.modules.yunding.dto.YdOrderListDto;
 import com.xcong.excoin.modules.yunding.dto.YdProductListDto;
@@ -24,4 +25,8 @@
     Result findOrderAllInfo();
 
     Result getOrderInfo(Long id);
+
+    Result changeUsdt();
+
+    Result insureChangeUsdt(InsureChangeUsdtDto insureChangeUsdtdto);
 }
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/vo/changeVo.java b/src/main/java/com/xcong/excoin/modules/yunding/vo/ChangeVo.java
similarity index 70%
rename from src/main/java/com/xcong/excoin/modules/yunding/vo/changeVo.java
rename to src/main/java/com/xcong/excoin/modules/yunding/vo/ChangeVo.java
index d3f588a..81df31b 100644
--- a/src/main/java/com/xcong/excoin/modules/yunding/vo/changeVo.java
+++ b/src/main/java/com/xcong/excoin/modules/yunding/vo/ChangeVo.java
@@ -7,17 +7,17 @@
 import java.math.BigDecimal;
 
 @Data
-@ApiModel(value = "changeVo", description = "详情")
-public class changeVo {
+@ApiModel(value = "ChangeVo", description = "详情")
+public class ChangeVo {
 
     @ApiModelProperty("xch余额")
     private BigDecimal xchAvailableBalance;
 
     @ApiModelProperty("XCH兑换USDT手续费")
-    private BigDecimal changeXch;
+    private BigDecimal changeXchRadio;
 
     @ApiModelProperty("当前价格")
-    private BigDecimal xchUsdt;
+    private BigDecimal currentPrice;
 
 
 }

--
Gitblit v1.9.1