From 73699775f5546177ce71e3bae33d83a8aa346793 Mon Sep 17 00:00:00 2001 From: gao <gaoleox@163> Date: Mon, 25 May 2020 11:28:10 +0800 Subject: [PATCH] Merge branch 'master' of https://chonggaoxiao:xcg523511090712@gitee.com/chonggaoxiao/new_excoin.git --- src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberWalletCoinInfoVo.java | 81 +++++ src/main/java/com/xcong/excoin/modules/coin/dao/OrderCoinDao.java | 8 src/main/java/com/xcong/excoin/configurations/WebMvcConfig.java | 8 src/main/java/com/xcong/excoin/configurations/security/TokenFilter.java | 8 src/main/java/com/xcong/excoin/modules/coin/service/CoinService.java | 6 src/main/java/com/xcong/excoin/modules/coin/dao/MemberSelectSymbolsDao.java | 14 src/main/java/com/xcong/excoin/modules/home/mapper/MemberQuickBuySaleEntityMapper.java | 6 src/main/java/com/xcong/excoin/modules/coin/entity/OrderCoinsDealEntity.java | 19 + src/main/java/com/xcong/excoin/modules/coin/parameter/dto/SubmitSalesWalletCoinOrderDto.java | 32 ++ src/main/resources/mapper/platform/TradeSettingDao.xml | 35 ++ src/main/java/com/xcong/excoin/modules/coin/entity/PlatformLeverageSettingEntity.java | 41 ++ src/main/java/com/xcong/excoin/modules/coin/entity/OrderCoinsEntity.java | 75 ++++ src/main/java/com/xcong/excoin/modules/coin/service/OrderCoinService.java | 16 + src/main/java/com/xcong/excoin/common/enumerates/MemberWalletCoinEnum.java | 28 + src/main/java/com/xcong/excoin/modules/coin/dao/platform/TradeSettingDao.java | 22 + src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberWalletCoinVo.java | 17 src/main/java/com/xcong/excoin/utils/SpringContextHolder.java | 2 src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java | 109 ++++++ src/main/java/com/xcong/excoin/modules/test/controller/TestUserController.java | 5 src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java | 120 +++++-- src/main/java/com/xcong/excoin/modules/coin/entity/PlatformSymbolsSku.java | 32 ++ src/main/java/com/xcong/excoin/modules/coin/dao/OrderCoinDealDao.java | 8 src/main/java/com/xcong/excoin/modules/coin/parameter/dto/InOrderCoinDto.java | 27 + src/main/java/com/xcong/excoin/modules/member/entity/MemberSelectSymbolsEntity.java | 29 + src/main/java/com/xcong/excoin/modules/coin/controller/CoinController.java | 33 + src/main/resources/mapper/member/MemberSelectSymbolsDao.xml | 9 src/main/java/com/xcong/excoin/modules/coin/entity/PlatformTradeSettingEntity.java | 59 +++ src/main/java/com/xcong/excoin/modules/coin/controller/OrderCoinController.java | 61 +++ src/main/resources/application.yml | 2 29 files changed, 836 insertions(+), 76 deletions(-) diff --git a/src/main/java/com/xcong/excoin/common/enumerates/MemberWalletCoinEnum.java b/src/main/java/com/xcong/excoin/common/enumerates/MemberWalletCoinEnum.java index bb4ecee..3a286be 100644 --- a/src/main/java/com/xcong/excoin/common/enumerates/MemberWalletCoinEnum.java +++ b/src/main/java/com/xcong/excoin/common/enumerates/MemberWalletCoinEnum.java @@ -3,9 +3,12 @@ public enum MemberWalletCoinEnum { WALLETCOINUSDT("walletCoinUsdt", "usdt"), - WALLETCOINLIST("walletCoinList", "walletList"), WALLETCOINCNY("walletCoinCny", "cny"), - WALLETAGENTCNY("walletCoinCny", "wallet"), + + WALLETCOINLIST("walletCoinList", "walletList"), + WALLETAGENT("walletCoin", "wallet"), + + WALLETCONTRACT("walletContract", "walletContract"), CONTENTTOCONTRACT("0001","转出至合约账户"), CONTENTFROMWALLETCOIN("0002","由币币账户转入"), @@ -15,8 +18,27 @@ CONTENTFROMAGENT("0005","由代理账户转入"), - WALLETCOINCODE("USDT", "USDT") + WALLETCOINCODE("USDT", "USDT"), + + SUBMITSALESWALLETCOINORDER_SERVICERATE("ServiceRate","0.002"), + SUBMITSALESWALLETCOINORDER_TYPE("type","1"), + + + ENTERTRANSACTIONPAGEOFWALLETCOIN_ISCOLLECT_NO("isCollect","0"), + ENTERTRANSACTIONPAGEOFWALLETCOIN_ISCOLLECT_YES("isCollect","1"), + ENTERTRANSACTIONPAGEOFWALLETCOIN_SPREAD("spread","spread"), + ENTERTRANSACTIONPAGEOFWALLETCOIN_CLOSINGRATIO("closingRatio","closingRatio"), + ENTERTRANSACTIONPAGEOFWALLETCOIN_MEMBERMONEY("memberMoney","memberMoney"), + ENTERTRANSACTIONPAGEOFWALLETCOIN_CURRENTPRICE("currentPrice","currentPrice"), + ENTERTRANSACTIONPAGEOFWALLETCOIN_CNYUSDT("cnyUsdt","cnyUsdt"), + ENTERTRANSACTIONPAGEOFWALLETCOIN_CURRENTPRICECNY("currentPriceCny","currentPriceCny"), + ENTERTRANSACTIONPAGEOFWALLETCOIN_BUY("buy","1") + ; + + + + private String name; private String value; diff --git a/src/main/java/com/xcong/excoin/configurations/WebMvcConfig.java b/src/main/java/com/xcong/excoin/configurations/WebMvcConfig.java index cc8e77b..ae63e6d 100644 --- a/src/main/java/com/xcong/excoin/configurations/WebMvcConfig.java +++ b/src/main/java/com/xcong/excoin/configurations/WebMvcConfig.java @@ -38,8 +38,8 @@ .allowCredentials(true).maxAge(3600); } - @Bean - public SpringContextHolder springContextHolder() { - return new SpringContextHolder(); - } +// @Bean +// public SpringContextHolder springContextHolder() { +// return new SpringContextHolder(); +// } } diff --git a/src/main/java/com/xcong/excoin/configurations/security/TokenFilter.java b/src/main/java/com/xcong/excoin/configurations/security/TokenFilter.java index c697505..0e5624d 100644 --- a/src/main/java/com/xcong/excoin/configurations/security/TokenFilter.java +++ b/src/main/java/com/xcong/excoin/configurations/security/TokenFilter.java @@ -67,7 +67,13 @@ */ private String resolveToken(HttpServletRequest request) { try { - String bearerToken = request.getHeader(AppContants.TOKEN_HEADER); + // TODO debug模式下写死用户 + String bearerToken = ""; + if (applicationProperties.isDebug()) { + bearerToken = "Bearer JSEre1ZUKEu2Ga5ORM+juxXv6yBwmt+FgLhxaeHf1EEJfIb3oRir4pXqe5JDhS6sXfLYOXRIAyBpq+SYBwAtGigxwzGVPn+k4Pt6vNxZ4h8Pk4IeG4+FqbFD0guzvu3WN2eRnnzYqCepl429v9Ju7n4jSG0Hj5ViM3MHQZs3qHo="; + } else { + bearerToken = request.getHeader(AppContants.TOKEN_HEADER); + } if (StringUtils.hasText(bearerToken) && bearerToken.startsWith(AppContants.TOKEN_START_WITH)) { // 去掉令牌前缀 String rsaToken = bearerToken.replace(AppContants.TOKEN_START_WITH, ""); diff --git a/src/main/java/com/xcong/excoin/modules/coin/controller/CoinController.java b/src/main/java/com/xcong/excoin/modules/coin/controller/CoinController.java index dfeea1f..b198904 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/controller/CoinController.java +++ b/src/main/java/com/xcong/excoin/modules/coin/controller/CoinController.java @@ -5,12 +5,13 @@ import javax.annotation.Resource; import javax.validation.Valid; +import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletCoinInfoVo; +import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletCoinVo; +import io.swagger.annotations.*; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -19,14 +20,14 @@ import com.xcong.excoin.modules.coin.service.CoinService; import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; @Slf4j @Api(value = "会员资产接口", tags = "会员资产接口") @RestController -@RequestMapping(value = "/api/coin") +@RequestMapping(value = "/api/walletCoin") public class CoinController { @Resource @@ -37,6 +38,7 @@ * @return */ @ApiOperation(value = "获取我的币币账户信息", notes = "获取我的币币账户信息") + @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberWalletCoinVo.class)}) @GetMapping(value = "/getWalletCoin") public Result getWalletCoin() { return coinService.getWalletCoin(); @@ -47,9 +49,10 @@ * @return */ @ApiOperation(value="获取币币账户某个币种信息", notes="获取币币账户某个币种信息") - @GetMapping(value = "/getWalletCoinById") - public Result getWalletCoinById(@RequestParam("id") Long id) { - return coinService.getWalletCoinById(id); + @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberWalletCoinInfoVo.class)}) + @GetMapping(value = "/getWalletCoinBySymbol") + public Result getWalletCoinBySymbol(@ApiParam(name="symbol",value="币种",required=true)String symbol) { + return coinService.getWalletCoinBySymbol(symbol); } /** @@ -64,13 +67,13 @@ } /** - * 查询合约账户里面的资产余额 + * 查询合约账户里面的可用资产余额 * @return */ - @ApiOperation(value="查询合约账户里面的资产余额", notes="查询合约账户里面的资产余额") + @ApiOperation(value="查询合约账户里面的可用资产余额", notes="查询合约账户里面的可用资产余额") @GetMapping(value="/findWalletContractBySymbol") - public Result findWalletContractBySymbol(String symbol) { - return coinService.findWalletContractBySymbol(symbol); + public Result findWalletContractBySymbol() { + return coinService.findWalletContractBySymbol(); } /** @@ -79,7 +82,7 @@ */ @ApiOperation(value="查询币币账户里面的可用资产余额", notes="查询币币账户里面的可用资产余额") @GetMapping(value="/findWalletCoinBySymbol") - public Result findWalletCoinBysymbol(String symbol) { + public Result findWalletCoinBysymbol(@ApiParam(name="symbol",value="币种",required=true)String symbol) { return coinService.findWalletCoinBySymbol(symbol); } @@ -87,7 +90,7 @@ * 查询代理账户里面的资产余额 * @return */ - @ApiOperation(value="查询代理账户里面的资产余额", notes="查询代理账户里面的资产余额") + @ApiOperation(value="查询代理账户里面的可用资产余额", notes="查询代理账户里面的可用资产余额") @GetMapping(value="/findWalletAgentBySymbol") public Result findWalletAgentBySymbol() { return coinService.findWalletAgentBySymbol(); @@ -109,7 +112,7 @@ */ @ApiOperation(value="获取合约资产交易记录", notes="获取合约资产交易记录") @GetMapping(value="/getWalletContractRecords") - public Result getWalletContractRecords(String symbol) { + public Result getWalletContractRecords(@ApiParam(name="symbol",value="币种",required=true)String symbol) { return coinService.getWalletContractRecords(symbol); } @@ -151,7 +154,7 @@ * 代理账户划转到USDT账户 * @return */ - @ApiOperation(value="代理账户划转到USDT账户", notes="代理账户划转到USDT账户") + @ApiOperation(value="代理账户划转到合约或币币USDT账户()", notes="代理账户划转到合约或币币USDT账户") @PostMapping(value="/agentTransferToWalletCoin") public Result agentTransferToWalletCoin(@RequestBody @Valid TransferOfBalanceDto transferOfBalanceDto) { BigDecimal balance = transferOfBalanceDto.getBalance(); diff --git a/src/main/java/com/xcong/excoin/modules/coin/controller/OrderCoinController.java b/src/main/java/com/xcong/excoin/modules/coin/controller/OrderCoinController.java new file mode 100644 index 0000000..b5b0b20 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/controller/OrderCoinController.java @@ -0,0 +1,61 @@ +package com.xcong.excoin.modules.coin.controller; + +import java.math.BigDecimal; + +import javax.annotation.Resource; +import javax.validation.Valid; + +import org.springframework.web.bind.annotation.GetMapping; +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 com.xcong.excoin.common.response.Result; +import com.xcong.excoin.modules.coin.parameter.dto.SubmitSalesWalletCoinOrderDto; +import com.xcong.excoin.modules.coin.parameter.dto.TransferOfBalanceDto; +import com.xcong.excoin.modules.coin.service.OrderCoinService; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Api(value = "币币交易接口", tags = "币币交易接口") +@RestController +@RequestMapping(value = "/api/orderCoin") +public class OrderCoinController { + + @Resource + OrderCoinService orderCoinService; + + /** + * 进入交易页面 + * @return + */ + @ApiOperation(value = "进入交易页面", notes = "进入交易页面") + @GetMapping(value = "/enterTransactionPageOfWalletCoin") + public Result enterTransactionPageOfWalletCoin( @ApiParam(name="symbol",value="币种",required=true)String symbol, + @ApiParam(name="type",value="买入卖出类型",required=true)String type) { + return orderCoinService.enterTransactionPageOfWalletCoin(symbol,type); + } + + /** + * 提交买卖订单 + * @param buySymbolTradeVo + * @param token + * @return + */ + @ApiOperation(value = "提交买卖订单", notes = "提交买卖订单") + @PostMapping(value="/submitSalesWalletCoinOrder") + public Result submitSalesWalletCoinOrder(@RequestBody @Valid SubmitSalesWalletCoinOrderDto submitSalesWalletCoinOrderDto) { + String symbol = submitSalesWalletCoinOrderDto.getSymbol(); + Integer type = submitSalesWalletCoinOrderDto.getType(); + Integer tradeType = submitSalesWalletCoinOrderDto.getTradeType(); + BigDecimal price = submitSalesWalletCoinOrderDto.getPrice(); + BigDecimal amount = submitSalesWalletCoinOrderDto.getAmount(); + return orderCoinService.submitSalesWalletCoinOrder(symbol,type,tradeType,price,amount); + } + +} diff --git a/src/main/java/com/xcong/excoin/modules/coin/dao/MemberSelectSymbolsDao.java b/src/main/java/com/xcong/excoin/modules/coin/dao/MemberSelectSymbolsDao.java new file mode 100644 index 0000000..0de89ee --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/dao/MemberSelectSymbolsDao.java @@ -0,0 +1,14 @@ +package com.xcong.excoin.modules.coin.dao; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xcong.excoin.modules.member.entity.MemberSelectSymbolsEntity; + +public interface MemberSelectSymbolsDao extends BaseMapper<MemberSelectSymbolsEntity>{ + + List<MemberSelectSymbolsEntity> selectSymbolByMemIdAndSymbol(@Param("memberId")Long memberId,@Param("symbol")String symbol); + +} diff --git a/src/main/java/com/xcong/excoin/modules/coin/dao/OrderCoinDao.java b/src/main/java/com/xcong/excoin/modules/coin/dao/OrderCoinDao.java new file mode 100644 index 0000000..c33249f --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/dao/OrderCoinDao.java @@ -0,0 +1,8 @@ +package com.xcong.excoin.modules.coin.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xcong.excoin.modules.coin.entity.OrderCoinsEntity; + +public interface OrderCoinDao extends BaseMapper<OrderCoinsEntity>{ + +} diff --git a/src/main/java/com/xcong/excoin/modules/coin/dao/OrderCoinDealDao.java b/src/main/java/com/xcong/excoin/modules/coin/dao/OrderCoinDealDao.java new file mode 100644 index 0000000..0155075 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/dao/OrderCoinDealDao.java @@ -0,0 +1,8 @@ +package com.xcong.excoin.modules.coin.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xcong.excoin.modules.coin.entity.OrderCoinsDealEntity; + +public interface OrderCoinDealDao extends BaseMapper<OrderCoinsDealEntity>{ + +} diff --git a/src/main/java/com/xcong/excoin/modules/coin/dao/platform/TradeSettingDao.java b/src/main/java/com/xcong/excoin/modules/coin/dao/platform/TradeSettingDao.java new file mode 100644 index 0000000..f68b080 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/dao/platform/TradeSettingDao.java @@ -0,0 +1,22 @@ +package com.xcong.excoin.modules.coin.dao.platform; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xcong.excoin.modules.coin.entity.PlatformLeverageSettingEntity; +import com.xcong.excoin.modules.coin.entity.PlatformSymbolsSku; +import com.xcong.excoin.modules.coin.entity.PlatformTradeSettingEntity; + +public interface TradeSettingDao extends BaseMapper<PlatformTradeSettingEntity> { + + PlatformTradeSettingEntity findTradeSetting(); + + PlatformSymbolsSku findSymbolSkubySymbol(@Param("symbol") String symbol); + + List<PlatformSymbolsSku> findAllSymbolSkubySymbol(); + + List<PlatformLeverageSettingEntity> findLeverageSetting(); + +} diff --git a/src/main/java/com/xcong/excoin/modules/coin/entity/OrderCoinsDealEntity.java b/src/main/java/com/xcong/excoin/modules/coin/entity/OrderCoinsDealEntity.java new file mode 100644 index 0000000..02b24ad --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/entity/OrderCoinsDealEntity.java @@ -0,0 +1,19 @@ +package com.xcong.excoin.modules.coin.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.xcong.excoin.common.system.base.BaseEntity; + +import lombok.Data; + +/** + * 币币订单成交表 + */ +@Data +@TableName("coins_order_deal") +public class OrderCoinsDealEntity extends BaseEntity{ + /** + * + */ + private static final long serialVersionUID = 1L; + +} diff --git a/src/main/java/com/xcong/excoin/modules/coin/entity/OrderCoinsEntity.java b/src/main/java/com/xcong/excoin/modules/coin/entity/OrderCoinsEntity.java new file mode 100644 index 0000000..a99e77e --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/entity/OrderCoinsEntity.java @@ -0,0 +1,75 @@ +package com.xcong.excoin.modules.coin.entity; + +import java.math.BigDecimal; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.xcong.excoin.common.system.base.BaseEntity; + +import lombok.Data; + +/** + * 币币订单表 + */ +@Data +@TableName("coins_order") +public class OrderCoinsEntity extends BaseEntity{ + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * 会员ID + */ + private Long memberId; + /** + * 订单编号 + */ + private String orderNo; + /** + * 订单类型 1、买入2、卖出 + */ + private int orderType; + /** + * 币种 + */ + private String symbol; + /** + * 市场价 + */ + private BigDecimal markPrice; + /** + * 委托量 + */ + private BigDecimal entrustCnt; + /** + * 委托价 + */ + private BigDecimal entrustPrice; + /** + * 成交量 + */ + private BigDecimal dealCnt; + /** + * 成交价 + */ + private Double dealPrice; + /** + * 成交金额 + */ + private BigDecimal dealAmount; + /** + * 状态 1:委托中2:撤单3:已成交 + */ + private Integer orderStatus; + /** + * 交易类型 1:市价2:限价 + */ + private Integer tradeType; + /** + * 手续费 + */ + private String feeAmount; + +} diff --git a/src/main/java/com/xcong/excoin/modules/coin/entity/PlatformLeverageSettingEntity.java b/src/main/java/com/xcong/excoin/modules/coin/entity/PlatformLeverageSettingEntity.java new file mode 100644 index 0000000..ac907da --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/entity/PlatformLeverageSettingEntity.java @@ -0,0 +1,41 @@ +package com.xcong.excoin.modules.coin.entity; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import lombok.Data; + +/** + * 杠杆设置表 + */ +@Data +@TableName("platform_leverage_setting") +public class PlatformLeverageSettingEntity implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 1L; + @TableId(value = "id",type = IdType.AUTO) + private Long id; + /** + * 杠杆值 + */ + private String value; + /** + * 杠杆名称 + */ + private String name; + /** + * 币种 + */ + private String symbol; + /** + * 维持保证金率 + */ + private String prePriceRate; + +} diff --git a/src/main/java/com/xcong/excoin/modules/coin/entity/PlatformSymbolsSku.java b/src/main/java/com/xcong/excoin/modules/coin/entity/PlatformSymbolsSku.java new file mode 100644 index 0000000..268f301 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/entity/PlatformSymbolsSku.java @@ -0,0 +1,32 @@ +package com.xcong.excoin.modules.coin.entity; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import lombok.Data; + +/** + * 币种规格表 + */ +@Data +@TableName("platform_symbols_sku") +public class PlatformSymbolsSku implements Serializable { + /** + * + */ + private static final long serialVersionUID = 1L; + @TableId(value = "id",type = IdType.AUTO) + private Long id; + /** + * 币种名称 + */ + private String name; + /** + * 规格 + */ + private String sku; + +} diff --git a/src/main/java/com/xcong/excoin/modules/coin/entity/PlatformTradeSettingEntity.java b/src/main/java/com/xcong/excoin/modules/coin/entity/PlatformTradeSettingEntity.java new file mode 100644 index 0000000..1eae490 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/entity/PlatformTradeSettingEntity.java @@ -0,0 +1,59 @@ +package com.xcong.excoin.modules.coin.entity; + +import java.io.Serializable; +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import lombok.Data; +/** + * 交易设置表 + * @author Administrator + * + */ +@Data +@TableName("platform_trade_setting") +public class PlatformTradeSettingEntity implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 1L; + @TableId(value = "id",type = IdType.AUTO) + private Long id; + /** + * 点差 + */ + private BigDecimal spread; + /** + * 杠杆 + */ + private BigDecimal leverageRatio; + /** + * 爆仓 + */ + private BigDecimal outstock; + /** + * 手续费率 + */ + private BigDecimal feeRatio; + /** + * 代理返佣比例 + */ + private BigDecimal agentReturnRatio; + /** + * 持仓系数 + */ + private BigDecimal doingRatio; + /** + * 预估强平价系数 + */ + private BigDecimal forceParam; + + /** + *盈亏难度系数 + */ + private BigDecimal profitParam; +} diff --git a/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/InOrderCoinDto.java b/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/InOrderCoinDto.java new file mode 100644 index 0000000..b69daf2 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/InOrderCoinDto.java @@ -0,0 +1,27 @@ +package com.xcong.excoin.modules.coin.parameter.dto; + +import java.math.BigDecimal; + +import javax.validation.constraints.NotNull; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "进入交易页面参数接收类", description = "进入交易页面参数接收类") +public class InOrderCoinDto { + + @NotNull(message = "划转金额不能为空") + @ApiModelProperty(value = "划转金额", example = "100") + private BigDecimal balance; + + @NotNull(message = "币种不能为空") + @ApiModelProperty(value = "币种", example = "USDT") + private String symbol; + + @NotNull(message = "账户类型不能为空") + @ApiModelProperty(value = "账户类型", example = "1") + private Integer transfertype; + +} diff --git a/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/SubmitSalesWalletCoinOrderDto.java b/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/SubmitSalesWalletCoinOrderDto.java new file mode 100644 index 0000000..bdff678 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/SubmitSalesWalletCoinOrderDto.java @@ -0,0 +1,32 @@ +package com.xcong.excoin.modules.coin.parameter.dto; + +import java.math.BigDecimal; +import javax.validation.constraints.NotNull; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "提交买卖订单接收类", description = "提交买卖订单接收类") +public class SubmitSalesWalletCoinOrderDto { + + @ApiModelProperty(value = "币种", example = "BTC") + private String symbol; + + @NotNull(message = "币种不能为空") + @ApiModelProperty(value = "币种", example = "USDT") + private Integer type; + + @NotNull(message = "账户类型不能为空") + @ApiModelProperty(value = "账户类型", example = "1") + private Integer tradeType; + + @NotNull(message = "数量不能为空") + @ApiModelProperty(value = "数量", example = "100") + private BigDecimal amount; + + @NotNull(message = "建仓价不能为空") + @ApiModelProperty(value = "建仓价", example = "20.0000") + private BigDecimal price; + +} diff --git a/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberWalletCoinInfoVo.java b/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberWalletCoinInfoVo.java new file mode 100644 index 0000000..3c1884b --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberWalletCoinInfoVo.java @@ -0,0 +1,81 @@ +package com.xcong.excoin.modules.coin.parameter.vo; + +import java.math.BigDecimal; + +import io.swagger.annotations.ApiModelProperty; + +public class MemberWalletCoinInfoVo { + + /** + * 用户Id + */ + @ApiModelProperty(value = "用户Id") + private Long memberId; + + /** + * 钱包标识 + */ + @ApiModelProperty(value = "币种名称") + private String walletCode; + + /** + * 可用余额 + */ + @ApiModelProperty(value = "可用余额") + private BigDecimal availableBalance; + + /** + * 总金额 + */ + @ApiModelProperty(value = "总金额") + private BigDecimal totalBalance; + + /** + * 冻结金额 + */ + @ApiModelProperty(value = "冻结金额") + private BigDecimal frozenBalance; + + public String getWalletCode() { + return walletCode; + } + + public void setWalletCode(String walletCode) { + this.walletCode = walletCode; + } + + public Long getMemberId() { + return memberId; + } + + public void setMemberId(Long memberId) { + this.memberId = memberId; + } + + public BigDecimal getAvailableBalance() { + return availableBalance; + } + + public void setAvailableBalance(BigDecimal availableBalance) { + this.availableBalance = availableBalance; + } + + public BigDecimal getTotalBalance() { + return totalBalance; + } + + public void setTotalBalance(BigDecimal totalBalance) { + this.totalBalance = totalBalance; + } + + public BigDecimal getFrozenBalance() { + return frozenBalance; + } + + public void setFrozenBalance(BigDecimal frozenBalance) { + this.frozenBalance = frozenBalance; + } + + + +} diff --git a/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberWalletCoinVo.java b/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberWalletCoinVo.java index e6d2268..54f5d65 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberWalletCoinVo.java +++ b/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberWalletCoinVo.java @@ -3,13 +3,14 @@ import java.math.BigDecimal; import java.util.List; -import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity; - import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +/** + * @author xy + */ @ApiModel(value = "币币账户信息返回", description = "币币账户信息返回") -public class MemberWalletCoinVo extends MemberWalletCoinEntity{ +public class MemberWalletCoinVo { private static final long serialVersionUID = 1L; @@ -20,7 +21,7 @@ private BigDecimal totalCny; @ApiModelProperty(value = "币种详情") - private List<MemberWalletCoinEntity> walletCoinEntities; + private List<MemberWalletCoinInfoVo> memberWalletCoinInfoVo; public BigDecimal getTotalUsdt() { return totalUsdt; @@ -34,11 +35,11 @@ public void setTotalCny(BigDecimal totalCny) { this.totalCny = totalCny; } - public List<MemberWalletCoinEntity> getWalletCoinEntities() { - return walletCoinEntities; + public List<MemberWalletCoinInfoVo> getMemberWalletCoinInfoVo() { + return memberWalletCoinInfoVo; } - public void setWalletCoinEntities(List<MemberWalletCoinEntity> walletCoinEntities) { - this.walletCoinEntities = walletCoinEntities; + public void setMemberWalletCoinInfoVo(List<MemberWalletCoinInfoVo> memberWalletCoinInfoVo) { + this.memberWalletCoinInfoVo = memberWalletCoinInfoVo; } } 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 71e1a7d..82945c8 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 @@ -10,15 +10,13 @@ public Result getWalletCoin(); - public Result getWalletCoinById(Long id); - public Result getWalletContractById(); public Result coinWalletTransferToContract(BigDecimal balance, String symbol); public Result contractTransferToWalletCoin(BigDecimal balance, String symbol); - public Result findWalletContractBySymbol(String symbol); + public Result findWalletContractBySymbol(); public Result findWalletCoinBySymbol(String symbol); @@ -32,4 +30,6 @@ public Result findWalletAgentBySymbol(); + public Result getWalletCoinBySymbol(String symbol); + } diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/OrderCoinService.java b/src/main/java/com/xcong/excoin/modules/coin/service/OrderCoinService.java new file mode 100644 index 0000000..0d8b8dd --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/service/OrderCoinService.java @@ -0,0 +1,16 @@ +package com.xcong.excoin.modules.coin.service; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.xcong.excoin.common.response.Result; +import com.xcong.excoin.modules.coin.entity.OrderCoinsEntity; + +public interface OrderCoinService extends IService<OrderCoinsEntity>{ + + Result enterTransactionPageOfWalletCoin(String symbol, String type); + + Result submitSalesWalletCoinOrder(String symbol, Integer type, Integer tradeType, BigDecimal price, + BigDecimal amount); + +} 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 3ddaaeb..7f8ea9e 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 @@ -2,26 +2,23 @@ import java.math.BigDecimal; import java.util.ArrayList; -import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; - import javax.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; - import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xcong.excoin.common.LoginUserUtils; import com.xcong.excoin.common.enumerates.CoinTypeEnum; import com.xcong.excoin.common.enumerates.MemberWalletCoinEnum; -import com.xcong.excoin.common.exception.GlobalException; import com.xcong.excoin.common.response.Result; import com.xcong.excoin.modules.coin.dao.MemberAccountMoneyChangeDao; import com.xcong.excoin.modules.coin.dao.platform.CnyUsdtExchangeDao; import com.xcong.excoin.modules.coin.entity.CnyUsdtExchange; import com.xcong.excoin.modules.coin.entity.MemberAccountMoneyChange; +import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletCoinInfoVo; import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletCoinVo; import com.xcong.excoin.modules.coin.service.CoinService; import com.xcong.excoin.modules.member.dao.MemberWalletAgentDao; @@ -31,8 +28,8 @@ import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity; import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity; 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 @@ -64,10 +61,23 @@ if(!StrUtil.isEmpty(memberId.toString())) { - List<MemberWalletCoinEntity> MemberWalletCoinlist = memberWalletCoinDao.selectMemberWalletCoinsByMemberId(memberId); + List<MemberWalletCoinEntity> memberWalletCoinlist = memberWalletCoinDao.selectMemberWalletCoinsByMemberId(memberId); - if(CollUtil.isNotEmpty(MemberWalletCoinlist)) { - for(MemberWalletCoinEntity walletCoin : MemberWalletCoinlist) { + List<MemberWalletCoinInfoVo> memberWalletCoinInfoVolist = new ArrayList<MemberWalletCoinInfoVo>(); + MemberWalletCoinInfoVo memberWalletCoinInfoVo = new MemberWalletCoinInfoVo(); + if(ObjectUtil.isNotEmpty(memberWalletCoinlist)) { + for(MemberWalletCoinEntity memberWalletCoinEntity : memberWalletCoinlist) { + memberWalletCoinInfoVo.setAvailableBalance(memberWalletCoinEntity.getAvailableBalance()); + memberWalletCoinInfoVo.setFrozenBalance(memberWalletCoinEntity.getFrozenBalance()); + memberWalletCoinInfoVo.setMemberId(memberWalletCoinEntity.getMemberId()); + memberWalletCoinInfoVo.setTotalBalance(memberWalletCoinEntity.getTotalBalance()); + memberWalletCoinInfoVolist.add(memberWalletCoinInfoVo); + } + } + + + if(CollUtil.isNotEmpty(memberWalletCoinlist)) { + for(MemberWalletCoinEntity walletCoin : memberWalletCoinlist) { if(MemberWalletCoinEnum.WALLETCOINCODE.getValue().equals(walletCoin.getWalletCode())) { totalUsdt = walletCoin.getAvailableBalance().add(walletCoin.getFrozenBalance()); BigDecimal totalCny = totalUsdt.multiply(cnyUsdt); @@ -84,34 +94,35 @@ MemberWalletCoinVo memberWalletCoinVo = new MemberWalletCoinVo(); memberWalletCoinVo.setTotalUsdt(totalUsdt.setScale(4, BigDecimal.ROUND_DOWN)); memberWalletCoinVo.setTotalCny(totalUsdt.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); - memberWalletCoinVo.setWalletCoinEntities(MemberWalletCoinlist); + memberWalletCoinVo.setMemberWalletCoinInfoVo(memberWalletCoinInfoVolist); return Result.ok(memberWalletCoinVo); }else { - List<MemberWalletCoinEntity> MemberWalletCoinlist = new ArrayList<MemberWalletCoinEntity>(); - MemberWalletCoinEntity coin = new MemberWalletCoinEntity(); + 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); + memberWalletCoinlist.add(coin); coin.setWalletCode(CoinTypeEnum.ETH.toString()); - MemberWalletCoinlist.add(coin); + memberWalletCoinlist.add(coin); coin.setWalletCode(CoinTypeEnum.LTC.toString()); - MemberWalletCoinlist.add(coin); + memberWalletCoinlist.add(coin); coin.setWalletCode(CoinTypeEnum.BCH.toString()); - MemberWalletCoinlist.add(coin); + memberWalletCoinlist.add(coin); coin.setWalletCode(CoinTypeEnum.USDT.toString()); - MemberWalletCoinlist.add(coin); + memberWalletCoinlist.add(coin); coin.setWalletCode(CoinTypeEnum.EOS.toString()); - MemberWalletCoinlist.add(coin); + memberWalletCoinlist.add(coin); coin.setWalletCode(CoinTypeEnum.XRP.toString()); - MemberWalletCoinlist.add(coin); + memberWalletCoinlist.add(coin); coin.setWalletCode(CoinTypeEnum.ETC.toString()); - MemberWalletCoinlist.add(coin); + memberWalletCoinlist.add(coin); + MemberWalletCoinVo memberWalletCoinVo = new MemberWalletCoinVo(); memberWalletCoinVo.setTotalUsdt(totalUsdt.setScale(4, BigDecimal.ROUND_DOWN)); memberWalletCoinVo.setTotalCny(totalUsdt.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); - memberWalletCoinVo.setWalletCoinEntities(MemberWalletCoinlist); + memberWalletCoinVo.setMemberWalletCoinInfoVo(memberWalletCoinlist);; return Result.ok(memberWalletCoinVo); } } catch (Exception e) { @@ -121,27 +132,31 @@ } @Override - public Result getWalletCoinById(Long id) { + public Result getWalletCoinBySymbol(String symbol) { try { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); - MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectById(id); - + 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())) { - walletCoin.setTotalBalance(total.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); + memberWalletCoinInfoVo.setTotalBalance(total.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); }else { BigDecimal closePrice = new BigDecimal("10.0000"); //Double closePrice = symbolsService.getCloseSymbolsBySymbolsName(wallet.getCode()+"/USDT"); - walletCoin.setTotalBalance(total.multiply(closePrice).multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); + memberWalletCoinInfoVo.setTotalBalance(total.multiply(closePrice).multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); } } - return Result.ok(walletCoin); + return Result.ok(memberWalletCoinInfoVo); } catch (Exception e) { e.printStackTrace(); return Result.fail(MessageSourceUtils.getString("member_service_0003")); @@ -151,8 +166,43 @@ @Override public Result getWalletContractById() { - return Result.fail(MessageSourceUtils.getString("member_service_0002")); - + //获取用户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"); + + walletContract.setFrozenBalance(totalPayment.setScale(4, BigDecimal.ROUND_DOWN)); + + BigDecimal lastTotalBalance = new BigDecimal("0"); + BigDecimal totalBalance = walletContract.getTotalBalance(); + lastTotalBalance = totalBalance.add(profitAndLoss); + if(lastTotalBalance.compareTo(BigDecimal.ZERO) < 0) { + lastTotalBalance = new BigDecimal("0"); + } + + walletContract.setAvailableBalance(walletContract.getAvailableBalance()); + walletContract.setTotalBalance(lastTotalBalance.setScale(4, BigDecimal.ROUND_DOWN)); + + Map<String,Object> map = new HashMap<String, Object>(); + map.put(MemberWalletCoinEnum.WALLETCOINUSDT.getValue(), lastTotalBalance.setScale(4, BigDecimal.ROUND_DOWN)); + map.put(MemberWalletCoinEnum.WALLETCONTRACT.getValue(), walletContract); + map.put(MemberWalletCoinEnum.WALLETCOINCNY.getValue(), lastTotalBalance.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); + return Result.ok(map); } @Override @@ -276,11 +326,13 @@ } @Override - public Result findWalletContractBySymbol(String symbol) { - /** - * ---todo - */ - return null; + public Result findWalletContractBySymbol() { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); + MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, walletCode); + + return Result.ok(walletContract); } @Override @@ -426,7 +478,7 @@ walletAgent.setAvailableBalance(availableBalance); Map<String,Object> map = new HashMap<String, Object>(); map.put(MemberWalletCoinEnum.WALLETCOINUSDT.getValue(), availableBalance.setScale(4, BigDecimal.ROUND_DOWN)); - map.put(MemberWalletCoinEnum.WALLETAGENTCNY.getValue(), walletAgent); + map.put(MemberWalletCoinEnum.WALLETAGENT.getValue(), walletAgent); map.put(MemberWalletCoinEnum.WALLETCOINCNY.getValue(), multiply.setScale(4, BigDecimal.ROUND_DOWN)); return Result.ok(map); } diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java new file mode 100644 index 0000000..0c60ebc --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java @@ -0,0 +1,109 @@ +package com.xcong.excoin.modules.coin.service.impl; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xcong.excoin.common.LoginUserUtils; +import com.xcong.excoin.common.enumerates.MemberWalletCoinEnum; +import com.xcong.excoin.common.response.Result; +import com.xcong.excoin.modules.coin.dao.MemberSelectSymbolsDao; +import com.xcong.excoin.modules.coin.dao.OrderCoinDao; +import com.xcong.excoin.modules.coin.dao.platform.CnyUsdtExchangeDao; +import com.xcong.excoin.modules.coin.dao.platform.TradeSettingDao; +import com.xcong.excoin.modules.coin.entity.CnyUsdtExchange; +import com.xcong.excoin.modules.coin.entity.OrderCoinsEntity; +import com.xcong.excoin.modules.coin.entity.PlatformTradeSettingEntity; +import com.xcong.excoin.modules.coin.service.OrderCoinService; +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.utils.MessageSourceUtils; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; + +@Service +public class OrderCoinServiceImpl extends ServiceImpl<OrderCoinDao, OrderCoinsEntity> implements OrderCoinService{ + + @Resource + TradeSettingDao platformTradeSettingDao; + @Resource + MemberWalletCoinDao memberWalletCoinDao; + @Resource + MemberSelectSymbolsDao memberSelectSymbolsDao; + @Resource + CnyUsdtExchangeDao cnyUsdtExchangeDao; + + @Override + public Result enterTransactionPageOfWalletCoin(String symbol, String type) { + if (StrUtil.isBlank(symbol)) { + return Result.fail(MessageSourceUtils.getString("order_service_0001")); + } + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + //获取该币种的币币账户信息 + MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, symbol); + + PlatformTradeSettingEntity tradeSetting = platformTradeSettingDao.findTradeSetting(); + if (tradeSetting == null) { + return Result.fail(MessageSourceUtils.getString("order_service_0003")); + } + //获取USDT的币币账户信息 + MemberWalletCoinEntity walletCoinUsdt = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, + MemberWalletCoinEnum.WALLETCOINCODE.getValue()); + /** + * todo + */ + //获取某个币种的收盘价 + //Double closePrice = symbolsService.getCloseSymbolsBySymbolsName(symbol+"/USDT"); + BigDecimal closePrice = new BigDecimal("100.0000"); + + List<MemberSelectSymbolsEntity> memSymbols = memberSelectSymbolsDao.selectSymbolByMemIdAndSymbol(memberId, symbol); + + CnyUsdtExchange cnyUsdtExchange = cnyUsdtExchangeDao.getCNYAndUSDTOne(); + BigDecimal cnyUsdt = cnyUsdtExchange.getValue(); + + Map<String, Object> map = new HashMap<String, Object>(); + if(CollUtil.isEmpty(memSymbols)) { + map.put(MemberWalletCoinEnum.ENTERTRANSACTIONPAGEOFWALLETCOIN_ISCOLLECT_NO.getName(), + MemberWalletCoinEnum.ENTERTRANSACTIONPAGEOFWALLETCOIN_ISCOLLECT_NO.getValue());//是否已经自选该币种 + }else { + map.put(MemberWalletCoinEnum.ENTERTRANSACTIONPAGEOFWALLETCOIN_ISCOLLECT_YES.getName(), + MemberWalletCoinEnum.ENTERTRANSACTIONPAGEOFWALLETCOIN_ISCOLLECT_YES.getValue());//是否已经自选该币种 + } + if (ObjectUtil.isEmpty(walletCoin)) + return Result.fail(MessageSourceUtils.getString("order_service_0003")); + + map.put(MemberWalletCoinEnum.ENTERTRANSACTIONPAGEOFWALLETCOIN_SPREAD.getValue(), tradeSetting.getSpread());// 点差 + map.put(MemberWalletCoinEnum.ENTERTRANSACTIONPAGEOFWALLETCOIN_CLOSINGRATIO.getValue(), tradeSetting.getFeeRatio());// 手续费用率 + if(MemberWalletCoinEnum.ENTERTRANSACTIONPAGEOFWALLETCOIN_BUY.getValue().equals(type)) {//买入 + map.put(MemberWalletCoinEnum.ENTERTRANSACTIONPAGEOFWALLETCOIN_MEMBERMONEY.getValue(), walletCoinUsdt.getAvailableBalance());// 用户可用金额 + }else { + map.put(MemberWalletCoinEnum.ENTERTRANSACTIONPAGEOFWALLETCOIN_MEMBERMONEY.getValue(), walletCoin.getAvailableBalance());// 用户可用金额 + } + + map.put(MemberWalletCoinEnum.ENTERTRANSACTIONPAGEOFWALLETCOIN_CURRENTPRICE.getValue(), closePrice);//当前价 + map.put(MemberWalletCoinEnum.ENTERTRANSACTIONPAGEOFWALLETCOIN_CNYUSDT.getValue(), cnyUsdt);//比例 + map.put(MemberWalletCoinEnum.ENTERTRANSACTIONPAGEOFWALLETCOIN_CURRENTPRICECNY.getValue(), cnyUsdt.multiply(closePrice));//换算成人民币的币种价格 + return Result.ok(map); +} + + @Override + @Transactional + public Result submitSalesWalletCoinOrder(String symbol, Integer type, Integer tradeType, BigDecimal price, + BigDecimal amount) { + + return Result.ok(MessageSourceUtils.getString("order_service_0011")); + } + +} diff --git a/src/main/java/com/xcong/excoin/modules/home/mapper/MemberQuickBuySaleEntityMapper.java b/src/main/java/com/xcong/excoin/modules/home/mapper/MemberQuickBuySaleEntityMapper.java index 1a8e687..c1a10dd 100644 --- a/src/main/java/com/xcong/excoin/modules/home/mapper/MemberQuickBuySaleEntityMapper.java +++ b/src/main/java/com/xcong/excoin/modules/home/mapper/MemberQuickBuySaleEntityMapper.java @@ -1,5 +1,6 @@ package com.xcong.excoin.modules.home.mapper; +import com.xcong.excoin.modules.home.entity.MemberQuickBuySaleEntity; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -13,9 +14,8 @@ public static final MemberQuickBuySaleEntityMapper INSTANCE = Mappers.getMapper(MemberQuickBuySaleEntityMapper.class); - - public abstract MemberQuickBuySaleEntityMapper dtoToEntity(MemberQuickBuySaleDto dto); - public abstract MemberQuickBuySaleVo entityToVo(MemberQuickBuySaleEntity memberQuickBuySaleEntity); + + public abstract MemberQuickBuySaleEntity dtoToEntity(MemberQuickBuySaleDto dto); } diff --git a/src/main/java/com/xcong/excoin/modules/member/entity/MemberSelectSymbolsEntity.java b/src/main/java/com/xcong/excoin/modules/member/entity/MemberSelectSymbolsEntity.java new file mode 100644 index 0000000..82c98db --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/member/entity/MemberSelectSymbolsEntity.java @@ -0,0 +1,29 @@ +package com.xcong.excoin.modules.member.entity; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.xcong.excoin.common.system.base.BaseEntity; + +import lombok.Data; + +/** + * 会员自选币种 + */ +@Data +@TableName +public class MemberSelectSymbolsEntity extends BaseEntity{ + /** + * + */ + private static final long serialVersionUID = 1L; + /** + * 会员ID + */ + private BigDecimal memberId; + /** + * 币种 + */ + private BigDecimal symbol; + +} diff --git a/src/main/java/com/xcong/excoin/modules/test/controller/TestUserController.java b/src/main/java/com/xcong/excoin/modules/test/controller/TestUserController.java index fd2db94..0cc1b7a 100644 --- a/src/main/java/com/xcong/excoin/modules/test/controller/TestUserController.java +++ b/src/main/java/com/xcong/excoin/modules/test/controller/TestUserController.java @@ -11,10 +11,7 @@ import com.xcong.excoin.modules.test.service.TestUserService; import com.xcong.excoin.modules.test.vo.TestUserVo; import com.xcong.excoin.utils.MessageSourceUtils; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiResponse; -import io.swagger.annotations.ApiResponses; +import io.swagger.annotations.*; import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.validation.annotation.Validated; diff --git a/src/main/java/com/xcong/excoin/utils/SpringContextHolder.java b/src/main/java/com/xcong/excoin/utils/SpringContextHolder.java index 7dbf951..857d02c 100644 --- a/src/main/java/com/xcong/excoin/utils/SpringContextHolder.java +++ b/src/main/java/com/xcong/excoin/utils/SpringContextHolder.java @@ -5,6 +5,7 @@ import org.springframework.beans.factory.DisposableBean; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; /** * @Author wzy @@ -12,6 +13,7 @@ * @email wangdoubleone@gmail.com * @Version V1.0 **/ +@Component @Slf4j public class SpringContextHolder implements ApplicationContextAware, DisposableBean { diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 7e1d602..820acc1 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -48,7 +48,7 @@ ## Redis数据库索引(默认为0) database: 1 ## Redis服务器地址 - host: 121.40.158.8 + host: 47.114.114.219 ## Redis服务器连接端口 port: 6379 ## Redis服务器连接密码(默认为空) diff --git a/src/main/resources/mapper/member/MemberSelectSymbolsDao.xml b/src/main/resources/mapper/member/MemberSelectSymbolsDao.xml new file mode 100644 index 0000000..c5780d1 --- /dev/null +++ b/src/main/resources/mapper/member/MemberSelectSymbolsDao.xml @@ -0,0 +1,9 @@ +<?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.MemberSelectSymbolsDao"> + + <select id="selectSymbolByMemIdAndSymbol" resultType="com.xcong.excoin.modules.member.entity.MemberSelectSymbolsEntity"> + select id id,symbol symbol,member_id memId from member_select_symbols where member_id = #{memberId} and symbol = #{symbol} + </select> + +</mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/platform/TradeSettingDao.xml b/src/main/resources/mapper/platform/TradeSettingDao.xml new file mode 100644 index 0000000..4d4461d --- /dev/null +++ b/src/main/resources/mapper/platform/TradeSettingDao.xml @@ -0,0 +1,35 @@ +<?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"> + + <select id="findTradeSetting" resultType="com.xcong.excoin.modules.coin.entity.PlatformTradeSettingEntity"> + SELECT + id id, + spread spread, + leverageratio leverageRatio, + outstock outStock, + closingratio closingRatio, + agent_return agent_return, + doing_rate doingRate + FROM + platform_trade_setting + </select> + + <select id="findSymbolSkubySymbol" resultType="com.xcong.excoin.modules.coin.entity.PlatformSymbolsSku"> + select * from platform_symbols_sku + <where> + <if test="symbol!=null and symbol!=''"> + name = #{symbol} + </if> + </where> + </select> + + <select id="findAllSymbolSkubySymbol" resultType="com.xcong.excoin.modules.coin.entity.PlatformSymbolsSku"> + select * from platform_symbols_sku + </select> + + <select id="findLeverageSetting" resultType="com.xcong.excoin.modules.coin.entity.PlatformLeverageSettingEntity"> + select * from platform_leverage_setting order by value ASC + </select> + +</mapper> -- Gitblit v1.9.1