From c7f51459273f554003898bfd35cd2bf412023116 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 30 May 2022 15:06:07 +0800
Subject: [PATCH] add calPrice

---
 src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java          |    4 ++
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java |   12 ++++++
 src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java  |    6 +--
 src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java     |   13 ++++++
 src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java          |    3 +
 src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java |    6 +++
 src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java  |    4 +
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java |   15 +++++++
 src/main/java/cc/mrbird/febs/dapp/dto/SystemDto.java                      |   31 +++++++++++++++
 src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java                    |   18 +++++++++
 10 files changed, 107 insertions(+), 5 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java b/src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java
index e4a8431..c3895d7 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java
@@ -36,6 +36,24 @@
             "0xefe98e00cd227b6322e892c82fcbd8eadf119c3188b7e574bc624f65405d61bf",
             "https://bsc-dataseed1.ninicoin.io",
             "0x6c6835e60e7dbad7a60112a6371271e8eb79ee68",
+            ""),
+
+    /**
+     * 源池币
+     */
+    BSC_TFC_SOURCE("BSC", "0x977a9ddfb965a9a3416fa72ca7f91c4949c18f25",
+            "0xefe98e00cd227b6322e892c82fcbd8eadf119c3188b7e574bc624f65405d61bf",
+            "https://bsc-dataseed1.ninicoin.io",
+            "0x6c6835e60e7dbad7a60112a6371271e8eb79ee68",
+            ""),
+
+    /**
+     * 源池U
+     */
+    BSC_USDT_SOURCE("BSC", "0x977a9ddfb965a9a3416fa72ca7f91c4949c18f25",
+            "0xefe98e00cd227b6322e892c82fcbd8eadf119c3188b7e574bc624f65405d61bf",
+            "https://bsc-dataseed1.ninicoin.io",
+            "0x55d398326f99059fF775485246999027B3197955",
             "");
 
     private String chain;
diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java b/src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java
index 1c4613d..2588ec4 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java
@@ -3,12 +3,15 @@
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.dapp.dto.ApproveDto;
 import cc.mrbird.febs.dapp.dto.ConnectDto;
+import cc.mrbird.febs.dapp.dto.SystemDto;
 import cc.mrbird.febs.dapp.service.DappMemberService;
 import cc.mrbird.febs.dapp.service.DappSimulateDataService;
 import cc.mrbird.febs.dapp.service.DappSystemService;
 import cc.mrbird.febs.dapp.vo.SimulateDataVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
@@ -55,6 +58,16 @@
         return new FebsResponse().success().data(dappSystemService.findTotalInComeAndList());
     }
 
+
+    @ApiOperation(value = "系统参数", notes = "系统参数")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = SystemDto.class)
+    })
+    @GetMapping(value = "/system")
+    public FebsResponse system() {
+        return new FebsResponse().success().data(dappSystemService.system());
+    }
+
 //    @ApiOperation(value = "全局设置", notes = "全局设置")
 //    @GetMapping(value = "/globalSetting")
 //    public FebsResponse globalSetting() {
diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java b/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
index 69aa854..a74ed22 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
@@ -64,4 +64,10 @@
     public FebsResponse recordInPage(@RequestBody RecordInPageDto recordInPageDto) {
         return new FebsResponse().success().data(dappWalletService.recordInPage(recordInPageDto));
     }
