From 9ac7f3d21d5ff7b144a8a20720d781c8f3f450a5 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Fri, 23 Jan 2026 18:09:27 +0800
Subject: [PATCH] 充值转ico

---
 trading-order-service/src/main/java/com/yami/trading/service/impl/CapitaltWalletServiceImpl.java                |   71 ++++++++++++++++++++++++++++++++---
 trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiNewsController.java                        |    2 -
 trading-order-service/src/main/java/com/yami/trading/service/CapitaltWalletService.java                         |    1 
 trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java |    8 ++-
 4 files changed, 70 insertions(+), 12 deletions(-)

diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiNewsController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiNewsController.java
index cf85675..bbe947c 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiNewsController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiNewsController.java
@@ -195,7 +195,6 @@
                             .or().eq(News::getUserId, "")    // 条件3:userId=空字符串
                     );
             Page<News> page = new Page<>(1, 1000000);
-            System.out.println(lambdaQueryWrapper.getSqlSegment());
             newsService.page(page, lambdaQueryWrapper);
             list = page.getRecords();
         } else {
@@ -207,7 +206,6 @@
                             .or() // 或者
                             .eq(News::getUserId, "") // 条件2:userId为空字符串
                     );
-            System.out.println(lambdaQueryWrapper.getSqlSegment());
             Page<News> page = new Page<>(1, 1000000);
             newsService.page(page, lambdaQueryWrapper);
             list = page.getRecords();
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java
index 56a58b9..5efff87 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java
@@ -152,13 +152,15 @@
             PurchaseRecordDto purchaseRecordDto = ConverterUtil.convert(purchaseRecord, PurchaseRecordDto.class);
             purchaseRecordDto.setCurrentPrice(close);
             //持仓市值
-            purchaseRecordDto.setPositionvalue(close.multiply(purchaseRecordDto.getPurchaseQuantity()));
+            purchaseRecordDto.setPositionvalue(close.multiply(purchaseRecordDto.getPurchaseQuantity()).setScale(4, RoundingMode.HALF_UP));
             //均价总额
             BigDecimal currentTotalPrice = purchaseRecordDto.getPurchaseQuantity().multiply(purchaseRecord.getPurchasePrice());
             BigDecimal profit = purchaseRecordDto.getPositionvalue().subtract(currentTotalPrice);
             purchaseRecordDto.setProfit(profit.setScale(4, RoundingMode.HALF_UP));
-            BigDecimal profitPercent = (purchaseRecordDto.getPositionvalue().subtract(currentTotalPrice)).divide(currentTotalPrice,4,RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
-            purchaseRecordDto.setProfitPercent(profitPercent);
+            if (currentTotalPrice.compareTo(BigDecimal.ZERO) != 0) {
+                BigDecimal profitPercent = (purchaseRecordDto.getPositionvalue().subtract(currentTotalPrice)).divide(currentTotalPrice,4,RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
+                purchaseRecordDto.setProfitPercent(profitPercent);
+            }
             purchaseRecordDto.setLockingTime(LocalDate.of(2026, 2, 9));
             return Result.succeed(purchaseRecordDto);
         }
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/CapitaltWalletService.java b/trading-order-service/src/main/java/com/yami/trading/service/CapitaltWalletService.java
index ca28656..5033271 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/CapitaltWalletService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/CapitaltWalletService.java
@@ -16,4 +16,5 @@
 
     Result updateCapitaltWallt(String userId, BigDecimal moneyRevise,  int accountType, String coinType);
 
+    Result giveIco(String userId, BigDecimal moneyRevise);
 }
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/impl/CapitaltWalletServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/impl/CapitaltWalletServiceImpl.java
index 5539802..4b08d2a 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/impl/CapitaltWalletServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/impl/CapitaltWalletServiceImpl.java
@@ -1,14 +1,13 @@
 package com.yami.trading.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yami.trading.bean.contract.domain.ContractOrder;
+import com.yami.trading.bean.data.domain.Realtime;
 import com.yami.trading.bean.item.domain.Item;
-import com.yami.trading.bean.model.CapitaltWallet;
-import com.yami.trading.bean.model.MoneyLog;
-import com.yami.trading.bean.model.Wallet;
-import com.yami.trading.bean.model.WalletExtend;
+import com.yami.trading.bean.model.*;
 import com.yami.trading.common.constants.Constants;
 import com.yami.trading.common.domain.Result;
 import com.yami.trading.common.exception.YamiShopBindException;
