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