pom.xml
@@ -27,6 +27,8 @@ <mapstruct.version>1.3.1.Final</mapstruct.version> <hutool.version>5.3.1</hutool.version> <fastjson.version>1.2.61</fastjson.version> <netty.version>4.1.33.Final</netty.version> <dom4j.version>1.6.1</dom4j.version> </properties> <dependencies> @@ -43,6 +45,11 @@ <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <!-- <dependency>--> @@ -166,14 +173,14 @@ <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> <version>${dom4j.version}</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.33.Final</version> <version>${netty.version}</version> </dependency> </dependencies> src/main/java/com/xcong/excoin/common/LoginUserUtils.java
@@ -1,5 +1,6 @@ package com.xcong.excoin.common; import com.xcong.excoin.common.exception.GlobalException; import com.xcong.excoin.modules.member.entity.MemberEntity; import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.context.SecurityContextHolder; @@ -17,6 +18,23 @@ public static MemberEntity getAppLoginUser() { if (SecurityContextHolder.getContext().getAuthentication().getPrincipal().equals(ANON)) { throw new GlobalException("无法获取登陆信息"); } else { return (MemberEntity) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); } } public static String getAppLoginUserToken() { return (String) SecurityContextHolder.getContext().getAuthentication().getCredentials(); } /** * mybatis 拦截器专用 * * @return MemberEntity */ public static MemberEntity getUser() { if (SecurityContextHolder.getContext().getAuthentication().getPrincipal().equals(ANON)) { return null; } else { return (MemberEntity) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java
New file @@ -0,0 +1,63 @@ package com.xcong.excoin.configurations; import com.xcong.excoin.configurations.properties.CustomRabbitProperties; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.DirectExchange; import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Scope; import javax.annotation.Resource; /** * @author wzy * @date 2020-05-25 **/ @Configuration public class RabbitMqConfig { public static final String EXCHANGE_ONE = "excoin-exchange-one"; public static final String QUEUE_TEST = "test-queue"; public static final String ROUTING_KEY_TEST = "test-routingKey"; @Resource private ConnectionFactory connectionFactory; // @Bean // public ConnectionFactory connectionFactory() { // CachingConnectionFactory connectionFactory = new CachingConnectionFactory(customRabbitProperties.getHost(), customRabbitProperties.getPort()); // connectionFactory.setUsername(customRabbitProperties.getUsername()); // connectionFactory.setPassword(customRabbitProperties.getPassword()); // connectionFactory.setPublisherConfirmType(CachingConnectionFactory.ConfirmType.CORRELATED); // return connectionFactory; // } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public RabbitTemplate rabbitTemplate() { return new RabbitTemplate(connectionFactory); } @Bean public DirectExchange defaultExchange() { return new DirectExchange(EXCHANGE_ONE); } @Bean public Queue testQueue() { return new Queue(QUEUE_TEST, true); } @Bean public Binding binding() { return BindingBuilder.bind(testQueue()).to(defaultExchange()).with(ROUTING_KEY_TEST); } } src/main/java/com/xcong/excoin/configurations/interceptor/MybatisInterceptor.java
@@ -27,10 +27,7 @@ @Override public Object intercept(Invocation invocation) throws Throwable { MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0]; String sqlId = mappedStatement.getId(); log.info("----sqlId----" + sqlId); SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType(); log.info("-------------->{}", sqlCommandType); Object parameter = invocation.getArgs()[1]; if (parameter == null) { @@ -75,7 +72,7 @@ } public void injectForInsert(Object o) { MemberEntity member = LoginUserUtils.getAppLoginUser(); MemberEntity member = LoginUserUtils.getUser(); if (o instanceof BaseEntity) { BaseEntity baseEntity = (BaseEntity) o; if (member != null) { @@ -92,7 +89,7 @@ } public void injectForUpdate(Object o) { MemberEntity member = LoginUserUtils.getAppLoginUser(); MemberEntity member = LoginUserUtils.getUser(); if (o instanceof BaseEntity) { BaseEntity baseEntity = (BaseEntity) o; if (member != null) { src/main/java/com/xcong/excoin/configurations/properties/CustomRabbitProperties.java
New file @@ -0,0 +1,19 @@ package com.xcong.excoin.configurations.properties; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; /** * @author wzy * @date 2020-05-25 **/ @Data @Configuration @ConfigurationProperties(prefix = "custom.rabbitmq") public class CustomRabbitProperties { private String host; private int port; private String username; private String password; } src/main/java/com/xcong/excoin/modules/coin/controller/CoinController.java
@@ -5,18 +5,22 @@ import javax.annotation.Resource; import javax.validation.Valid; import com.xcong.excoin.modules.coin.parameter.vo.MemberAccountMoneyChangeVo; import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletAgentInfoVo; import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletCoinInfoVo; import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletCoinVo; import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletContractInfoVo; 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.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.xcong.excoin.common.response.Result; import com.xcong.excoin.modules.coin.parameter.dto.TransferOfBalanceDto; import com.xcong.excoin.modules.coin.parameter.dto.TransferOfBalanceFromAgentDto; import com.xcong.excoin.modules.coin.service.CoinService; import io.swagger.annotations.Api; @@ -61,6 +65,7 @@ * @return */ @ApiOperation(value="获取我的合约账户信息", notes="获取我的合约账户信息") @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberWalletContractInfoVo.class)}) @GetMapping(value="/getWalletContractById") public Result getWalletContractById() { return coinService.getWalletContractById(); @@ -90,7 +95,8 @@ * 查询代理账户里面的资产余额 * @return */ @ApiOperation(value="查询代理账户里面的可用资产余额", notes="查询代理账户里面的可用资产余额") @ApiOperation(value="查询代理账户信息", notes="查询代理账户信息") @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberWalletAgentInfoVo.class)}) @GetMapping(value="/findWalletAgentBySymbol") public Result findWalletAgentBySymbol() { return coinService.findWalletAgentBySymbol(); @@ -101,6 +107,7 @@ * @return */ @ApiOperation(value="获取币币资产交易记录", notes="获取币币资产交易记录") @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberAccountMoneyChangeVo.class)}) @GetMapping(value="/getWalletCoinRecords") public Result getWalletCoinRecords() { return coinService.getWalletCoinRecords(); @@ -111,9 +118,10 @@ * @return */ @ApiOperation(value="获取合约资产交易记录", notes="获取合约资产交易记录") @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberAccountMoneyChangeVo.class)}) @GetMapping(value="/getWalletContractRecords") public Result getWalletContractRecords(@ApiParam(name="symbol",value="币种",required=true)String symbol) { return coinService.getWalletContractRecords(symbol); public Result getWalletContractRecords() { return coinService.getWalletContractRecords(); } /** @@ -121,6 +129,7 @@ * @return */ @ApiOperation(value="获取代理资产交易记录", notes="获取代理资产交易记录") @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberAccountMoneyChangeVo.class)}) @GetMapping(value="/getWalletAgentRecords") public Result getWalletAgentRecords() { return coinService.getWalletAgentRecords(); @@ -154,11 +163,11 @@ * 代理账户划转到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(); Integer transfertype = transferOfBalanceDto.getTransfertype(); public Result agentTransferToWalletCoin(@RequestBody @Valid TransferOfBalanceFromAgentDto transferOfBalanceFromAgentDto) { BigDecimal balance = transferOfBalanceFromAgentDto.getBalance(); Integer transfertype = transferOfBalanceFromAgentDto.getTransfertype(); return coinService.agentTransferToWalletCoin(balance,transfertype); } src/main/java/com/xcong/excoin/modules/coin/parameter/dto/InOrderCoinDto.java
@@ -9,7 +9,7 @@ import lombok.Data; @Data @ApiModel(value = "进入交易页面参数接收类", description = "进入交易页面参数接收类") @ApiModel(value = "InOrderCoinDto", description = "进入交易页面参数接收类") public class InOrderCoinDto { @NotNull(message = "划转金额不能为空") src/main/java/com/xcong/excoin/modules/coin/parameter/dto/SubmitSalesWalletCoinOrderDto.java
@@ -7,7 +7,7 @@ import lombok.Data; @Data @ApiModel(value = "提交买卖订单接收类", description = "提交买卖订单接收类") @ApiModel(value = "SubmitSalesWalletCoinOrderDto", description = "提交买卖订单接收类") public class SubmitSalesWalletCoinOrderDto { @ApiModelProperty(value = "币种", example = "BTC") src/main/java/com/xcong/excoin/modules/coin/parameter/dto/TransferOfBalanceDto.java
@@ -9,7 +9,7 @@ import lombok.Data; @Data @ApiModel(value = "资金划转参数接收类", description = "资金划转参数接收类") @ApiModel(value = "TransferOfBalanceDto", description = "资金划转参数接收类") public class TransferOfBalanceDto { @NotNull(message = "划转金额不能为空") @@ -20,7 +20,4 @@ @ApiModelProperty(value = "币种", example = "USDT") private String symbol; @NotNull(message = "账户类型不能为空") @ApiModelProperty(value = "账户类型", example = "1") private Integer transfertype; } src/main/java/com/xcong/excoin/modules/coin/parameter/dto/TransferOfBalanceFromAgentDto.java
New file @@ -0,0 +1,26 @@ 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 = "TransferOfBalanceFromAgentDto", description = "资金划转参数接收类") public class TransferOfBalanceFromAgentDto { @NotNull(message = "划转金额不能为空") @ApiModelProperty(value = "划转金额", example = "100") private BigDecimal balance; @NotNull(message = "币种不能为空") @ApiModelProperty(value = "币种", example = "USDT") private String symbol; @NotNull(message = "账户类型不能为空") @ApiModelProperty(value = "转账类型1:转币币,2:转合约", example = "1") private Integer transfertype; } src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberAccountMoneyChangeInfoVo.java
New file @@ -0,0 +1,39 @@ package com.xcong.excoin.modules.coin.parameter.vo; import java.math.BigDecimal; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "资产交易记录详情信息返回", description = "资产交易记录详情信息返回") public class MemberAccountMoneyChangeInfoVo { /** * 币种 */ @ApiModelProperty(value = "币种") private String symbol; /** * 金额 */ @ApiModelProperty(value = "金额") private BigDecimal amount; /** * 记录内容 */ @ApiModelProperty(value = "记录内容") private String content; /** * 类型【1:币币资产2:合约资产3:代理资产】 */ @ApiModelProperty(value = "类型【1:币币资产2:合约资产3:代理资产】") private int type; /** * 状态【0:待审核 1:成功2:失败】 */ @ApiModelProperty(value = "状态【0:待审核 1:成功2:失败】") private int status; } src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberAccountMoneyChangeVo.java
New file @@ -0,0 +1,17 @@ package com.xcong.excoin.modules.coin.parameter.vo; import java.math.BigDecimal; import java.util.List; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "资产交易记录信息返回", description = "资产交易记录信息返回") public class MemberAccountMoneyChangeVo { @ApiModelProperty(value = "资产交易记录详情信息") private List<MemberAccountMoneyChangeInfoVo> memberAccountMoneyChangeInfoVo; } src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberWalletAgentInfoVo.java
New file @@ -0,0 +1,25 @@ package com.xcong.excoin.modules.coin.parameter.vo; import java.math.BigDecimal; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "代理账户信息返回", description = "代理账户信息返回") public class MemberWalletAgentInfoVo { /** * 总金额 */ @ApiModelProperty(value = "总金额") private BigDecimal totalBalance; /** * 总人民币金额 */ @ApiModelProperty(value = "总人民币金额") private BigDecimal totalRMBBalance; } src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberWalletCoinInfoVo.java
@@ -3,7 +3,9 @@ import java.math.BigDecimal; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class MemberWalletCoinInfoVo { /** @@ -36,46 +38,4 @@ @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; } } src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberWalletCoinVo.java
@@ -5,10 +5,12 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @author xy */ @Data @ApiModel(value = "币币账户信息返回", description = "币币账户信息返回") public class MemberWalletCoinVo { @@ -22,24 +24,5 @@ @ApiModelProperty(value = "币种详情") private List<MemberWalletCoinInfoVo> memberWalletCoinInfoVo; public BigDecimal getTotalUsdt() { return totalUsdt; } public void setTotalUsdt(BigDecimal totalUsdt) { this.totalUsdt = totalUsdt; } public BigDecimal getTotalCny() { return totalCny; } public void setTotalCny(BigDecimal totalCny) { this.totalCny = totalCny; } public List<MemberWalletCoinInfoVo> getMemberWalletCoinInfoVo() { return memberWalletCoinInfoVo; } public void setMemberWalletCoinInfoVo(List<MemberWalletCoinInfoVo> memberWalletCoinInfoVo) { this.memberWalletCoinInfoVo = memberWalletCoinInfoVo; } } src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberWalletContractInfoVo.java
New file @@ -0,0 +1,43 @@ package com.xcong.excoin.modules.coin.parameter.vo; import java.math.BigDecimal; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "合约账户信息返回", description = "合约账户信息返回") public class MemberWalletContractInfoVo { /** * 用户Id */ @ApiModelProperty(value = "用户Id") private Long memberId; /** * 可用余额 */ @ApiModelProperty(value = "可用余额") private BigDecimal availableBalance; /** * 总金额 */ @ApiModelProperty(value = "总金额") private BigDecimal totalBalance; /** * 总人民币金额 */ @ApiModelProperty(value = "总人民币金额") private BigDecimal totalRMBBalance; /** * 冻结金额 */ @ApiModelProperty(value = "冻结金额") private BigDecimal frozenBalance; } src/main/java/com/xcong/excoin/modules/coin/service/CoinService.java
@@ -22,7 +22,7 @@ public Result getWalletCoinRecords(); public Result getWalletContractRecords(String symbol); public Result getWalletContractRecords(); public Result getWalletAgentRecords(); src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java
@@ -2,9 +2,7 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.stereotype.Service; @@ -18,8 +16,11 @@ 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.MemberAccountMoneyChangeInfoVo; import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletAgentInfoVo; import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletCoinInfoVo; import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletCoinVo; import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletContractInfoVo; import com.xcong.excoin.modules.coin.service.CoinService; import com.xcong.excoin.modules.member.dao.MemberWalletAgentDao; import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao; @@ -51,49 +52,51 @@ @Override public Result getWalletCoin() { try { BigDecimal totalUsdt = BigDecimal.ZERO; //获取用户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>(); MemberWalletCoinInfoVo memberWalletCoinInfoVo = new MemberWalletCoinInfoVo(); if(ObjectUtil.isNotEmpty(memberWalletCoinlist)) { if(CollUtil.isNotEmpty(memberWalletCoinlist)) { for(MemberWalletCoinEntity memberWalletCoinEntity : memberWalletCoinlist) { memberWalletCoinInfoVo.setAvailableBalance(memberWalletCoinEntity.getAvailableBalance()); memberWalletCoinInfoVo.setFrozenBalance(memberWalletCoinEntity.getFrozenBalance()); 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()); memberWalletCoinInfoVo.setTotalBalance(memberWalletCoinEntity.getTotalBalance().setScale(4, BigDecimal.ROUND_DOWN)); memberWalletCoinInfoVo.setWalletCode(memberWalletCoinEntity.getWalletCode()); memberWalletCoinInfoVolist.add(memberWalletCoinInfoVo); } } if(CollUtil.isNotEmpty(memberWalletCoinlist)) { for(MemberWalletCoinEntity walletCoin : memberWalletCoinlist) { 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)); walletCoin.setTotalBalance(totalUsdt.multiply(closePrice).multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); totalUsdts = totalUsdts.add(totalUsdt); walletCoin.setTotalBalance(totalUsdt.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); } } } MemberWalletCoinVo memberWalletCoinVo = new MemberWalletCoinVo(); memberWalletCoinVo.setTotalUsdt(totalUsdt.setScale(4, BigDecimal.ROUND_DOWN)); memberWalletCoinVo.setTotalCny(totalUsdt.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); 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 { @@ -120,20 +123,15 @@ 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.setTotalUsdt(totalUsdts.setScale(4, BigDecimal.ROUND_DOWN)); memberWalletCoinVo.setTotalCny(totalUsdts.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); memberWalletCoinVo.setMemberWalletCoinInfoVo(memberWalletCoinlist);; return Result.ok(memberWalletCoinVo); } } catch (Exception e) { e.printStackTrace(); return Result.fail(MessageSourceUtils.getString("member_service_0003")); } } @Override public Result getWalletCoinBySymbol(String symbol) { try { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId,symbol); @@ -157,10 +155,6 @@ } } return Result.ok(memberWalletCoinInfoVo); } catch (Exception e) { e.printStackTrace(); return Result.fail(MessageSourceUtils.getString("member_service_0003")); } } @Override @@ -185,9 +179,6 @@ 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); @@ -195,14 +186,13 @@ lastTotalBalance = new BigDecimal("0"); } walletContract.setAvailableBalance(walletContract.getAvailableBalance()); walletContract.setTotalBalance(lastTotalBalance.setScale(4, BigDecimal.ROUND_DOWN)); 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)); 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); return Result.ok(memberWalletContractInfoVo); } @Override @@ -331,8 +321,8 @@ Long memberId = LoginUserUtils.getAppLoginUser().getId(); String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, walletCode); return Result.ok(walletContract); BigDecimal availableBalance = walletContract.getAvailableBalance().setScale(4, BigDecimal.ROUND_DOWN); return Result.ok(availableBalance); } @Override @@ -342,26 +332,50 @@ MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, symbol); BigDecimal availableBalance = walletCoin.getAvailableBalance().setScale(4, BigDecimal.ROUND_DOWN); walletCoin.setAvailableBalance(availableBalance); return Result.ok(walletCoin); return Result.ok(availableBalance); } @Override public Result getWalletCoinRecords() { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); List<MemberAccountMoneyChange> coinRecordList = memberAccountMoneyChangeDao.selectWalletCoinRecordsByMemIdTypeSymbol(memberId); return Result.ok(coinRecordList); 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()); arrayList.add(memberAccountMoneyChangeInfoVo); } } return Result.ok(arrayList); } @Override public Result getWalletContractRecords(String symbol) { public Result getWalletContractRecords() { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); String symbol = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); List<MemberAccountMoneyChange> contractRecordList = memberAccountMoneyChangeDao.selectWalletContractRecordsByMemIdTypeSymbol(symbol,memberId); return Result.ok(contractRecordList); 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()); arrayList.add(memberAccountMoneyChangeInfoVo); } } return Result.ok(arrayList); } @Override @@ -371,7 +385,20 @@ List<MemberAccountMoneyChange> contractRecordList = memberAccountMoneyChangeDao.selectWalletAgentRecordByMemIdTypeSymbol(MemberWalletCoinEnum.WALLETCOINCODE.getValue(),memberId); return Result.ok(contractRecordList); 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()); arrayList.add(memberAccountMoneyChangeInfoVo); } } return Result.ok(arrayList); } @Override @@ -472,15 +499,12 @@ CnyUsdtExchange cnyUsdtExchange =cnyUsdtExchangeDao.getCNYAndUSDTOne(); BigDecimal cnyUsdt = cnyUsdtExchange.getValue(); BigDecimal multiply = availableBalance.multiply(cnyUsdt); 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.WALLETAGENT.getValue(), walletAgent); map.put(MemberWalletCoinEnum.WALLETCOINCNY.getValue(), multiply.setScale(4, BigDecimal.ROUND_DOWN)); return Result.ok(map); 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/test/controller/TestUserController.java
@@ -85,9 +85,18 @@ @ApiOperation(value = "根据Id查询用户信息", notes = "根据Id查询用户信息") @GetMapping(value = "/findById/{id}") public Result findById(@PathVariable(value = "id") Long id) { public Result findById(@ApiParam(name = "id", value = "用户ID", required = true, example = "1") @PathVariable(value = "id") Long id) { TestUserEntity testUserEntity = testUserService.getById(id); TestUserVo testUserVo = TestUserEntityMapper.INSTANCE.entityToVo(testUserEntity); return Result.ok("success", testUserVo); } @ApiOperation(value = "根据Id查询用户信息", notes = "根据Id查询用户信息") @GetMapping(value = "/findByIdAndName/{id}/{name}") public Result findByIdAndName(@ApiParam(name = "id", value="用户ID", required = true, example = "1") @PathVariable(value = "id") Long id, @ApiParam(name = "name", value="用户姓名", required = true, example = "wzy") @PathVariable(value = "name") String name) { log.info("---->{}", id); log.info("----<{}", name); return Result.ok("success"); } } src/main/java/com/xcong/excoin/rabbit/consumer/TestConsumer.java
New file @@ -0,0 +1,21 @@ package com.xcong.excoin.rabbit.consumer; import com.xcong.excoin.configurations.RabbitMqConfig; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; /** * @author wzy * @date 2020-05-25 **/ @Slf4j @Component public class TestConsumer { @RabbitListener(queues = RabbitMqConfig.QUEUE_TEST) public void doSomething(String content) { log.info("#---->{}#", content); } } src/main/java/com/xcong/excoin/rabbit/producer/TestProducer.java
New file @@ -0,0 +1,42 @@ package com.xcong.excoin.rabbit.producer; import cn.hutool.core.util.IdUtil; import com.xcong.excoin.configurations.RabbitMqConfig; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.rabbit.connection.CorrelationData; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * @author wzy * @date 2020-05-25 **/ @Slf4j @Component public class TestProducer implements RabbitTemplate.ConfirmCallback { private RabbitTemplate rabbitTemplate; @Autowired public TestProducer(RabbitTemplate rabbitTemplate) { this.rabbitTemplate = rabbitTemplate; rabbitTemplate.setConfirmCallback(this); } public void sendTestMsg(String content) { CorrelationData correlationData = new CorrelationData(IdUtil.simpleUUID()); rabbitTemplate.convertAndSend(RabbitMqConfig.EXCHANGE_ONE, RabbitMqConfig.ROUTING_KEY_TEST, content, correlationData); } @Override public void confirm(CorrelationData correlationData, boolean ack, String cause) { log.info("#----->{}#", correlationData); if (ack) { log.info("success"); } else { log.info("--->{}", cause); } } } src/main/resources/application.yml
@@ -69,6 +69,21 @@ 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 src/test/java/com/xcong/excoin/RSATest.java
@@ -13,6 +13,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import java.math.BigDecimal; import java.security.KeyPair; /** @@ -101,4 +102,10 @@ String md5str = SecureUtil.md5("123456"); log.info("{}", md5str); } @Test public void bigdecimalTest() { BigDecimal bigDecimal = new BigDecimal("123.12345678").setScale(4, BigDecimal.ROUND_DOWN); log.info("--->{}", bigDecimal); } } src/test/java/com/xcong/excoin/RabbitMqTest.java
New file @@ -0,0 +1,24 @@ package com.xcong.excoin; import com.xcong.excoin.rabbit.producer.TestProducer; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; /** * @author wzy * @date 2020-05-25 **/ @SpringBootTest public class RabbitMqTest { @Autowired private TestProducer testProducer; @Test public void sendTestMsg() { testProducer.sendTestMsg("this is test msg"); } }