src/main/java/com/xcong/excoin/modules/contract/parameter/dto/SubmitEntrustDto.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/modules/platform/dao/TradeSettingDao.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/modules/platform/entity/PlatformSymbolsSkuEntity.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/utils/CacheSettingUtils.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/utils/CoinTypeConvert.java | ●●●●● patch | view | raw | blame | history | |
src/main/resources/mapper/platform/TradeSettingDao.xml | ●●●●● patch | view | raw | blame | history |
src/main/java/com/xcong/excoin/modules/contract/parameter/dto/SubmitEntrustDto.java
@@ -35,4 +35,8 @@ @ApiModelProperty(value = "币种数量", example = "1") private int symbolCnt; @NotNull @ApiModelProperty(value = "杠杆倍率", example = "100") private int leverRatio; } src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
@@ -7,11 +7,17 @@ import com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity; 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; import com.xcong.excoin.modules.member.entity.MemberEntity; import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity; import com.xcong.excoin.utils.CacheSettingUtils; import com.xcong.excoin.utils.CoinTypeConvert; import com.xcong.excoin.utils.RedisUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; /** * @author wzy @@ -24,19 +30,57 @@ @Resource private ContractEntrustOrderDao contractEntrustOrderDao; @Resource private MemberWalletContractDao memberWalletContractDao; @Resource private RedisUtils redisUtils; @Resource private CacheSettingUtils cacheSettingUtils; @Override public Result addContractEntrustOrder(SubmitEntrustDto submitEntrustDto) { MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); // 获取最新价 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) { // 开多委托价不能大于当前价 if (submitEntrustDto.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_OPEN_MORE) { if (submitEntrustDto.getEntrustPrice().compareTo(newPirce) > -1) { return Result.fail("委托价不能大于当前价"); } } // 开空委托价不能小于当前价 if (submitEntrustDto.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_OPEN_LESS) { if (submitEntrustDto.getEntrustPrice().compareTo(newPirce) < 1) { return Result.fail("委托价不能小于当前价"); } } MemberWalletContractEntity walletContract = memberWalletContractDao.selectById(memberEntity.getId()); // 委托总额 BigDecimal entrustTotalAmount = submitEntrustDto.getEntrustPrice().multiply(BigDecimal.valueOf(submitEntrustDto.getSymbolCnt())); if (entrustTotalAmount.compareTo(walletContract.getAvailableBalance()) > -1) { return Result.fail("可用余额不足"); } BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(submitEntrustDto.getSymbol()); } // 委托平仓 // 委托平仓 (全仓模式) if (submitEntrustDto.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_CLOSE_MORE || submitEntrustDto.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_CLOSE_LESS) { return Result.fail("功能暂未开放,敬请期待"); } return null; } src/main/java/com/xcong/excoin/modules/platform/dao/TradeSettingDao.java
@@ -2,20 +2,20 @@ import java.util.List; import com.xcong.excoin.modules.platform.entity.PlatformSymbolsSkuEntity; import org.apache.ibatis.annotations.Param; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xcong.excoin.modules.platform.entity.PlatformLeverageSettingEntity; import com.xcong.excoin.modules.platform.entity.PlatformSymbolsSku; import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity; public interface TradeSettingDao extends BaseMapper<PlatformTradeSettingEntity> { PlatformTradeSettingEntity findTradeSetting(); PlatformSymbolsSku findSymbolSkubySymbol(@Param("symbol") String symbol); PlatformSymbolsSkuEntity findSymbolSkubySymbol(@Param("symbol") String symbol); List<PlatformSymbolsSku> findAllSymbolSkubySymbol(); List<PlatformSymbolsSkuEntity> findAllSymbolSkubySymbol(); List<PlatformLeverageSettingEntity> findLeverageSetting(); src/main/java/com/xcong/excoin/modules/platform/entity/PlatformSymbolsSkuEntity.java
File was renamed from src/main/java/com/xcong/excoin/modules/platform/entity/PlatformSymbolsSku.java @@ -13,7 +13,7 @@ */ @Data @TableName("platform_symbols_sku") public class PlatformSymbolsSku implements Serializable { public class PlatformSymbolsSkuEntity implements Serializable { /** * */ @@ -27,6 +27,6 @@ /** * 规格 */ private String sku; private String lotnumber; } src/main/java/com/xcong/excoin/utils/CacheSettingUtils.java
New file @@ -0,0 +1,82 @@ package com.xcong.excoin.utils; import cn.hutool.core.bean.BeanUtil; import com.xcong.excoin.modules.platform.dao.TradeSettingDao; import com.xcong.excoin.modules.platform.entity.PlatformSymbolsSkuEntity; import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author wzy * @date 2020-05-28 **/ @Component public class CacheSettingUtils { /** * 交易设置缓存Key */ private final static String TRADE_SETTING_KEY = "trade_setting_key"; /** * 币种规格缓存key */ private final static String TRADE_SYMBOL_SKU_KEY = "trade_symbol_sku_key"; @Resource private TradeSettingDao tradeSettingDao; @Resource private RedisUtils redisUtils; /** * 获取币种规格 * * @param symbol * @return */ public BigDecimal getSymbolSku(String symbol) { Object hget = redisUtils.hget(TRADE_SYMBOL_SKU_KEY, symbol); if (hget == null) { List<PlatformSymbolsSkuEntity> symbolSkubySymbol = tradeSettingDao.findAllSymbolSkubySymbol(); Map<String, Object> map = new HashMap<String, Object>(); if (CollectionUtils.isNotEmpty(symbolSkubySymbol)) { for (PlatformSymbolsSkuEntity symbolSku : symbolSkubySymbol) { map.put(symbolSku.getName(), symbolSku.getLotnumber()); } // 存入redis redisUtils.hmset(TRADE_SYMBOL_SKU_KEY, map); } hget = redisUtils.hget(TRADE_SYMBOL_SKU_KEY, symbol); } return new BigDecimal(hget.toString()); } /** * 获取交易设置缓存 * * @return */ public PlatformTradeSettingEntity getTradeSetting() { Map<Object, Object> hmget = redisUtils.hmget(TRADE_SETTING_KEY); if (hmget == null || hmget.size() == 0) { PlatformTradeSettingEntity tradeSetting = tradeSettingDao.findTradeSetting(); redisUtils.hmset(TRADE_SETTING_KEY, BeanUtil.beanToMap(tradeSetting)); return tradeSetting; } return BeanUtil.mapToBean(hmget, PlatformTradeSettingEntity.class, true); } } src/main/java/com/xcong/excoin/utils/CoinTypeConvert.java
New file @@ -0,0 +1,50 @@ package com.xcong.excoin.utils; /** * @author wzy * @date 2020-05-28 **/ public class CoinTypeConvert { public static String convert(String symbol) { switch (symbol) { case "btcusdt": return "BTC/USDT"; case "ethusdt": return "ETH/USDT"; case "xrpusdt": return "XRP/USDT"; case "ltcusdt": return "LTC/USDT"; case "bchusdt": return "BCH/USDT"; case "eosusdt": return "EOS/USDT"; case "etcusdt": return "ETC/USDT"; default: return null; } } public static String convertToKey(String symbol) { switch (symbol) { case "BTC/USDT": return "BTC_NEW_PRICE"; case "ETH/USDT": return "ETH_NEW_PRICE"; case "XRP/USDT": return "XRP_NEW_PRICE"; case "LTC/USDT": return "LTC_NEW_PRICE"; case "BCH/USDT": return "BCH_NEW_PRICE"; case "EOS/USDT": return "EOS_NEW_PRICE"; case "ETC/USDT": return "ETC_NEW_PRICE"; default: return null; } } } src/main/resources/mapper/platform/TradeSettingDao.xml
@@ -1,12 +1,12 @@ <?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.coin.dao.platform.TradeSettingDao"> <mapper namespace="com.xcong.excoin.modules.platform.dao.TradeSettingDao"> <select id="findTradeSetting" resultType="com.xcong.excoin.modules.coin.entity.PlatformTradeSettingEntity"> <select id="findTradeSetting" resultType="com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity"> SELECT * FROM platform_trade_setting </select> <select id="findSymbolSkubySymbol" resultType="com.xcong.excoin.modules.coin.entity.PlatformSymbolsSku"> <select id="findSymbolSkubySymbol" resultType="com.xcong.excoin.modules.platform.entity.PlatformSymbolsSkuEntity"> select * from platform_symbols_sku <where> <if test="symbol!=null and symbol!=''"> @@ -15,11 +15,11 @@ </where> </select> <select id="findAllSymbolSkubySymbol" resultType="com.xcong.excoin.modules.coin.entity.PlatformSymbolsSku"> <select id="findAllSymbolSkubySymbol" resultType="com.xcong.excoin.modules.platform.entity.PlatformSymbolsSkuEntity"> select * from platform_symbols_sku </select> <select id="findLeverageSetting" resultType="com.xcong.excoin.modules.coin.entity.PlatformLeverageSettingEntity"> <select id="findLeverageSetting" resultType="com.xcong.excoin.modules.platform.entity.PlatformLeverageSettingEntity"> select * from platform_leverage_setting order by value ASC </select>