Helius
2020-05-28 d775bb5dacca4c6ff33c65a0cb891f5992cc1bed
同步k线、最新价、人民币美元汇率、homesymbols接口
2 files deleted
2 files renamed
19 files modified
6 files added
1516 ■■■■■ changed files
src/main/java/com/xcong/excoin/ExcoinApplication.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/common/contants/AppContants.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/entity/CnyUsdtExchange.java 27 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java 931 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java 10 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/controller/ContractEntrustOrderController.java 21 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/entity/ContractEntrustOrderEntity.java 14 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/mapper/ContractEntrustOrderEntityMapper.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/ContractEntrustOrderService.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java 55 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/platform/dao/CnyUsdtExchangeDao.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/platform/dao/PlatformCnyUsdtExchangeDao.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/platform/entity/PlatformSymbolsSkuEntity.java 4 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/platform/service/impl/PlatformCnyUsdtExchangeServiceImpl.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/symbols/controller/SymbolsController.java 33 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/symbols/dao/PlatformSymbolsContractDao.java 6 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/symbols/entity/PlatformSymbolsContractEntity.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/symbols/parameter/vo/HomeSymbolsVo.java 31 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/symbols/service/SymbolsService.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java 65 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/quartz/job/KlineDataUpdateJob.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/quartz/job/NewestPriceUpdateJob.java 65 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/quartz/job/UsdtCnyExchangePriceUpdateJob.java 65 ●●●●● patch | view | raw | blame | history
src/main/resources/application-test.yml 102 ●●●●● patch | view | raw | blame | history
src/main/resources/application.yml 8 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/contract/ContractEntrustOrderDao.xml 5 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/platform/PlatformCnyUsdtExchangeDao.xml 4 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/platform/PlatformSymbolsContractDao.xml 4 ●●●● patch | view | raw | blame | history
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")
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;
}
src/main/java/com/xcong/excoin/modules/coin/entity/CnyUsdtExchange.java
File was deleted
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);
    }
}
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();
        //是否自选
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;
    }
}
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);
}
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;
    /**
     * 保证金
src/main/java/com/xcong/excoin/modules/contract/mapper/ContractEntrustOrderEntityMapper.java
New file
@@ -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);
}
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);
}
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;
    }
}
src/main/java/com/xcong/excoin/modules/platform/dao/CnyUsdtExchangeDao.java
File was deleted
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);
}
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;
}
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;
src/main/java/com/xcong/excoin/modules/symbols/controller/SymbolsController.java
New file
@@ -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);
    }
}
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();
}
src/main/java/com/xcong/excoin/modules/symbols/entity/PlatformSymbolsContractEntity.java
File was renamed from 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;
src/main/java/com/xcong/excoin/modules/symbols/parameter/vo/HomeSymbolsVo.java
New file
@@ -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;
}
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);
}
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;
    }
}
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
src/main/java/com/xcong/excoin/quartz/job/NewestPriceUpdateJob.java
New file
@@ -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);
        });
    }
}
src/main/java/com/xcong/excoin/quartz/job/UsdtCnyExchangePriceUpdateJob.java
New file
@@ -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&currencyId=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();
        }
    }
}
src/main/resources/application-test.yml
New file
@@ -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==
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
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>
src/main/resources/mapper/platform/PlatformCnyUsdtExchangeDao.xml
File was renamed from src/main/resources/mapper/platform/CnyUsdtExchangeDao.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>
    
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>