From 1210ab4b6cde9706f2de936fed3753773a1516f6 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Fri, 22 May 2026 16:01:01 +0800
Subject: [PATCH] 矿机

---
 trading-order-admin/src/main/java/com/yami/trading/admin/controller/service/impl/MinerServiceImpl.java |  213 +++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 191 insertions(+), 22 deletions(-)

diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/service/impl/MinerServiceImpl.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/service/impl/MinerServiceImpl.java
index 130051c..5f7f7a4 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/service/impl/MinerServiceImpl.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/service/impl/MinerServiceImpl.java
@@ -1,43 +1,212 @@
 package com.yami.trading.admin.controller.service.impl;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yami.trading.admin.controller.service.MinerRedisKeys;
 import com.yami.trading.admin.controller.service.MinerService;
 import com.yami.trading.admin.dao.MinerMapper;
-import com.yami.trading.bean.model.Miner;
+import com.yami.trading.bean.data.domain.Realtime;
+import com.yami.trading.common.exception.BusinessException;
+import com.yami.trading.common.util.Arith;
+import com.yami.trading.service.data.DataService;
+import com.yami.trading.service.syspara.SysparaService;
+import org.apache.commons.lang3.StringUtils;
+
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.util.List;
 
-/**
- * @program: trading-order-master
- * @description:
- * @create: 2025-03-10 14:27
- **/
 @Service
