xiaoyong931011
2021-05-12 ffb780e019772128b46a565c4c92ef9296a73fe2
20210512 云顶
1 files added
1 files renamed
4 files modified
152 ■■■■ changed files
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/controller/YunDingController.java 26 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/dto/InsureChangeUsdtDto.java 23 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java 86 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/service/YunDingService.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/vo/ChangeVo.java 8 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -1098,8 +1098,12 @@
                addressIn = address;
            } else {
                MemberCoinAddressEntity memberCoinAddressEntity = selectByMap2.get(0);
                if(StrUtil.isEmpty(memberCoinAddressEntity.getAddress())){
                    addressIn = selectMemberInfoByAccount.getInviteId();
                }else{
                addressIn = memberCoinAddressEntity.getAddress();
            }
            }
            
            MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, memberSubmitCoinApplyInDto.getSymbol());
            BigDecimal availableBalance = walletCoin.getAvailableBalance();
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);
    }
}
src/main/java/com/xcong/excoin/modules/yunding/dto/InsureChangeUsdtDto.java
New file
@@ -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;
}
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
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);
}
src/main/java/com/xcong/excoin/modules/yunding/vo/ChangeVo.java
File was renamed from 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;
}