From 2c967b730b5647663b7bacd817b0a49bbf208dc1 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Thu, 15 Apr 2021 19:16:10 +0800 Subject: [PATCH] Merge branch 'activity' of http://120.27.238.55:7000/r/exchange into activity --- src/test/java/com/xcong/excoin/WholeTest.java | 4 +- src/main/java/com/xcong/excoin/common/contants/AppContants.java | 1 src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java | 20 +++++++++- src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java | 53 ++++++++++++-------------- src/main/java/com/xcong/excoin/modules/coin/service/CoinService.java | 2 + src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java | 2 src/main/java/com/xcong/excoin/common/system/controller/LoginController.java | 21 ++++++++++ src/main/java/com/xcong/excoin/utils/CalculateUtil.java | 4 +- src/main/java/com/xcong/excoin/modules/platform/controller/PlatformController.java | 1 9 files changed, 71 insertions(+), 37 deletions(-) diff --git a/src/main/java/com/xcong/excoin/common/contants/AppContants.java b/src/main/java/com/xcong/excoin/common/contants/AppContants.java index cd8cc00..75ca5b0 100644 --- a/src/main/java/com/xcong/excoin/common/contants/AppContants.java +++ b/src/main/java/com/xcong/excoin/common/contants/AppContants.java @@ -93,6 +93,7 @@ public static final String BASE_URL_L1 = "http://124.70.205.195"; public static final String BASE_URL_L2 = "http://123.60.45.251"; + public static final BigDecimal BASE_MIN_AMOUNT = new BigDecimal(100); } diff --git a/src/main/java/com/xcong/excoin/common/system/controller/LoginController.java b/src/main/java/com/xcong/excoin/common/system/controller/LoginController.java index be1db93..6645b6d 100644 --- a/src/main/java/com/xcong/excoin/common/system/controller/LoginController.java +++ b/src/main/java/com/xcong/excoin/common/system/controller/LoginController.java @@ -1,6 +1,7 @@ package com.xcong.excoin.common.system.controller; import cn.hutool.core.codec.Base64; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; @@ -12,6 +13,7 @@ import com.xcong.excoin.common.LoginUserUtils; import com.xcong.excoin.common.annotations.SubmitRepeat; import com.xcong.excoin.common.contants.AppContants; +import com.xcong.excoin.common.enumerates.CoinTypeEnum; import com.xcong.excoin.common.response.Result; import com.xcong.excoin.common.system.bean.LoginUserBean; import com.xcong.excoin.common.system.dto.LoginDto; @@ -19,12 +21,19 @@ import com.xcong.excoin.common.system.vo.MemberInfoVo; import com.xcong.excoin.configurations.properties.ApplicationProperties; import com.xcong.excoin.configurations.properties.SecurityProperties; +import com.xcong.excoin.modules.coin.service.CoinService; +import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao; +import com.xcong.excoin.modules.member.dao.MemberWalletContractDao; import com.xcong.excoin.modules.member.entity.MemberEntity; +import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity; +import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity; import com.xcong.excoin.modules.member.service.MemberService; +import com.xcong.excoin.utils.CoinTypeConvert; import com.xcong.excoin.utils.RedisUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; @@ -34,7 +43,9 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -60,6 +71,9 @@ @Resource private AuthenticationManagerBuilder authenticationManagerBuilder; + + @Autowired + private CoinService coinService; @Resource private RedisUtils redisUtils; @@ -113,7 +127,12 @@ authInfo.put("user", memberInfoVo); } - authInfo.put("baseUrl", AppContants.BASE_URL_L2); + BigDecimal total = coinService.getAllWalletAmount(memberEntity.getId()); + if (total.compareTo(AppContants.BASE_MIN_AMOUNT) > 0) { + authInfo.put("baseUrl", AppContants.BASE_URL_L2); + } else { + authInfo.put("baseUrl", AppContants.BASE_URL_L1); + } return Result.ok("success", authInfo); } diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/CoinService.java b/src/main/java/com/xcong/excoin/modules/coin/service/CoinService.java index 7722fdf..3e02b27 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/service/CoinService.java +++ b/src/main/java/com/xcong/excoin/modules/coin/service/CoinService.java @@ -52,4 +52,6 @@ public Result coinInList(@Valid CoinInListDto coinInListDto); + public BigDecimal getAllWalletAmount(Long memberId); + } diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java index ed5539c..225a193 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java @@ -1112,33 +1112,30 @@ return Result.fail(MessageSourceUtils.getString("member_controller_0005")); } - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @Override + public BigDecimal getAllWalletAmount(Long memberId) { + List<MemberWalletCoinEntity> memberWalletCoinList = memberWalletCoinDao.selectMemberWalletCoinsByMemberId(memberId); + BigDecimal total = BigDecimal.ZERO; + if (CollUtil.isNotEmpty(memberWalletCoinList)) { + for (MemberWalletCoinEntity memberWalletCoinEntity : memberWalletCoinList) { + if (memberWalletCoinEntity.getWalletCode().equals(CoinTypeEnum.USDT.name())) { + total = total.add(memberWalletCoinEntity.getTotalBalance()); + } else { + BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(memberWalletCoinEntity.getWalletCode() + "/USDT"))); + total = total.add(memberWalletCoinEntity.getTotalBalance().multiply(newPrice)); + } + } + } + + MemberWalletContractEntity contractWallet = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeEnum.USDT.name()); + total = total.add(contractWallet.getTotalBalance()); + + MemberWalletAgentEntity walletAgent = memberWalletAgentDao.selectWalletAgentBymIdAndCode(memberId, CoinTypeEnum.USDT.name()); + if (walletAgent != null) { + total = total.add(walletAgent.getTotalBalance()); + } + return total; + } } diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java index 70940c6..c3f9a97 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java @@ -15,6 +15,7 @@ import com.xcong.excoin.common.enumerates.RabbitPriceTypeEnum; import com.xcong.excoin.common.response.Result; import com.xcong.excoin.common.system.service.CommonService; +import com.xcong.excoin.modules.coin.service.CoinService; import com.xcong.excoin.modules.contract.dao.ContractEntrustOrderDao; import com.xcong.excoin.modules.contract.dao.ContractHoldOrderDao; import com.xcong.excoin.modules.contract.dao.ContractOrderDao; @@ -108,6 +109,9 @@ @Autowired private FollowProducer followProducer; + @Autowired + private CoinService coinService; + @Transactional(rollbackFor = Exception.class) @Override public Result submitOrder(SubmitOrderDto submitOrderDto) { @@ -121,6 +125,14 @@ return Result.loading("loading_type"); } + BigDecimal total = coinService.getAllWalletAmount(memberIdLong); + Map<String, Object> data = new HashMap<>(); + if (total.compareTo(AppContants.BASE_MIN_AMOUNT) > 0) { + data.put("baseUrl", AppContants.BASE_URL_L2); + } else { + data.put("baseUrl", AppContants.BASE_URL_L1); + } + // 判断当前对应的持仓/委托 if (memberEntity.getContractPositionType() == ContractEntrustOrderEntity.POSITION_TYPE_ADD) { List<ContractHoldOrderEntity> holdList = contractHoldOrderDao.selectMemberHoldOrderByPositionType(ContractEntrustOrderEntity.POSITION_TYPE_ALL, memberEntity.getId()); @@ -130,7 +142,9 @@ } // 逐仓逻辑 - return doPositionTypeForAdd(submitOrderDto, memberEntity); + Result result = doPositionTypeForAdd(submitOrderDto, memberEntity); + result.setData(data); + return result; } else { List<ContractHoldOrderEntity> holdList = contractHoldOrderDao.selectMemberHoldOrderByPositionType(ContractEntrustOrderEntity.POSITION_TYPE_ADD, memberEntity.getId()); List<ContractEntrustOrderEntity> entrustList = contractEntrustOrderDao.selectMemberEntrustOrderByPositionType(ContractEntrustOrderEntity.POSITION_TYPE_ADD, memberEntity.getId()); @@ -139,7 +153,9 @@ } // 全仓逻辑 - return doPositionTypeForWhole(submitOrderDto, memberEntity); + Result result = doPositionTypeForWhole(submitOrderDto, memberEntity); + result.setData(data); + return result; } } diff --git a/src/main/java/com/xcong/excoin/modules/platform/controller/PlatformController.java b/src/main/java/com/xcong/excoin/modules/platform/controller/PlatformController.java index ccd9d98..1fcd4ad 100644 --- a/src/main/java/com/xcong/excoin/modules/platform/controller/PlatformController.java +++ b/src/main/java/com/xcong/excoin/modules/platform/controller/PlatformController.java @@ -39,7 +39,6 @@ @ApiOperation(value = "findUsdtCnyExchange", notes = "Cny|Usdt兑换") @GetMapping(value = "/findUsdtCnyExchange") public Result findUsdtCnyExchange(@ApiParam(name = "type", value = "类型", type="string", required=true) @RequestParam("type") String type) { - log.info("type值----->{}", type); return platformCnyUsdtExchangeService.findUsdtCnyExchange(type); } diff --git a/src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java b/src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java index 95d294a..09c5a42 100644 --- a/src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java @@ -141,7 +141,7 @@ homeSymbolsVo.setUpOrDown(upOrDown); homeSymbolsVo.setVolume(symbolObject.getAmount()); if (cnyUsdtExchange != null) { - BigDecimal cnyPrice = newestPrice.multiply(cnyUsdtExchange.getValue()).setScale(2, BigDecimal.ROUND_HALF_UP); + BigDecimal cnyPrice = newestPrice.multiply(cnyUsdtExchange.getValue().add(cnyUsdtExchange.getDiff())).setScale(2, BigDecimal.ROUND_HALF_UP); homeSymbolsVo.setCnyPrice(cnyPrice); } diff --git a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java index 470c01c..6ce033e 100644 --- a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java +++ b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java @@ -244,11 +244,11 @@ // 开多 if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) { // (最新价-开仓价)*规格*张数 - rewardRatio = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(contractHoldOrderEntity.getSymbolSku()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())); + rewardRatio = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(holdOrderEntity.getSymbolSku()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())); // 开空 } else { // (开仓价-最新价)*规格*张数 - rewardRatio = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(contractHoldOrderEntity.getSymbolSku()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())); + rewardRatio = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(holdOrderEntity.getSymbolSku()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())); } if (memberEntity.getIsProfit() == MemberEntity.IS_PROFIT_Y) { diff --git a/src/test/java/com/xcong/excoin/WholeTest.java b/src/test/java/com/xcong/excoin/WholeTest.java index 271bbe4..a366bfc 100644 --- a/src/test/java/com/xcong/excoin/WholeTest.java +++ b/src/test/java/com/xcong/excoin/WholeTest.java @@ -203,8 +203,8 @@ public void wholeForceNewTest() { BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey("BTC/USDT"))); - MemberEntity memberEntity = memberDao.selectById(16L); - ContractHoldOrderEntity holdOrder = contractHoldOrderDao.selectById(772L); + MemberEntity memberEntity = memberDao.selectById(19L); + ContractHoldOrderEntity holdOrder = contractHoldOrderDao.selectById(932L); System.out.println(CalculateUtil.calWholePriceTwo(memberEntity, holdOrder, 2)); } -- Gitblit v1.9.1