From d775bb5dacca4c6ff33c65a0cb891f5992cc1bed Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 28 May 2020 20:12:42 +0800 Subject: [PATCH] 同步k线、最新价、人民币美元汇率、homesymbols接口 --- src/main/java/com/xcong/excoin/modules/platform/dao/PlatformCnyUsdtExchangeDao.java | 5 src/main/java/com/xcong/excoin/modules/contract/entity/ContractEntrustOrderEntity.java | 14 src/main/java/com/xcong/excoin/modules/contract/mapper/ContractEntrustOrderEntityMapper.java | 18 src/main/java/com/xcong/excoin/modules/contract/service/ContractEntrustOrderService.java | 4 src/main/resources/mapper/platform/PlatformCnyUsdtExchangeDao.xml | 4 src/main/java/com/xcong/excoin/modules/symbols/parameter/vo/HomeSymbolsVo.java | 31 + src/main/java/com/xcong/excoin/common/contants/AppContants.java | 12 src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java | 3 src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java | 55 ++ src/main/java/com/xcong/excoin/modules/symbols/controller/SymbolsController.java | 33 + src/main/java/com/xcong/excoin/modules/symbols/service/SymbolsService.java | 4 src/main/java/com/xcong/excoin/ExcoinApplication.java | 2 src/main/java/com/xcong/excoin/modules/symbols/entity/PlatformSymbolsContractEntity.java | 2 src/main/java/com/xcong/excoin/quartz/job/NewestPriceUpdateJob.java | 65 ++ src/main/resources/mapper/platform/PlatformSymbolsContractDao.xml | 4 src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java | 10 src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java | 931 ++++++++++++++++++------------------ src/main/java/com/xcong/excoin/modules/contract/controller/ContractEntrustOrderController.java | 21 src/main/resources/mapper/contract/ContractEntrustOrderDao.xml | 5 src/main/java/com/xcong/excoin/modules/platform/entity/PlatformSymbolsSkuEntity.java | 4 src/main/java/com/xcong/excoin/modules/platform/service/impl/PlatformCnyUsdtExchangeServiceImpl.java | 2 src/main/resources/application-test.yml | 102 ++++ src/main/java/com/xcong/excoin/quartz/job/KlineDataUpdateJob.java | 2 /dev/null | 12 src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java | 65 ++ src/main/java/com/xcong/excoin/quartz/job/UsdtCnyExchangePriceUpdateJob.java | 65 ++ src/main/java/com/xcong/excoin/modules/symbols/dao/PlatformSymbolsContractDao.java | 6 src/main/resources/application.yml | 8 28 files changed, 984 insertions(+), 505 deletions(-) diff --git a/src/main/java/com/xcong/excoin/ExcoinApplication.java b/src/main/java/com/xcong/excoin/ExcoinApplication.java index 0c94c3f..a2a7e2b 100644 --- a/src/main/java/com/xcong/excoin/ExcoinApplication.java +++ b/src/main/java/com/xcong/excoin/ExcoinApplication.java @@ -3,11 +3,13 @@ import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; import springfox.documentation.swagger2.annotations.EnableSwagger2; /** * @author helius */ +@EnableScheduling @EnableSwagger2 @SpringBootApplication @MapperScan("com.xcong.excoin.modules.*.dao") diff --git a/src/main/java/com/xcong/excoin/common/contants/AppContants.java b/src/main/java/com/xcong/excoin/common/contants/AppContants.java index 0ad9052..9619ae1 100644 --- a/src/main/java/com/xcong/excoin/common/contants/AppContants.java +++ b/src/main/java/com/xcong/excoin/common/contants/AppContants.java @@ -47,6 +47,16 @@ /** * 初始化金额 */ - public static final BigDecimal INIT_MONEY = new BigDecimal(0.000000); + public static final BigDecimal INIT_MONEY = BigDecimal.ZERO; + + /** + * homeSymbols 接口状态值 币币 + */ + public static final int HOME_SYMBOLS_COIN = 1; + + /** + * homeSymbols 接口状态值 合约 + */ + public static final int HOME_SYMBOLS_CONTRACT = 2; } diff --git a/src/main/java/com/xcong/excoin/modules/coin/entity/CnyUsdtExchange.java b/src/main/java/com/xcong/excoin/modules/coin/entity/CnyUsdtExchange.java deleted file mode 100644 index 76089b7..0000000 --- a/src/main/java/com/xcong/excoin/modules/coin/entity/CnyUsdtExchange.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.xcong.excoin.modules.coin.entity; - -import java.math.BigDecimal; - -import com.baomidou.mybatisplus.annotation.TableName; -import com.xcong.excoin.common.system.base.BaseEntity; - -import lombok.Data; - -/** - * 行情人民币与usdt兑现价格表 - */ -@Data -@TableName("platform_cny_usdt_exchange") -public class CnyUsdtExchange extends BaseEntity{ - - private static final long serialVersionUID = 1L; - - /** - * CNY/USDT - */ - private BigDecimal value; - - private BigDecimal diff; - - -} diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java index 719b6a8..0e8d92e 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java @@ -5,6 +5,7 @@ import java.util.List; import javax.annotation.Resource; +import com.xcong.excoin.modules.platform.entity.PlatformCnyUsdtExchangeEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -13,7 +14,6 @@ import com.xcong.excoin.common.enumerates.MemberWalletCoinEnum; import com.xcong.excoin.common.response.Result; import com.xcong.excoin.modules.coin.dao.MemberAccountMoneyChangeDao; -import com.xcong.excoin.modules.coin.entity.CnyUsdtExchange; import com.xcong.excoin.modules.coin.entity.MemberAccountMoneyChange; import com.xcong.excoin.modules.coin.parameter.vo.MemberAccountMoneyChangeInfoVo; import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletAgentInfoVo; @@ -27,487 +27,488 @@ import com.xcong.excoin.modules.member.entity.MemberWalletAgentEntity; import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity; import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity; -import com.xcong.excoin.modules.platform.dao.CnyUsdtExchangeDao; +import com.xcong.excoin.modules.platform.dao.PlatformCnyUsdtExchangeDao; import com.xcong.excoin.utils.MessageSourceUtils; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @Service -public class CoinServiceImpl extends ServiceImpl<MemberWalletCoinDao, MemberWalletCoinEntity> implements CoinService{ +public class CoinServiceImpl extends ServiceImpl<MemberWalletCoinDao, MemberWalletCoinEntity> implements CoinService { - //@Resource - //SymbolsService symbolsService; - @Resource - CnyUsdtExchangeDao cnyUsdtExchangeDao; - @Resource - MemberWalletCoinDao memberWalletCoinDao; - @Resource - MemberWalletContractDao memberWalletContractDao; - @Resource - MemberAccountMoneyChangeDao memberAccountMoneyChangeDao; - @Resource - MemberWalletAgentDao memberWalletAgentDao; - - - @Override - public Result getWalletCoin() { - //获取用户ID - Long memberId = LoginUserUtils.getAppLoginUser().getId(); - CnyUsdtExchange cnyUsdtExchange =cnyUsdtExchangeDao.getCNYAndUSDTOne(); - BigDecimal cnyUsdt = cnyUsdtExchange.getValue(); - - BigDecimal totalUsdts = BigDecimal.ZERO; - if(!StrUtil.isEmpty(memberId.toString())) { - - List<MemberWalletCoinEntity> memberWalletCoinlist = memberWalletCoinDao.selectMemberWalletCoinsByMemberId(memberId); - List<MemberWalletCoinInfoVo> memberWalletCoinInfoVolist = new ArrayList<MemberWalletCoinInfoVo>(); - - if(CollUtil.isNotEmpty(memberWalletCoinlist)) { - for(MemberWalletCoinEntity memberWalletCoinEntity : memberWalletCoinlist) { - MemberWalletCoinInfoVo memberWalletCoinInfoVo = new MemberWalletCoinInfoVo(); - memberWalletCoinInfoVo.setAvailableBalance(memberWalletCoinEntity.getAvailableBalance().setScale(4, BigDecimal.ROUND_DOWN)); - memberWalletCoinInfoVo.setFrozenBalance(memberWalletCoinEntity.getFrozenBalance().setScale(4, BigDecimal.ROUND_DOWN)); - memberWalletCoinInfoVo.setMemberId(memberWalletCoinEntity.getMemberId()); - memberWalletCoinInfoVo.setTotalBalance(memberWalletCoinEntity.getTotalBalance().setScale(4, BigDecimal.ROUND_DOWN)); - memberWalletCoinInfoVo.setWalletCode(memberWalletCoinEntity.getWalletCode()); - memberWalletCoinInfoVolist.add(memberWalletCoinInfoVo); - } - } - - if(CollUtil.isNotEmpty(memberWalletCoinInfoVolist)) { - for(MemberWalletCoinInfoVo walletCoin : memberWalletCoinInfoVolist) { - if(MemberWalletCoinEnum.WALLETCOINCODE.getValue().equals(walletCoin.getWalletCode())) { - BigDecimal totalUsdt = BigDecimal.ZERO; - totalUsdt = walletCoin.getAvailableBalance().add(walletCoin.getFrozenBalance()); - totalUsdts = totalUsdts.add(totalUsdt); - BigDecimal totalCny = totalUsdt.multiply(cnyUsdt); - walletCoin.setTotalBalance(totalCny.setScale(4, BigDecimal.ROUND_DOWN)); - }else { - BigDecimal amount = walletCoin.getAvailableBalance().add(walletCoin.getFrozenBalance()); - BigDecimal closePrice = new BigDecimal("10.0000"); - BigDecimal totalUsdt = BigDecimal.ZERO; - //Double closePrice = symbolsService.getCloseSymbolsBySymbolsName(walletCoin.getWalletCode()+"/USDT"); - totalUsdt = totalUsdt.add(amount.multiply(closePrice)); - totalUsdts = totalUsdts.add(totalUsdt); - walletCoin.setTotalBalance(totalUsdt.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); - } - } - } - MemberWalletCoinVo memberWalletCoinVo = new MemberWalletCoinVo(); - memberWalletCoinVo.setTotalUsdt(totalUsdts.setScale(4, BigDecimal.ROUND_DOWN)); - memberWalletCoinVo.setTotalCny(totalUsdts.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); - memberWalletCoinVo.setMemberWalletCoinInfoVo(memberWalletCoinInfoVolist); - return Result.ok(memberWalletCoinVo); - }else { - List<MemberWalletCoinInfoVo> memberWalletCoinlist = new ArrayList<MemberWalletCoinInfoVo>(); - MemberWalletCoinInfoVo coin = new MemberWalletCoinInfoVo(); - coin.setAvailableBalance(BigDecimal.ZERO); - coin.setTotalBalance(BigDecimal.ZERO); - coin.setFrozenBalance(BigDecimal.ZERO); - coin.setWalletCode(CoinTypeEnum.BTC.toString()); - memberWalletCoinlist.add(coin); - coin.setWalletCode(CoinTypeEnum.ETH.toString()); - memberWalletCoinlist.add(coin); - coin.setWalletCode(CoinTypeEnum.LTC.toString()); - memberWalletCoinlist.add(coin); - coin.setWalletCode(CoinTypeEnum.BCH.toString()); - memberWalletCoinlist.add(coin); - coin.setWalletCode(CoinTypeEnum.USDT.toString()); - memberWalletCoinlist.add(coin); - coin.setWalletCode(CoinTypeEnum.EOS.toString()); - memberWalletCoinlist.add(coin); - coin.setWalletCode(CoinTypeEnum.XRP.toString()); - memberWalletCoinlist.add(coin); - coin.setWalletCode(CoinTypeEnum.ETC.toString()); - memberWalletCoinlist.add(coin); - - MemberWalletCoinVo memberWalletCoinVo = new MemberWalletCoinVo(); - memberWalletCoinVo.setTotalUsdt(totalUsdts.setScale(4, BigDecimal.ROUND_DOWN)); - memberWalletCoinVo.setTotalCny(totalUsdts.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); - memberWalletCoinVo.setMemberWalletCoinInfoVo(memberWalletCoinlist);; - return Result.ok(memberWalletCoinVo); - } - } + //@Resource + //SymbolsService symbolsService; + @Resource + PlatformCnyUsdtExchangeDao cnyUsdtExchangeDao; + @Resource + MemberWalletCoinDao memberWalletCoinDao; + @Resource + MemberWalletContractDao memberWalletContractDao; + @Resource + MemberAccountMoneyChangeDao memberAccountMoneyChangeDao; + @Resource + MemberWalletAgentDao memberWalletAgentDao; - @Override - public Result getWalletCoinBySymbol(String symbol) { - //获取用户ID - Long memberId = LoginUserUtils.getAppLoginUser().getId(); - MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId,symbol); - MemberWalletCoinInfoVo memberWalletCoinInfoVo = new MemberWalletCoinInfoVo(); - memberWalletCoinInfoVo.setFrozenBalance(walletCoin.getFrozenBalance()); - memberWalletCoinInfoVo.setAvailableBalance(walletCoin.getAvailableBalance()); - memberWalletCoinInfoVo.setMemberId(memberId); - memberWalletCoinInfoVo.setWalletCode(symbol); - if(!StrUtil.isEmpty(memberId.toString())) { - CnyUsdtExchange cnyUsdtExchange =cnyUsdtExchangeDao.getCNYAndUSDTOne(); - BigDecimal cnyUsdt = cnyUsdtExchange.getValue(); - BigDecimal total = walletCoin.getAvailableBalance().add(walletCoin.getFrozenBalance()); - - if(MemberWalletCoinEnum.WALLETCOINCODE.getValue().equals(walletCoin.getWalletCode())) { - memberWalletCoinInfoVo.setTotalBalance(total.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); - - }else { - BigDecimal closePrice = new BigDecimal("10.0000"); - //Double closePrice = symbolsService.getCloseSymbolsBySymbolsName(wallet.getCode()+"/USDT"); - memberWalletCoinInfoVo.setTotalBalance(total.multiply(closePrice).multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); - } - } - return Result.ok(memberWalletCoinInfoVo); - } - @Override - public Result getWalletContractById() { - - //获取用户ID - Long memberId = LoginUserUtils.getAppLoginUser().getId(); - - CnyUsdtExchange cnyUsdtExchange =cnyUsdtExchangeDao.getCNYAndUSDTOne(); - BigDecimal cnyUsdt = cnyUsdtExchange.getValue(); - - String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); - MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, walletCode); - if(ObjectUtil.isEmpty(walletContract)) { - return Result.fail(MessageSourceUtils.getString("member_service_0001")); - } - /** - * todo - */ - //获取当前的合约持仓 - //获取实时盈亏 - BigDecimal profitAndLoss = new BigDecimal("50.000"); - //获取总付款 - BigDecimal totalPayment = new BigDecimal("50.000"); - BigDecimal lastTotalBalance = new BigDecimal("0"); - BigDecimal totalBalance = walletContract.getTotalBalance(); - lastTotalBalance = totalBalance.add(profitAndLoss); - if(lastTotalBalance.compareTo(BigDecimal.ZERO) < 0) { - lastTotalBalance = new BigDecimal("0"); - } - - MemberWalletContractInfoVo memberWalletContractInfoVo = new MemberWalletContractInfoVo(); - memberWalletContractInfoVo.setFrozenBalance(totalPayment.setScale(4, BigDecimal.ROUND_DOWN)); - memberWalletContractInfoVo.setAvailableBalance(walletContract.getAvailableBalance()); - memberWalletContractInfoVo.setTotalBalance(lastTotalBalance.setScale(4, BigDecimal.ROUND_DOWN)); - memberWalletContractInfoVo.setTotalRMBBalance(lastTotalBalance.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); - - return Result.ok(memberWalletContractInfoVo); - } + @Override + public Result getWalletCoin() { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + PlatformCnyUsdtExchangeEntity cnyUsdtExchange = cnyUsdtExchangeDao.getCNYAndUSDTOne(); + BigDecimal cnyUsdt = cnyUsdtExchange.getValue(); - @Override - @Transactional(rollbackFor = Exception.class) - public Result coinWalletTransferToContract(BigDecimal balance, String symbol) { - if(balance.compareTo(BigDecimal.ZERO) <= 0) { - return Result.fail(MessageSourceUtils.getString("member_service_0004")); - } - //获取用户ID - Long memberId = LoginUserUtils.getAppLoginUser().getId(); - - if(!StrUtil.isEmpty(memberId.toString())) { - String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); - MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId,walletCode); - BigDecimal available = walletCoin.getAvailableBalance(); - // 扣币 - BigDecimal total = available.subtract(balance); - if(total.compareTo(BigDecimal.ZERO)<0) { - return Result.fail(MessageSourceUtils.getString("member_service_0005")); - } - BigDecimal subtract = walletCoin.getTotalBalance().subtract(balance); - if(subtract.compareTo(BigDecimal.ZERO)<0) { - return Result.fail(MessageSourceUtils.getString("member_service_0005")); - } - walletCoin.setAvailableBalance(total.setScale(4, BigDecimal.ROUND_DOWN)); - walletCoin.setTotalBalance(subtract.setScale(4, BigDecimal.ROUND_DOWN)); - int updateWalletCoinById = memberWalletCoinDao.updateById(walletCoin); - if(updateWalletCoinById < 1) { - return Result.fail(MessageSourceUtils.getString("member_service_0096")); - } - // 加币 - // 查询合约账户 - MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, walletCode); - BigDecimal availableBalance = walletContract.getAvailableBalance(); - BigDecimal add = availableBalance.add(balance); - walletContract.setAvailableBalance(add.setScale(4, BigDecimal.ROUND_DOWN)); - BigDecimal totalBalance = walletContract.getTotalBalance(); - BigDecimal totalBigDecimal = totalBalance.add(balance); - walletContract.setTotalBalance(totalBigDecimal.setScale(4, BigDecimal.ROUND_DOWN)); - int updateWalletContractById = memberWalletContractDao.updateById(walletContract); - if(updateWalletContractById < 1) { - return Result.fail(MessageSourceUtils.getString("member_service_0096")); - } - //添加币币资金划转历史记录 - MemberAccountMoneyChange memberAccountRecord = new MemberAccountMoneyChange(); - memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTTOCONTRACT.getValue()); - memberAccountRecord.setMemberId(memberId); - memberAccountRecord.setAmount(balance.negate().setScale(4, BigDecimal.ROUND_DOWN)); - memberAccountRecord.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER); - memberAccountRecord.setSymbol(MemberWalletCoinEnum.WALLETCOINCODE.getValue()); - memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN); - memberAccountMoneyChangeDao.insert(memberAccountRecord); - - //添加合约资金划转历史记录 - memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTFROMWALLETCOIN.getValue()); - memberAccountRecord.setSymbol(MemberWalletCoinEnum.WALLETCOINCODE.getValue()); - memberAccountRecord.setAmount(balance.setScale(4, BigDecimal.ROUND_DOWN)); - memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_CONTRACT); - memberAccountMoneyChangeDao.insert(memberAccountRecord); - } - return Result.ok(MessageSourceUtils.getString("member_service_0006")); - } + BigDecimal totalUsdts = BigDecimal.ZERO; + if (!StrUtil.isEmpty(memberId.toString())) { - @Override - @Transactional(rollbackFor = Exception.class) - public Result contractTransferToWalletCoin(BigDecimal balance, String symbol) { - if(balance.compareTo(BigDecimal.ZERO)<=0){ - return Result.fail(MessageSourceUtils.getString("member_service_0004")); - } - //获取用户ID - Long memberId = LoginUserUtils.getAppLoginUser().getId(); - - String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); - MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, walletCode); - BigDecimal availableBalance = walletContract.getAvailableBalance(); - // 扣币 - BigDecimal availableSubtract = availableBalance.subtract(balance); - if(availableSubtract.compareTo(BigDecimal.ZERO) < 0 ) { - return Result.fail(MessageSourceUtils.getString("member_service_0007")); - } - BigDecimal totalBalance = walletContract.getTotalBalance(); - BigDecimal totalSubtract = totalBalance.subtract(balance); - - walletContract.setAvailableBalance(availableSubtract.setScale(4, BigDecimal.ROUND_DOWN)); - walletContract.setTotalBalance(totalSubtract.setScale(4, BigDecimal.ROUND_DOWN)); - int updateWalletCoinById = memberWalletContractDao.updateById(walletContract); - if(updateWalletCoinById < 1) { - return Result.fail(MessageSourceUtils.getString("member_service_0096")); - } - // 加币 - MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, walletCode); - BigDecimal walletCoinAvailableBalance = walletCoin.getAvailableBalance(); - BigDecimal CoinAvailableBalance = walletCoinAvailableBalance.add(balance); - BigDecimal walletCoinTotalBalance = walletCoin.getTotalBalance(); - BigDecimal CoinTotalBalance = walletCoinTotalBalance.add(balance); - - walletCoin.setAvailableBalance(CoinAvailableBalance.setScale(4, BigDecimal.ROUND_DOWN)); - walletCoin.setTotalBalance(CoinTotalBalance.setScale(4, BigDecimal.ROUND_DOWN)); - int updateById = memberWalletCoinDao.updateById(walletCoin); - if(updateById < 1) { - return Result.fail(MessageSourceUtils.getString("member_service_0096")); - } - - //添加资金划转历史记录 - MemberAccountMoneyChange memberAccountRecord = new MemberAccountMoneyChange(); - memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTTOWALLETCOIN.getValue()); - memberAccountRecord.setMemberId(memberId); - memberAccountRecord.setAmount(balance.negate().setScale(4, BigDecimal.ROUND_DOWN)); - memberAccountRecord.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER); - memberAccountRecord.setSymbol(walletCode); - memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_CONTRACT); - memberAccountMoneyChangeDao.insert(memberAccountRecord); - - //添加资金划转历史记录 - memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTFROMCONTRACT.getValue()); - memberAccountRecord.setSymbol(walletCode); - memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN); - memberAccountRecord.setAmount(balance.setScale(4, BigDecimal.ROUND_DOWN)); - memberAccountMoneyChangeDao.insert(memberAccountRecord); - return Result.ok(MessageSourceUtils.getString("member_service_0006")); - } + List<MemberWalletCoinEntity> memberWalletCoinlist = memberWalletCoinDao.selectMemberWalletCoinsByMemberId(memberId); + List<MemberWalletCoinInfoVo> memberWalletCoinInfoVolist = new ArrayList<MemberWalletCoinInfoVo>(); - @Override - public Result findWalletContractBySymbol() { - //获取用户ID - Long memberId = LoginUserUtils.getAppLoginUser().getId(); - String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); - MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, walletCode); - BigDecimal availableBalance = walletContract.getAvailableBalance().setScale(4, BigDecimal.ROUND_DOWN); - return Result.ok(availableBalance); - } + if (CollUtil.isNotEmpty(memberWalletCoinlist)) { + for (MemberWalletCoinEntity memberWalletCoinEntity : memberWalletCoinlist) { + MemberWalletCoinInfoVo memberWalletCoinInfoVo = new MemberWalletCoinInfoVo(); + memberWalletCoinInfoVo.setAvailableBalance(memberWalletCoinEntity.getAvailableBalance().setScale(4, BigDecimal.ROUND_DOWN)); + memberWalletCoinInfoVo.setFrozenBalance(memberWalletCoinEntity.getFrozenBalance().setScale(4, BigDecimal.ROUND_DOWN)); + memberWalletCoinInfoVo.setMemberId(memberWalletCoinEntity.getMemberId()); + memberWalletCoinInfoVo.setTotalBalance(memberWalletCoinEntity.getTotalBalance().setScale(4, BigDecimal.ROUND_DOWN)); + memberWalletCoinInfoVo.setWalletCode(memberWalletCoinEntity.getWalletCode()); + memberWalletCoinInfoVolist.add(memberWalletCoinInfoVo); + } + } - @Override - public Result findWalletCoinBySymbol(String symbol) { - //获取用户ID - Long memberId = LoginUserUtils.getAppLoginUser().getId(); - - MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, symbol); - BigDecimal availableBalance = walletCoin.getAvailableBalance().setScale(4, BigDecimal.ROUND_DOWN); - return Result.ok(availableBalance); - } + if (CollUtil.isNotEmpty(memberWalletCoinInfoVolist)) { + for (MemberWalletCoinInfoVo walletCoin : memberWalletCoinInfoVolist) { + if (MemberWalletCoinEnum.WALLETCOINCODE.getValue().equals(walletCoin.getWalletCode())) { + BigDecimal totalUsdt = BigDecimal.ZERO; + totalUsdt = walletCoin.getAvailableBalance().add(walletCoin.getFrozenBalance()); + totalUsdts = totalUsdts.add(totalUsdt); + BigDecimal totalCny = totalUsdt.multiply(cnyUsdt); + walletCoin.setTotalBalance(totalCny.setScale(4, BigDecimal.ROUND_DOWN)); + } else { + BigDecimal amount = walletCoin.getAvailableBalance().add(walletCoin.getFrozenBalance()); + BigDecimal closePrice = new BigDecimal("10.0000"); + BigDecimal totalUsdt = BigDecimal.ZERO; + //Double closePrice = symbolsService.getCloseSymbolsBySymbolsName(walletCoin.getWalletCode()+"/USDT"); + totalUsdt = totalUsdt.add(amount.multiply(closePrice)); + totalUsdts = totalUsdts.add(totalUsdt); + walletCoin.setTotalBalance(totalUsdt.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); + } + } + } + MemberWalletCoinVo memberWalletCoinVo = new MemberWalletCoinVo(); + memberWalletCoinVo.setTotalUsdt(totalUsdts.setScale(4, BigDecimal.ROUND_DOWN)); + memberWalletCoinVo.setTotalCny(totalUsdts.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); + memberWalletCoinVo.setMemberWalletCoinInfoVo(memberWalletCoinInfoVolist); + return Result.ok(memberWalletCoinVo); + } else { + List<MemberWalletCoinInfoVo> memberWalletCoinlist = new ArrayList<MemberWalletCoinInfoVo>(); + MemberWalletCoinInfoVo coin = new MemberWalletCoinInfoVo(); + coin.setAvailableBalance(BigDecimal.ZERO); + coin.setTotalBalance(BigDecimal.ZERO); + coin.setFrozenBalance(BigDecimal.ZERO); + coin.setWalletCode(CoinTypeEnum.BTC.toString()); + memberWalletCoinlist.add(coin); + coin.setWalletCode(CoinTypeEnum.ETH.toString()); + memberWalletCoinlist.add(coin); + coin.setWalletCode(CoinTypeEnum.LTC.toString()); + memberWalletCoinlist.add(coin); + coin.setWalletCode(CoinTypeEnum.BCH.toString()); + memberWalletCoinlist.add(coin); + coin.setWalletCode(CoinTypeEnum.USDT.toString()); + memberWalletCoinlist.add(coin); + coin.setWalletCode(CoinTypeEnum.EOS.toString()); + memberWalletCoinlist.add(coin); + coin.setWalletCode(CoinTypeEnum.XRP.toString()); + memberWalletCoinlist.add(coin); + coin.setWalletCode(CoinTypeEnum.ETC.toString()); + memberWalletCoinlist.add(coin); - @Override - public Result getWalletCoinRecords() { - //获取用户ID - Long memberId = LoginUserUtils.getAppLoginUser().getId(); - List<MemberAccountMoneyChange> coinRecordList = memberAccountMoneyChangeDao.selectWalletCoinRecordsByMemIdTypeSymbol(memberId); - List<MemberAccountMoneyChangeInfoVo> arrayList = new ArrayList<>(); - if(CollUtil.isNotEmpty(coinRecordList)) { - for(MemberAccountMoneyChange memberAccountMoneyChange : coinRecordList) { - MemberAccountMoneyChangeInfoVo memberAccountMoneyChangeInfoVo = new MemberAccountMoneyChangeInfoVo(); - memberAccountMoneyChangeInfoVo.setAmount(memberAccountMoneyChange.getAmount()); - memberAccountMoneyChangeInfoVo.setContent(memberAccountMoneyChange.getContent()); - memberAccountMoneyChangeInfoVo.setStatus(memberAccountMoneyChange.getStatus()); - memberAccountMoneyChangeInfoVo.setSymbol(memberAccountMoneyChange.getSymbol()); - memberAccountMoneyChangeInfoVo.setType(memberAccountMoneyChange.getType()); - memberAccountMoneyChangeInfoVo.setUpdateTime(memberAccountMoneyChange.getUpdateTime()); - arrayList.add(memberAccountMoneyChangeInfoVo); - } - } - return Result.ok(arrayList); - } + MemberWalletCoinVo memberWalletCoinVo = new MemberWalletCoinVo(); + memberWalletCoinVo.setTotalUsdt(totalUsdts.setScale(4, BigDecimal.ROUND_DOWN)); + memberWalletCoinVo.setTotalCny(totalUsdts.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); + memberWalletCoinVo.setMemberWalletCoinInfoVo(memberWalletCoinlist); + ; + return Result.ok(memberWalletCoinVo); + } + } - @Override - public Result getWalletContractRecords() { - //获取用户ID - Long memberId = LoginUserUtils.getAppLoginUser().getId(); - String symbol = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); - List<MemberAccountMoneyChange> contractRecordList = memberAccountMoneyChangeDao.selectWalletContractRecordsByMemIdTypeSymbol(symbol,memberId); - - List<MemberAccountMoneyChangeInfoVo> arrayList = new ArrayList<>(); - if(ObjectUtil.isNotNull(contractRecordList)) { - for(MemberAccountMoneyChange memberAccountMoneyChange : contractRecordList) { - MemberAccountMoneyChangeInfoVo memberAccountMoneyChangeInfoVo = new MemberAccountMoneyChangeInfoVo(); - memberAccountMoneyChangeInfoVo.setAmount(memberAccountMoneyChange.getAmount()); - memberAccountMoneyChangeInfoVo.setContent(memberAccountMoneyChange.getContent()); - memberAccountMoneyChangeInfoVo.setStatus(memberAccountMoneyChange.getStatus()); - memberAccountMoneyChangeInfoVo.setSymbol(memberAccountMoneyChange.getSymbol()); - memberAccountMoneyChangeInfoVo.setType(memberAccountMoneyChange.getType()); - memberAccountMoneyChangeInfoVo.setUpdateTime(memberAccountMoneyChange.getUpdateTime()); - arrayList.add(memberAccountMoneyChangeInfoVo); - } - } - - return Result.ok(arrayList); - } + @Override + public Result getWalletCoinBySymbol(String symbol) { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, symbol); + MemberWalletCoinInfoVo memberWalletCoinInfoVo = new MemberWalletCoinInfoVo(); + memberWalletCoinInfoVo.setFrozenBalance(walletCoin.getFrozenBalance()); + memberWalletCoinInfoVo.setAvailableBalance(walletCoin.getAvailableBalance()); + memberWalletCoinInfoVo.setMemberId(memberId); + memberWalletCoinInfoVo.setWalletCode(symbol); + if (!StrUtil.isEmpty(memberId.toString())) { + PlatformCnyUsdtExchangeEntity cnyUsdtExchange = cnyUsdtExchangeDao.getCNYAndUSDTOne(); + BigDecimal cnyUsdt = cnyUsdtExchange.getValue(); + BigDecimal total = walletCoin.getAvailableBalance().add(walletCoin.getFrozenBalance()); - @Override - public Result getWalletAgentRecords() { - //获取用户ID - Long memberId = LoginUserUtils.getAppLoginUser().getId(); - - List<MemberAccountMoneyChange> contractRecordList = - memberAccountMoneyChangeDao.selectWalletAgentRecordByMemIdTypeSymbol(MemberWalletCoinEnum.WALLETCOINCODE.getValue(),memberId); - - List<MemberAccountMoneyChangeInfoVo> arrayList = new ArrayList<>(); - if(ObjectUtil.isNotNull(contractRecordList)) { - for(MemberAccountMoneyChange memberAccountMoneyChange : contractRecordList) { - MemberAccountMoneyChangeInfoVo memberAccountMoneyChangeInfoVo = new MemberAccountMoneyChangeInfoVo(); - memberAccountMoneyChangeInfoVo.setAmount(memberAccountMoneyChange.getAmount()); - memberAccountMoneyChangeInfoVo.setContent(memberAccountMoneyChange.getContent()); - memberAccountMoneyChangeInfoVo.setStatus(memberAccountMoneyChange.getStatus()); - memberAccountMoneyChangeInfoVo.setSymbol(memberAccountMoneyChange.getSymbol()); - memberAccountMoneyChangeInfoVo.setType(memberAccountMoneyChange.getType()); - memberAccountMoneyChangeInfoVo.setUpdateTime(memberAccountMoneyChange.getUpdateTime()); - arrayList.add(memberAccountMoneyChangeInfoVo); - } - } - return Result.ok(arrayList); - } + if (MemberWalletCoinEnum.WALLETCOINCODE.getValue().equals(walletCoin.getWalletCode())) { + memberWalletCoinInfoVo.setTotalBalance(total.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); - @Override - @Transactional(rollbackFor = Exception.class) - public Result agentTransferToWalletCoin(BigDecimal balance, Integer transfertype) { - if(balance.compareTo(BigDecimal.ZERO) <= 0) { - return Result.fail(MessageSourceUtils.getString("member_service_0004")); - } - //获取用户ID - Long memberId = LoginUserUtils.getAppLoginUser().getId(); - - // 扣币 - String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); - MemberWalletAgentEntity walletAgent = memberWalletAgentDao.selectWalletAgentBymIdAndCode(memberId, walletCode); - BigDecimal availableBalance = walletAgent.getAvailableBalance(); - BigDecimal totalBalance = walletAgent.getTotalBalance(); - - BigDecimal available = availableBalance.subtract(balance); - if(available.compareTo(BigDecimal.ZERO)<0) { - return Result.fail(MessageSourceUtils.getString("member_service_0008")); - } - BigDecimal total = totalBalance.subtract(balance); - if(total.compareTo(BigDecimal.ZERO)<0) { - return Result.fail(MessageSourceUtils.getString("member_service_0008")); - } - - walletAgent.setAvailableBalance(available.setScale(4, BigDecimal.ROUND_DOWN)); - walletAgent.setTotalBalance(total.setScale(4, BigDecimal.ROUND_DOWN)); - - int i = memberWalletAgentDao.updateById(walletAgent); - if(i< 1) { - return Result.fail(MessageSourceUtils.getString("member_service_0095")); - } - //添加资金划转历史记录 - MemberAccountMoneyChange memberAccountRecord = new MemberAccountMoneyChange(); - //代理账户转币币 - if(MemberAccountMoneyChange.TYPE_WALLET_COIN.equals(transfertype)) { - MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, walletCode); - BigDecimal walletCoinAvailableBalance = walletCoin.getAvailableBalance(); - BigDecimal walletCoinTotalBalance = walletCoin.getTotalBalance(); - - walletCoin.setAvailableBalance(walletCoinAvailableBalance.add(balance).setScale(4, BigDecimal.ROUND_DOWN)); - walletCoin.setTotalBalance(walletCoinTotalBalance.add(balance).setScale(4, BigDecimal.ROUND_DOWN)); - - int updateById = memberWalletCoinDao.updateById(walletCoin); - if(updateById< 1) { - return Result.fail(MessageSourceUtils.getString("member_service_0095")); - } - //添加资金划转历史记录 - memberAccountRecord.setMemberId(memberId); - memberAccountRecord.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER); - memberAccountRecord.setSymbol(walletCode); - memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTFROMAGENT.getValue()); - memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN); - memberAccountRecord.setAmount(balance.setScale(4, BigDecimal.ROUND_DOWN)); - memberAccountMoneyChangeDao.insert(memberAccountRecord); - memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTTOWALLETCOIN.getValue()); - - }else if(MemberAccountMoneyChange.TYPE_WALLET_CONTRACT.equals(transfertype)) { - //代理账户转合约 - MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, walletCode); - BigDecimal walletContractAvailableBalance = walletContract.getAvailableBalance(); - BigDecimal walletContractTotalBalance = walletContract.getTotalBalance(); - - walletContract.setAvailableBalance(walletContractAvailableBalance.add(balance).setScale(4, BigDecimal.ROUND_DOWN)); - walletContract.setTotalBalance(walletContractTotalBalance.add(balance).setScale(4, BigDecimal.ROUND_DOWN)); - - int updateById = memberWalletContractDao.updateById(walletContract); - if(updateById< 1) { - return Result.fail(MessageSourceUtils.getString("member_service_0095")); - } - - //添加资金划转历史记录 - memberAccountRecord.setMemberId(memberId); - memberAccountRecord.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER); - memberAccountRecord.setSymbol(walletCode); - memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTFROMAGENT.getValue()); - memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_CONTRACT); - memberAccountRecord.setAmount(balance.setScale(4, BigDecimal.ROUND_DOWN)); - memberAccountMoneyChangeDao.insert(memberAccountRecord); - memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTTOCONTRACT.getValue()); - } - memberAccountRecord.setAmount(balance.negate().setScale(4, BigDecimal.ROUND_DOWN)); - memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_AGENT); - memberAccountMoneyChangeDao.insert(memberAccountRecord); - - return Result.ok(MessageSourceUtils.getString("member_service_0006")); - } + } else { + BigDecimal closePrice = new BigDecimal("10.0000"); + //Double closePrice = symbolsService.getCloseSymbolsBySymbolsName(wallet.getCode()+"/USDT"); + memberWalletCoinInfoVo.setTotalBalance(total.multiply(closePrice).multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); + } + } + return Result.ok(memberWalletCoinInfoVo); + } - @Override - public Result findWalletAgentBySymbol() { - //获取用户ID - Long memberId = LoginUserUtils.getAppLoginUser().getId(); - String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); - - MemberWalletAgentEntity walletAgent = memberWalletAgentDao.selectWalletAgentBymIdAndCode(memberId, walletCode); - BigDecimal availableBalance = walletAgent.getAvailableBalance(); - - CnyUsdtExchange cnyUsdtExchange =cnyUsdtExchangeDao.getCNYAndUSDTOne(); - BigDecimal cnyUsdt = cnyUsdtExchange.getValue(); - BigDecimal multiply = availableBalance.multiply(cnyUsdt); - - MemberWalletAgentInfoVo memberWalletAgentInfoVo = new MemberWalletAgentInfoVo(); - memberWalletAgentInfoVo.setTotalBalance(availableBalance.setScale(4, BigDecimal.ROUND_DOWN)); - memberWalletAgentInfoVo.setTotalRMBBalance(multiply.setScale(4, BigDecimal.ROUND_DOWN)); - return Result.ok(memberWalletAgentInfoVo); - } + @Override + public Result getWalletContractById() { + + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + + PlatformCnyUsdtExchangeEntity cnyUsdtExchange = cnyUsdtExchangeDao.getCNYAndUSDTOne(); + BigDecimal cnyUsdt = cnyUsdtExchange.getValue(); + + String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); + MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, walletCode); + if (ObjectUtil.isEmpty(walletContract)) { + return Result.fail(MessageSourceUtils.getString("member_service_0001")); + } + /** + * todo + */ + //获取当前的合约持仓 + //获取实时盈亏 + BigDecimal profitAndLoss = new BigDecimal("50.000"); + //获取总付款 + BigDecimal totalPayment = new BigDecimal("50.000"); + BigDecimal lastTotalBalance = new BigDecimal("0"); + BigDecimal totalBalance = walletContract.getTotalBalance(); + lastTotalBalance = totalBalance.add(profitAndLoss); + if (lastTotalBalance.compareTo(BigDecimal.ZERO) < 0) { + lastTotalBalance = new BigDecimal("0"); + } + + MemberWalletContractInfoVo memberWalletContractInfoVo = new MemberWalletContractInfoVo(); + memberWalletContractInfoVo.setFrozenBalance(totalPayment.setScale(4, BigDecimal.ROUND_DOWN)); + memberWalletContractInfoVo.setAvailableBalance(walletContract.getAvailableBalance()); + memberWalletContractInfoVo.setTotalBalance(lastTotalBalance.setScale(4, BigDecimal.ROUND_DOWN)); + memberWalletContractInfoVo.setTotalRMBBalance(lastTotalBalance.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); + + return Result.ok(memberWalletContractInfoVo); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result coinWalletTransferToContract(BigDecimal balance, String symbol) { + if (balance.compareTo(BigDecimal.ZERO) <= 0) { + return Result.fail(MessageSourceUtils.getString("member_service_0004")); + } + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + + if (!StrUtil.isEmpty(memberId.toString())) { + String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); + MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, walletCode); + BigDecimal available = walletCoin.getAvailableBalance(); + // 扣币 + BigDecimal total = available.subtract(balance); + if (total.compareTo(BigDecimal.ZERO) < 0) { + return Result.fail(MessageSourceUtils.getString("member_service_0005")); + } + BigDecimal subtract = walletCoin.getTotalBalance().subtract(balance); + if (subtract.compareTo(BigDecimal.ZERO) < 0) { + return Result.fail(MessageSourceUtils.getString("member_service_0005")); + } + walletCoin.setAvailableBalance(total.setScale(4, BigDecimal.ROUND_DOWN)); + walletCoin.setTotalBalance(subtract.setScale(4, BigDecimal.ROUND_DOWN)); + int updateWalletCoinById = memberWalletCoinDao.updateById(walletCoin); + if (updateWalletCoinById < 1) { + return Result.fail(MessageSourceUtils.getString("member_service_0096")); + } + // 加币 + // 查询合约账户 + MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, walletCode); + BigDecimal availableBalance = walletContract.getAvailableBalance(); + BigDecimal add = availableBalance.add(balance); + walletContract.setAvailableBalance(add.setScale(4, BigDecimal.ROUND_DOWN)); + BigDecimal totalBalance = walletContract.getTotalBalance(); + BigDecimal totalBigDecimal = totalBalance.add(balance); + walletContract.setTotalBalance(totalBigDecimal.setScale(4, BigDecimal.ROUND_DOWN)); + int updateWalletContractById = memberWalletContractDao.updateById(walletContract); + if (updateWalletContractById < 1) { + return Result.fail(MessageSourceUtils.getString("member_service_0096")); + } + //添加币币资金划转历史记录 + MemberAccountMoneyChange memberAccountRecord = new MemberAccountMoneyChange(); + memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTTOCONTRACT.getValue()); + memberAccountRecord.setMemberId(memberId); + memberAccountRecord.setAmount(balance.negate().setScale(4, BigDecimal.ROUND_DOWN)); + memberAccountRecord.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER); + memberAccountRecord.setSymbol(MemberWalletCoinEnum.WALLETCOINCODE.getValue()); + memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN); + memberAccountMoneyChangeDao.insert(memberAccountRecord); + + //添加合约资金划转历史记录 + memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTFROMWALLETCOIN.getValue()); + memberAccountRecord.setSymbol(MemberWalletCoinEnum.WALLETCOINCODE.getValue()); + memberAccountRecord.setAmount(balance.setScale(4, BigDecimal.ROUND_DOWN)); + memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_CONTRACT); + memberAccountMoneyChangeDao.insert(memberAccountRecord); + } + return Result.ok(MessageSourceUtils.getString("member_service_0006")); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result contractTransferToWalletCoin(BigDecimal balance, String symbol) { + if (balance.compareTo(BigDecimal.ZERO) <= 0) { + return Result.fail(MessageSourceUtils.getString("member_service_0004")); + } + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + + String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); + MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, walletCode); + BigDecimal availableBalance = walletContract.getAvailableBalance(); + // 扣币 + BigDecimal availableSubtract = availableBalance.subtract(balance); + if (availableSubtract.compareTo(BigDecimal.ZERO) < 0) { + return Result.fail(MessageSourceUtils.getString("member_service_0007")); + } + BigDecimal totalBalance = walletContract.getTotalBalance(); + BigDecimal totalSubtract = totalBalance.subtract(balance); + + walletContract.setAvailableBalance(availableSubtract.setScale(4, BigDecimal.ROUND_DOWN)); + walletContract.setTotalBalance(totalSubtract.setScale(4, BigDecimal.ROUND_DOWN)); + int updateWalletCoinById = memberWalletContractDao.updateById(walletContract); + if (updateWalletCoinById < 1) { + return Result.fail(MessageSourceUtils.getString("member_service_0096")); + } + // 加币 + MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, walletCode); + BigDecimal walletCoinAvailableBalance = walletCoin.getAvailableBalance(); + BigDecimal CoinAvailableBalance = walletCoinAvailableBalance.add(balance); + BigDecimal walletCoinTotalBalance = walletCoin.getTotalBalance(); + BigDecimal CoinTotalBalance = walletCoinTotalBalance.add(balance); + + walletCoin.setAvailableBalance(CoinAvailableBalance.setScale(4, BigDecimal.ROUND_DOWN)); + walletCoin.setTotalBalance(CoinTotalBalance.setScale(4, BigDecimal.ROUND_DOWN)); + int updateById = memberWalletCoinDao.updateById(walletCoin); + if (updateById < 1) { + return Result.fail(MessageSourceUtils.getString("member_service_0096")); + } + + //添加资金划转历史记录 + MemberAccountMoneyChange memberAccountRecord = new MemberAccountMoneyChange(); + memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTTOWALLETCOIN.getValue()); + memberAccountRecord.setMemberId(memberId); + memberAccountRecord.setAmount(balance.negate().setScale(4, BigDecimal.ROUND_DOWN)); + memberAccountRecord.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER); + memberAccountRecord.setSymbol(walletCode); + memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_CONTRACT); + memberAccountMoneyChangeDao.insert(memberAccountRecord); + + //添加资金划转历史记录 + memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTFROMCONTRACT.getValue()); + memberAccountRecord.setSymbol(walletCode); + memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN); + memberAccountRecord.setAmount(balance.setScale(4, BigDecimal.ROUND_DOWN)); + memberAccountMoneyChangeDao.insert(memberAccountRecord); + return Result.ok(MessageSourceUtils.getString("member_service_0006")); + } + + @Override + public Result findWalletContractBySymbol() { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); + MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, walletCode); + BigDecimal availableBalance = walletContract.getAvailableBalance().setScale(4, BigDecimal.ROUND_DOWN); + return Result.ok(availableBalance); + } + + @Override + public Result findWalletCoinBySymbol(String symbol) { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + + MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, symbol); + BigDecimal availableBalance = walletCoin.getAvailableBalance().setScale(4, BigDecimal.ROUND_DOWN); + return Result.ok(availableBalance); + } + + @Override + public Result getWalletCoinRecords() { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + List<MemberAccountMoneyChange> coinRecordList = memberAccountMoneyChangeDao.selectWalletCoinRecordsByMemIdTypeSymbol(memberId); + List<MemberAccountMoneyChangeInfoVo> arrayList = new ArrayList<>(); + if (CollUtil.isNotEmpty(coinRecordList)) { + for (MemberAccountMoneyChange memberAccountMoneyChange : coinRecordList) { + MemberAccountMoneyChangeInfoVo memberAccountMoneyChangeInfoVo = new MemberAccountMoneyChangeInfoVo(); + memberAccountMoneyChangeInfoVo.setAmount(memberAccountMoneyChange.getAmount()); + memberAccountMoneyChangeInfoVo.setContent(memberAccountMoneyChange.getContent()); + memberAccountMoneyChangeInfoVo.setStatus(memberAccountMoneyChange.getStatus()); + memberAccountMoneyChangeInfoVo.setSymbol(memberAccountMoneyChange.getSymbol()); + memberAccountMoneyChangeInfoVo.setType(memberAccountMoneyChange.getType()); + memberAccountMoneyChangeInfoVo.setUpdateTime(memberAccountMoneyChange.getUpdateTime()); + arrayList.add(memberAccountMoneyChangeInfoVo); + } + } + return Result.ok(arrayList); + } + + @Override + public Result getWalletContractRecords() { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + String symbol = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); + List<MemberAccountMoneyChange> contractRecordList = memberAccountMoneyChangeDao.selectWalletContractRecordsByMemIdTypeSymbol(symbol, memberId); + + List<MemberAccountMoneyChangeInfoVo> arrayList = new ArrayList<>(); + if (ObjectUtil.isNotNull(contractRecordList)) { + for (MemberAccountMoneyChange memberAccountMoneyChange : contractRecordList) { + MemberAccountMoneyChangeInfoVo memberAccountMoneyChangeInfoVo = new MemberAccountMoneyChangeInfoVo(); + memberAccountMoneyChangeInfoVo.setAmount(memberAccountMoneyChange.getAmount()); + memberAccountMoneyChangeInfoVo.setContent(memberAccountMoneyChange.getContent()); + memberAccountMoneyChangeInfoVo.setStatus(memberAccountMoneyChange.getStatus()); + memberAccountMoneyChangeInfoVo.setSymbol(memberAccountMoneyChange.getSymbol()); + memberAccountMoneyChangeInfoVo.setType(memberAccountMoneyChange.getType()); + memberAccountMoneyChangeInfoVo.setUpdateTime(memberAccountMoneyChange.getUpdateTime()); + arrayList.add(memberAccountMoneyChangeInfoVo); + } + } + + return Result.ok(arrayList); + } + + @Override + public Result getWalletAgentRecords() { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + + List<MemberAccountMoneyChange> contractRecordList = + memberAccountMoneyChangeDao.selectWalletAgentRecordByMemIdTypeSymbol(MemberWalletCoinEnum.WALLETCOINCODE.getValue(), memberId); + + List<MemberAccountMoneyChangeInfoVo> arrayList = new ArrayList<>(); + if (ObjectUtil.isNotNull(contractRecordList)) { + for (MemberAccountMoneyChange memberAccountMoneyChange : contractRecordList) { + MemberAccountMoneyChangeInfoVo memberAccountMoneyChangeInfoVo = new MemberAccountMoneyChangeInfoVo(); + memberAccountMoneyChangeInfoVo.setAmount(memberAccountMoneyChange.getAmount()); + memberAccountMoneyChangeInfoVo.setContent(memberAccountMoneyChange.getContent()); + memberAccountMoneyChangeInfoVo.setStatus(memberAccountMoneyChange.getStatus()); + memberAccountMoneyChangeInfoVo.setSymbol(memberAccountMoneyChange.getSymbol()); + memberAccountMoneyChangeInfoVo.setType(memberAccountMoneyChange.getType()); + memberAccountMoneyChangeInfoVo.setUpdateTime(memberAccountMoneyChange.getUpdateTime()); + arrayList.add(memberAccountMoneyChangeInfoVo); + } + } + return Result.ok(arrayList); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result agentTransferToWalletCoin(BigDecimal balance, Integer transfertype) { + if (balance.compareTo(BigDecimal.ZERO) <= 0) { + return Result.fail(MessageSourceUtils.getString("member_service_0004")); + } + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + + // 扣币 + String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); + MemberWalletAgentEntity walletAgent = memberWalletAgentDao.selectWalletAgentBymIdAndCode(memberId, walletCode); + BigDecimal availableBalance = walletAgent.getAvailableBalance(); + BigDecimal totalBalance = walletAgent.getTotalBalance(); + + BigDecimal available = availableBalance.subtract(balance); + if (available.compareTo(BigDecimal.ZERO) < 0) { + return Result.fail(MessageSourceUtils.getString("member_service_0008")); + } + BigDecimal total = totalBalance.subtract(balance); + if (total.compareTo(BigDecimal.ZERO) < 0) { + return Result.fail(MessageSourceUtils.getString("member_service_0008")); + } + + walletAgent.setAvailableBalance(available.setScale(4, BigDecimal.ROUND_DOWN)); + walletAgent.setTotalBalance(total.setScale(4, BigDecimal.ROUND_DOWN)); + + int i = memberWalletAgentDao.updateById(walletAgent); + if (i < 1) { + return Result.fail(MessageSourceUtils.getString("member_service_0095")); + } + //添加资金划转历史记录 + MemberAccountMoneyChange memberAccountRecord = new MemberAccountMoneyChange(); + //代理账户转币币 + if (MemberAccountMoneyChange.TYPE_WALLET_COIN.equals(transfertype)) { + MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, walletCode); + BigDecimal walletCoinAvailableBalance = walletCoin.getAvailableBalance(); + BigDecimal walletCoinTotalBalance = walletCoin.getTotalBalance(); + + walletCoin.setAvailableBalance(walletCoinAvailableBalance.add(balance).setScale(4, BigDecimal.ROUND_DOWN)); + walletCoin.setTotalBalance(walletCoinTotalBalance.add(balance).setScale(4, BigDecimal.ROUND_DOWN)); + + int updateById = memberWalletCoinDao.updateById(walletCoin); + if (updateById < 1) { + return Result.fail(MessageSourceUtils.getString("member_service_0095")); + } + //添加资金划转历史记录 + memberAccountRecord.setMemberId(memberId); + memberAccountRecord.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER); + memberAccountRecord.setSymbol(walletCode); + memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTFROMAGENT.getValue()); + memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN); + memberAccountRecord.setAmount(balance.setScale(4, BigDecimal.ROUND_DOWN)); + memberAccountMoneyChangeDao.insert(memberAccountRecord); + memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTTOWALLETCOIN.getValue()); + + } else if (MemberAccountMoneyChange.TYPE_WALLET_CONTRACT.equals(transfertype)) { + //代理账户转合约 + MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, walletCode); + BigDecimal walletContractAvailableBalance = walletContract.getAvailableBalance(); + BigDecimal walletContractTotalBalance = walletContract.getTotalBalance(); + + walletContract.setAvailableBalance(walletContractAvailableBalance.add(balance).setScale(4, BigDecimal.ROUND_DOWN)); + walletContract.setTotalBalance(walletContractTotalBalance.add(balance).setScale(4, BigDecimal.ROUND_DOWN)); + + int updateById = memberWalletContractDao.updateById(walletContract); + if (updateById < 1) { + return Result.fail(MessageSourceUtils.getString("member_service_0095")); + } + + //添加资金划转历史记录 + memberAccountRecord.setMemberId(memberId); + memberAccountRecord.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER); + memberAccountRecord.setSymbol(walletCode); + memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTFROMAGENT.getValue()); + memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_CONTRACT); + memberAccountRecord.setAmount(balance.setScale(4, BigDecimal.ROUND_DOWN)); + memberAccountMoneyChangeDao.insert(memberAccountRecord); + memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTTOCONTRACT.getValue()); + } + memberAccountRecord.setAmount(balance.negate().setScale(4, BigDecimal.ROUND_DOWN)); + memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_AGENT); + memberAccountMoneyChangeDao.insert(memberAccountRecord); + + return Result.ok(MessageSourceUtils.getString("member_service_0006")); + } + + @Override + public Result findWalletAgentBySymbol() { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); + + MemberWalletAgentEntity walletAgent = memberWalletAgentDao.selectWalletAgentBymIdAndCode(memberId, walletCode); + BigDecimal availableBalance = walletAgent.getAvailableBalance(); + + PlatformCnyUsdtExchangeEntity cnyUsdtExchange = cnyUsdtExchangeDao.getCNYAndUSDTOne(); + BigDecimal cnyUsdt = cnyUsdtExchange.getValue(); + BigDecimal multiply = availableBalance.multiply(cnyUsdt); + + MemberWalletAgentInfoVo memberWalletAgentInfoVo = new MemberWalletAgentInfoVo(); + memberWalletAgentInfoVo.setTotalBalance(availableBalance.setScale(4, BigDecimal.ROUND_DOWN)); + memberWalletAgentInfoVo.setTotalRMBBalance(multiply.setScale(4, BigDecimal.ROUND_DOWN)); + return Result.ok(memberWalletAgentInfoVo); + } } diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java index 01834ca..926e4c6 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java @@ -12,6 +12,7 @@ import javax.annotation.Resource; +import com.xcong.excoin.modules.platform.entity.PlatformCnyUsdtExchangeEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -23,7 +24,6 @@ import com.xcong.excoin.modules.coin.dao.MemberSelectSymbolsDao; import com.xcong.excoin.modules.coin.dao.OrderCoinDealDao; import com.xcong.excoin.modules.coin.dao.OrderCoinsDao; -import com.xcong.excoin.modules.coin.entity.CnyUsdtExchange; import com.xcong.excoin.modules.coin.entity.MemberAccountFlowEntity; import com.xcong.excoin.modules.coin.entity.OrderCoinsDealEntity; import com.xcong.excoin.modules.coin.entity.OrderCoinsEntity; @@ -39,7 +39,7 @@ import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao; import com.xcong.excoin.modules.member.entity.MemberSelectSymbolsEntity; import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity; -import com.xcong.excoin.modules.platform.dao.CnyUsdtExchangeDao; +import com.xcong.excoin.modules.platform.dao.PlatformCnyUsdtExchangeDao; import com.xcong.excoin.modules.platform.dao.TradeSettingDao; import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity; import com.xcong.excoin.utils.MessageSourceUtils; @@ -59,7 +59,7 @@ @Resource MemberSelectSymbolsDao memberSelectSymbolsDao; @Resource - CnyUsdtExchangeDao cnyUsdtExchangeDao; + PlatformCnyUsdtExchangeDao cnyUsdtExchangeDao; @Resource OrderCoinsDao orderCoinsDao; @Resource @@ -117,8 +117,8 @@ BigDecimal closePrice = new BigDecimal("100.0000"); List<MemberSelectSymbolsEntity> memSymbols = memberSelectSymbolsDao.selectSymbolByMemIdAndSymbol(memberId, symbol); - - CnyUsdtExchange cnyUsdtExchange = cnyUsdtExchangeDao.getCNYAndUSDTOne(); + + PlatformCnyUsdtExchangeEntity cnyUsdtExchange = cnyUsdtExchangeDao.getCNYAndUSDTOne(); BigDecimal cnyUsdt = cnyUsdtExchange.getValue(); TransactionPageOfWalletCoinVo transactionPageOfWalletCoinVo = new TransactionPageOfWalletCoinVo(); //是否自选 diff --git a/src/main/java/com/xcong/excoin/modules/contract/controller/ContractEntrustOrderController.java b/src/main/java/com/xcong/excoin/modules/contract/controller/ContractEntrustOrderController.java index 1fa881b..70ed50e 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/controller/ContractEntrustOrderController.java +++ b/src/main/java/com/xcong/excoin/modules/contract/controller/ContractEntrustOrderController.java @@ -9,12 +9,10 @@ import com.xcong.excoin.utils.api.response.Symbol; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -44,6 +42,19 @@ return Result.fail("非法类型"); } - return Result.ok("123"); + return contractEntrustOrderService.addContractEntrustOrder(submitEntrustDto); + } + + @ApiOperation(value = "获取当前委托单列表", notes = "获取当前委托单列表") + @GetMapping(value = "/findCurrentEntrustOrderList") + public Result findCurrentEntrustOrderList() { + return null; + } + + + @ApiOperation(value = "撤销委托单", notes = "撤销委托单") + @GetMapping(value = "/cancelEntrustOrder") + public Result cancelEntrustOrder(@ApiParam(name = "id", value="委托单ID", required = true, example = "1") Long id) { + return null; } } diff --git a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java index 14a3843..0b75eb1 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java +++ b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java @@ -2,9 +2,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity; +import org.apache.ibatis.annotations.Param; /** * @author helius */ public interface ContractEntrustOrderDao extends BaseMapper<ContractEntrustOrderEntity> { + + public ContractEntrustOrderEntity selectEntrustOrderByIdAndMemberId(@Param("id") Long id, @Param("memberId") Long memberId); } diff --git a/src/main/java/com/xcong/excoin/modules/contract/entity/ContractEntrustOrderEntity.java b/src/main/java/com/xcong/excoin/modules/contract/entity/ContractEntrustOrderEntity.java index 6e2e8d2..6511432 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/entity/ContractEntrustOrderEntity.java +++ b/src/main/java/com/xcong/excoin/modules/contract/entity/ContractEntrustOrderEntity.java @@ -23,6 +23,16 @@ public static final int ENTRUST_TYPE_CLOSE_LESS = 4; + /** + * 逐仓 + */ + public static final int POSITION_TYPE_ADD = 1; + + /** + * 全仓 + */ + public static final int POSITION_TYPE_ALL = 2; + /** * 会员ID @@ -62,12 +72,12 @@ /** * 币种规格 */ - private Long symbolSku; + private BigDecimal symbolSku; /** * 杠杆倍率 */ - private int leverRatio; + private BigDecimal leverRatio; /** * 保证金 diff --git a/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractEntrustOrderEntityMapper.java b/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractEntrustOrderEntityMapper.java new file mode 100644 index 0000000..849840b --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractEntrustOrderEntityMapper.java @@ -0,0 +1,18 @@ +package com.xcong.excoin.modules.contract.mapper; + +import com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity; +import com.xcong.excoin.modules.contract.parameter.dto.SubmitEntrustDto; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * @author wzy + * @date 2020-05-28 + **/ +@Mapper +public abstract class ContractEntrustOrderEntityMapper { + public static final ContractEntrustOrderEntityMapper INSTANCE = Mappers.getMapper(ContractEntrustOrderEntityMapper.class); + + public abstract ContractEntrustOrderEntity submitEntrustDtoToEntity(SubmitEntrustDto dto); + +} diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/ContractEntrustOrderService.java b/src/main/java/com/xcong/excoin/modules/contract/service/ContractEntrustOrderService.java index 3521f3b..afb566e 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/service/ContractEntrustOrderService.java +++ b/src/main/java/com/xcong/excoin/modules/contract/service/ContractEntrustOrderService.java @@ -11,4 +11,8 @@ public interface ContractEntrustOrderService extends IService<ContractEntrustOrderEntity> { public Result addContractEntrustOrder(SubmitEntrustDto submitEntrustDto); + + public Result findEntrustOrderList(); + + public Result cancelEntrustOrder(Long id); } diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java index 2f55f16..9434371 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java @@ -4,7 +4,9 @@ import com.xcong.excoin.common.LoginUserUtils; import com.xcong.excoin.common.response.Result; import com.xcong.excoin.modules.contract.dao.ContractEntrustOrderDao; +import com.xcong.excoin.modules.contract.dao.ContractOrderDao; import com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity; +import com.xcong.excoin.modules.contract.mapper.ContractEntrustOrderEntityMapper; import com.xcong.excoin.modules.contract.parameter.dto.SubmitEntrustDto; import com.xcong.excoin.modules.contract.service.ContractEntrustOrderService; import com.xcong.excoin.modules.member.dao.MemberWalletContractDao; @@ -15,6 +17,7 @@ import com.xcong.excoin.utils.RedisUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; @@ -39,13 +42,16 @@ @Resource private CacheSettingUtils cacheSettingUtils; + @Resource + private ContractOrderDao contractOrderDao; + + @Transactional(rollbackFor = Exception.class) @Override public Result addContractEntrustOrder(SubmitEntrustDto submitEntrustDto) { MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); // 获取最新价 - BigDecimal newPirce = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(submitEntrustDto.getSymbol()))); - + BigDecimal newPirce = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(submitEntrustDto.getSymbol()))); // 委托开仓 if (submitEntrustDto.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_OPEN_MORE || submitEntrustDto.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_OPEN_LESS) { @@ -67,21 +73,60 @@ // 委托总额 BigDecimal entrustTotalAmount = submitEntrustDto.getEntrustPrice().multiply(BigDecimal.valueOf(submitEntrustDto.getSymbolCnt())); - if (entrustTotalAmount.compareTo(walletContract.getAvailableBalance()) > -1) { + BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(submitEntrustDto.getSymbol()); + // 保证金计算 -- 建仓价X规格X手数X(1/杠杆倍率) + BigDecimal bondAmount = entrustTotalAmount.multiply(lotNumber).multiply((BigDecimal.ONE.divide(BigDecimal.valueOf(submitEntrustDto.getLeverRatio()), 8, BigDecimal.ROUND_DOWN))); + + if (entrustTotalAmount.add(bondAmount).compareTo(walletContract.getAvailableBalance()) > -1) { return Result.fail("可用余额不足"); } - BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(submitEntrustDto.getSymbol()); + ContractEntrustOrderEntityMapper convert = ContractEntrustOrderEntityMapper.INSTANCE; + ContractEntrustOrderEntity entrustOrderEntity = convert.submitEntrustDtoToEntity(submitEntrustDto); + entrustOrderEntity.setMemberId(memberEntity.getId()); + entrustOrderEntity.setBondAmount(bondAmount); + entrustOrderEntity.setSymbolSku(lotNumber); + // 暂默认逐仓 + entrustOrderEntity.setPositionType(ContractEntrustOrderEntity.POSITION_TYPE_ADD); + int i = contractEntrustOrderDao.insert(entrustOrderEntity); + walletContract.setFrozenBalance(walletContract.getFrozenBalance().add(entrustTotalAmount.add(bondAmount))); + walletContract.setAvailableBalance(walletContract.getAvailableBalance().subtract(entrustTotalAmount.add(bondAmount))); - + memberWalletContractDao.updateById(walletContract); + if (i > 0) { + return Result.ok("委托成功"); + } else { + return Result.fail("委托失败"); + } } // 委托平仓 (全仓模式) if (submitEntrustDto.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_CLOSE_MORE || submitEntrustDto.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_CLOSE_LESS) { return Result.fail("功能暂未开放,敬请期待"); } + + return Result.fail("未知错误"); + } + + @Override + public Result findEntrustOrderList() { return null; } + + @Override + public Result cancelEntrustOrder(Long id) { + MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); + + // 查询该委托单是否为该用户所有 + ContractEntrustOrderEntity entrustOrderEntity = contractEntrustOrderDao.selectEntrustOrderByIdAndMemberId(id, memberEntity.getId()); + if (entrustOrderEntity == null) { + return Result.fail("该委托单不存在"); + } + + return null; + } + + } diff --git a/src/main/java/com/xcong/excoin/modules/platform/dao/CnyUsdtExchangeDao.java b/src/main/java/com/xcong/excoin/modules/platform/dao/CnyUsdtExchangeDao.java deleted file mode 100644 index 357e51e..0000000 --- a/src/main/java/com/xcong/excoin/modules/platform/dao/CnyUsdtExchangeDao.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.xcong.excoin.modules.platform.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.xcong.excoin.modules.coin.entity.CnyUsdtExchange; - -public interface CnyUsdtExchangeDao extends BaseMapper<CnyUsdtExchange> { - - CnyUsdtExchange getCNYAndUSDTOne(); - - void updateUsdt(double value); - -} diff --git a/src/main/java/com/xcong/excoin/modules/platform/dao/PlatformCnyUsdtExchangeDao.java b/src/main/java/com/xcong/excoin/modules/platform/dao/PlatformCnyUsdtExchangeDao.java index 2bd4e0f..59171d1 100644 --- a/src/main/java/com/xcong/excoin/modules/platform/dao/PlatformCnyUsdtExchangeDao.java +++ b/src/main/java/com/xcong/excoin/modules/platform/dao/PlatformCnyUsdtExchangeDao.java @@ -3,7 +3,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xcong.excoin.modules.platform.entity.PlatformCnyUsdtExchangeEntity; +import java.math.BigDecimal; + public interface PlatformCnyUsdtExchangeDao extends BaseMapper<PlatformCnyUsdtExchangeEntity> { + PlatformCnyUsdtExchangeEntity getCNYAndUSDTOne(); + void updateUsdt(BigDecimal value); + } diff --git a/src/main/java/com/xcong/excoin/modules/platform/entity/PlatformSymbolsSkuEntity.java b/src/main/java/com/xcong/excoin/modules/platform/entity/PlatformSymbolsSkuEntity.java index ec1f804..17b2e0e 100644 --- a/src/main/java/com/xcong/excoin/modules/platform/entity/PlatformSymbolsSkuEntity.java +++ b/src/main/java/com/xcong/excoin/modules/platform/entity/PlatformSymbolsSkuEntity.java @@ -1,6 +1,7 @@ package com.xcong.excoin.modules.platform.entity; import java.io.Serializable; +import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -10,6 +11,7 @@ /** * 币种规格表 + * @author helius */ @Data @TableName("platform_symbols_sku") @@ -27,6 +29,6 @@ /** * 规格 */ - private String lotnumber; + private BigDecimal lotnumber; } diff --git a/src/main/java/com/xcong/excoin/modules/platform/service/impl/PlatformCnyUsdtExchangeServiceImpl.java b/src/main/java/com/xcong/excoin/modules/platform/service/impl/PlatformCnyUsdtExchangeServiceImpl.java index f1d757f..701ca20 100644 --- a/src/main/java/com/xcong/excoin/modules/platform/service/impl/PlatformCnyUsdtExchangeServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/platform/service/impl/PlatformCnyUsdtExchangeServiceImpl.java @@ -6,11 +6,11 @@ import javax.annotation.Resource; +import com.xcong.excoin.modules.platform.dao.PlatformCnyUsdtExchangeDao; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xcong.excoin.common.response.Result; -import com.xcong.excoin.modules.platform.dao.PlatformCnyUsdtExchangeDao; import com.xcong.excoin.modules.platform.entity.PlatformCnyUsdtExchangeEntity; import com.xcong.excoin.modules.platform.service.PlatformCnyUsdtExchangeService; diff --git a/src/main/java/com/xcong/excoin/modules/symbols/controller/SymbolsController.java b/src/main/java/com/xcong/excoin/modules/symbols/controller/SymbolsController.java new file mode 100644 index 0000000..f5e87f8 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/symbols/controller/SymbolsController.java @@ -0,0 +1,33 @@ +package com.xcong.excoin.modules.symbols.controller; + +import com.xcong.excoin.common.response.Result; +import com.xcong.excoin.modules.symbols.service.SymbolsService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @author wzy + * @date 2020-05-28 + **/ +@Api(value = "币种相关轮询接口类", tags = "币种相关轮询接口类") +@Slf4j +@RestController +@RequestMapping(value = "/api/symbols") +public class SymbolsController { + + @Resource + private SymbolsService symbolsService; + + @ApiOperation(value = "轮询获取app首页币种交易信息", notes = "轮询获取app首页币种交易信息") + @GetMapping(value = "/homeSymbols") + public Result homeSymbols(Integer type) { + return symbolsService.homeSymbols(type); + } +} diff --git a/src/main/java/com/xcong/excoin/modules/symbols/dao/PlatformSymbolsContractDao.java b/src/main/java/com/xcong/excoin/modules/symbols/dao/PlatformSymbolsContractDao.java index 0e44d1a..5887d22 100644 --- a/src/main/java/com/xcong/excoin/modules/symbols/dao/PlatformSymbolsContractDao.java +++ b/src/main/java/com/xcong/excoin/modules/symbols/dao/PlatformSymbolsContractDao.java @@ -1,11 +1,15 @@ package com.xcong.excoin.modules.symbols.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.xcong.excoin.modules.symbols.Entity.PlatformSymbolsContractEntity; +import com.xcong.excoin.modules.symbols.entity.PlatformSymbolsContractEntity; + +import java.util.List; /** * * @author wzy */ public interface PlatformSymbolsContractDao extends BaseMapper<PlatformSymbolsContractEntity> { + + List<PlatformSymbolsContractEntity> selectAllContractSymbols(); } diff --git a/src/main/java/com/xcong/excoin/modules/symbols/Entity/PlatformSymbolsContractEntity.java b/src/main/java/com/xcong/excoin/modules/symbols/entity/PlatformSymbolsContractEntity.java similarity index 88% rename from src/main/java/com/xcong/excoin/modules/symbols/Entity/PlatformSymbolsContractEntity.java rename to src/main/java/com/xcong/excoin/modules/symbols/entity/PlatformSymbolsContractEntity.java index 5ce143a..4322b00 100644 --- a/src/main/java/com/xcong/excoin/modules/symbols/Entity/PlatformSymbolsContractEntity.java +++ b/src/main/java/com/xcong/excoin/modules/symbols/entity/PlatformSymbolsContractEntity.java @@ -1,4 +1,4 @@ -package com.xcong.excoin.modules.symbols.Entity; +package com.xcong.excoin.modules.symbols.entity; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; diff --git a/src/main/java/com/xcong/excoin/modules/symbols/parameter/vo/HomeSymbolsVo.java b/src/main/java/com/xcong/excoin/modules/symbols/parameter/vo/HomeSymbolsVo.java new file mode 100644 index 0000000..c607ae1 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/symbols/parameter/vo/HomeSymbolsVo.java @@ -0,0 +1,31 @@ +package com.xcong.excoin.modules.symbols.parameter.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author wzy + * @date 2020-05-28 + **/ +@Data +@ApiModel(value = "HomeSymbolsVo", description = "首页币种行情返回类") +public class HomeSymbolsVo { + + @ApiModelProperty(value = "币种") + private String symbol; + + @ApiModelProperty("当前价") + private BigDecimal currentPrice; + + @ApiModelProperty("对应人民币转换") + private BigDecimal cnyPrice; + + @ApiModelProperty("成交量") + private BigDecimal volume; + + @ApiModelProperty("涨跌幅") + private BigDecimal upOrDown; +} diff --git a/src/main/java/com/xcong/excoin/modules/symbols/service/SymbolsService.java b/src/main/java/com/xcong/excoin/modules/symbols/service/SymbolsService.java index 852438f..3d8ffb3 100644 --- a/src/main/java/com/xcong/excoin/modules/symbols/service/SymbolsService.java +++ b/src/main/java/com/xcong/excoin/modules/symbols/service/SymbolsService.java @@ -1,6 +1,8 @@ package com.xcong.excoin.modules.symbols.service; +import com.xcong.excoin.common.response.Result; + /** * @author wzy * @date 2020-05-26 @@ -9,4 +11,6 @@ public void updateSymbolsKine(String time); + public Result homeSymbols(Integer type); + } diff --git a/src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java b/src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java index dbc30d6..2298cb9 100644 --- a/src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java @@ -2,8 +2,14 @@ import com.alibaba.fastjson.JSONObject; import com.huobi.client.model.Candlestick; +import com.xcong.excoin.common.contants.AppContants; import com.xcong.excoin.common.enumerates.SymbolEnum; +import com.xcong.excoin.common.response.Result; +import com.xcong.excoin.modules.platform.dao.PlatformCnyUsdtExchangeDao; +import com.xcong.excoin.modules.platform.entity.PlatformCnyUsdtExchangeEntity; +import com.xcong.excoin.modules.symbols.parameter.vo.HomeSymbolsVo; import com.xcong.excoin.modules.symbols.service.SymbolsService; +import com.xcong.excoin.utils.CoinTypeConvert; import com.xcong.excoin.utils.RedisUtils; import com.xcong.excoin.utils.api.ApiClient; import com.xcong.excoin.utils.api.response.Kline; @@ -26,6 +32,9 @@ @Resource private RedisUtils redisUtils; + + @Resource + private PlatformCnyUsdtExchangeDao platformCnyUsdtExchangeDao; private static final String API_KEY = "3938f004-bfe31905-f7581c1a-6abe0"; private static final String API_SECRET = "a0f7a154-ghxertfvbf-6ce2d90c-a0bab"; @@ -50,11 +59,14 @@ synchronized (this) { //更新币币交易K线历史数据 for (SymbolEnum symbol : SymbolEnum.values()) { - log.info(symbol.getValue()); + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } String[] symbols = symbol.getValue().toLowerCase().split("/"); - ApiClient client = new ApiClient(API_KEY, API_SECRET); + ApiClient client = getClient(); KlineResponse kline = client.kline(symbols[0] + symbols[1], time, 1000 + ""); - log.info("{}", JSONObject.toJSONString(kline)); if (kline != null) { if ("ok".equalsIgnoreCase(kline.getStatus())) { List<Kline> klines = (List<Kline>) kline.data; @@ -74,11 +86,56 @@ } if (klines.size() > 0) { -// redisUtils.set("KINE_" + symbol.getValue() + "_" + time, list); + redisUtils.set("KINE_" + symbol.getValue() + "_" + time, list); } } } } } } + + @Override + public Result homeSymbols(Integer type) { + List<HomeSymbolsVo> list = new ArrayList<>(); + // 币币行情 + if (AppContants.HOME_SYMBOLS_COIN == type) { + for (SymbolEnum symbolEnum : SymbolEnum.values()) { + list.add(getSymbolReturnData(symbolEnum.getName())); + } + // 合约行情 + } else if (AppContants.HOME_SYMBOLS_CONTRACT == type) { + for (SymbolEnum symbolEnum : SymbolEnum.values()) { + list.add(getSymbolReturnData(symbolEnum.getName())); + } + // 自选行情 + } else { + + } + + return Result.ok(list); + } + + public HomeSymbolsVo getSymbolReturnData(String symbol) { + PlatformCnyUsdtExchangeEntity cnyUsdtExchange = platformCnyUsdtExchangeDao.getCNYAndUSDTOne(); + // 获取当日k线数据 + Candlestick symbolObject = (Candlestick) redisUtils.get(symbol); + // 获取当前币种最新价 + BigDecimal newestPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(symbol))); + // 获取当日k线的开盘价 + BigDecimal openPrice = symbolObject.getOpen(); + + BigDecimal upOrDown = newestPrice.subtract(openPrice).divide(openPrice, 8, BigDecimal.ROUND_HALF_UP); + HomeSymbolsVo homeSymbolsVo = new HomeSymbolsVo(); + + homeSymbolsVo.setSymbol(symbol); + homeSymbolsVo.setCurrentPrice(newestPrice); + homeSymbolsVo.setUpOrDown(upOrDown); + homeSymbolsVo.setVolume(symbolObject.getVolume()); + if (cnyUsdtExchange != null) { + BigDecimal cnyPrice = openPrice.multiply(cnyUsdtExchange.getValue()).setScale(2, BigDecimal.ROUND_HALF_UP); + homeSymbolsVo.setCnyPrice(cnyPrice); + } + + return homeSymbolsVo; + } } diff --git a/src/main/java/com/xcong/excoin/quartz/job/KlineDataUpdateJob.java b/src/main/java/com/xcong/excoin/quartz/job/KlineDataUpdateJob.java index 29be0f6..ca41425 100644 --- a/src/main/java/com/xcong/excoin/quartz/job/KlineDataUpdateJob.java +++ b/src/main/java/com/xcong/excoin/quartz/job/KlineDataUpdateJob.java @@ -1,6 +1,7 @@ package com.xcong.excoin.quartz.job; import com.xcong.excoin.modules.symbols.service.SymbolsService; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -13,6 +14,7 @@ * @date 2020-05-26 **/ @Component +@ConditionalOnProperty(prefix = "app", name = "kline-update-job", havingValue = "true") public class KlineDataUpdateJob { @Resource diff --git a/src/main/java/com/xcong/excoin/quartz/job/NewestPriceUpdateJob.java b/src/main/java/com/xcong/excoin/quartz/job/NewestPriceUpdateJob.java new file mode 100644 index 0000000..fd6ee96 --- /dev/null +++ b/src/main/java/com/xcong/excoin/quartz/job/NewestPriceUpdateJob.java @@ -0,0 +1,65 @@ +package com.xcong.excoin.quartz.job; + +import com.huobi.client.SubscriptionClient; +import com.huobi.client.SubscriptionOptions; +import com.huobi.client.model.Candlestick; +import com.huobi.client.model.enums.CandlestickInterval; +import com.xcong.excoin.modules.symbols.service.SymbolsService; +import com.xcong.excoin.utils.CoinTypeConvert; +import com.xcong.excoin.utils.RedisUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; + +/** + * 最新价更新 + * + * @author wzy + * @date 2020-05-28 + **/ +@Slf4j +@Component +@ConditionalOnProperty(prefix = "app", name = "newest-price-update-job", havingValue = "true") +public class NewestPriceUpdateJob { + + @Resource + private RedisUtils redisUtils; + + @Resource + private SymbolsService symbolsService; + + @PostConstruct + public void initNewestPrice() { + log.info("#=======价格更新开启=======#"); + SubscriptionOptions subscriptionOptions = new SubscriptionOptions(); + subscriptionOptions.setConnectionDelayOnFailure(5); + subscriptionOptions.setUri("wss://api.hadax.com/ws"); + SubscriptionClient subscriptionClient = SubscriptionClient.create("", "", subscriptionOptions); + subscriptionClient.subscribeTradeEvent("btcusdt,ethusdt,xrpusdt,ltcusdt,bchusdt,eosusdt,etcusdt", tradeEvent -> { + String symbol = tradeEvent.getSymbol(); + // 根据symbol判断做什么操作 + symbol = CoinTypeConvert.convert(symbol); + if (null != symbol) { + String price = tradeEvent.getTradeList().get(0).getPrice().toPlainString(); + // TODO 测试环境关闭这个插入redis + redisUtils.set(CoinTypeConvert.convertToKey(symbol), price); + // 比较 +// websocketPriceService.comparePriceAsc(symbol, price); +// websocketPriceService.comparePriceDesc(symbol, price); + //System.out.println("比较完毕:"+symbol+"-"+price); + + } + + }); + + + subscriptionClient.subscribeCandlestickEvent("btcusdt,ethusdt,eosusdt,etcusdt,ltcusdt,bchusdt,xrpusdt", CandlestickInterval.DAY1, (candlestickEvent) -> { + Candlestick data = candlestickEvent.getData(); + redisUtils.set(CoinTypeConvert.convert(candlestickEvent.getSymbol()), data); + }); + + } +} diff --git a/src/main/java/com/xcong/excoin/quartz/job/UsdtCnyExchangePriceUpdateJob.java b/src/main/java/com/xcong/excoin/quartz/job/UsdtCnyExchangePriceUpdateJob.java new file mode 100644 index 0000000..840250b --- /dev/null +++ b/src/main/java/com/xcong/excoin/quartz/job/UsdtCnyExchangePriceUpdateJob.java @@ -0,0 +1,65 @@ +package com.xcong.excoin.quartz.job; + +import com.alibaba.fastjson.JSONObject; +import com.xcong.excoin.modules.platform.dao.PlatformCnyUsdtExchangeDao; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.math.BigDecimal; +import java.net.HttpURLConnection; +import java.net.URL; + +/** + * 美元-人民币汇率定时任务 + * + * @author wzy + * @date 2020-05-28 + **/ +@Component +@ConditionalOnProperty(prefix = "app", name = "other-job", havingValue = "true") +public class UsdtCnyExchangePriceUpdateJob { + + @Resource + private PlatformCnyUsdtExchangeDao cnyUsdtExchangeDao; + + @Scheduled(cron = "0 */5 * * * ? ") + public void updateUsdtCnyExchange() { + BufferedReader reader = null; + String result = null; + StringBuffer sbf = new StringBuffer(); + // 模拟浏览器 + String userAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36"; + try { + URL url = new URL("https://otc-api-hk.eiijo.cn/v1/data/config/purchase-price?coinId=2¤cyId=1&matchType=0"); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("GET"); + connection.setReadTimeout(30000); + connection.setConnectTimeout(30000); + connection.setRequestProperty("User-agent", userAgent); + connection.connect(); + InputStream is = connection.getInputStream(); + reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); + String strRead = null; + while ((strRead = reader.readLine()) != null) { + sbf.append(strRead); + sbf.append("\r\n"); + } + reader.close(); + result = sbf.toString(); + + JSONObject jsonObject = (JSONObject) JSONObject.parse(result); + String code = jsonObject.getString("code"); + if ("200".equals(code)) { + JSONObject jsonData = (JSONObject) jsonObject.get("data"); + cnyUsdtExchangeDao.updateUsdt(BigDecimal.valueOf(jsonData.getDouble("price"))); + } + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml new file mode 100644 index 0000000..e626e2b --- /dev/null +++ b/src/main/resources/application-test.yml @@ -0,0 +1,102 @@ +server: + port: 8888 + servlet: + context-path: / + +spring: + profiles: + active: dev + datasource: + url: jdbc:mysql://120.27.238.55:3306/kss_framework?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8 + username: ct_test + password: 123456 + driver-class-name: com.mysql.jdbc.Driver + type: com.alibaba.druid.pool.DruidDataSource + druid: + initial-size: ${spring_datasource_druid_initial_size:10} + max-active: ${spring_datasource_druid_max_active:20} + min-idle: ${spring_datasource_druid_min_idle:3} + #配置获取连接等待超时的时间 + max-wait: 60000 + pool-prepared-statements: true + max-pool-prepared-statement-per-connection-size: 20 + validation-query: SELECT 'x' + test-on-borrow: true + test-on-return: true + test-while-idle: true + #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + time-between-eviction-runs-millis: 60000 + #配置一个连接在池中最小生存的时间,单位是毫秒 + min-evictable-idle-time-millis: 300000 + #spring.datasource.druid.max-evguide.ftlictable-idle-time-millis= + filters: stat,wall + stat-view-servlet: + # 默认true 内置监控页面首页/druid/index.html + enabled: true + url-pattern: /druid/* + # 允许清空统计数据 + reset-enable: true + login-username: root + login-password: 123456 + # IP白名单 多个逗号分隔 + allow: ${spring_datasource_stat_view_servlet_allow:} + # IP黑名单 + deny: ${spring_datasource_stat_view_servlet_deny:} + ## 国际化配置 + messages: + basename: i18n/messages + ## redis配置 + redis: + ## Redis数据库索引(默认为0) + database: 1 + ## Redis服务器地址 + host: 47.114.114.219 + ## Redis服务器连接端口 + port: 6379 + ## Redis服务器连接密码(默认为空) + password: biyi123 + jedis: + pool: + ## 连接池最大连接数(使用负值表示没有限制) + #spring.redis.pool.max-active=8 + max-active: 300 + ## 连接池最大阻塞等待时间(使用负值表示没有限制) + #spring.redis.pool.max-wait=-1 + max-wait: -1 + ## 连接池中的最大空闲连接 + #spring.redis.pool.max-idle=8 + max-idle: 100 + ## 连接池中的最小空闲连接 + #spring.redis.pool.min-idle=0 + min-idle: 8 + ## 连接超时时间(毫秒) + timeout: 30000 + rabbitmq: + host: 120.27.238.55 + port: 5672 + username: ct_rabbit + password: 123456 + publisher-confirm-type: correlated + + +#custom: +# rabbitmq: +# host: 120.27.238.55 +# port: 5672 +# username: ct_rabbit +# password: 123456 + +mybatis-plus: + mapper-locations: classpath:mapper/**/*.xml + + +app: + debug: true + redis_expire: 3000 + kline-update-job: true + newest-price-update-job: true + other-job: true + +rsa: + public_key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCCf8UFZK54AiK4PRu7tNd+Z8qZ77o/QXCnk25DRmygVpOEu5mGNSAvfnWmKp2pEV2RljeXq3Rid/+LQkonaebMJeXKSF0yxL/VgyeT8JaQ5gNbOrdfdlc+mFkXJyzyJt8YkvApEdPRNSU2ENBn7mgRfD0BYPM4vZ6/rv+de38FJwIDAQAB + private_key: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIJ/xQVkrngCIrg9G7u0135nypnvuj9BcKeTbkNGbKBWk4S7mYY1IC9+daYqnakRXZGWN5erdGJ3/4tCSidp5swl5cpIXTLEv9WDJ5PwlpDmA1s6t192Vz6YWRcnLPIm3xiS8CkR09E1JTYQ0GfuaBF8PQFg8zi9nr+u/517fwUnAgMBAAECgYBhPt9NvpI4wbanvnndLczr2GJkxfzvSE+vwLCJF4C5FusFHVsxZINggQcg1V75bwRgCiXRMyYefreCSdrCditS43PzTOmE4RRrpxLlm8oubJc0C98LQ2qlN9AsUqL5IHpVGgbHDyWAwjc1GBID6nwXKpxq1/VodFqhahG9D5EZsQJBALnkb+5VTxQbiyQI4Uc9NIvAyVcNY1OisbvY6tvNgdBbJkADgAb78M1HWxxYjUqsvzggNHc7cWqWBHMgpnJaqm8CQQCztze4D7uAk7OC9MJHY5eE980J8Kk+GEZKxz4LahzU6V6dcb9GFac3wEtgilj/tOAn9y0/Q8sm9vvCIbMDzgzJAkEAqRYcqhF26LdVDOX25DHMBgLKISDQZFbsjA13M4/usHL4i+mjHrc0BcUOHu59NpuDI65HitzLAUSLr5zXSdUmiQJAW77wOg4GCejdXsB3IhzMsHwU97sdm26nC+vVV9xvJZ6Rx8zW+f9543NOx9U5BCmhuaVtOvvwDU9PTVcI3atmSQJAXAIJ5gGdtXx0DXiX4VvzNFHqgaqHMGvXyjNVkU2FYQbSAd2A6app4uRO+BkZu9dSjh14m+oXMnV2HzAN2rRnjA== diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 8a849c0..61560cd 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -4,6 +4,8 @@ context-path: / spring: + profiles: + active: dev datasource: url: jdbc:mysql://120.27.238.55:3306/kss_framework?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8 username: ct_test @@ -91,6 +93,12 @@ app: debug: true redis_expire: 3000 + # k线更新任务控制 + kline-update-job: false + #最新价任务控制 + newest-price-update-job: true + #其他任务控制 + other-job: true rsa: public_key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCCf8UFZK54AiK4PRu7tNd+Z8qZ77o/QXCnk25DRmygVpOEu5mGNSAvfnWmKp2pEV2RljeXq3Rid/+LQkonaebMJeXKSF0yxL/VgyeT8JaQ5gNbOrdfdlc+mFkXJyzyJt8YkvApEdPRNSU2ENBn7mgRfD0BYPM4vZ6/rv+de38FJwIDAQAB diff --git a/src/main/resources/mapper/contract/ContractEntrustOrderDao.xml b/src/main/resources/mapper/contract/ContractEntrustOrderDao.xml index 4e97a90..ecdf398 100644 --- a/src/main/resources/mapper/contract/ContractEntrustOrderDao.xml +++ b/src/main/resources/mapper/contract/ContractEntrustOrderDao.xml @@ -2,4 +2,9 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xcong.excoin.modules.contract.dao.ContractEntrustOrderDao"> + <select id="selectEntrustOrderByIdAndMemberId" resultType="com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity"> + select * from contract_entrust_order + where id=#{id} and member_id=#{memberId} + </select> + </mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/platform/CnyUsdtExchangeDao.xml b/src/main/resources/mapper/platform/PlatformCnyUsdtExchangeDao.xml similarity index 74% rename from src/main/resources/mapper/platform/CnyUsdtExchangeDao.xml rename to src/main/resources/mapper/platform/PlatformCnyUsdtExchangeDao.xml index 8bd2742..30bcdb1 100644 --- a/src/main/resources/mapper/platform/CnyUsdtExchangeDao.xml +++ b/src/main/resources/mapper/platform/PlatformCnyUsdtExchangeDao.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.xcong.excoin.modules.platform.dao.CnyUsdtExchangeDao"> +<mapper namespace="com.xcong.excoin.modules.platform.dao.PlatformCnyUsdtExchangeDao"> - <select id="getCNYAndUSDTOne" resultType="com.xcong.excoin.modules.coin.entity.CnyUsdtExchange"> + <select id="getCNYAndUSDTOne" resultType="com.xcong.excoin.modules.platform.entity.PlatformCnyUsdtExchangeEntity"> select * from platform_cny_usdt_exchange limit 1 </select> diff --git a/src/main/resources/mapper/platform/PlatformSymbolsContractDao.xml b/src/main/resources/mapper/platform/PlatformSymbolsContractDao.xml index e58929c..7013470 100644 --- a/src/main/resources/mapper/platform/PlatformSymbolsContractDao.xml +++ b/src/main/resources/mapper/platform/PlatformSymbolsContractDao.xml @@ -2,4 +2,8 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xcong.excoin.modules.symbols.dao.PlatformSymbolsContractDao"> + <select id="selectAllContractSymbols" resultType="com.xcong.excoin.modules.symbols.entity.PlatformSymbolsContractEntity"> + select * from platform_symbols_contract + </select> + </mapper> \ No newline at end of file -- Gitblit v1.9.1