新版仿ok交易所-后端
zyy
2026-01-23 9ac7f3d21d5ff7b144a8a20720d781c8f3f450a5
充值转ico
4 files modified
82 ■■■■ changed files
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiNewsController.java 2 ●●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java 8 ●●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/CapitaltWalletService.java 1 ●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/impl/CapitaltWalletServiceImpl.java 71 ●●●●● patch | view | raw | blame | history
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();
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);
        }
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);
}
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)));