+
+    @ApiOperation(value = "计算最新价", notes = "计算最新价")
+    @PostMapping(value = "/calPrice")
+    public FebsResponse calPrice() {
+        return new FebsResponse().success().data(dappWalletService.calPrice());
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/dto/SystemDto.java b/src/main/java/cc/mrbird/febs/dapp/dto/SystemDto.java
new file mode 100644
index 0000000..be00c76
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/dto/SystemDto.java
@@ -0,0 +1,31 @@
+package cc.mrbird.febs.dapp.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author wzy
+ * @date 2022-05-30
+ **/
+@Data
+@ApiModel(value = "SystemDto", description = "系统参数接口返回参数类")
+public class SystemDto {
+
+    @ApiModelProperty(value = "今天可卖总数")
+    private BigDecimal saleTotal;
+
+    @ApiModelProperty(value = "今日可卖剩余")
+    private BigDecimal saleRemain;
+
+    @ApiModelProperty(value = "今天可买总数")
+    private BigDecimal buyTotal;
+
+    @ApiModelProperty(value = "今天可买剩余")
+    private BigDecimal buyRemain;
+
+    @ApiModelProperty(value = "滑点(%)")
+    private BigDecimal feeRatio;
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
index 207370e..09f6119 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
@@ -1,5 +1,6 @@
 package cc.mrbird.febs.dapp.service;
 
+import cc.mrbird.febs.dapp.dto.SystemDto;
 import cc.mrbird.febs.dapp.entity.DappMineDataEntity;
 
 import java.util.Map;
@@ -9,4 +10,6 @@
     Map<String, Object> findTotalInComeAndList();
 
     Map<String, Object> globalSetting();
+
+    SystemDto system();
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
index 1645efa..d016ad1 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
@@ -11,7 +11,9 @@
 import cc.mrbird.febs.dapp.vo.WalletInfoVo;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 
 public interface DappWalletService {
 
@@ -34,4 +36,6 @@
 
 
     void transfer(TransferDto transferDto);
+
+    Map<String, BigDecimal> calPrice();
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java
index 79fdc1d..9090ee8 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java
@@ -73,7 +73,9 @@
                 fundFlow.setTargetAmount(transferAmount);
                 dappFundFlowDao.updateById(fundFlow);
 
-                //TODO 自动转账
+                // TODO 划点分配
+
+                // TODO 自动转账
 //                String hash = ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(e.from, transferAmount);
 //                fundFlow.setToHash(hash);
 //                dappFundFlowDao.updateById(fundFlow);
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java
index 2cdc9c8..0d3d668 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java
@@ -47,11 +47,9 @@
             BigDecimal amount = BigDecimal.valueOf(tokens.intValue()).divide(BigDecimal.TEN.pow(decimals), decimals, RoundingMode.HALF_DOWN);
             DappFundFlowEntity fundFlow = dappFundFlowDao.selectByFromHash(e.log.getTransactionHash(), 1);
 
-            // TODO price
-            BigDecimal newPrice = BigDecimal.valueOf(1);
-
+            BigDecimal newPrice = fundFlow.getNewestPrice();
             BigDecimal transferAmount = amount.divide(newPrice, tfcDecimals, RoundingMode.HALF_DOWN);
-            fundFlow.setNewestPrice(newPrice);
+
             // 更改状态为已同步
             fundFlow.setStatus(2);
             fundFlow.setTargetAmount(transferAmount);
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
index 3334b1e..6143f49 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -2,6 +2,7 @@
 
 import cc.mrbird.febs.common.contants.AppContants;
 import cc.mrbird.febs.common.utils.RedisUtils;
+import cc.mrbird.febs.dapp.dto.SystemDto;
 import cc.mrbird.febs.dapp.entity.DappMineDataEntity;
 import cc.mrbird.febs.dapp.entity.DappReturnRatioEntity;
 import cc.mrbird.febs.dapp.mapper.DappReturnRatioDao;
@@ -58,4 +59,15 @@
         result.put("ratio", ratios);
         return result;
     }
+
+    @Override
+    public SystemDto system() {
+        SystemDto system = new SystemDto();
+        system.setBuyTotal(BigDecimal.valueOf(10000));
+        system.setBuyRemain(BigDecimal.valueOf(100));
+        system.setSaleTotal(BigDecimal.valueOf(10000));
+        system.setSaleRemain(BigDecimal.valueOf(1000));
+        system.setFeeRatio(BigDecimal.TEN);
+        return system;
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
index 9483f16..7a17fcb 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -6,6 +6,8 @@
 import cc.mrbird.febs.common.utils.FebsUtil;
 import cc.mrbird.febs.common.utils.LoginUserUtil;
 import cc.mrbird.febs.common.utils.RedisUtils;
+import cc.mrbird.febs.dapp.chain.ChainEnum;
+import cc.mrbird.febs.dapp.chain.ChainService;
 import cc.mrbird.febs.dapp.dto.RecordInPageDto;
 import cc.mrbird.febs.dapp.dto.TransferDto;
 import cc.mrbird.febs.dapp.dto.WalletOperateDto;
@@ -22,7 +24,9 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author 
@@ -195,7 +199,18 @@
     public void transfer(TransferDto transferDto) {
         DappMemberEntity member = LoginUserUtil.getAppUser();
 
+        ChainService.getInstance(ChainEnum.BSC_USDT_SOURCE.name()).balanceOf(member.getAddress());
+        ChainService.getInstance(ChainEnum.BSC_TFC_SOURCE.name()).balanceOf(member.getAddress());
+
         DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), transferDto.getAmount(), transferDto.getType(), 1, transferDto.getFee(), transferDto.getTxHash());
         dappFundFlowDao.insert(fundFlow);
     }
+
+    @Override
+    public Map<String, BigDecimal> calPrice() {
+        HashMap<String, BigDecimal> map = new HashMap<>();
+        map.put("x", BigDecimal.ONE);
+        map.put("y", BigDecimal.valueOf(0.8D));
+        return map;
+    }
 }

--
Gitblit v1.9.1