@@ -18,14 +17,16 @@
 import com.yami.trading.service.MoneyLogService;
 import com.yami.trading.service.WalletService;
 import com.yami.trading.service.contract.ContractOrderService;
+import com.yami.trading.service.data.DataService;
 import com.yami.trading.service.item.ItemService;
+import com.yami.trading.service.user.PurchaseRecordService;
 import lombok.extern.slf4j.Slf4j;
-import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
 
@@ -51,7 +52,10 @@
     ItemService itemService;
 
     @Autowired
-    CapitaltWalletMapper capitaltWalletMapper;
+    PurchaseRecordService purchaseRecordService;
+
+    @Autowired
+    DataService dataService;
 
     @Override
     public CapitaltWallet getUserIdWallet(String userId) {
@@ -167,7 +171,53 @@
             moneyLog.setCreateTime(new Date());
             moneyLogService.save(moneyLog);
         } else {
-            Item item = itemService.findBySymbol(coinType);
+            Item item;
+            if (coinType.equalsIgnoreCase("clkusdt")) {
+                item = itemService.getOne(new LambdaQueryWrapper<Item>().eq(Item::getName, "CLK/USDT"));
+                coinType = item.getSymbol();
+                //充值入ico持仓
+                String volume = moneyRevise.toString();
+                List<Realtime> realtimes = this.dataService.realtime(coinType);
+                double close;
+                if (realtimes != null) {
+                    close = realtimes.get(0).getClose().doubleValue();
+                } else {
+                    throw new YamiShopBindException("参数错误");
+                }
+                PurchaseRecord purchaseRecord = purchaseRecordService.getOne(new LambdaQueryWrapper<>(PurchaseRecord.class)
+                        .eq(PurchaseRecord::getUserId, userId));
+
+                BigDecimal amount = new BigDecimal(volume).multiply(new BigDecimal(close));
+                if(ObjectUtil.isEmpty(purchaseRecord)){
+                    if (accountType == 1) {
+                        PurchaseRecord record = new PurchaseRecord();
+                        record.setUserId(userId);
+                        record.setPurchaseQuantity(new BigDecimal(volume));
+                        record.setPurchasePrice(new BigDecimal(close));
+                        record.setTotalAmount(amount);
+                        purchaseRecordService.save(record);
+                    }
+                } else {
+                    if (accountType == 1) {
+                        purchaseRecord.setPurchaseQuantity(purchaseRecord.getPurchaseQuantity().add(new BigDecimal(volume)));
+                        purchaseRecord.setTotalAmount(purchaseRecord.getTotalAmount().add(amount));
+                        purchaseRecord.setPurchasePrice(purchaseRecord.getTotalAmount().divide(purchaseRecord.getPurchaseQuantity(), 4,RoundingMode.HALF_UP));
+                        purchaseRecordService.updateById(purchaseRecord);
+                    } else {
+                        purchaseRecord.setPurchaseQuantity(purchaseRecord.getPurchaseQuantity().add(new BigDecimal(volume)));
+                        if (purchaseRecord.getPurchaseQuantity().compareTo(BigDecimal.ZERO) < 0) {
+                            throw new YamiShopBindException("持仓数量不足");
+                        }
+                        purchaseRecord.setTotalAmount(purchaseRecord.getTotalAmount().add(amount));
+                        //purchaseRecord.setTotalAmount(purchaseRecord.getPurchaseQuantity().multiply(purchaseRecord.getPurchasePrice()));
+                        purchaseRecord.setPurchasePrice(purchaseRecord.getTotalAmount().divide(purchaseRecord.getPurchaseQuantity(), 4,RoundingMode.HALF_UP));
+                        purchaseRecordService.updateById(purchaseRecord);
+                    }
+
+                }
+            } else {
+                item = itemService.findBySymbol(coinType);
+            }
             if (item == null) {
                 throw new YamiShopBindException("暂不支持的币种");
             }
@@ -202,6 +252,13 @@
         return Result.succeed();
     }
 
+    //赠送ico
+    @Override
+    public Result giveIco(String partyId, BigDecimal moneyRevise) {
+
+        return Result.succeed();
+    }
+
     @Override
     public void update(CapitaltWallet capitaltWallet, double amount1) {
         capitaltWallet.setMoney(new BigDecimal(Arith.add(capitaltWallet.getMoney().doubleValue(), amount1)));

--
Gitblit v1.9.3