+@Transactional
 public class MinerServiceImpl extends ServiceImpl<MinerMapper, Miner> implements MinerService {
 
-    @Override
-    public boolean addMiner(Miner miner) {
-        return this.save(miner);
+    //	protected RedisHandler redisHandler;
+    @Autowired
+    private RedisTemplate redisTemplate;
+    @Autowired
+    protected SysparaService sysparaService;
+    @Autowired
+    protected DataService dataService;
+
+    public Miner cacheById(String id) {
+        return (Miner) redisTemplate.opsForValue().get(MinerRedisKeys.MINER_ID + id);
     }
 
-    @Override
-    public boolean deleteMiner(int id) {
-        return this.removeById(id);
+    public boolean save(Miner entity) {
+
+        this.save(entity);
+
+        redisTemplate.opsForValue().set(MinerRedisKeys.MINER_ID + entity.getUuid().toString(), entity);
+
+        Map<String, Miner> map = (Map<String, Miner>) redisTemplate.opsForValue().get(MinerRedisKeys.MINER_MAP);
+        if (map == null) {
+            map = new ConcurrentHashMap<String, Miner>();
+        }
+        map.put(entity.getUuid().toString(), entity);
+        redisTemplate.opsForValue().set(MinerRedisKeys.MINER_MAP, map);
+        return true;
     }
 
-    @Override
-    public boolean updateMiner(Miner miner) {
-        return this.updateById(miner);
+    public void updateA(Miner entity) {
+        if(entity == null){
+            System.out.println("entity is null");
+        }
+        this.updateById(entity);
+
+        redisTemplate.opsForValue().set(MinerRedisKeys.MINER_ID + entity.getUuid().toString(), entity);
+
+        Map<String, Miner> map = (Map<String, Miner>) redisTemplate.opsForValue().get(MinerRedisKeys.MINER_MAP);
+        if (map == null) {
+            map = new ConcurrentHashMap<String, Miner>();
+        }
+        map.put(entity.getUuid().toString(), entity);
+        redisTemplate.opsForValue().set(MinerRedisKeys.MINER_MAP, map);
     }
 
-    @Override
-    public Miner getMiner(int id) {
-        return this.getById(id);
+    public void delete(String id) {
+        Miner entity = findById(id);
+        this.delete(entity.getUuid());
+
+
+        redisTemplate.delete(MinerRedisKeys.MINER_ID + entity.getUuid().toString());
+        Map<String, Miner> map = (Map<String, Miner>) redisTemplate.opsForValue().get(MinerRedisKeys.MINER_MAP);
+        if (map != null && !map.isEmpty()) {
+            map.remove(entity.getUuid().toString());
+            redisTemplate.opsForValue().set(MinerRedisKeys.MINER_MAP, map);
+        }
     }
 
-    @Override
-    public List<Miner> getAllMiners() {
-        return this.list();
+    public Miner findById(String id) {
+        return (Miner) redisTemplate.opsForValue().get(MinerRedisKeys.MINER_ID + id);
     }
+
+    public List<Miner> findAll() {
+        Map<String, Miner> map = (Map<String, Miner>) redisTemplate.opsForValue().get(MinerRedisKeys.MINER_MAP);
+        if (map != null) {
+            List<Miner> list = new ArrayList<>(map.values());
+            list.sort(new Miner());
+            return list;
+        }
+        return new ArrayList<>();
+    }
+
+    public List<Miner> findAllState_1() {
+        List<Miner> list = new ArrayList<Miner>();
+        for (Miner miner : findAll()) {
+            if ("1".equals(miner.getState())) {
+                list.add(miner);
+            }
+        }
+        return list;
+    }
+
+    public Map<String, Object> getBindOne(Miner miner) {
+        Map<String, Object> result = new HashMap<String, Object>();
+
+        result.put("id", miner.getUuid());
+        result.put("name", miner.getName());
+        result.put("name_en", miner.getName_en());
+        result.put("name_cn", miner.getName_cn());
+        result.put("daily_rate", miner.getDaily_rate());
+        result.put("investment_min", miner.getInvestment_min());
+        result.put("investment_max", miner.getInvestment_max());
+        result.put("state", miner.getState());
+        result.put("on_sale", miner.getOn_sale());
+        result.put("test", miner.getTest());
+        Double miner_test_profit = sysparaService.find("miner_test_profit").getDouble();
+        if (miner.getTest().equals("Y")) {
+            result.put("all_rate", Arith.mul(miner_test_profit, miner.getCycle()));
+            result.put("cycle", miner.getCycle());
+            result.put("daily_rate", miner_test_profit);
+        } else {
+            result.put("all_rate", Arith.mul(miner.getDaily_rate(), 30));
+            result.put("cycle", miner.getCycle_close());
+        }
+
+        // 根据产生的收益转化成指定的币种
+        String miner_profit_symbol = sysparaService.find("miner_profit_symbol").getSvalue();
+        // 矿机购买时使用的币种,则产生
+        String miner_buy_symbol = sysparaService.find("miner_buy_symbol").getSvalue();
+        double symbol_profit = miner.getTest().equals("Y") ? miner_test_profit
+                : Arith.div(Arith.mul(100, miner.getDaily_rate()), 100);// 100为单位的币种收益
+        // 收益转化成U
+        if (StringUtils.isNotEmpty(miner_buy_symbol) && !"usdt".equalsIgnoreCase(miner_buy_symbol)) {
+            List<Realtime> realtime_list = this.dataService.realtime(miner_buy_symbol);
+            Realtime realtime = null;
+            if (realtime_list.size() > 0) {
+                realtime = realtime_list.get(0);
+            } else {
+                throw new BusinessException("行情获取异常,稍后再试");
+            }
+            symbol_profit = Arith.mul(symbol_profit, realtime.getClose().doubleValue());
+        }
+
+        if (StringUtils.isNotEmpty(miner_profit_symbol) && !"usdt".equalsIgnoreCase(miner_profit_symbol)) {
+            List<Realtime> realtime_list = this.dataService.realtime(miner_profit_symbol);
+            Realtime realtime = null;
+            if (realtime_list.size() > 0) {
+                realtime = realtime_list.get(0);
+            } else {
+                throw new BusinessException("行情获取异常,稍后再试");
+            }
+            symbol_profit = Arith.div(symbol_profit, realtime.getClose().doubleValue());
+            result.put("symbol_profit", symbol_profit);
+        } else {
+            result.put("symbol_profit", symbol_profit);
+        }
+        result.put("miner_profit_symbol",
+                StringUtils.isEmpty(miner_profit_symbol) ? "USDT" : miner_profit_symbol.toUpperCase());
+        result.put("img", "https://trading-order-test.s3.amazonaws.com/common/2023-09-16/783a1a14-f6ad-48e3-adb4-6623cca57480IMG_1558.PNG");
+        // 基础信息
+        result.put("algorithm", miner.getAlgorithm());
+        result.put("computing_power", miner.getComputing_power());
+        result.put("computing_power_unit", miner.getComputing_power_unit());
+        result.put("power", miner.getPower());
+        result.put("product_factory", miner.getProduct_factory());
+        result.put("product_size", miner.getProduct_size());
+        result.put("weight", miner.getWeight());
+        result.put("work_temperature_min", miner.getWork_temperature_min());
+        result.put("work_temperature_max", miner.getWork_temperature_max());
+        result.put("work_humidity_min", miner.getWork_humidity_min());
+        result.put("work_humidity_max", miner.getWork_humidity_max());
+        result.put("internet", miner.getInternet());
+
+        result.put("buy_currency", miner.getBuy_currency());
+        result.put("output_currency", miner.getOutput_currency());
+
+        return result;
+    }
+
+//	public void setRedisHandler(RedisHandler redisHandler) {
+//		this.redisHandler = redisHandler;
+//	}
+
+    public void setSysparaService(SysparaService sysparaService) {
+        this.sysparaService = sysparaService;
+    }
+
+    public void setDataService(DataService dataService) {
+        this.dataService = dataService;
+    }
+
+//	public List<Finance> findAll_2() {
+//
+//		LambdaQueryWrapper<Miner> queryWrapper = new LambdaQueryWrapper<Miner>()
+//				.eq(Miner::getState,state).eq(FinanceOrder::getPartyId, partyId);
+//		list = this.getBaseMapper().selectList(queryWrapper);
+//
+//		Map<String, Finance> cacheMap = (Map<String, Finance>) redisTemplate.opsForValue().get(FinanceRedisKeys.FINANCE_MAP);
+//		if (cacheMap != null && !cacheMap.isEmpty()) {
+//			return new ArrayList<Finance>(cacheMap.values());
+//		}
+//		return new ArrayList<Finance>();
+//	}
 }

--
Gitblit v1.9.3