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