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