From c698a8244ca104e43f7ed685646d704df1a4da93 Mon Sep 17 00:00:00 2001 From: yyb <1416014977@qq.com> Date: Wed, 2 Jul 2025 16:18:06 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E5=B9=BF=E6=92=AD=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=B8=AD=E8=8B=B1=E7=BF=BB=E8=AF=91=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=B8=AA=E4=BA=BA=E4=B8=AD=E5=BF=83apikey?= =?UTF-8?q?=E5=A4=B1=E6=95=88=E4=BF=AE=E6=94=B9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ManageUserController.java | 4 +- .../m2pool/manage/dto/ManageUserInfoDto.java | 3 - .../manage/dto/WalletEarningsInfoDto.java | 29 ++++ .../m2pool/manage/entity/ManageBroadcast.java | 2 + .../manage/mapper/ManageBroadcastMapper.java | 9 +- .../manage/service/ManageUserService.java | 2 +- .../impl/ManageBroadcastServiceImpl.java | 66 +++++--- .../service/impl/ManageUserServiceImpl.java | 18 +- .../java/com/m2pool/manage/utils/HttpGet.java | 159 ++++++++++++++++++ .../com/m2pool/manage/utils/MD5Utils.java | 127 ++++++++++++++ .../m2pool/manage/utils/TranslateUtils.java | 56 ++++++ .../com/m2pool/manage/vo/ManageBaseVo.java | 4 + .../m2pool/manage/vo/ManageUserInfoVo.java | 13 ++ .../mapper/manage/ManageBroadcastMapper.xml | 35 +++- .../service/impl/UserMinerServiceImpl.java | 14 +- .../java/com/m2pool/pool/task/DataTask.java | 22 +-- .../com/m2pool/pool/task/NeaxPriceTask.java | 2 +- 17 files changed, 504 insertions(+), 61 deletions(-) create mode 100644 m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/WalletEarningsInfoDto.java create mode 100644 m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/utils/HttpGet.java create mode 100644 m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/utils/MD5Utils.java create mode 100644 m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/utils/TranslateUtils.java diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/controller/ManageUserController.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/controller/ManageUserController.java index 9213a1d..f1d2d30 100644 --- a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/controller/ManageUserController.java +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/controller/ManageUserController.java @@ -32,7 +32,7 @@ public class ManageUserController { private ManageUserService manageUserService; @PostMapping("/list/info") - @ApiOperation(value = "管理系统:查询注册用户信息列表,包括邮箱、挖矿账号、起付额、挖矿账户状态") + @ApiOperation(value = "管理系统:查询注册用户信息列表,包括邮箱、挖矿账号、钱包地址、起付额、挖矿账户状态等信息") @RequiresLogin @RequiresRoles(value = {"back_admin","admin"}, logical = Logical.OR) public TableDataInfo listInfo(@RequestBody ManageUserVo manageUserVo){ @@ -52,7 +52,7 @@ public class ManageUserController { @ApiOperation(value = "管理系统:挖矿账户所有收益金额、时间、状态、转账地址") @RequiresLogin @RequiresRoles(value = {"back_admin","admin"}, logical = Logical.OR) - public R getUserInfo(@RequestBody ManageUserInfoVo manageUserInfoVo){ + public R getUserInfo(@RequestBody ManageUserInfoVo manageUserInfoVo){ return manageUserService.getUserInfo(manageUserInfoVo); } diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageUserInfoDto.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageUserInfoDto.java index db42e8c..1802057 100644 --- a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageUserInfoDto.java +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageUserInfoDto.java @@ -47,8 +47,5 @@ public class ManageUserInfoDto { @ApiModelProperty(value = "交易金额",example = " 273920.9666238700") private BigDecimal amount; - @ApiModelProperty(value = "历史支付地址",example = "") - private List historyBalance; - } diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/WalletEarningsInfoDto.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/WalletEarningsInfoDto.java new file mode 100644 index 0000000..5004d8d --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/WalletEarningsInfoDto.java @@ -0,0 +1,29 @@ +package com.m2pool.manage.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @Description 钱包收益详情信息返回对象 + * @Date 2025/5/22 17:18 + * @Author yyb + */ +@Builder +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "WalletEarningsInfoDto", description = "钱包收益详情信息返回对象") +public class WalletEarningsInfoDto { + + @ApiModelProperty(value = "钱包历史地址集合",example = "") + List historyBalance; + + @ApiModelProperty(value = "钱包收益信息集合",example = "") + List walletInInfo ; +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/entity/ManageBroadcast.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/entity/ManageBroadcast.java index 047af6b..f733ea8 100644 --- a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/entity/ManageBroadcast.java +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/entity/ManageBroadcast.java @@ -25,6 +25,8 @@ public class ManageBroadcast { private String content; + private String contentEn; + private String createUser; private String updateUser; diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/mapper/ManageBroadcastMapper.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/mapper/ManageBroadcastMapper.java index f52f63e..8dd8d2b 100644 --- a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/mapper/ManageBroadcastMapper.java +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/mapper/ManageBroadcastMapper.java @@ -33,7 +33,7 @@ public interface ManageBroadcastMapper extends BaseMapper { * @return */ @DistributionDB - ManageUserInfoDto getUserInfo(@Param("user") String user,@Param("coin") String coin); + List getUserInfo(@Param("user") String user,@Param("coin") String coin, @Param("startDate") Date startDate, @Param("endDate") Date endDate); /** @@ -80,4 +80,11 @@ public interface ManageBroadcastMapper extends BaseMapper { */ @HashRateDB List getMinerUserOnlineStatus(@Param("minerUser") String minerUser, @Param("coin") String coin, @Param("startDate") Date startDate, @Param("endDate") Date endDate); + + + /** + * 获取广播信息列表 + * @return + */ + List getListDataByPage(); } diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/ManageUserService.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/ManageUserService.java index 98154c7..e324fb8 100644 --- a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/ManageUserService.java +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/ManageUserService.java @@ -35,7 +35,7 @@ public interface ManageUserService{ * @param manageUserInfoVo * @return */ - R getUserInfo(ManageUserInfoVo manageUserInfoVo); + R getUserInfo(ManageUserInfoVo manageUserInfoVo); /** diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/impl/ManageBroadcastServiceImpl.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/impl/ManageBroadcastServiceImpl.java index fd55e17..b00cc83 100644 --- a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/impl/ManageBroadcastServiceImpl.java +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/impl/ManageBroadcastServiceImpl.java @@ -13,11 +13,14 @@ import com.m2pool.manage.dto.ManageBroadcastDto; import com.m2pool.manage.entity.ManageBroadcast; import com.m2pool.manage.mapper.ManageBroadcastMapper; import com.m2pool.manage.service.ManageBroadcastService; +import com.m2pool.manage.utils.TranslateUtils; import com.m2pool.manage.vo.ManageBaseVo; import com.m2pool.manage.vo.ManageBroadcastVo; import com.m2pool.manage.vo.PageVo; +import jdk.nashorn.internal.ir.annotations.Reference; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.beans.Transient; import java.time.LocalDateTime; import java.util.List; @@ -30,6 +33,8 @@ import java.util.stream.Collectors; public class ManageBroadcastServiceImpl extends ServiceImpl implements ManageBroadcastService { + @Resource + private ManageBroadcastMapper manageBroadcastMapper; /** * 获取所有广播信息 @@ -38,21 +43,13 @@ public class ManageBroadcastServiceImpl extends ServiceImpl getListDataByPage(PageVo pageVo) { + PageHelper.startPage(pageVo.getPageNum(), pageVo.getPageSize()); - List list = this.list(new LambdaQueryWrapper().eq(ManageBroadcast::getDel, false)); - List collect = list.stream().map(broadcast -> ManageBroadcastDto.builder() - .content(broadcast.getContent()) - .id(broadcast.getId()) - .createUser(broadcast.getCreateUser()) - .updateUser(broadcast.getUpdateUser()) - .updateTime(broadcast.getUpdateTime()) - .createTime(broadcast.getCreateTime()) - .build()).collect(Collectors.toList()); - PageHelper.clearPage(); - return getDataTable(collect); + List listDataByPage = manageBroadcastMapper.getListDataByPage(); + return getDataTable(listDataByPage); } - private TableDataInfo getDataTable(List list) + private TableDataInfo getDataTable(List list) { TableDataInfo rspData = new TableDataInfo(); rspData.setCode(HttpStatus.SUCCESS); @@ -61,6 +58,7 @@ public class ManageBroadcastServiceImpl extends ServiceImpl pageInfo = new PageInfo(list); rspData.setTotal(pageInfo.getTotal()); rspData.setTotalPage(pageInfo.getPages()); + PageHelper.clearPage(); return rspData; } @@ -78,16 +76,36 @@ public class ManageBroadcastServiceImpl extends ServiceImpl list = this.list(eq); - List collect = list.stream() - .map(broadcast -> ManageBroadcastDto.builder() - .content(broadcast.getContent()) - .id(broadcast.getId()) - .createUser(broadcast.getCreateUser()) - .updateUser(broadcast.getUpdateUser()) - .updateTime(broadcast.getUpdateTime()) - .createTime(broadcast.getCreateTime()) - .build() - ).collect(Collectors.toList()); + List collect; + if (manageBaseVo != null && "zh".equals(manageBaseVo.getLang())){ + collect = list.stream().map(broadcast -> + ManageBroadcastDto.builder() + .content(broadcast.getContent()) + .id(broadcast.getId()) + .createUser(broadcast.getCreateUser()) + .updateUser(broadcast.getUpdateUser()) + .updateTime(broadcast.getUpdateTime()) + .createTime(broadcast.getCreateTime()) + .build() + ).collect(Collectors.toList()); + }else{ + collect = list.stream().map(broadcast -> { + //如果英文为null,需要翻译并保存一下 + if("".equals(broadcast.getContentEn())){ + broadcast.setContentEn(TranslateUtils.translate(broadcast.getContent(), "zh", "en")); + manageBroadcastMapper.updateById(broadcast); + } + return ManageBroadcastDto.builder() + .content(broadcast.getContentEn()) + .id(broadcast.getId()) + .createUser(broadcast.getCreateUser()) + .updateUser(broadcast.getUpdateUser()) + .updateTime(broadcast.getUpdateTime()) + .createTime(broadcast.getCreateTime()) + .build(); + }).collect(Collectors.toList()); + } + return R.success(collect); } @@ -100,8 +118,10 @@ public class ManageBroadcastServiceImpl extends ServiceImpl addBroadcast(ManageBroadcastVo broadcastVo) { + String translate = TranslateUtils.translate(broadcastVo.getContent(), "zh", "en"); ManageBroadcast broadcast = ManageBroadcast.builder() .content(broadcastVo.getContent()) + .contentEn(translate) .createUser(SecurityUtils.getUsername()) .updateTime(LocalDateTime.now()) .build(); @@ -128,9 +148,11 @@ public class ManageBroadcastServiceImpl extends ServiceImpl updateBroadcast(ManageBroadcastVo broadcastVo) { + String translate = TranslateUtils.translate(broadcastVo.getContent(), "zh", "en"); boolean b = this.updateById(ManageBroadcast.builder() .id(broadcastVo.getId()) .content(broadcastVo.getContent()) + .contentEn(translate) .updateUser(SecurityUtils.getUsername()) .build()); if (b){ diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/impl/ManageUserServiceImpl.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/impl/ManageUserServiceImpl.java index 957800b..7bdadec 100644 --- a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/impl/ManageUserServiceImpl.java +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/impl/ManageUserServiceImpl.java @@ -43,7 +43,6 @@ public class ManageUserServiceImpl implements ManageUserService { public TableDataInfo listInfo(ManageUserVo manageUserVo) { PageHelper.startPage(manageUserVo.getPageNum(), manageUserVo.getPageSize()); List manageUserDtos = manageBroadcastMapper.selectUserListByPage(manageUserVo.getCoin(), manageUserVo.getUser(), manageUserVo.getMinerUser()); - PageHelper.clearPage(); return getDataTable(manageUserDtos); } @@ -56,6 +55,7 @@ public class ManageUserServiceImpl implements ManageUserService { PageInfo pageInfo = new PageInfo<>(list); rspData.setTotal(pageInfo.getTotal()); rspData.setTotalPage(pageInfo.getPages()); + PageHelper.clearPage(); return rspData; } @@ -95,18 +95,12 @@ public class ManageUserServiceImpl implements ManageUserService { } @Override - public R getUserInfo(ManageUserInfoVo manageUserInfoVo) { - ManageUserInfoDto manageUserInfoDto = manageBroadcastMapper.getUserInfo(manageUserInfoVo.getMinerUser(), manageUserInfoVo.getCoin()); + public R getUserInfo(ManageUserInfoVo manageUserInfoVo) { + //获取挖矿账户历史收益记录 + List walletInInfo = manageBroadcastMapper.getUserInfo(manageUserInfoVo.getMinerUser(), manageUserInfoVo.getCoin(), manageUserInfoVo.getStartDate(), manageUserInfoVo.getEndDate()); + //获取挖矿账户历史地址 List historyBalance = manageBroadcastMapper.getHistoryBalance(manageUserInfoVo.getMinerUser(), manageUserInfoVo.getCoin()); - if (manageUserInfoDto == null && !historyBalance.isEmpty()){ - manageUserInfoDto = new ManageUserInfoDto(); - manageUserInfoDto.setUser(manageUserInfoVo.getMinerUser()); - manageUserInfoDto.setCoin(manageUserInfoVo.getCoin()); - manageUserInfoDto.setHistoryBalance(historyBalance); - }else if(manageUserInfoDto !=null && !historyBalance.isEmpty()){ - manageUserInfoDto.setHistoryBalance(historyBalance); - } - + WalletEarningsInfoDto manageUserInfoDto = new WalletEarningsInfoDto(historyBalance,walletInInfo); return R.success(manageUserInfoDto); } diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/utils/HttpGet.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/utils/HttpGet.java new file mode 100644 index 0000000..9db7529 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/utils/HttpGet.java @@ -0,0 +1,159 @@ +package com.m2pool.manage.utils; + +import java.io.BufferedReader; +import java.io.Closeable; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLEncoder; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.util.Map; + +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; + +class HttpGet { + protected static final int SOCKET_TIMEOUT = 10000; // 10S + protected static final String GET = "GET"; + + public static String get(String host, Map params) { + try { + // 设置SSLContext + SSLContext sslcontext = SSLContext.getInstance("TLS"); + sslcontext.init(null, new TrustManager[] { myX509TrustManager }, null); + + String sendUrl = getUrlWithQueryString(host, params); + + // System.out.println("URL:" + sendUrl); + + URL uri = new URL(sendUrl); // 创建URL对象 + HttpURLConnection conn = (HttpURLConnection) uri.openConnection(); + if (conn instanceof HttpsURLConnection) { + ((HttpsURLConnection) conn).setSSLSocketFactory(sslcontext.getSocketFactory()); + } + + conn.setConnectTimeout(SOCKET_TIMEOUT); // 设置相应超时 + conn.setRequestMethod(GET); + int statusCode = conn.getResponseCode(); + if (statusCode != HttpURLConnection.HTTP_OK) { + System.out.println("Http错误码:" + statusCode); + } + + // 读取服务器的数据 + InputStream is = conn.getInputStream(); + BufferedReader br = new BufferedReader(new InputStreamReader(is)); + StringBuilder builder = new StringBuilder(); + String line = null; + while ((line = br.readLine()) != null) { + builder.append(line); + } + + String text = builder.toString(); + + close(br); // 关闭数据流 + close(is); // 关闭数据流 + conn.disconnect(); // 断开连接 + + return text; + } catch (MalformedURLException e) { + System.out.println("翻译失败URL错误"+e.getMessage()); + } catch (IOException e) { + System.out.println("翻译失败,IO错误"+e.getMessage()); + } catch (KeyManagementException e) { + System.out.println("翻译失败,密钥错误"+e.getMessage()); + } catch (NoSuchAlgorithmException e) { + System.out.println("翻译失败,算法错误"+e.getMessage()); + } + + return null; + } + + public static String getUrlWithQueryString(String url, Map params) { + if (params == null) { + return url; + } + + StringBuilder builder = new StringBuilder(url); + if (url.contains("?")) { + builder.append("&"); + } else { + builder.append("?"); + } + + int i = 0; + for (String key : params.keySet()) { + String value = params.get(key); + if (value == null) { // 过滤空的key + continue; + } + + if (i != 0) { + builder.append('&'); + } + + builder.append(key); + builder.append('='); + builder.append(encode(value)); + + i++; + } + + return builder.toString(); + } + + protected static void close(Closeable closeable) { + if (closeable != null) { + try { + closeable.close(); + } catch (IOException e) { + System.out.println("关闭IO错误"+e.getMessage()); + } + } + } + + /** + * 对输入的字符串进行URL编码, 即转换为%20这种形式 + * + * @param input 原文 + * @return URL编码. 如果编码失败, 则返回原文 + */ + public static String encode(String input) { + if (input == null) { + return ""; + } + + try { + return URLEncoder.encode(input, "utf-8"); + } catch (UnsupportedEncodingException e) { + System.out.println("URL编码错误"+e.getMessage()); + } + + return input; + } + + private static TrustManager myX509TrustManager = new X509TrustManager() { + + @Override + public X509Certificate[] getAcceptedIssuers() { + return null; + } + + @Override + public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { + } + + @Override + public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { + } + }; + +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/utils/MD5Utils.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/utils/MD5Utils.java new file mode 100644 index 0000000..aa11470 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/utils/MD5Utils.java @@ -0,0 +1,127 @@ +package com.m2pool.manage.utils; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +/** + * MD5编码相关的类 + * + * @author yyb + * + */ +public class MD5Utils { + // 首先初始化一个字符数组,用来存放每个16进制字符 + private static final char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', + 'e', 'f' }; + + /** + * 获得一个字符串的MD5值 + * + * @param input 输入的字符串 + * @return 输入字符串的MD5值 + * + */ + public static String md5(String input) { + if (input == null) + return null; + + try { + try { + + // 拿到一个MD5转换器(如果想要SHA1参数换成”SHA1”) + MessageDigest messageDigest = MessageDigest.getInstance("MD5"); + // 输入的字符串转换成字节数组 + byte[] inputByteArray = input.getBytes("utf-8"); + // inputByteArray是输入字符串转换得到的字节数组 + messageDigest.update(inputByteArray); + // 转换并返回结果,也是字节数组,包含16个元素 + byte[] resultByteArray = messageDigest.digest(); + // 字符数组转换成字符串返回 + return byteArrayToHex(resultByteArray); + } catch (UnsupportedEncodingException e) { + return null; + } + } catch (NoSuchAlgorithmException e) { + return null; + } + } + + /** + * 获取文件的MD5值 + * + * @param file + * @return + */ + public static String md5(File file) { + try { + if (!file.isFile()) { + System.err.println("文件" + file.getAbsolutePath() + "不存在或者不是文件"); + return null; + } + + FileInputStream in = new FileInputStream(file); + + String result = md5(in); + + in.close(); + + return result; + + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + return null; + } + + public static String md5(InputStream in) { + + try { + MessageDigest messagedigest = MessageDigest.getInstance("MD5"); + + byte[] buffer = new byte[1024]; + int read = 0; + while ((read = in.read(buffer)) != -1) { + messagedigest.update(buffer, 0, read); + } + + in.close(); + + String result = byteArrayToHex(messagedigest.digest()); + + return result; + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + return null; + } + + private static String byteArrayToHex(byte[] byteArray) { + // new一个字符数组,这个就是用来组成结果字符串的(解释一下:一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方)) + char[] resultCharArray = new char[byteArray.length * 2]; + // 遍历字节数组,通过位运算(位运算效率高),转换成字符放到字符数组中去 + int index = 0; + for (byte b : byteArray) { + resultCharArray[index++] = hexDigits[b >>> 4 & 0xf]; + resultCharArray[index++] = hexDigits[b & 0xf]; + } + + // 字符数组组合成字符串返回 + return new String(resultCharArray); + + } + +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/utils/TranslateUtils.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/utils/TranslateUtils.java new file mode 100644 index 0000000..520f6f8 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/utils/TranslateUtils.java @@ -0,0 +1,56 @@ +package com.m2pool.manage.utils; + +import com.alibaba.nacos.shaded.com.google.gson.JsonArray; +import com.alibaba.nacos.shaded.com.google.gson.JsonObject; +import com.alibaba.nacos.shaded.com.google.gson.JsonParser; + +import java.util.HashMap; +import java.util.Map; + +public class TranslateUtils { + private static final String TRANS_API_HOST = "https://fanyi-api.baidu.com/api/trans/vip/translate"; + + private static String appid = "20250702002395339"; + private static String securityKey ="yKbjIAIg_FpbdESYaE7A"; + + public static String translate(String query, String from, String to) { + Map params = buildParams(query, from, to); + String s = HttpGet.get(TRANS_API_HOST, params); + return extractDstFromResponse(s); + } + + private static Map buildParams(String query, String from, String to) { + Map params = new HashMap(); + params.put("q", query); + params.put("from", from); + params.put("to", to); + + params.put("appid", appid); + + // 随机数 + String salt = String.valueOf(System.currentTimeMillis()); + params.put("salt", salt); + + // 签名 + String src = appid + query + salt + securityKey; // 加密前的原文 + params.put("sign", MD5Utils.md5(src)); + + return params; + } + + + private static String extractDstFromResponse(String response) { + try { + JsonObject jsonObject = JsonParser.parseString(response).getAsJsonObject(); + JsonArray transResultArray = jsonObject.getAsJsonArray("trans_result"); + if (transResultArray.size() > 0) { + JsonObject firstResult = transResultArray.get(0).getAsJsonObject(); + return firstResult.get("dst").getAsString(); + } + } catch (Exception e) { + System.out.println("翻译结果解析失败"+e.getMessage()); + } + return ""; + } + +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageBaseVo.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageBaseVo.java index 7dd2dbb..9f011e7 100644 --- a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageBaseVo.java +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageBaseVo.java @@ -22,4 +22,8 @@ import java.time.LocalDateTime; public class ManageBaseVo { @ApiModelProperty(value = "id",example = "1") private Long id; + + + @ApiModelProperty(value = "语言",example = "zh") + private String lang; } diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageUserInfoVo.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageUserInfoVo.java index 6f213d5..9796006 100644 --- a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageUserInfoVo.java +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageUserInfoVo.java @@ -1,11 +1,15 @@ package com.m2pool.manage.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; /** * @Description 查询用户详情信请求对象 @@ -26,4 +30,13 @@ public class ManageUserInfoVo { @ApiModelProperty(value = "币种",example = "nexa",required = true) private String coin; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "开始时间",example = "2025-06-22") + private Date startDate; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "结束时间",example = "2025-06-22") + private Date endDate; } diff --git a/m2pool-modules/m2pool-manage/src/main/resources/mapper/manage/ManageBroadcastMapper.xml b/m2pool-modules/m2pool-manage/src/main/resources/mapper/manage/ManageBroadcastMapper.xml index 2a3ca95..5a501d8 100644 --- a/m2pool-modules/m2pool-manage/src/main/resources/mapper/manage/ManageBroadcastMapper.xml +++ b/m2pool-modules/m2pool-manage/src/main/resources/mapper/manage/ManageBroadcastMapper.xml @@ -40,10 +40,22 @@ amount, state FROM - wallet_inv2 - WHERE - coin = #{coin} - AND `user` = #{user}; + wallet_in + + coin = #{coin} AND `user` = #{user} + + + and `create_date` >= #{startDate} AND `create_date` #{endDate} + + + + and `create_date` >= DATE_SUB(NOW(), INTERVAL 1 MONTH) + + + + + + select miner_user from user_miner_account where coin = #{coin} and `user` = #{user} and status = 0; + diff --git a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/service/impl/UserMinerServiceImpl.java b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/service/impl/UserMinerServiceImpl.java index 7a6e990..55adc20 100644 --- a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/service/impl/UserMinerServiceImpl.java +++ b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/service/impl/UserMinerServiceImpl.java @@ -516,7 +516,11 @@ public class UserMinerServiceImpl implements UserMinserService { } } - int count = uaMapper.getApiKeyCountByUser(user); + List list = uaMapper.getAPIListByUser(user); + long count = list.stream().filter(e -> { + OpenApiKeyInfo openApiKeyInfo = openApiService.getOpenApiKeyInfo(e.getKey()); + return openApiKeyInfo != null; + }).count(); if(count >= 5){ return AjaxResult.error("apiKey创建次数已达上限:5"); } @@ -576,7 +580,10 @@ public class UserMinerServiceImpl implements UserMinserService { return null; } List list = uaMapper.getAPIListByUser(user); - List returnList = list.stream().map(e -> { + List returnList = list.stream().filter(e -> { + OpenApiKeyInfo openApiKeyInfo = openApiService.getOpenApiKeyInfo(e.getKey()); + return openApiKeyInfo != null; + }).map(e -> { UserApiDto dto = new UserApiDto(); BeanUtils.copyProperties(e,dto); if(StringUtils.isNull(e.getPerms())){ @@ -661,8 +668,9 @@ public class UserMinerServiceImpl implements UserMinserService { } OpenApiKeyInfo info = openApiService.getOpenApiKeyInfo(userApi.getKey()); System.out.println("info:"+info); - boolean result = uaMapper.updateApiKey(vo,user); + + if(result){ info.setApiIp(vo.getIp()); info.setPermissions(permsSet); diff --git a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/DataTask.java b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/DataTask.java index 56214d8..67ad0c2 100644 --- a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/DataTask.java +++ b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/DataTask.java @@ -48,7 +48,7 @@ public class DataTask { private static final Logger log = LoggerFactory.getLogger(DataTask.class); - @Scheduled(cron = "20 1,3,10,31,33,40 * * * ?") + @Scheduled(cron = "20 1,3,10,31,33,40 * * * ?") public void NEXA30mDataToDB(){ //String nowStr = DateUtils.dateTimeNow("yyyy-MM-dd HH:mm:00"); @@ -227,7 +227,7 @@ public class DataTask { } - @Scheduled(cron = "0 1,3,5 0 * * ?") + @Scheduled(cron = "0 1,3,5 0 * * ?") public void NEXADailyDataToDB(){ String nowStr = DateUtils.dateTimeNow(DateUtils.YYYY_MM_DD); Date now = DateUtils.parseDate( nowStr); @@ -379,7 +379,7 @@ public class DataTask { } } - @Scheduled(cron = "50 0,1,30,31 * * * ?") + @Scheduled(cron = "50 0,1,30,31 * * * ?") public void NEXAUserPowerRatioDataToDB(){ //String nowStr = DateUtils.dateTimeNow("yyyy-MM-dd HH:mm:00"); @@ -405,7 +405,7 @@ public class DataTask { - @Scheduled(cron = "30 3 0/1 * * ?") + @Scheduled(cron = "30 3 0/1 * * ?") //@Scheduled(cron = "0 0/2 * * * ?") public void NEXALuckyDataToDB(){ log.info("nexa幸运值---定时任务开始"); @@ -497,7 +497,7 @@ public class DataTask { } - @Scheduled(cron = "11 1,3,11,31,33,41 * * * ?") + @Scheduled(cron = "11 1,3,11,31,33,41 * * * ?") public void GRS30mDataToDB(){ //String nowStr = DateUtils.dateTimeNow("yyyy-MM-dd HH:mm:00"); @@ -663,7 +663,7 @@ public class DataTask { } - @Scheduled(cron = "1 1,3,5 0 * * ?") + @Scheduled(cron = "1 1,3,5 0 * * ?") public void GRSDailyDataToDB(){ String nowStr = DateUtils.dateTimeNow(DateUtils.YYYY_MM_DD); Date now = DateUtils.parseDate( nowStr); @@ -816,7 +816,7 @@ public class DataTask { } } - @Scheduled(cron = "51 0,1,30,31 * * * ?") + @Scheduled(cron = "51 0,1,30,31 * * * ?") public void GRSUserPowerRatioDataToDB(){ //String nowStr = DateUtils.dateTimeNow("yyyy-MM-dd HH:mm:00"); @@ -846,7 +846,7 @@ public class DataTask { } - @Scheduled(cron = "31 3 0/1 * * ?") + @Scheduled(cron = "31 3 0/1 * * ?") //@Scheduled(cron = "0 0/2 * * * ?") public void GRSLuckyDataToDB(){ log.info("GRS幸运值---定时任务开始"); @@ -909,7 +909,7 @@ public class DataTask { dto.getLuck3d(),dto.getLuck7d(),dto.getLuck30d(),dto.getLuck90d());; } - @Scheduled(cron = "12 1,3,12,31,33,42 * * * ?") + @Scheduled(cron = "12 1,3,12,31,33,42 * * * ?") public void MONA30mDataToDB(){ //String nowStr = DateUtils.dateTimeNow("yyyy-MM-dd HH:mm:00"); @@ -1072,7 +1072,7 @@ public class DataTask { } - @Scheduled(cron = "2 1,3,5 0 * * ?") + @Scheduled(cron = "2 1,3,5 0 * * ?") public void MONADailyDataToDB(){ String nowStr = DateUtils.dateTimeNow(DateUtils.YYYY_MM_DD); Date now = DateUtils.parseDate( nowStr); @@ -1227,7 +1227,7 @@ public class DataTask { } } - @Scheduled(cron = "52 0,1,30,31 * * * ?") + @Scheduled(cron = "52 0,1,30,31 * * * ?") public void MONAUserPowerRatioDataToDB(){ //String nowStr = DateUtils.dateTimeNow("yyyy-MM-dd HH:mm:00"); diff --git a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/NeaxPriceTask.java b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/NeaxPriceTask.java index 93dbfb4..c26af59 100644 --- a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/NeaxPriceTask.java +++ b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/NeaxPriceTask.java @@ -42,7 +42,7 @@ public class NeaxPriceTask { private RedisService redisService; //@Scheduled(cron = "0 0/1 * * * ?") - @Scheduled(cron = "0 0,3,30,33 * * * ?") + @Scheduled(cron = "0 0,3,30,33 * * * ?") public void NEXAPriceToRedis() { Map map = getResultFromNetByAllCoins();