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